GithubHelp home page GithubHelp logo

kad-ecoli / tmalign Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 9.0 1.09 MB

This repo is outdated. Please use https://github.com/pylelab/USalign instead

Home Page: https://github.com/pylelab/USalign

C 50.00% Makefile 0.28% C++ 49.72%

tmalign's Introduction

==============================================================================
   TM-align: protein and RNA structure alignment by TM-score superposition.

   This program was written by (in reverse chronological order)
   Chengxin Zhang, Sha Gong, Jianjie Wu, and Jianyi Yang
   at Yang Zhang lab, Department of Computational Medicine and Bioinformatics,
   University of Michigan, 100 Washtenaw Ave, Ann Arbor, MI 48109-2218.
   Please report issues to [email protected]

   References to cite:
   S Gong, C Zhang, Y Zhang. Bioinformatics, btz282 (2019)
   Y Zhang, J Skolnick. Nucl Acids Res 33, 2302-9 (2005)

   DISCLAIMER:
     Permission to use, copy, modify, and distribute this program for 
     any purpose, with or without fee, is hereby granted, provided that
     the notices on the head, the reference information, and this
     copyright notice appear in all copies or substantial portions of 
     the Software. It is provided "as is" without express or implied 
     warranty.

   *************** updating history ********************************
   2012/01/24: A C/C++ code of TM-align was constructed by J Yang
   2016/05/21: Several updates of this program were made by J Wu, including
              (1) fixed several compiling bugs
              (2) made I/O of C/C++ version consistent with the Fortran version
              (3) added outputs including full-atom and ligand structures
              (4) added options of '-i', '-I' and '-m'
   2016/05/25: fixed a bug on PDB file reading
   2018/06/04: Several updates were made by C Zhang, including
              (1) Fixed bug in reading PDB files with negative residue index,
                  at the expense of the '-o' option now only being able to
                  output superposed structure instead of full rasmol script.
              (2) Implemented the fTM-align algorithm (by the '-fast' option)
                  as described in R Dong, S Pan, Z Peng, Y Zhang, J Yang
                  (2018) Nucleic acids research. gky430.
              (3) Included option to perform TM-align against a whole 
                  folder of PDB files. A full list of options not available
                  in the Fortran version can be explored by TMalign -h
   2018/07/27: Added the -byresi option for TM-score superposition without
               re-alignment as in TMscore and TMscore -c
   2018/08/07: Added the -dir option
   2018/08/14: Added the -split option
   2018/08/16: Added the -infmt1, -infmt2 options.
               TMalign can now read .gz and .bz2 compressed files.
   2018/10/20: C Zhang and S Gong updated the RNA alignment part of
               the program. Changes include:
              (1) new d0 calculation for RNA.
              (2) secondary structure assignment for RNA.
              (3) automatic detection of molecule type (protein vs RNA).
   2019/01/07: C Zhang added support for PDBx/mmCIF format.
   2019/02/09: Fixed asymmetric alignment bug.
   2019/03/17: Added the -cp option for circular permutation
   2019/03/27: Added the -mirror option for mirror structure alignment
   2019/04/25: The RNA-align algorithm was published by Bioinformatics
   2019/07/24: Fixed bug in displaying matching residues.
               Added GDT and MaxSub to TMscore program.
   2019/08/18: Prevent excessive circular permutation alignment by -cp.
   2020/05/19: Add back rasmol output
   2020/12/12: Fixed bug in double precision coordinate mmcif alignment
   2021/01/07: Fixed bug in TMscore -c
   2021/05/29: Remove unnecessary depedency on malloc.h, which prevent
               compilation on Mac OS
===============================================================================

=========================
 How to install TM-align
=========================
To compile the program in your Linux computer, simply enter

 make

or

 g++ -static -O3 -ffast-math -lm -o TMalign TMalign.cpp

The '-static' flag should be removed on Mac OS, which does not support
building static executables.

=====================
 How to use TM-align
=====================
You can run the program without arguments to obtain a brief instruction

 ./TMalign structure1.pdb structure2.pdb

===================
 Fortran version
===================
You can download the fortran version of TM-align from
https://zhanglab.ccmb.med.umich.edu/TM-align/

This C++ version of TM-align implemented several features not available in the
fortran version, including RNA alignment and batch alignment of multiple 
structures. A full list of available options can be explored by:
  ./TMalign -h

2021/05/20

tmalign's People

Contributors

kad-ecoli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tmalign's Issues

TMscore

Implement TMscore superposition based only on residue index.

global variables

TMalign has ~50 global variables, as declared by global_var.h. Try to change them to local variables, starting from the *_opt variables, to make TMalign easier to be called as a library.

get_PDB_len

get_PDB_len is unnecessary and expensive. Should instead Read everything in read_PDB as vector and convert it to array later. Currently, I/O is unnecessarily heavy: once for checking file existence, once for estimating chain length, once for reading the CA atoms.

alternative format

Split by model and by chain.
Read pdb.gz, pdb.bz2, best-effort/minimal tarball, SPICKER, xyz format protein structure.

low performance of xyz

xyz file reading is very slow. Probably << is not a good way of reading data. Change xyz parser so that it does not perform numerical conversion.

delete pesky nres

TMalign -o should transform the x,y, z only, without destroying any other part of the PDB file. nres causes problem for PDB files with negative residue index.

circular permutation

It will be good to have additional option for TMalign between circularly permuted PDB.
http://sarst.life.nthu.edu.tw/cpdb/

This can be relatively easily implemented by the following steps:
[1] add L/2 adaptor residues at both termini of the longer chain (L).
[2] If the shorter chain (l) has align both adaptors on longer chain, the adaptor with less aligned residues are deleted and a new alignment is re-computed.

asymmetric alignment

TM-align occasionally generate asymmetric alignment. For example,
"TMalign 1x5gA.pdb 2q7nA5.pdb" and "TMalign 2q7nA5.pdb 1x5gA.pdb" does not not generate the same alignment. Similarly, "TMalign 1se9A.pdb 2edpA.pdb" and "TMalign 2edpA.pdb 1se9A.pdb"does not generate the same alignment. I suspect that this is related to the secondary structure intial alignment step. We should check if this is true. If it is, we should generate two pairs of secondary structure alignments (A vs B, and B vs A), and choose the alignment with higher TM-score if these two alignments are not the same.

basic_fun.h, AAmap fallback for lowercase letters adds to memory address

if ('a'<=A && A<='z') return " "+toupper(A);

The fallback for lowercase letters in the AAmap function in basic_fun.h does not seem to work properly. The used function "toupper" returns and int. That number is just added (I guess to the memory address) of the constant " " string instead of concatenating the uppercase letter. Have a look at the attached file. AAmap1 mimics the original version, AAmap2 contains a possible fix.

test.cc.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.