code: def from_str(cls, input_string, fmt):
          
          from pymatgen.io.xyz import XYZ
          from pymatgen.io.gaussian import GaussianInput
          if fmt.lower() == "xyz":
              m = XYZ.from_string(input_string).molecule
          elif fmt in ["gjf", "g03", "g09", "com", "inp"]:
              m = GaussianInput.from_string(input_string).molecule
          elif fmt == "json":
              d = json.loads(input_string)
              return cls.from_dict(d)
          elif fmt == "yaml":
              import ruamel.yaml as yaml
              d = yaml.safe_load(input_string)
              return cls.from_dict(d)
          else:
              from pymatgen.io.babel import BabelMolAdaptor
              m = BabelMolAdaptor.from_string(input_string,
                                              file_format=fmt).pymatgen_mol
          return cls.from_sites(m)
docs: Reads the molecule from a string.
  
          Args:
              input_string (str): String to parse.
              fmt (str): Format to output to. Defaults to JSON unless filename
                  is provided. If fmt is specifies, it overrides whatever the
                  filename is. Options include "xyz", "gjf", "g03", "json". If
                  you have OpenBabel installed, any of the formats supported by
                  OpenBabel. Non-case sensitive.
  
          Returns:
              IMolecule or Molecule.