Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions pyrelate/collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def _read_aid(self, fpath, comp_rxid, prefix=None):

return aid

def read(self, root, Z, f_format=None, rxid=None, prefix=None):
def read(self, root, Z, f_format=None, rxid=None, prefix=None,style = None,del_blocks = True):
"""Function to read atoms data into ASE Atoms objects and add to AtomsCollection.

Utilizes functionality in ASE to read in atomic data.
Expand All @@ -106,6 +106,8 @@ def read(self, root, Z, f_format=None, rxid=None, prefix=None):
read in without this parameter.
rxid (:obj: str, optional) : regex pattern for extracting the `aid` for each Atoms object. Defaults to None. The regex should include a named group `(?P<aid>...)` so that the id can be extracted correctly. If any files don't match the regex or if it is not specified, the file name is used as the `aid`.
prefix (str): optional prefix for aid. Defaults to none.
style (str) : input parameter for ase.io.read funciton. Defaults to None.
del_blocks (bool) : allows user to choose to delete the end blocks of atoms from a simulation or not. Defaults to True.

Example:
.. code-block:: python
Expand All @@ -122,15 +124,16 @@ def read(self, root, Z, f_format=None, rxid=None, prefix=None):
if isinstance(root, list):
for i in tqdm(range(len(root))):
if not isinstance(Z, list):
self.read(root[i], Z, f_format, rxid, prefix)
self.read(root[i], Z, f_format, rxid, prefix,style,del_blocks)
else:
self.read(root[i], Z[i], f_format, rxid, prefix)
self.read(root[i], Z[i], f_format, rxid, prefix,style,del_blocks)
elif(path.isfile(root)):
# TODO generalize for reading multi elemental data
a0 = io.read(root, format=f_format)
a0 = io.read(root, format=f_format, style)
a = a0.copy()
# delete end blocks
del a[[atom.index for atom in a if atom.number == 4 or atom.number == 5]]
if del_blocks:
# delete end blocks
del a[[atom.index for atom in a if atom.number == 4 or atom.number == 5]]
a.new_array('type', a.get_array(
'numbers', copy=True), dtype=int)
a.set_atomic_numbers([Z for i in a])
Expand All @@ -143,7 +146,7 @@ def read(self, root, Z, f_format=None, rxid=None, prefix=None):
elif(path.isdir(root)):
for afile in os.listdir(root):
fpath = os.path.join(root, afile)
self.read(fpath, Z, f_format, rxid, prefix)
self.read(fpath, Z, f_format, rxid, prefix,style,del_blocks)
else:
raise ValueError(root)
except ValueError:
Expand Down