code: def from_string(cls, string):
          
          lines = string.split("\n")
          timestep = int(lines[1])
          natoms = int(lines[3])
          box_arr = np.loadtxt(StringIO("\n".join(lines[5:8])))
          bounds = box_arr[:, :2]
          tilt = None
          if "xy xz yz" in lines[4]:
              tilt = box_arr[:, 2]
              x = (0, tilt[0], tilt[1], tilt[0] + tilt[1])
              y = (0, tilt[2])
              bounds -= np.array([[min(x), max(x)], [min(y), max(y)], [0, 0]])
          box = LammpsBox(bounds, tilt)
          data_head = lines[8].replace("ITEM: ATOMS", "").split()
          data = pd.read_csv(StringIO("\n".join(lines[9:])), names=data_head,
                             delim_whitespace=True)
          return cls(timestep, natoms, box, data)
docs: Constructor from string parsing.
  
          Args:
              string (str): Input string.