Skip to content

biotite-dev/springcraft

Repository files navigation

Springcraft

Springcraft is a Biotite extension package, that allows the analysis of AtomArray objects via Elastic Network Models (ENMs). An ENM can be thought of as a system that connects residues via springs: Interaction of nearby residues is governed by a harmonic potential, with the native (input) conformation representing the energy minimum. Normal mode analysis allows the researcher to investigate global functional movements of a protein in a fast coarse-grained manner.

Note

Springcraft is still in alpha stage. Although most implemented functionalities should already work as expected, some features are not well tested, yet.

Installation

Springcraft can be installed via

$ pip install springcraft

or

$ conda install -c conda-forge springcraft

You can also install Springcraft from source. The package uses Poetry for building distributions. Via PEP 517 it is possible to install the package from local source code via pip:

$ git clone https://github.com/biotite-dev/springcraft.git
$ pip install ./springcraft

Example

import numpy as np
import biotite.structure.io.pdbx as pdbx
import springcraft


pdbx_file = pdbx.PDBxFile.read("path/to/1l2y.cif")
atoms = pdbx.get_structure(pdbx_file, model=1)
ca = atoms[(atoms.atom_name == "CA") & (atoms.element == "C")]
ff = springcraft.InvariantForceField(cutoff_distance=7.0)
gnm = springcraft.GNM(ca, ff)
kirchhoff = gnm.kirchhoff

np.set_printoptions(linewidth=100)
print(kirchhoff)

Output:

[[ 4. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [-1.  6. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1.  0.]
 [-1. -1.  7. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1.  0.]
 [-1. -1. -1.  7. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [-1. -1. -1. -1.  8. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0. -1. -1. -1. -1.  9. -1. -1. -1.  0. -1.  0.  0.  0.  0.  0.  0. -1.  0.  0.]
 [ 0.  0. -1. -1. -1. -1.  8. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0. -1. -1. -1. -1.  7. -1. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0. -1. -1. -1. -1.  7. -1. -1.  0.  0. -1.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0. -1. -1. -1.  7. -1. -1. -1. -1.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0. -1. -1. -1. -1. -1.  8. -1. -1. -1.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1.  7. -1. -1. -1. -1. -1.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1. -1.  5. -1. -1.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0. -1. -1. -1. -1. -1.  7. -1. -1.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1. -1.  4. -1.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1.  0. -1. -1.  5. -1. -1.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1.  0.  0.  0. -1.  4. -1. -1.  0.]
 [ 0.  0.  0.  0.  0. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1.  5. -1. -1.]
 [ 0. -1. -1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1.  5. -1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. -1. -1.  2.]]