code: def _get_internal_delta(self):
          
  
          if self._transformation is None:
  
              return self._delta
  
          else:
  
              delta_int = None
  
              for i in range(2):
  
                  # Try using the low bound
  
                  low_bound_ext = self.value - self.delta
  
                  # Make sure we are within the margins
  
                  if low_bound_ext > self.min_value:
  
                      # Ok, let's use that for the delta
                      low_bound_int = self._transformation.forward(low_bound_ext)
  
                      delta_int = abs(low_bound_int - self._get_internal_value())
  
                      break
  
                  else:
  
                      # Nope, try with the hi bound
  
                      hi_bound_ext = self.value + self._delta
  
                      if hi_bound_ext < self.max_value:
  
                          # Ok, let's use it
                          hi_bound_int = self._transformation.forward(hi_bound_ext)
                          delta_int = abs(hi_bound_int - self._get_internal_value())
  
                          break
  
                      else:
  
                          # Fix delta
                          self.delta = abs(self.value - self.min_value) / 4.0
  
                          if self.delta == 0:
  
                              # Parameter at the minimum
                              self.delta = abs(self.value - self.max_value) / 4.0
  
                          # Try again
                          continue
  
              assert delta_int is not None, "Bug"
  
              return delta_int
docs: This is only supposed to be used by fitting/sampling engine, to get the initial step in internal representation
  
          :return: initial delta in internal representation