Concatenate structures#

Concatenating the structures found in a list of molecular systems.

The structures found in a list of molecular systems can be concatenated with molsysmt.basic.concatenate_structures(). The first input establishes the output system and topology when available; subsequent inputs may be coordinate-only XTC, DCD, XYZ, or native Structures objects. Every selected source must match the output atom count and ordering, and the result preserves the input structure order. By default, attribute_policy='intersection' keeps only structural series available in every block and warns about discarded series; use attribute_policy='strict' to reject any one-sided series.

Added in version 1.0.0.

How this function works#

API documentation

Follow this link for a detailed description of the input arguments, raised errors, and returned objects of this function: molsysmt.basic.concatenate_structures().

Let’s demonstrate how this function works using alanine dipeptide represented as three different molecular systems, each with a distinct structure.

import molsysmt as msm
molsys_A = msm.build.build_peptide('AceAlaNme')
molsys_B = msm.structure.translate(molsys_A, translation='[0.1, 0.1, 0.1] nanometers')
molsys_C = msm.structure.translate(molsys_A, translation='[0.2, 0.2, 0.2] nanometers')

Basic usage#

Each of the three molecular systems initially contains a single structure. Let’s inspect the state of \(A\) before concatenation:

msm.info(molsys_A)
form n_atoms n_groups n_components n_chains n_molecules n_entities n_peptides n_structures
molsysmt.MolSys 22 3 1 1 1 1 1 1

Now let’s create a fourth molecular system by concatenating the structures from \(A\), \(B\), and \(C\):

molsys_D = msm.concatenate_structures([molsys_A, molsys_B, molsys_C])

Tip

All methods defined in the molsysmt.basic module can be invoked also from the main level of the library. As such, molsysmt.concatenate_structures() is the same method as molsysmt.basic.concatenate_structures().

Let’s inspect the newly created system \(D\). We expect \(D\) to contain 3 structures:

msm.info(molsys_D)
form n_atoms n_groups n_components n_chains n_molecules n_entities n_peptides n_structures
molsysmt.MolSys 22 3 1 1 1 1 1 3

Finally, the resulting system can be visualized interactively. Try using the widget controls to cycle through the 3 concatenated structures.

msm.view(molsys_D, standard=True)

Selecting specific structures to concatenate (structure_indices)#

Instead of concatenating all structures present in the input systems, you can pass explicit structure indices for each system via structure_indices. For example, let’s select structures [0, 2] from \(D\) and structure 0 from \(A\):

molsys_E = msm.concatenate_structures([molsys_D, molsys_A], structure_indices=[[0, 2], 0])
msm.info(molsys_E)
form n_atoms n_groups n_components n_chains n_molecules n_entities n_peptides n_structures
molsysmt.MolSys 22 3 1 1 1 1 1 3

Specifying output form (to_form)#

By default, the resulting molecular system inherits the form of the first input system (molsysmt.MolSys). You can specify a different target output form using to_form:

molsys_F = msm.concatenate_structures([molsys_A, molsys_B, molsys_C], to_form='molsysmt.Structures')
msm.get_form(molsys_F)
'molsysmt.Structures'

Concatenating structural subsets (selections)#

You can also restrict concatenation to a specific subset of atoms across all input systems using selections:

molsys_G = msm.concatenate_structures([molsys_A, molsys_B, molsys_C], selections='atom_type=="C"')
msm.info(molsys_G)
form n_atoms n_groups n_components n_chains n_molecules n_entities n_peptides n_structures
molsysmt.MolSys 6 3 1 1 1 1 1 3

See also

Build peptide:
Build natural peptides with or without terminal caps.

Translate:
Translate entire molecular systems or specific selections in space.

Info:
Display a summary of the contents, topology, and structural data of a molecular system.

View:
Visualize a molecular system.

Get: Get values of specific attributes from a molecular system.

Append structures:
Append structures from one molecular system into another.