update new files
[unres.git] / source / cluster / wham / src-M-SAXS-homology / seq2chains.f
1       subroutine seq2chains(nres,itype,nchain,chain_length,chain_border,
2      &  ireschain)
3 c
4 c Split the total UNRES sequence, which has dummy residues separating
5 c the chains, into separate chains. The length of  chain ichain is
6 c contained in chain_length(ichain), the first and last non-dummy
7 c residues are in chain_border(1,ichain) and chain_border(2,ichain),
8 c respectively. The lengths pertain to non-dummy residues only.
9 c
10       implicit none
11       include 'DIMENSIONS'
12       integer nres,itype(nres),nchain,chain_length(nres),
13      &  chain_border(2,nres),ireschain(nres)
14       integer ii,ichain,i,j
15       logical new_chain
16       ichain=1
17       new_chain=.true.
18       chain_length(ichain)=0
19       ii=1
20       do while (ii.lt.nres)
21         if (itype(ii).eq.ntyp1) then
22           if (.not.new_chain) then
23             new_chain=.true.
24             chain_border(2,ichain)=ii-1
25             ichain=ichain+1
26             chain_border(1,ichain)=ii+1
27             chain_length(ichain)=0
28           endif
29         else
30           if (new_chain) then
31             chain_border(1,ichain)=ii
32             new_chain=.false.
33           endif
34           chain_length(ichain)=chain_length(ichain)+1
35         endif
36         ii=ii+1
37       enddo
38       if (itype(nres).eq.ntyp1) then
39         ii=ii-1
40       else
41         chain_length(ichain)=chain_length(ichain)+1
42       endif
43       if (chain_length(ichain).gt.0) then
44         chain_border(2,ichain)=ii
45         nchain=ichain
46       else
47         nchain=ichain-1
48       endif
49       ireschain=0
50       do i=1,nchain
51         do j=chain_border(1,i),chain_border(2,i)
52           ireschain(j)=i
53         enddo
54       enddo
55       return
56       end