code: def convert_obatoms_to_molecule(self, atoms, residue_name=None, site_property="ff_map"):
          
  
          restore_site_props = True if residue_name is not None else False
  
          if restore_site_props and not hasattr(self, "map_residue_to_mol"):
              self._set_residue_map()
  
          coords = []
          zs = []
          for atm in atoms:
              coords.append(list(atm.coords))
              zs.append(atm.atomicnum)
  
          mol = Molecule(zs, coords)
  
          if restore_site_props:
  
              props = []
  
              ref = self.map_residue_to_mol[residue_name].copy()
  
              # sanity check
              assert len(mol) == len(ref)
              assert ref.formula == mol.formula
  
              # the packed molecules have the atoms in the same order..sigh!
              for i, site in enumerate(mol):
                  assert site.specie.symbol == ref[i].specie.symbol
                  props.append(getattr(ref[i], site_property))
  
              mol.add_site_property(site_property, props)
  
          return mol
docs: Convert list of openbabel atoms to MOlecule.
  
          Args:
              atoms ([OBAtom]): list of OBAtom objects
              residue_name (str): the key in self.map_residue_to_mol. Usec to
                  restore the site properties in the final packed molecule.
              site_property (str): the site property to be restored.
  
          Returns:
              Molecule object