Skip to content

Io traj

thmd.io.traj ¤

This module contains classes and functions to process molecular dynamics trajectories.

Classes:

  • Frame

    Create an Object for a single-FRAME of trajectories from MD simulation.

  • Traj

    Create an Object for a multi-FRAMEs of trajectories from MD simulation.

Frame(dump_file: str = None, data_file: str = None, atom_style: str = 'auto', pdb_file: str = None, xyz_file: str = None, from_df: pd.DataFrame = None, box: np.array = None, box_angle: np.array = None) ¤

Create an Object for a single-FRAME of trajectories from MD simulation.

This class create a data-object (single configuration) for the analysis of computing data from LAMMPS. The file formats implemented in this class

image

This class implemented several ways to create Frame object

  • create an empty data object
  • create_DATA object with input data
  • read from DUMP file
  • read from DATA file
  • read frome PDB file

Attributes:

  • filename (str) –

    name of input file

  • timestep (int) –

    the timestep of configuration

  • box (array) –

    3x2 array, the box size

  • box_angle (array) –

    1x3 array, the box angle

  • atom (DataFrame) –

    DataFrame of per-atom values

  • prop_key (list) –

    column-names of properties

  • mass (DataFrame) –

    DataFrame of per-type masses

  • fmt (str) –

    default format for float numbers, don't use %g because it will lost precision

Examples:

from thmd.traj  import Frame

da = Frame()                        # empty object
da = Frame(from_df=df)              # oject with input data
da = Frame(dump_file='test.cfg')    # from DUMP file
da = Frame(data_file='mydata.dat')  # from DATA file
da = Frame(pdb_file='test.pdb')     # from PDB file

Refs: [1]. Use chain mutator calls

Parameters:

  • dump_file (str, default: None ) –

    filename of DUMP file.

  • data_file (str, default: None ) –

    filename of DATA file.

  • pdb_file (str, default: None ) –

    filename of PBD file.

  • xyz_file (str, default: None ) –

    filename of XYZ file.

  • from_df (DataFrame, default: None ) –

    create FRAME from data.

  • atom_style (str, default: 'auto' ) –

    atom_style of system. Only need when data_file is used. Possible values: 'atomic', 'molecular', 'charge', 'full', 'auto'

  • box (np.array list, default: None ) –

    Define simulation box. Only need when from_df is used.

  • box_angle (np.array list, default: None ) –

    Define angle of simulation box. Only need when from_df is used.

Returns:

  • Obj ( Frame ) –

    object of trajectories

Notes

Use mutator, so do not use self.* when define value

Methods:

  • create_DATA

    The method to create new FRAME object with input data.

  • copy

    The method to make an indepedent copy of Frame Obj. Then, the change values of the fields of the new object, the old object should not be affected by that.

  • check_exist

    The method to check whether something is existed in system or not.

filename: str = 'md_frame' instance-attribute ¤

timestep: int = None instance-attribute ¤

decimals: int = 7 instance-attribute ¤

box = np.asarray([[0, 1], [0, 1], [0, 1]], dtype=float) instance-attribute ¤

box_angle = np.asarray([0, 0, 0], dtype=float) instance-attribute ¤

prop_key: list[str] = None instance-attribute ¤

atom = None instance-attribute ¤

mass = None instance-attribute ¤

pair_coeff = None instance-attribute ¤

bond_coeff = None instance-attribute ¤

angle_coeff = None instance-attribute ¤

dihedral_coeff = None instance-attribute ¤

improper_coeff = None instance-attribute ¤

bondBond_coeff = None instance-attribute ¤

bondAngle_coeff = None instance-attribute ¤

middleBondTorsion_coeff = None instance-attribute ¤

endBondTorsion_coeff = None instance-attribute ¤

angleTorsion_coeff = None instance-attribute ¤

angleAngleTorsion_coeff = None instance-attribute ¤

bondBond13_coeff = None instance-attribute ¤

angleAngle_coeff = None instance-attribute ¤

bond = None instance-attribute ¤

angle = None instance-attribute ¤

dihedral = None instance-attribute ¤

improper = None instance-attribute ¤

create_DATA(df: pd.DataFrame, box: np.array = None, box_angle: np.array = None) ¤

The method to create new FRAME object with input data.

Parameters:

  • DataFrame (DataFrame) –

    of input data

  • box (array, default: None ) –

    3x2 array, option to input boxSize.

  • box_angle (array, default: None ) –

    1x3 array, option to input box_angle.

Returns:

  • Obj ( Frame ) –

    update Frame

Examples:

da = Frame()
da.create_DATA(DataFrame=df)
# or
da = Frame(from_df=df)

copy() ¤

The method to make an indepedent copy of Frame Obj. Then, the change values of the fields of the new object, the old object should not be affected by that.

Returns:

  • Obj ( Frame ) –

    new Frame Obj.

Examples:

da1 = da.copy()

Refs: [1]. "shallow copying" vs "deep copying": https://stackoverflow.com/questions/3975376/understanding-dict-copy-shallow-or-deep/3975388#3975388

check_exist(atom_types=None, mass_types=None) ¤

The method to check whether something is existed in system or not.

Parameters:

  • atom_types (list, default: None ) –

    list-of-int of atom-types. Default to None.

  • mass_types (list, default: None ) –

    list-of-int of atom-types. Default to None.

Returns:

  • mgs ( str ) –

    raise Message if error.

Examples:

da.isExist(atom_types=[2,3])
Notes

set() also return unique values.

Traj(**kwargs) ¤

Create an Object for a multi-FRAMEs of trajectories from MD simulation. - read frome XYZ file

Notes

Use mutator, so do not use self.* when define value

Methods:

  • readXYZ

    The method create Multi-FRAME object by reading XYZ file.

Attributes:

decimals: int = 6 instance-attribute ¤

readXYZ(filename) ¤

The method create Multi-FRAME object by reading XYZ file.

Parameters:

  • filename (str) –

    name of input file

Returns:

  • Obj ( TrajFrame ) –

    update FRAME

Examples:

da = io.TrajFrame(pdb_file='mydata.pdb')