Programs are written in Lua, so download Lua interpreter from www.lua.org or various repositories. They are experimental implementation that could be refined for a laboratory use, or embedding to the existing programs. They are developed and tested on Linux and Windows platforms, and most probably ok in MacOS.
Following movies demonstrate how the models are animated. The method is described in a manuscript: Yutaka Ueno, Shinya Muraoka and Tetsuo Sato. "Skeletal animation for visualizing dynamic shapes of macromolecules" Journal of Integrative Bioinformatics, vol.17, no.4 (2020) pp. 20180098. https://doi.org/10.1515/jib-2018-0098
An animation of the thermal fluctuation of protein molecule is demonstrated. The motion of the atomic model is created from normal mode analysis at ProMode database for the protein data bank (PDB) atomic models. Then our method generates the skeletal bones to animate the molecular model in the format of BVH motion capture file. Using Blender the animation is generated. With the superposition of the normal mode waves gives a typical thermal fluctuation of the protein.
The program convert the simulation result output file into the motion capture file BVH.
ela2cpl3.lua --- The conversion program
1amy-atme.tar.gz --- a copy of the nomral mode analysis result from PDBelastic web site
The formal output file is on the PDBj site
https://pdbj.org/promode_data/am/1amy/1amy-results.tgz
ela3-1amy.bvh --- a sample output BVH file
ribbon-1amy-chimera.stl --- a ribbom model for 1AMY in STL format by UCSF Chimera
those files are requried to run the main program.
pdbmol.lua --- PDB parser and molecular data list
mslmop.lua --- a module for matrix rotations
fit3p.lua --- module for matrix to fit 2 objects made by 3 nodes coordinates
md300-nmd1.blend --- a sample blender script for this movie
Among files from the normal mode calculation, only files with extension .flcatmE for all mode are used. Unpack these files in a directory 1amy-result/. There are parameters to modify amplitude or phase shift for combining each mode that could be defined in arrays: amplitude[] and phase[].
This program first make a list of group for protein residues that is converted to the skeletal bones. Then the generated groups have a skeleton bone whose geometry is make by averaging atomic coordinates data assigned in the group. Then the vector of the bone is also calculated by the sequence of atoms in the group. The calculation of the vector of the bone was modified at empirical manner, so that the appearance of the final appearance yield a reasonable direction for the given group. Since the bone is used only for the visualization handle, the precise definition is not needed. Small differences in the bone geometry does not really make difference in the final animated structure of this method. Then the groups of residue in the PDB data is converted to the BVH skeleton description. Here we take a flat structure without a parent relationship between skeleton bone. It is useful because the bones are not tightly connected in ths grouping method for the protein. In case the all groups chains are connected as sequence of child bones, calculation of atomic coordinates becomes complicated that is not good approach. The superposition of wave is applied in the function XYZadd() that is saved into the data structure bonedata[].motion[] The simple addition with variable amplitude and phase[] shift value would also be specified. The calculated oscillation vectors are applied to the atomic coordinates, then the group are divided into three part and these subgroup positions are used to calculate the rigid translation matrix that most well describe the motion of atoms in the group. Then the rotation matrix is converted into Euler angles to save in the BVH file.
A trajectory data of a molecular dynamics simulation was converted to a motion data set of the skeletal bones. Using the skeletal bones to modify molecular shape depicted in polygon mesh, various kind of the molecular models are able to animated.
The program convert the trajectory PDB file into the motion capture file BVH.
tpm2cpl3.lua --- The conversion program
1amy0_md300.pdb.gz --- The trajectory file converted into multiple model PDB file
1amy-dssp.txt ---DSSP result file for making bones, the secondary structre annotations for each residues
tpm-1amy.bvh --- Output BVH file
ribbon-1amy-traj1.stl --- a ribbom model for this trajectory conformation
the program also requires Lua functions that are loaded from files: pdbmol.lua mslmop.lua fit3p.lua
md300-tpm3.blend --- a sample blender script for this movie
Following file names are set: TFILE for the trajectory file name, DFILE for the DSSP file, and BFILE for the output BVH file name. Groups are made with maximum residue length MAXLEN. In a rare condition where the 3 atoms are located in a line, the matrix calculations to fit two conformation may fail. They can be avoided by
An ordinary movie for a trajectory data of a molecular dynamics simulation. The movie was made by UCSF Chimera from GROMACS simulation. This fluctuation motion was used in the previous section, In this movie high frequency vibrational components are included that are not described in the normal mode motions.
A typical molecular dynamics for a Brownian motion with explicit water molecules were tested for PDB data 1AMY following GROMACS documentation.
donvt.sh --- GROMACS a typical preparation for a MD simulation found in the official tutorial,
where nvt300.mdp and npt300.mdp are identical to the original tutorial.
md300f05.mdp --- GROMACS input file for the production run.
% gmx grompp -f md300f05.mdp -c 1amy0_npt300.gro -t 1amy0_npt300.cpt -p 1amy0.top -o 1amy0_md300.tpr
% gmx mdrun -v -deffnm 1amy0_md300 -deffnm 1amy0_md300
The result output trajectory data is very large.
1amy0_md300.trr part1 part2 part3 part4 part5 part6 part7 part8 part9 part10 part11 part12 part13
--- 343MBytes, an single output trajectory data is obtained by 7zip program from each files gunziped with numerical file extensions.
1amy0_md300.tpr --- the corresponding topology file required to read the trajectory file
An example of the structural change of Lysyl-tRNA synthetase based on PDB database 1BBU. Using the database for protein structural change collected from PDB protein structure database, an animation for the structural change on ligand binding is demonstrated as a database code entry code PSCID=ID.2 in Protein Structural Change Database (PSCDB) https://www.ideal-db.org/pscdb/ developed in a research project at Nagoya University.
Two conformation of the protein are available from PDB. There are PDB files for the ligand free state and ligand bound state. These atomic coordinates are differently obtained from x-ray crystallography where these amino acid sequences are not always same because crystallography experiment may success only on one state from a certain species. Therefore, sequences are aligned to fit the atomic model of the proteins at different amino acid sequence. Let us focus on the ligand bound state of the protein, that will release the ligand and conformation will be changed that should fit to the ligand free state of the protein. While PSCDB provides morphing coordinates for the ligand free state, we here obtained motions based on the ligand bound state in order to minimize crashes of side chains. Therefore, we renumbered the sequence of amino acid residues in morphing PDBs that match to the ligand bound state. Among 50 morpihng models calculated on the server, files for models at the time frame indices 1,10,20,30,40,49 were used. The chain names are renamed as A and B for the biological unit, and L for the ligand molecules.
mofpsc2.lua --- fix residue numbers for the morphing motion results
pb0481m.zip --- converted PDB files
propdb2bvh7e7.lua --- make a BVH file from the sequence of PDB files
pr7e7-1bbu.bvh --- generated BVH file
pscdb-481-t72.blend --- a sample blender script for this movie (zip compressed)
We are studying the animation method using Blender for molecular biology. Some of the examples are provided from our site. Blender for Molecular Biology
This work was supported by JSPS KAKENHI Grant Number 20K12072 and 24104004. The software was developed at a research institute, National Institute of Advanced Industrial Science and Technology (AIST)
Questions and comments are welcome using web-based GitHub Issue report.