# xdrf2ang : extracts backbone angles from a cx trajectory file
# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format
#
-# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format
-# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format.
+# removed xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format
+# removed xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format.
#
# 9/23/2010 A. Liwo
#
misc.f
rescode.f
nazwy.f
+ seq2chains.f
)
set(UNRES_XDRF_XDRF2PDB-M_SRC-M
misc.f
rescode.f
nazwy.f
+ seq2chains.f
)
- integer nres,nsup,nstart_sup,nz_start,nz_end,nres0,nstart_seq
+ integer nres,nsup,nstart_sup,nz_start,nz_end,nres0,nstart_seq,
+ & nchain,chain_length,chain_border,iprzes,
+ & chain_border1,ireschain,tabpermchain,npermchain
double precision c,dc,dc_old,d_c_work,xloc,xrot,dc_norm,t,r,
& prod,rt,dc_work,cref,crefjlee
common /chain/ c(3,maxres2+2),dc(3,0:maxres2),dc_old(3,0:maxres2),
& xloc(3,maxres),xrot(3,maxres),dc_norm(3,0:maxres2),
- & dc_work(MAXRES6),nres,nres0
+ & dc_work(MAXRES6),nres,nres0,
+ & chain_length(maxchain),npermchain,ireschain(maxres),
+ & tabpermchain(maxchain,maxperm),
+ & chain_border(2,maxchain),chain_border1(2,maxchain),nchain
common /rotmat/ t(3,3,maxres),r(3,3,maxres),prod(3,3,maxres),
& rt(3,3,maxres)
common /refstruct/ cref(3,maxres2+2),crefjlee(3,maxres2+2),
& nsup,nstart_sup,nstart_seq
common /from_zscore/ nz_start,nz_end
+ double precision boxsize(3)
+ common /box/ boxsize
+
parameter (max_cg_procs=maxprocs)
C Max. number of AA residues
integer maxres
- parameter (maxres=1500)
+ parameter (maxres=5000)
C Appr. max. number of interaction sites
integer maxres2,maxres6,mmaxres6
parameter (maxres2=2*maxres,maxres6=6*maxres)
C to master; depends on nstex / ntwx ratio
integer max_cache_traj
parameter (max_cache_traj=10)
+C Max number of symetric chains
+ integer maxchain
+ parameter (maxchain=50)
+ integer maxperm
+ parameter (maxperm=120)
+++ /dev/null
-# Set of programs to convert UNRES xdrf format (compressed Cartesian coordinates) to PDF
-# or raw-Cartesian format (*.x) or to extract backbone angular coordinates (*.ang)
-# The pdb files can be constructed from canonical or MREMD trajectories.
-#
-# The xdrf library is required
-#
-# Programs
-#
-# xdrf2pdb : converts a single cx trajectory file to PDB format
-# xdrf2x : converts a single cx trajectory file to raw-coordinate (x) format
-# xdrf2ang : extracts backbone angles from a cx trajectory file
-# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format
-#
-# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format
-# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format.
-#
-# 9/23/2010 A. Liwo
-
-FC=gfortran
-
-BINDIR = ../../../bin
-
-#OPT = -fast
-OPT =
-
-FFLAGS = -c ${OPT}
-
-CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR -DNEWUNRES
-
-M4 = m4
-M4FILE = underscore.m4
-
-.SUFFIXES: .F
-.F.o:
- ${FC} ${FFLAGS} ${CPPFLAGS} $*.F
-.c.o:
- ${CC} -c ${CPPFLAGS} $*.c
-
-xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o xdrf/libxdrf.a
- ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-mult xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o xdrf/libxdrf.a
-
-xdrf2pdb-m: xdrf2pdb-m.o geomout.o misc.o rescode.o nazwy.o xdrf/libxdrf.a
- ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-m-mult xdrf2pdb-m.o geomout.o rescode.o misc.o nazwy.o xdrf/libxdrf.a
-
-xdrf2pdb1: xdrf2pdb1.o geomout.o misc.o rescode.o nazwy.o xdrf/libxdrf.a
- ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb1-mult xdrf2pdb1.o geomout.o rescode.o misc.o nazwy.o xdrf/libxdrf.a
-
-clean:
- rm -f *.o
--- /dev/null
+Makefile_ifort
\ No newline at end of file
--- /dev/null
+# Set of programs to convert UNRES xdrf format (compressed Cartesian coordinates) to PDF
+# or raw-Cartesian format (*.x) or to extract backbone angular coordinates (*.ang)
+# The pdb files can be constructed from canonical or MREMD trajectories.
+#
+# The xdrf library is required
+#
+# Programs
+#
+# xdrf2pdb : converts a single cx trajectory file to PDB format
+# xdrf2x : converts a single cx trajectory file to raw-coordinate (x) format
+# xdrf2ang : extracts backbone angles from a cx trajectory file
+# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format
+#
+# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format
+# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format.
+#
+# 9/23/2010 A. Liwo
+
+FC=gfortran
+
+BINDIR = ../../../bin
+
+#OPT = -fast
+OPT =
+
+FFLAGS = -c ${OPT}
+
+CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR -DNEWUNRES
+
+M4 = m4
+M4FILE = underscore.m4
+
+.SUFFIXES: .F
+.F.o:
+ ${FC} ${FFLAGS} ${CPPFLAGS} $*.F
+.f.o:
+ ${FC} ${FFLAGS} ${CPPFLAGS} $*.f
+.c.o:
+ ${CC} -c ${CPPFLAGS} $*.c
+
+xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o seq2chains.o xdrf/libxdrf.a
+ ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-mult xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o seq2chains.o xdrf/libxdrf.a
+
+xdrf2pdb-m: xdrf2pdb-m.o geomout.o misc.o rescode.o nazwy.o seq2chains.o xdrf/libxdrf.a
+ ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-m-mult xdrf2pdb-m.o geomout.o rescode.o misc.o nazwy.o seq2chains.o xdrf/libxdrf.a
+
+xdrf2x: xdrf2x.o xdrf/libxdrf.a
+ ${FC} -o xdrf2x xdrf2x-mult.o xdrf/libxdrf.a
+
+xdrf/libxdrf.a:
+ cd xdrf && make
+
+clean:
+ rm -f *.o
--- /dev/null
+# Set of programs to convert UNRES xdrf format (compressed Cartesian coordinates) to PDF
+# or raw-Cartesian format (*.x) or to extract backbone angular coordinates (*.ang)
+# The pdb files can be constructed from canonical or MREMD trajectories.
+#
+# The xdrf library is required
+#
+# Programs
+#
+# xdrf2pdb : converts a single cx trajectory file to PDB format
+# xdrf2x : converts a single cx trajectory file to raw-coordinate (x) format
+# xdrf2ang : extracts backbone angles from a cx trajectory file
+# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format
+#
+# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format
+# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format.
+#
+# 9/23/2010 A. Liwo
+
+FC=ifort
+
+BINDIR = /users2/adam/bin
+
+#OPT = -fast
+OPT =
+
+FFLAGS = -c ${OPT}
+
+CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR -DNEWUNRES
+
+M4 = m4
+M4FILE = underscore.m4
+
+.SUFFIXES: .F
+.F.o:
+ ${FC} ${FFLAGS} ${CPPFLAGS} $*.F
+.f.o:
+ ${FC} ${FFLAGS} ${CPPFLAGS} $*.f
+.c.o:
+ ${CC} -c ${CPPFLAGS} $*.c
+
+xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o seq2chains.o xdrf/libxdrf.a
+ ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-mult xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o seq2chains.o xdrf/libxdrf.a
+
+xdrf2pdb-m: xdrf2pdb-m.o geomout.o misc.o rescode.o nazwy.o seq2chains.o xdrf/libxdrf.a
+ ${FC} -Bstatic -o ${BINDIR}/xdrf2pdb-m-mult xdrf2pdb-m.o geomout.o rescode.o misc.o nazwy.o seq2chains.o xdrf/libxdrf.a
+
+xdrf2x: xdrf2x.o xdrf/libxdrf.a
+ ${FC} -o xdrf2x xdrf2x-mult.o xdrf/libxdrf.a
+
+xdrf/libxdrf.a:
+ cd xdrf && make
+
+clean:
+ rm -f *.o
if (iti.eq.ntyp1) then
ichain=ichain+1
ires=0
- write (iunit,'(a)') 'TER'
+ if (iti_prev.ne.ntyp1) write (iunit,'(a)') 'TER'
else
ires=ires+1
iatom=iatom+1
! & vtot(i+nres)
endif
endif
+ iti_prev=iti
enddo
write (iunit,'(a)') 'TER'
do i=nnt,nct-1
--- /dev/null
+ subroutine seq2chains(nres,itype,nchain,chain_length,chain_border,
+ & ireschain)
+c
+c Split the total UNRES sequence, which has dummy residues separating
+c the chains, into separate chains. The length of chain ichain is
+c contained in chain_length(ichain), the first and last non-dummy
+c residues are in chain_border(1,ichain) and chain_border(2,ichain),
+c respectively. The lengths pertain to non-dummy residues only.
+c
+ implicit none
+ include 'DIMENSIONS'
+ integer nres,itype(nres),nchain,chain_length(nres),
+ & chain_border(2,nres),ireschain(nres)
+ integer ii,ichain,i,j
+ logical new_chain
+ ichain=1
+ new_chain=.true.
+ chain_length(ichain)=0
+ ii=1
+ do while (ii.lt.nres)
+ if (itype(ii).eq.ntyp1) then
+ if (.not.new_chain) then
+ new_chain=.true.
+ chain_border(2,ichain)=ii-1
+ ichain=ichain+1
+ chain_border(1,ichain)=ii+1
+ chain_length(ichain)=0
+ endif
+ else
+ if (new_chain) then
+ chain_border(1,ichain)=ii
+ new_chain=.false.
+ endif
+ chain_length(ichain)=chain_length(ichain)+1
+ endif
+ ii=ii+1
+ enddo
+ if (itype(nres).eq.ntyp1) then
+ ii=ii-1
+ else
+ chain_length(ichain)=chain_length(ichain)+1
+ endif
+ if (chain_length(ichain).gt.0) then
+ chain_border(2,ichain)=ii
+ nchain=ichain
+ else
+ nchain=ichain-1
+ endif
+ ireschain=0
+ do i=1,nchain
+ do j=chain_border(1,i),chain_border(2,i)
+ ireschain(j)=i
+ enddo
+ enddo
+ return
+ end
logical oneletter,iblnk
integer rescode
external rescode
+ integer lshift(maxchain),lmin(maxchain)
+ double precision shift_coord(3,maxchain),cm(3,maxchain),ccm(3),
+ & ccm_prev(3)
ifreq=1
- if (iargc().lt.5) then
+ if (iargc().lt.8) then
print '(2a)',
- & "Usage: xdrf2pdb-m one/three seqfile cxfile ntraj itraj",
- & " [pdbfile] [freq]"
+ & "Usage: xdrf2pdb-m one/three seqfile boxx boxy boxz cxfile ",
+ & "ntraj itraj [pdbfile] [freq]"
stop
endif
call getarg(1,onethree)
print *,nres
print '(20(a3,1x))',(sequenc(i),i=1,nres)
endif
+ call seq2chains(nres,itype,nchain,chain_length,chain_border,
+ & ireschain)
+ print *,"nchain",nchain
+ print *,"chain_border, chain_length"
+ nrestot=0
+ do i=1,nchain
+ nrestot=nrestot+chain_length(i)
+ print *,chain_border(1,i),chain_border(2,i),chain_length(i)
+ enddo
+ print *,"nrestot",nrestot
+ call getarg(3,arg)
+ read(arg,*) boxsize(1)
+ call getarg(4,arg)
+ read(arg,*) boxsize(2)
+ call getarg(5,arg)
+ read(arg,*) boxsize(3)
call getarg(3,arg)
iext = index(arg,'.cx') - 1
if (iext.lt.0) then
c(j,i+nres)=coord(j,ii+nres)
enddo
enddo
+c Bring all chains to same box and to a common origin
+ do ichain=1,nchain
+c print *,"ichain",ichain
+ do j=1,3
+ cm(j,ichain)=0.0d0
+ enddo
+ do i=chain_border(1,ichain),chain_border(2,ichain)
+c print *,i,c(:,i)
+ do j=1,3
+ cm(j,ichain)=cm(j,ichain)+c(j,i)
+ enddo
+ enddo
+ do j=1,3
+ cm(j,ichain)=cm(j,ichain)/chain_length(ichain)
+ enddo
+ enddo
+c write (*,*) "CM"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(cm(j,i),j=1,3)
+c enddo
+ do j=1,3
+ lmin=0
+ sumodl_min=1.0d10
+ do i=0,3**nchain-1
+ ii=i
+ do ichain=1,nchain
+ lshift(ichain)=mod(ii,3)-1
+ ii=ii/3
+ enddo
+c print '(10i3)',(lshift(ichain),ichain=1,nchain)
+ sumodl=0.0d0
+ do ichain=1,nchain
+ do jchain=1,ichain-1
+ sumodl=sumodl+dabs(cm(j,ichain)+lshift(ichain)*boxsize(j)
+ & -cm(j,jchain)-lshift(jchain)*boxsize(j))
+ enddo
+ enddo
+c print *,"sumodl",sumodl," sumodl_min",sumodl_min
+ if (sumodl.lt.sumodl_min) then
+ sumodl_min=sumodl
+ lmin=lshift
+ endif
+ enddo
+ do ichain=1,nchain
+ cm(j,ichain)=cm(j,ichain)+lmin(ichain)*boxsize(j)
+ shift_coord(j,ichain)=lmin(ichain)*boxsize(j)
+ enddo
+ enddo
+ do ichain=1,nchain
+ do j=1,3
+ ccm(j)=ccm(j)+cm(j,ichain)*chain_length(ichain)
+ enddo
+ enddo
+ do j=1,3
+ ccm(j)=ccm(j)/nrestot
+ enddo
+c write (*,'(a,3f10.5)') "ccm ",(ccm(j),j=1,3)
+c write (*,'(a,3f10.5)') "ccm_prev",(ccm_prev(j),j=1,3)
+c write (*,'(a,3f10.5)') "diff ",(ccm(j)-ccm_prev(j),j=1,3)
+c write (*,*) "shift_coord"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
+c enddo
+#ifdef PREVIOUS
+ if (previous) then
+ do j=1,3
+ change=.true.
+ do while (change)
+ if (ccm(j)-ccm_prev(j).gt.boxsize(j)/2) then
+ do ichain=1,nchain
+ shift_coord(j,ichain)=shift_coord(j,ichain)-boxsize(j)
+ enddo
+ ccm(j)=ccm(j)-boxsize(j)
+ else if (ccm(j)-ccm_prev(j).lt.-boxsize(j)/2) then
+ do ichain=1,nchain
+ shift_coord(j,ichain)=shift_coord(j,ichain)+boxsize(j)
+ enddo
+ ccm(j)=ccm(j)+boxsize(j)
+ else
+ change=.false.
+ endif
+ enddo
+ enddo
+ do j=1,3
+ ccm_prev(j)=ccm(j)
+ enddo
+ else
+ previous=.true.
+ do j=1,3
+ ccm_prev(j)=ccm(j)
+ enddo
+ endif
+#else
+ do ichain=1,nchain
+ do j=1,3
+ shift_coord(j,ichain)=shift_coord(j,ichain)-ccm(j)
+ enddo
+ enddo
+#endif
+c write (*,*) "shift_coord"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
+c enddo
+ do ichain=1,nchain
+ do i=chain_border(1,ichain),chain_border(2,ichain)
+ do j=1,3
+ c(j,i)=c(j,i)+shift_coord(j,ichain)
+ c(j,i+nres)=c(j,i+nres)+shift_coord(j,ichain)
+ enddo
+ enddo
+ enddo
etot=potE
write (tytul,'(a1,i6,a8,f6.1,a6,f10.1)') "#",kk," t_bath ",
& t_bath, " time ",time
real*4 coord(3,2*maxres)
real*4 prec,time,potE,uconst,t_bath,qfrag(100)
real*8 etot
+ real*8 cm(3,maxchain),shift_coord(3,maxchain),ccm(3),ccm_prev(3)
character*80 arg,seqfile,pdbfile
character*3 sequenc(maxres)
character*50 tytul
external rescode
logical iblnk
external iblnk
+ logical previous,change
+ integer lmin(maxchain),lshift(maxchain)
+ previous=.false.
ifreq=1
is=1
ie=1000000000
- if (iargc().lt.3) then
- print '(2a)',
- & "Usage: xdrf2pdb one/three seqfile cxfile [freq]",
- & " [start] [end] [pdbfile]"
+ if (iargc().lt.6) then
+ print '(2a)',
+ & "Usage: xdrf2pdb one/three seqfile boxx boxy boxz cxfile [freq]",
+ &" [start] [end] [pdbfile]"
stop
endif
call getarg(1,onethree)
itype(i)=rescode(i,sequenc(i),0)
enddo
endif
+ call seq2chains(nres,itype,nchain,chain_length,chain_border,
+ & ireschain)
+ print *,"nchain",nchain
+ print *,"chain_border, chain_length"
+ nrestot=0
+ do i=1,nchain
+ nrestot=nrestot+chain_length(i)
+ print *,chain_border(1,i),chain_border(2,i),chain_length(i)
+ enddo
+ print *,"nrestot",nrestot
call getarg(3,arg)
+ read(arg,*) boxsize(1)
+ call getarg(4,arg)
+ read(arg,*) boxsize(2)
+ call getarg(5,arg)
+ read(arg,*) boxsize(3)
+ call getarg(6,arg)
iext = index(arg,'.cx') - 1
if (iext.lt.0) then
print *,"Error - not a cx file"
stop
endif
- if (iargc().gt.3) then
- call getarg(4,cfreq)
+ if (iargc().gt.6) then
+ call getarg(7,cfreq)
read (cfreq,*) ifreq
endif
- if (iargc().gt.4) then
- call getarg(5,cfreq)
+ if (iargc().gt.7) then
+ call getarg(8,cfreq)
read (cfreq,*) is
endif
- if (iargc().gt.5) then
- call getarg(6,cfreq)
+ if (iargc().gt.8) then
+ call getarg(9,cfreq)
read (cfreq,*) ie
endif
- if (iargc().gt.6) then
- call getarg(7,pdbfile)
+ if (iargc().gt.9) then
+ call getarg(10,pdbfile)
else
pdbfile=arg(:iext)//'.pdb'
endif
isize=0
call xdrf3dfcoord(ixdrf, coord, isize, prec, iret)
-
-
c write (*,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath
c write (*,'(i4,$)') nss,(ihpb(j),jhpb(j),j=1,nss)
c write (*,'(i4,20f7.4)') nfrag,(qfrag(i),i=1,nfrag)
c(j,i+nres)=coord(j,ii+nres)
enddo
enddo
+ do ichain=1,nchain
+c print *,"ichain",ichain
+ do j=1,3
+ cm(j,ichain)=0.0d0
+ enddo
+ do i=chain_border(1,ichain),chain_border(2,ichain)
+c print *,i,c(:,i)
+ do j=1,3
+ cm(j,ichain)=cm(j,ichain)+c(j,i)
+ enddo
+ enddo
+ do j=1,3
+ cm(j,ichain)=cm(j,ichain)/chain_length(ichain)
+ enddo
+ enddo
+c write (*,*) "CM"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(cm(j,i),j=1,3)
+c enddo
+ do j=1,3
+ lmin=0
+ sumodl_min=1.0d10
+ do i=0,3**nchain-1
+ ii=i
+ do ichain=1,nchain
+ lshift(ichain)=mod(ii,3)-1
+ ii=ii/3
+ enddo
+c print '(10i3)',(lshift(ichain),ichain=1,nchain)
+ sumodl=0.0d0
+ do ichain=1,nchain
+ do jchain=1,ichain-1
+ sumodl=sumodl+dabs(cm(j,ichain)+lshift(ichain)*boxsize(j)
+ & -cm(j,jchain)-lshift(jchain)*boxsize(j))
+ enddo
+ enddo
+c print *,"sumodl",sumodl," sumodl_min",sumodl_min
+ if (sumodl.lt.sumodl_min) then
+ sumodl_min=sumodl
+ lmin=lshift
+ endif
+ enddo
+ do ichain=1,nchain
+ cm(j,ichain)=cm(j,ichain)+lmin(ichain)*boxsize(j)
+ shift_coord(j,ichain)=lmin(ichain)*boxsize(j)
+ enddo
+ enddo
+ do ichain=1,nchain
+ do j=1,3
+ ccm(j)=ccm(j)+cm(j,ichain)*chain_length(ichain)
+ enddo
+ enddo
+ do j=1,3
+ ccm(j)=ccm(j)/nrestot
+ enddo
+c write (*,'(a,3f10.5)') "ccm ",(ccm(j),j=1,3)
+c write (*,'(a,3f10.5)') "ccm_prev",(ccm_prev(j),j=1,3)
+c write (*,'(a,3f10.5)') "diff ",(ccm(j)-ccm_prev(j),j=1,3)
+c write (*,*) "shift_coord"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
+c enddo
+#ifdef PREVIOUS
+ if (previous) then
+ do j=1,3
+ change=.true.
+ do while (change)
+ if (ccm(j)-ccm_prev(j).gt.boxsize(j)/2) then
+ do ichain=1,nchain
+ shift_coord(j,ichain)=shift_coord(j,ichain)-boxsize(j)
+ enddo
+ ccm(j)=ccm(j)-boxsize(j)
+ else if (ccm(j)-ccm_prev(j).lt.-boxsize(j)/2) then
+ do ichain=1,nchain
+ shift_coord(j,ichain)=shift_coord(j,ichain)+boxsize(j)
+ enddo
+ ccm(j)=ccm(j)+boxsize(j)
+ else
+ change=.false.
+ endif
+ enddo
+ enddo
+ do j=1,3
+ ccm_prev(j)=ccm(j)
+ enddo
+ else
+ previous=.true.
+ do j=1,3
+ ccm_prev(j)=ccm(j)
+ enddo
+ endif
+#else
+ do ichain=1,nchain
+ do j=1,3
+ shift_coord(j,ichain)=shift_coord(j,ichain)-ccm(j)
+ enddo
+ enddo
+#endif
+c write (*,*) "shift_coord"
+c do i=1,nchain
+c write (*,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
+c enddo
+ do ichain=1,nchain
+ do i=chain_border(1,ichain),chain_border(2,ichain)
+ do j=1,3
+ c(j,i)=c(j,i)+shift_coord(j,ichain)
+ c(j,i+nres)=c(j,i+nres)+shift_coord(j,ichain)
+ enddo
+ enddo
+ enddo
etot=potE
write (tytul,'(a,i6)') "Structure",kk
call pdbout(etot,tytul,9)
+++ /dev/null
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.CHAIN'
- include 'COMMON.INTERACT'
- include 'COMMON.SBRIDGE'
- real*4 coord(3,1000)
- real*4 prec,potE,efree,rmsdev
- real*8 etot
- character*80 arg,seqfile,pdbfile
- character*3 sequenc(maxres)
- character*50 tytul
- character*8 onethree,cfreq
- character*8 ucase
- external ucase
- logical oneletter
- integer rescode
- external rescode
- logical ilen,iblnk
-
- ifreq=1
- if (iargc().lt.4) then
- print '(a)',
- & "Usage: xdrf2pdb one/three seqfile cxfile conf [pdbfile]"
- stop
- endif
- call getarg(1,onethree)
- onethree = ucase(onethree)
- if (onethree.eq.'ONE') then
- oneletter = .true.
- else if (onethree.eq.'THREE') then
- oneletter = .false.
- else
- print *,"ONE or THREE must be specified"
- endif
- call getarg(2,seqfile)
- open (1,file=seqfile,status='old')
- if (oneletter) then
- read(1,'(80a1)',end=10,err=10) (sequenc(i)(1:1),i=1,maxres)
- 10 continue
- nres=i
- i=0
- do while (.not.iblnk(sequenc(i+1)(1:1)))
- i=i+1
- enddo
- nres=i
- do i=1,nres
- itype(i)=rescode(i,sequenc(i),1)
- enddo
- else
- read(1,'(20(a3,1x))',end=11,err=11) (sequenc(i),i=1,maxres)
- 11 continue
- nres=i
- print *,"nres",nres
- do i=1,nres
- print *,i," ",sequenc(i)
- enddo
- print *
- i=0
- do while (.not.iblnk(sequenc(i+1)(1:1)))
- print *,i+1," ",sequenc(i+1)," ",sequenc(i+1)(1:1)
- i=i+1
- enddo
- nres=i
- print *,"nres",nres
- do i=1,nres
- itype(i)=rescode(i,sequenc(i),0)
- enddo
- print *,(itype(i),i=1,nres)
- endif
- call getarg(3,arg)
- iext = index(arg,'.cx') - 1
- if (iext.lt.0) then
- print *,"Error - not a cx file"
- stop
- endif
- print *,"arg ",arg
- call getarg(4,cfreq)
- read (cfreq,*) iconf
- print *,"iconf",iconf
- if (iargc().gt.4) then
- call getarg(5,pdbfile)
- else
- pdbfile=arg(:iext)//'.pdb'
- endif
- open(9,file=pdbfile)
- nnt = 1
- if (itype(1).eq.21) nnt = 2
- nct=nres
- if (itype(nres).eq.21) nct = nres-1
-c if (nct.eq.nres-1) nres=nres-1
-c if (nnt.eq.2) nres=nres-1
-
- print *,"nres",nres," nnt",nnt," nct",nct
-
- call xdrfopen(ixdrf,arg, "r", iret)
- print *,"iret",iret
- kk = 0
- do while(.true.)
- prec=10000.0
- isize=0
- call xdrf3dfcoord(ixdrf, coord, isize, prec, iret)
- call xdrfint(ixdrf, nss, iret)
- do j=1,nss
- call xdrfint(ixdrf, ihpb(j), iret)
- call xdrfint(ixdrf, jhpb(j), iret)
- enddo
- call xdrffloat(ixdrf, potE, iret)
- if(iret.eq.0) exit
- kk = kk + 1
- call xdrffloat(ixdrf, efree, iret)
- call xdrffloat(ixdrf, rmsdev, iret)
- call xdrfint(ixdrf, iscor, iret)
- if (kk.eq.iconf) then
- print *,"pote",pote," efree",efree," rmsdev",rmsdev
-
- print *,"isize",isize
-
- if (isize .ne. nres+nct-nnt+1) then
- print *,"Error: inconsistent sizes",isize,nres+nct-nnt+1
- endif
- do i=1,nres
- do j=1,3
- c(j,i)=coord(j,i)
- enddo
- enddo
- ii = 0
- do i=nnt,nct
- ii = ii + 1
- do j=1,3
- c(j,i+nres)=coord(j,ii+nres)
- enddo
- enddo
- etot=potE
- write (tytul,'(a,i6)') "Structure",kk
- call pdbout(etot,tytul,9)
- stop
- endif
- enddo
-
- end
+++ /dev/null
- implicit real*8 (a-h,o-z)
- integer ihpb(100),jhpb(100)
- real*4 coord(3,1000)
- real*4 prec,potE,efree,rmsdev,qfrag(100)
- real*8 etot
- character*80 arg,xfile
- character*8 ucase,cfreq
- external ucase
- logical oneletter
- integer rescode
- external rescode
-
- ifreq=1
- if (iargc().lt.2) then
- print '(a)',
- & "Usage: xdrf2x1 cxfile conf [pdbfile]"
- stop
- endif
- call getarg(1,arg)
- iext = index(arg,'.cx') - 1
- if (iext.lt.0) then
- print *,"Error - not a cx file"
- stop
- endif
- print *,"arg ",arg
- call getarg(2,cfreq)
- read (cfreq,*) iconf
- print *,"iconf",iconf
- if (iargc().gt.2) then
- call getarg(3,pdbfile)
- else
- xfile=arg(:iext)//'.x'
- endif
- open(9,file=xfile)
-
- call xdrfopen(ixdrf,arg, "r", iret)
- print *,"iret",iret
- kk = 0
- do while(.true.)
- prec=10000.0
- isize=0
- call xdrf3dfcoord(ixdrf, coord, isize, prec, iret)
- call xdrfint(ixdrf, nss, iret)
- do j=1,nss
- call xdrfint(ixdrf, ihpb(j), iret)
- call xdrfint(ixdrf, jhpb(j), iret)
- enddo
- call xdrffloat(ixdrf, potE, iret)
- if(iret.eq.0) exit
- kk = kk + 1
- call xdrffloat(ixdrf, efree, iret)
- call xdrffloat(ixdrf, rmsdev, iret)
- call xdrfint(ixdrf, iscor, iret)
- if (kk.eq.iconf) then
- print *,"pote",pote," efree",efree," rmsdev",rmsdev
-
- print *,"isize",isize
-
- write (9,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath
- write (9,'(i4,$)') nss,(ihpb(j),jhpb(j),j=1,nss)
- write (9,'(i4,20f7.4)') nfrag,(qfrag(i),i=1,nfrag)
- write (9,'(8f10.5)') ((coord(k,j),k=1,3),j=1,isize)
- stop
- endif
- enddo
-
- end