code: def calculate_pertubations(self):
          
          self.build_increments()
          self.parameter_data.loc[:,"pertubation"] = \
              self.parameter_data.parval1 + \
              self.parameter_data.increment
  
          self.parameter_data.loc[:,"out_forward"] = \
              self.parameter_data.loc[:,"pertubation"] > \
              self.parameter_data.loc[:,"parubnd"]
  
          out_forward = self.parameter_data.groupby("out_forward").groups
          if True in out_forward:
              self.parameter_data.loc[out_forward[True],"pertubation"] = \
                      self.parameter_data.loc[out_forward[True],"parval1"] - \
                      self.parameter_data.loc[out_forward[True],"increment"]
  
              self.parameter_data.loc[:,"out_back"] = \
              self.parameter_data.loc[:,"pertubation"] < \
              self.parameter_data.loc[:,"parlbnd"]
              out_back = self.parameter_data.groupby("out_back").groups
              if True in out_back:
                  still_out = out_back[True]
                  print(self.parameter_data.loc[still_out,:],flush=True)
  
                  raise Exception("Pst.calculate_pertubations(): " +\
                                  "can't calc pertubations for the following "+\
                                  "Parameters {0}".format(','.join(still_out)))
docs: experimental method to calculate finite difference parameter
          pertubations.  The pertubation values are added to the
          Pst.parameter_data attribute
  
          Note
          ----
          user beware!