[med-svn] [Git][med-team/tm-align][upstream] New upstream version 20170708+dfsg
Andreas Tille
gitlab at salsa.debian.org
Sun Feb 18 16:46:12 UTC 2018
Andreas Tille pushed to branch upstream at Debian Med / tm-align
Commits:
8d066904 by Andreas Tille at 2018-02-18T17:31:33+01:00
New upstream version 20170708+dfsg
- - - - -
1 changed file:
- TMalign.f
Changes:
=====================================
TMalign.f
=====================================
--- a/TMalign.f
+++ b/TMalign.f
@@ -8,7 +8,7 @@
* please contact email: zhng at umich.edu.
*
* Reference to cite:
-* Yang Zhang, Jeffrey Skolnick, Nucl. Acid Res. 2005 33: 2303-9
+* Yang Zhang, Jeffrey Skolnick, Nucl. Acid Res. 2005 33: 2302-9
*
* Permission to use, copy, modify, and distribute this program for
* any purpose, with or without fee, is hereby granted, provided that
@@ -74,6 +74,7 @@
* 2014/06/01: Added 'TM.sup_all_atm_lig' to display ligand structures
* 2015/09/14: optimized I/O which increased speed by ~100%
* 2016/05/21: fixed a bug on conformation output
+* 2017/07/08: Added one iteration in initial4 to avoid asymmetric alignment
**************************************************************************
program TMalign
@@ -149,7 +150,7 @@ ccc
write(*,*)
write(*,*)'Brief instruction for running TM-align program:'
write(*,*)'(For detail: Zhang & Skolnick, Nucl. Acid. Res.',
- & ' 33: 2303, 2005)'
+ & ' 33: 2302-9, 2005)'
write(*,*)
write(*,*)'1. Align ''chain_1.pdb'' and ''chain_2.pdb'':'
write(*,*)' >TMalign chain_1.pdb chain_2.pdb'
@@ -199,7 +200,7 @@ ccc
goto 9999
endif
- version='20160521'
+ version='20170708'
if(fnam.eq.'-v')then
write(*,*)'TM-align Version ',version
goto 9999
@@ -1118,7 +1119,7 @@ ccc
endif
*11111111111111111111111111111111111111111111111111111111
-* get initial alignment from gapless threading
+* get initial alignment from global gapless threading
**********************************************************
call get_initial1 !gapless threading
do i=1,nseq2
@@ -1293,7 +1294,7 @@ c record the best alignment in whole search ---------->
3333 continue
*444444444444444444444444444444444444444444444444444444444
-* get initial alignment of pieces from gapless threading
+* initial alignment from gapless threading on largest continous fragments
**********************************************************
call get_initial4 !gapless threading
do i=1,nseq2
@@ -1583,15 +1584,18 @@ c 1->coil, 2->helix, 3->turn, 4->strand
fra_min1=fra_min-1 !cutoff for shift, save time
dcu0=4.25
-ccc Find the smallest continuous fragments -------->
do i=1,nseq1
mm(1,i)=mm1(i)
enddo
do i=1,nseq2
mm(2,i)=mm2(i)
enddo
- do k=1,2
- dcu=dcu0
+ GL_max=0
+
+c do k=1,2 !k=1, fragment from protein1; k=2, fragment from protein2
+ do k=2,1,-1 !k=1, fragment from protein1; k=2, fragment from protein2
+ccc Find the smallest continuous fragments on protein-k -------->
+ dcu=dcu0 !breaking bond-length
if(k.eq.1)then
nseq0=nseq1
r_min=nseq1/3.0 !minimum fragment, in case too small protein
@@ -1600,12 +1604,14 @@ ccc Find the smallest continuous fragments -------->
r_min=nseq2/3.0 !minimum fragment, in case too small protein
endif
if(r_min.gt.fra_min)r_min=fra_min
+
20 nfr=1 !number of fragments
- j=1 !number of residue at nf-fragment
- ifr2(k,nfr,j)=1 !what residue
+ j=1 !number of residues at nfr-fragment
+ ifr2(k,nfr,j)=1 !residue ID of nfr-fragment
Lfr2(k,nfr)=j !length of the fragment
+
do i=2,nseq0
- dis=diszy(k-1,i-1,i)
+ dis=diszy(k-1,i-1,i) !str,res,res
contin=.false.
if(dcu.gt.dcu0)then
if(dis.lt.dcu)then
@@ -1639,107 +1645,108 @@ ccc Find the smallest continuous fragments -------->
dcu=dcu+0.01
goto 20
endif
- enddo
-c^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-ccc select what piece will be used (this may araise ansysmetry, but
-ccc only when L1=L2 and Lfr1=Lfr2 and L1 ne Lfr1
-ccc if L1=Lfr1 and L2=Lfr2 (normal proteins), it will be the same as initial1
- mark=1
- if(Lfr2(1,i_fr2(1)).lt.Lfr2(2,i_fr2(2)))then
- mark=1
- elseif(Lfr2(1,i_fr2(1)).gt.Lfr2(2,i_fr2(2)))then
- mark=2
- else !Lfr1=Lfr2
- if(nseq1.le.nseq2)then
- mark=1
- else
- mark=2
- endif
- endif
-ccc
- L_fr=Lfr2(mark,i_fr2(mark))
- do i=1,L_fr
- ifr(i)=ifr2(mark,i_fr2(mark),i)
- enddo
-ccc
- if(mark.eq.1)then !non-redundant to get_initial1
- nseq0=nseq1
- else
- nseq0=nseq2
- endif
- if(L_fr.eq.nseq0)then
- n1=int(nseq0*0.1) !0
- n2=int(nseq0*0.89) !2
- j=0
- do i=n1,n2
- j=j+1
- ifr(j)=ifr(n1+j)
+
+ L_fr=Lfr2(k,i_fr2(k)) !length of the maximum fragment
+ do i=1,L_fr
+ ifr(i)=ifr2(k,i_fr2(k),i)
enddo
- L_fr=j
- endif
-
-ccc get initial ------------->
- if(mark.eq.1)then !nseq1 as the smallest one
- nseq1_=L_fr
- aL=min(nseq1_,nseq2)
- idel=aL/2.5 !minimum size of considered fragment
- if(idel.le.fra_min1)idel=fra_min1
- n1=-nseq2+idel !shift1
- n2=nseq1_-idel !shift2
- GL_max=0
- do ishift=n1,n2
- L=0
- do j=1,nseq2
- i=j+ishift
- if(i.ge.1.and.i.le.nseq1_)then
- L=L+1
- invmap(j)=ifr(i)
- else
- invmap(j)=-1
+
+ccc find the best initial alignment------------>
+ if(k.eq.1)then !using fragment from protein-1
+ if(L_fr.eq.nseq1)then !to make it different from initial1
+ n1=int(nseq1*0.1) !0
+ n2=int(nseq1*0.89) !2
+ j=0
+ do i=n1,n2
+ j=j+1
+ ifr(j)=ifr(n1+j)
+ enddo
+ L_fr=j
+ endif
+
+ nseq1_=L_fr
+ aL=min(nseq1_,nseq2)
+ idel=aL/2.5 !minimum size of considered fragment
+ if(idel.le.fra_min1)idel=fra_min1
+ n1=-nseq2+idel !shift1
+ n2=nseq1_-idel !shift2
+c write(*,*)idel,aL,n1,n2,'aaa---'
+ do ishift=n1,n2
+ L=0
+ do j=1,nseq2
+ i=j+ishift
+ if(i.ge.1.and.i.le.nseq1_)then
+ L=L+1
+ invmap(j)=ifr(i)
+ else
+ invmap(j)=-1
+ endif
+ enddo
+ if(L.ge.idel)then
+ call get_GL(GL)
+ if(GL.gt.GL_max)then
+ GL_max=GL
+ do i=1,nseq2
+ invmap_i(i)=invmap(i)
+ enddo
+ endif
endif
enddo
- if(L.ge.idel)then
- call get_GL(GL)
- if(GL.gt.GL_max)then
- GL_max=GL
- do i=1,nseq2
- invmap_i(i)=invmap(i)
- enddo
- endif
+
+c write(*,*)'GL_max=',GL_max
+c do i=1,nseq2
+c write(*,*)i,invmap_i(i),'111'
+c enddo
+
+ else
+ if(L_fr.eq.nseq2)then !to make it different from initial1
+ n1=int(nseq2*0.1) !0
+ n2=int(nseq2*0.89) !2
+ j=0
+ do i=n1,n2
+ j=j+1
+ ifr(j)=ifr(n1+j)
+ enddo
+ L_fr=j
endif
- enddo
- else
- nseq2_=L_fr
- aL=min(nseq1,nseq2_)
- idel=aL/2.5 !minimum size of considered fragment
- if(idel.le.fra_min1)idel=fra_min1
- n1=-nseq2_+idel
- n2=nseq1-idel
- GL_max=0
- do ishift=n1,n2
- L=0
- do j=1,nseq2
- invmap(j)=-1
- enddo
- do j=1,nseq2_
- i=j+ishift
- if(i.ge.1.and.i.le.nseq1)then
- L=L+1
- invmap(ifr(j))=i
+
+ nseq2_=L_fr
+ aL=min(nseq1,nseq2_)
+ idel=aL/2.5 !minimum size of considered fragment
+ if(idel.le.fra_min1)idel=fra_min1
+ n1=-nseq2_+idel
+ n2=nseq1-idel
+c write(*,*)idel,aL,n1,n2,'bbb----'
+ do ishift=n1,n2
+ L=0
+ do j=1,nseq2
+ invmap(j)=-1
+ enddo
+ do j=1,nseq2_
+ i=j+ishift
+ if(i.ge.1.and.i.le.nseq1)then
+ L=L+1
+ invmap(ifr(j))=i
+ endif
+ enddo
+ if(L.ge.idel)then
+ call get_GL(GL)
+ if(GL.gt.GL_max)then
+ GL_max=GL
+ do i=1,nseq2
+ invmap_i(i)=invmap(i)
+ enddo
+ endif
endif
enddo
- if(L.ge.idel)then
- call get_GL(GL)
- if(GL.gt.GL_max)then
- GL_max=GL
- do i=1,nseq2
- invmap_i(i)=invmap(i)
- enddo
- endif
- endif
- enddo
- endif
+
+c write(*,*)'GL_max=',GL_max
+c do i=1,nseq2
+c write(*,*)i,invmap_i(i),'1112222'
+c enddo
+ endif
+ enddo
+c^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return
end
@@ -2896,6 +2903,8 @@ ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
* one layer of the matrix. This code was exploited in TM-align
* because it is about 1.5 times faster than a complete N-W code
* and does not influence much the final structure alignment result.
+* In 1/1000 case, it may result in asymmetry, i.e. A_to_B!=B_to_A
+* For example, '1se9A.pdb' and '2edpA.pdb'
********************************************************************
SUBROUTINE DP(NSEQ1,NSEQ2)
PARAMETER(nmax=5000)
View it on GitLab: https://salsa.debian.org/med-team/tm-align/commit/8d066904b2b3a5c9a9ba1b370d1300939846e5b5
---
View it on GitLab: https://salsa.debian.org/med-team/tm-align/commit/8d066904b2b3a5c9a9ba1b370d1300939846e5b5
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/debian-med-commit/attachments/20180218/082a9e4e/attachment-0001.html>
More information about the debian-med-commit
mailing list