code: def get_drift_corrected_structures(self, start=None, stop=None, step=None):
          
          coords = np.array(self.structure.cart_coords)
          species = self.structure.species_and_occu
          lattices = self.lattices
          nsites, nsteps, dim = self.corrected_displacements.shape
  
          for i in range(start or 0, stop or nsteps, step or 1):
              latt = lattices[0] if len(lattices) == 1 else lattices[i]
              yield Structure(
                  latt, species,
                  coords + self.corrected_displacements[:, i, :],
                  coords_are_cartesian=True)
docs: Returns an iterator for the drift-corrected structures. Use of
          iterator is to reduce memory usage as # of structures in MD can be
          huge. You don't often need all the structures all at once.
  
          Args:
              start, stop, step (int): applies a start/stop/step to the iterator.
                  Faster than applying it after generation, as it reduces the
                  number of structures created.