code: def from_str(cls, input_string, fmt, primitive=False, sort=False,
                   merge_tol=0.0):
          
          from pymatgen.io.cif import CifParser
          from pymatgen.io.vasp import Poscar
          from pymatgen.io.cssr import Cssr
          from pymatgen.io.xcrysden import XSF
          from pymatgen.io.atat import Mcsqs
          fmt = fmt.lower()
          if fmt == "cif":
              parser = CifParser.from_string(input_string)
              s = parser.get_structures(primitive=primitive)[0]
          elif fmt == "poscar":
              s = Poscar.from_string(input_string, False,
                                     read_velocities=False).structure
          elif fmt == "cssr":
              cssr = Cssr.from_string(input_string)
              s = cssr.structure
          elif fmt == "json":
              d = json.loads(input_string)
              s = Structure.from_dict(d)
          elif fmt == "yaml":
              import ruamel.yaml as yaml
              d = yaml.safe_load(input_string)
              s = Structure.from_dict(d)
          elif fmt == "xsf":
              s = XSF.from_string(input_string).structure
          elif fmt == "mcsqs":
              s = Mcsqs.structure_from_string(input_string)
          else:
              raise ValueError("Unrecognized format `%s`!" % fmt)
  
          if sort:
              s = s.get_sorted_structure()
          if merge_tol:
              s.merge_sites(merge_tol)
          return cls.from_sites(s)
docs: Reads a structure from a string.
  
          Args:
              input_string (str): String to parse.
              fmt (str): A format specification.
              primitive (bool): Whether to find a primitive cell. Defaults to
                  False.
              sort (bool): Whether to sort the sites in accordance to the default
                  ordering criteria, i.e., electronegativity.
              merge_tol (float): If this is some positive number, sites that
                  are within merge_tol from each other will be merged. Usually
                  0.01 should be enough to deal with common numerical issues.
  
          Returns:
              IStructure / Structure