code: def get_orbital_derivative_between_states(self, band_i, band_j, kpoint, spin, cart_dir):
          
          if band_i < 0 or band_i > self.nbands - 1 or band_j < 0 or band_j > self.nelect - 1:
              raise ValueError("Band index out of bounds")
          if kpoint > self.nkpoints:
              raise ValueError("K-point index out of bounds")
          if cart_dir > 2 or cart_dir < 0:
              raise ValueError("cart_dir index out of bounds")
  
          return self.cder_data[band_i, band_j, kpoint, spin, cart_dir]
docs: Method returning a value
          between bands band_i and band_j for k-point index, spin-channel and cartesian direction.
          Args:
              band_i (Integer): Index of band i
              band_j (Integer): Index of band j
              kpoint (Integer): Index of k-point
              spin   (Integer): Index of spin-channel (0 or 1)
              cart_dir (Integer): Index of cartesian direction (0,1,2)
  
          Returns:
              a float value