+++ /dev/null
- subroutine contact(lprint,ncont,icont,co)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.IOUNITS'
- include 'COMMON.CHAIN'
- include 'COMMON.INTERACT'
- include 'COMMON.FFIELD'
- include 'COMMON.NAMES'
- real*8 facont /1.569D0/ ! facont = (2/(1-sqrt(1-1/4)))**(1/6)
- integer ncont,icont(2,maxcont)
- logical lprint
- ncont=0
- kkk=3
- do i=nnt+kkk,nct
- iti=iabs(itype(i))
- do j=nnt,i-kkk
- itj=iabs(itype(j))
- if (ipot.ne.4) then
-c rcomp=sigmaii(iti,itj)+1.0D0
- rcomp=facont*sigmaii(iti,itj)
- else
-c rcomp=sigma(iti,itj)+1.0D0
- rcomp=facont*sigma(iti,itj)
- endif
-c rcomp=6.5D0
-c print *,'rcomp=',rcomp,' dist=',dist(nres+i,nres+j)
- if (dist(nres+i,nres+j).lt.rcomp) then
- ncont=ncont+1
- icont(1,ncont)=i
- icont(2,ncont)=j
- endif
- enddo
- enddo
- if (lprint) then
- write (iout,'(a)') 'Contact map:'
- do i=1,ncont
- i1=icont(1,i)
- i2=icont(2,i)
- it1=itype(i1)
- it2=itype(i2)
- write (iout,'(i3,2x,a,i4,2x,a,i4)')
- & i,restyp(it1),i1,restyp(it2),i2
- enddo
- endif
- co = 0.0d0
- do i=1,ncont
- co = co + dfloat(iabs(icont(1,i)-icont(2,i)))
- enddo
- co = co / (nres*ncont)
- return
- end
-c----------------------------------------------------------------------------
- double precision function contact_fract(ncont,ncont_ref,
- & icont,icont_ref)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.IOUNITS'
- integer ncont,ncont_ref,icont(2,maxcont),icont_ref(2,maxcont)
- nmatch=0
-c print *,'ncont=',ncont,' ncont_ref=',ncont_ref
-c write (iout,'(20i4)') (icont_ref(1,i),i=1,ncont_ref)
-c write (iout,'(20i4)') (icont_ref(2,i),i=1,ncont_ref)
-c write (iout,'(20i4)') (icont(1,i),i=1,ncont)
-c write (iout,'(20i4)') (icont(2,i),i=1,ncont)
- do i=1,ncont
- do j=1,ncont_ref
- if (icont(1,i).eq.icont_ref(1,j) .and.
- & icont(2,i).eq.icont_ref(2,j)) nmatch=nmatch+1
- enddo
- enddo
-c print *,' nmatch=',nmatch
-c contact_fract=dfloat(nmatch)/dfloat(max0(ncont,ncont_ref))
- contact_fract=dfloat(nmatch)/dfloat(ncont_ref)
- return
- end
-c----------------------------------------------------------------------------
- double precision function contact_fract_nn(ncont,ncont_ref,
- & icont,icont_ref)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.IOUNITS'
- integer ncont,ncont_ref,icont(2,maxcont),icont_ref(2,maxcont)
- nmatch=0
-c print *,'ncont=',ncont,' ncont_ref=',ncont_ref
-c write (iout,'(20i4)') (icont_ref(1,i),i=1,ncont_ref)
-c write (iout,'(20i4)') (icont_ref(2,i),i=1,ncont_ref)
-c write (iout,'(20i4)') (icont(1,i),i=1,ncont)
-c write (iout,'(20i4)') (icont(2,i),i=1,ncont)
- do i=1,ncont
- do j=1,ncont_ref
- if (icont(1,i).eq.icont_ref(1,j) .and.
- & icont(2,i).eq.icont_ref(2,j)) nmatch=nmatch+1
- enddo
- enddo
-c print *,' nmatch=',nmatch
-c contact_fract=dfloat(nmatch)/dfloat(max0(ncont,ncont_ref))
- contact_fract_nn=dfloat(ncont-nmatch)/dfloat(ncont)
- return
- end
-c----------------------------------------------------------------------------
- subroutine hairpin(lprint,nharp,iharp)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.IOUNITS'
- include 'COMMON.CHAIN'
- include 'COMMON.INTERACT'
- include 'COMMON.FFIELD'
- include 'COMMON.NAMES'
- integer ncont,icont(2,maxcont)
- integer nharp,iharp(4,maxres/3)
- logical lprint,not_done
- real*8 rcomp /6.0d0/
- ncont=0
- kkk=0
-c print *,'nnt=',nnt,' nct=',nct
- do i=nnt,nct-3
- do k=1,3
- c(k,2*nres+1)=0.5d0*(c(k,i)+c(k,i+1))
- enddo
- do j=i+2,nct-1
- do k=1,3
- c(k,2*nres+2)=0.5d0*(c(k,j)+c(k,j+1))
- enddo
- if (dist(2*nres+1,2*nres+2).lt.rcomp) then
- ncont=ncont+1
- icont(1,ncont)=i
- icont(2,ncont)=j
- endif
- enddo
- enddo
- if (lprint) then
- write (iout,'(a)') 'PP contact map:'
- do i=1,ncont
- i1=icont(1,i)
- i2=icont(2,i)
- it1=itype(i1)
- it2=itype(i2)
- write (iout,'(i3,2x,a,i4,2x,a,i4)')
- & i,restyp(it1),i1,restyp(it2),i2
- enddo
- endif
-c finding hairpins
- nharp=0
- do i=1,ncont
- i1=icont(1,i)
- j1=icont(2,i)
- if (j1.eq.i1+2 .and. i1.gt.nnt .and. j1.lt.nct) then
-c write (iout,*) "found turn at ",i1,j1
- ii1=i1
- jj1=j1
- not_done=.true.
- do while (not_done)
- i1=i1-1
- j1=j1+1
- do j=1,ncont
- if (i1.eq.icont(1,j) .and. j1.eq.icont(2,j)) goto 10
- enddo
- not_done=.false.
- 10 continue
-c write (iout,*) i1,j1,not_done
- enddo
- i1=i1+1
- j1=j1-1
- if (j1-i1.gt.4) then
- nharp=nharp+1
- iharp(1,nharp)=i1
- iharp(2,nharp)=j1
- iharp(3,nharp)=ii1
- iharp(4,nharp)=jj1
-c write (iout,*)'nharp',nharp,' iharp',(iharp(k,nharp),k=1,4)
- endif
- endif
- enddo
-c do i=1,nharp
-c write (iout,*)'i',i,' iharp',(iharp(k,i),k=1,4)
-c enddo
- if (lprint) then
- write (iout,*) "Hairpins:"
- do i=1,nharp
- i1=iharp(1,i)
- j1=iharp(2,i)
- ii1=iharp(3,i)
- jj1=iharp(4,i)
- write (iout,*)
- write (iout,'(20(a,i3,1x))') (restyp(itype(k)),k,k=i1,ii1)
- write (iout,'(20(a,i3,1x))') (restyp(itype(k)),k,k=j1,jj1,-1)
-c do k=jj1,j1,-1
-c write (iout,'(a,i3,$)') restyp(itype(k)),k
-c enddo
- enddo
- endif
- return
- end
-c----------------------------------------------------------------------------
-