@@ -90,8 +90,44 @@ def xyz_comment_line_parser(line):
9090 return props
9191
9292
93+ def xyz_to_mol_all (inp , basis = "def2-svp" , charge = None , spin = None , ignore = False , unit = None , ecp = None , parse_comment = False ):
94+ """Read xyz file containing multiple molecules.
95+
96+ Args:
97+ inp (str): Path of the xyz file to read.
98+ basis (str or dict): Basis set. Defaults to "def2-svp".
99+ charge (list[int]): Provide/override charge of the molecule. Defaults to None.
100+ spin (list[int]): Provide/override spin of the molecule (alpha electrons - beta electrons). Defaults to None.
101+ ignore (bool): If True, assume molecule is closed-shell and assign charge either 0 or -1. Defaults to False.
102+ unit (str): Provide/override units (Ang or Bohr). Defaults to None.
103+ ecp (str): ECP to use. Defaults to None.
104+ parse_comment (bool): Whether to parse the comment line for properties. Defaults to False.
105+
106+ Returns:
107+ list[pyscf.gto.Mole]: pyscf Mole object containing the molecule information.
108+ """
109+ with open (inp ) as f :
110+ lines = f .read ().strip ().split ('\n ' )
111+
112+ xyzs = []
113+ cursor = Cursor (action = 'slicer' )
114+ while cursor .i < len (lines ):
115+ natm = int (lines [cursor .i ].strip ())
116+ xyzs .append ("\n " .join (lines [cursor .add (natm + 2 )]))
117+
118+ if charge is None :
119+ charge = [None ]* len (xyzs )
120+ if spin is None :
121+ spin = [None ]* len (xyzs )
122+
123+ mols = []
124+ for xyz , ch , sp in zip (xyzs , charge , spin , strict = True ):
125+ mols .append (xyz_to_mol (xyz , basis = basis , charge = ch , spin = sp , ignore = ignore , unit = unit , ecp = ecp , parse_comment = parse_comment ))
126+ return mols
127+
128+
93129def xyz_to_mol (inp , basis = "def2-svp" , charge = None , spin = None , ignore = False , unit = None , ecp = None , parse_comment = False ):
94- """Read a molecular file in xyz format and returns a pyscf Mole object.
130+ """Read a molecular file in xyz format and return a pyscf Mole object.
95131
96132 Args:
97133 inp (str): Path of the xyz file to read, or xyz file contents.
0 commit comments