molsysmt.build.make_bioassembly#

molsysmt.build.make_bioassembly(molecular_system, bioassembly=None, structure_indices=0, to_form=None, skip_digestion=False)[source]#

Construct the biological assembly of a molecular system from its asymmetric unit.

Many structures deposited in the PDB represent only the asymmetric unit, while the biologically relevant form (the bioassembly) is obtained by applying a set of rotation and translation operations to replicate the chains. This function reads the bioassembly transformation matrices stored in the molecular system, applies them, and returns the fully assembled system.

Parameters:
  • molecular_system (molecular system) – Molecular system in any supported MolSysMT format.

  • bioassembly (object, default=None) – Argument bioassembly.

  • structure_indices (int, list, tuple, or numpy.ndarray, default=0) – Structure indices (0-based) to include or process.

  • to_form (object, default=None) – Argument to_form.

  • skip_digestion (bool, default=False) – Whether to skip MolSysMT’s internal argument digestion mechanism.

Returns:

The biological assembly as a merged molecular system in the form specified by to_form (or in the same form as the input if to_form is None).

Return type:

molecular system

Raises:

NotImplementedError – Raised when the bioassembly specifies different chain sets for different transformation operators (heterogeneous assemblies), which is not yet supported.

Notes

Each transformation in the bioassembly consists of a rotation matrix and a translation vector. The function extracts the relevant chains, applies each rotation and translation in sequence, and merges all transformed copies into a single molecular system.

Source chain_id values are preserved for their first occurrence. Generated copies that would repeat an identifier receive the next unused uppercase identifier (A through Z, then AA, AB, and so on). Author-provided chain_name values are preserved and may repeat across copies.

Examples

>>> import molsysmt as msm
>>> path = msm.systems['Barnase-Barstar']['1brs.bcif.gz']
>>> molsys = msm.convert(path)
>>> assembled_molsys = make_bioassembly(molsys, bioassembly='1')
>>> chain_ids = msm.get(assembled_molsys, element='chain', chain_id=True)
>>> len(chain_ids) == len(set(chain_ids))
True

Tutorial with more examples

See Make bioassembly.

Added in version 1.0.0.