5 implicit real*8 (a-h,o-z)
7 include 'DIMENSIONS.ZSCOPT'
8 include 'DIMENSIONS.FREE'
9 include 'COMMON.IOUNITS'
12 include 'COMMON.INTERACT'
13 include 'COMMON.LOCAL'
14 include 'COMMON.NAMES'
15 include 'COMMON.CHAIN'
16 include 'COMMON.FFIELD'
17 include 'COMMON.SBRIDGE'
18 include 'COMMON.TORCNSTR'
19 include 'COMMON.CONTROL'
20 character*4 sequence(maxres)
22 double precision x(maxvar)
23 character*320 controlcard,ucase
24 dimension itype_pdb(maxres)
26 call card_concat(controlcard,.true.)
27 call reada(controlcard,'SCAL14',scal14,0.4d0)
28 call reada(controlcard,'SCALSCP',scalscp,1.0d0)
29 call reada(controlcard,'CUTOFF',cutoff_corr,7.0d0)
30 call reada(controlcard,'DELT_CORR',delt_corr,0.5d0)
31 r0_corr=cutoff_corr-delt_corr
32 call readi(controlcard,"NRES",nres,0)
33 iscode=index(controlcard,"ONE_LETTER")
35 write (iout,*) "Error: no residues in molecule"
38 if (nres.gt.maxres) then
39 write (iout,*) "Error: too many residues",nres,maxres
41 write(iout,*) 'nres=',nres
42 C Read sequence of the protein
44 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
46 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
48 C Convert sequence to numeric code
50 itype(i)=rescode(i,sequence(i),iscode)
52 write (iout,*) "Numeric code:"
53 write (iout,'(20i4)') (itype(i),i=1,nres)
56 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
58 if (itype(i).eq.ntyp1) then
62 else if (iabs(itype(i+1)).ne.20) then
64 else if (iabs(itype(i)).ne.20) then
73 write (iout,*) i,itype(i),itel(i)
77 if (with_dihed_constr) then
79 read (inp,*) ndih_constr
80 if (ndih_constr.gt.0) then
82 C write (iout,*) 'FTORS',ftors
83 read (inp,*) (idih_constr(i),phi0(i),drange(i),ftors(i),
86 & 'There are',ndih_constr,' constraints on phi angles.'
88 write (iout,'(i5,3f8.3)') idih_constr(i),phi0(i),drange(i),
92 phi0(i)=deg2rad*phi0(i)
93 drange(i)=deg2rad*drange(i)
98 if (with_theta_constr) then
99 C with_theta_constr is keyword allowing for occurance of theta constrains
100 read (inp,*) ntheta_constr
101 C ntheta_constr is the number of theta constrains
102 if (ntheta_constr.gt.0) then
104 read (inp,*) (itheta_constr(i),theta_constr0(i),
105 & theta_drange(i),for_thet_constr(i),
107 C the above code reads from 1 to ntheta_constr
108 C itheta_constr(i) residue i for which is theta_constr
109 C theta_constr0 the global minimum value
110 C theta_drange is range for which there is no energy penalty
111 C for_thet_constr is the force constant for quartic energy penalty
113 C if(me.eq.king.or..not.out1file)then
115 & 'There are',ntheta_constr,' constraints on phi angles.'
117 write (iout,'(i5,3f8.3)') itheta_constr(i),theta_constr0(i),
123 theta_constr0(i)=deg2rad*theta_constr0(i)
124 theta_drange(i)=deg2rad*theta_drange(i)
126 C if(me.eq.king.or..not.out1file)
127 C & write (iout,*) 'FTORS',ftors
128 C do i=1,ntheta_constr
129 C ii = itheta_constr(i)
130 C thetabound(1,ii) = phi0(i)-drange(i)
131 C thetabound(2,ii) = phi0(i)+drange(i)
133 endif ! ntheta_constr.gt.0
134 endif! with_theta_constr
137 if (itype(1).eq.ntyp1) nnt=2
138 if (itype(nres).eq.ntyp1) nct=nct-1
139 write(iout,*) 'NNT=',NNT,' NCT=',NCT
140 write (iout,*) "calling read_saxs_consrtr",nsaxs
141 if (nsaxs.gt.0) call read_saxs_constr
143 if (constr_homology.gt.0) then
144 c write (iout,*) "About to call read_constr_homology"
146 call read_constr_homology
147 write (iout,*) "Exit read_constr_homology"
149 cref if (indpdb.gt.0 .or. pdbref) then
152 cref c(j,i)=crefjlee(j,i)
153 cref cref(j,i)=crefjlee(j,i)
165 write (iout,'(/a,i3,a)') 'The chain contains',ns,
166 & ' disulfide-bridging cysteines.'
167 write (iout,'(20i4)') (iss(i),i=1,ns)
169 write(iout,*)"Running with dynamic disulfide-bond formation"
171 write (iout,'(/a/)') 'Pre-formed links are:'
177 write (iout,'(2a,i3,3a,i3,a,3f10.3)')
178 & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',
179 & dhpb(i),ebr,forcon(i)
184 if (ns.gt.0.and.dyn_ss) then
188 forcon(i-nss)=forcon(i)
195 dyn_ss_mask(iss(i))=.true.
200 c-----------------------------------------------------------------------------
201 logical function seq_comp(itypea,itypeb,length)
203 integer length,itypea(length),itypeb(length)
206 if (itypea(i).ne.itypeb(i)) then
214 c-----------------------------------------------------------------------------
215 subroutine read_bridge
216 C Read information about disulfide bridges.
217 implicit real*8 (a-h,o-z)
219 include 'DIMENSIONS.ZSCOPT'
220 include 'COMMON.IOUNITS'
223 include 'COMMON.INTERACT'
224 include 'COMMON.NAMES'
225 include 'COMMON.CHAIN'
226 include 'COMMON.FFIELD'
227 include 'COMMON.SBRIDGE'
228 C Read bridging residues.
229 read (inp,*) ns,(iss(i),i=1,ns)
231 write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns)
232 C Check whether the specified bridging residues are cystines.
234 if (itype(iss(i)).ne.1) then
235 write (iout,'(2a,i3,a)')
236 & 'Do you REALLY think that the residue ',
237 & restyp(itype(iss(i))),i,
238 & ' can form a disulfide bridge?!!!'
239 write (*,'(2a,i3,a)')
240 & 'Do you REALLY think that the residue ',
241 & restyp(itype(iss(i))),i,
242 & ' can form a disulfide bridge?!!!'
246 C Read preformed bridges.
248 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
249 write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
252 C Check if the residues involved in bridges are in the specified list of
256 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
257 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
258 write (iout,'(a,i3,a)') 'Disulfide pair',i,
259 & ' contains residues present in other pairs.'
260 write (*,'(a,i3,a)') 'Disulfide pair',i,
261 & ' contains residues present in other pairs.'
266 if (ihpb(i).eq.iss(j)) goto 10
268 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
271 if (jhpb(i).eq.iss(j)) goto 20
273 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
286 c------------------------------------------------------------------------------
287 subroutine read_angles(kanal,iscor,energ,iprot,*)
288 implicit real*8 (a-h,o-z)
290 include 'DIMENSIONS.ZSCOPT'
291 include 'COMMON.INTERACT'
292 include 'COMMON.SBRIDGE'
295 include 'COMMON.CHAIN'
296 include 'COMMON.IOUNITS'
298 read(kanal,'(a80)',end=10,err=10) lineh
299 read(lineh(:5),*,err=8) ic
300 read(lineh(6:),*,err=8) energ
303 print *,'error, assuming e=1d10',lineh
307 read(lineh(18:),*,end=10,err=10) nss
309 read (lineh(20:),*,end=10,err=10)
310 & (IHPB(I),JHPB(I),I=1,NSS),iscor
312 read (lineh(20:),*,end=10,err=10) (IHPB(I),JHPB(I),I=1,8)
313 read (kanal,*,end=10,err=10) (IHPB(I),JHPB(I),
316 c print *,"energy",energ," iscor",iscor
317 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
318 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
319 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
320 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
322 theta(i)=deg2rad*theta(i)
323 phi(i)=deg2rad*phi(i)
324 alph(i)=deg2rad*alph(i)
325 omeg(i)=deg2rad*omeg(i)
330 c-------------------------------------------------------------------------------
331 subroutine read_saxs_constr
332 implicit real*8 (a-h,o-z)
334 include 'DIMENSIONS.ZSCOPT'
335 include 'DIMENSIONS.FREE'
339 include 'COMMON.CONTROL'
340 include 'COMMON.CHAIN'
341 include 'COMMON.IOUNITS'
342 include 'COMMON.SBRIDGE'
343 double precision cm(3)
345 write (iout,*) "Calling read_saxs nsaxs",nsaxs
347 if (saxs_mode.eq.0) then
348 c SAXS distance distribution
350 read(inp,*) distsaxs(i),Psaxs(i)
354 Cnorm = Cnorm + Psaxs(i)
356 write (iout,*) "Cnorm",Cnorm
358 Psaxs(i)=Psaxs(i)/Cnorm
360 write (iout,*) "Normalized distance distribution from SAXS"
362 write (iout,'(f8.2,e15.5)') distsaxs(i),Psaxs(i)
367 read (inp,'(30x,3f8.3)') (Csaxs(j,i),j=1,3)
374 cm(j)=cm(j)+Csaxs(j,i)
382 Csaxs(j,i)=Csaxs(j,i)-cm(j)
385 write (iout,*) "SAXS sphere coordinates"
387 write (iout,'(i5,3f10.5)') i,(Csaxs(j,i),j=1,3)
392 c====-------------------------------------------------------------------
393 subroutine read_constr_homology
396 include 'DIMENSIONS.ZSCOPT'
397 include 'DIMENSIONS.FREE'
401 include 'COMMON.SETUP'
402 include 'COMMON.CONTROL'
403 include 'COMMON.CHAIN'
404 include 'COMMON.IOUNITS'
406 include 'COMMON.INTERACT'
407 include 'include_unres/COMMON.NAMES'
408 include 'COMMON.HOMRESTR'
413 c include 'include_unres/COMMON.VAR'
416 c double precision odl_temp,sigma_odl_temp,waga_theta,waga_d,
418 c common /przechowalnia/ odl_temp(maxres,maxres,max_template),
419 c & sigma_odl_temp(maxres,maxres,max_template)
421 character*24 model_ki_dist, model_ki_angle
422 character*500 controlcard
423 integer ki, i, j, k, l, ii_in_use(maxdim),i_tmp,idomain_tmp
424 integer idomain(max_template,maxres)
425 logical lprn /.true./
428 logical unres_pdb,liiflag
430 c FP - Nov. 2014 Temporary specifications for new vars
432 double precision rescore_tmp,x12,y12,z12,rescore2_tmp,
434 double precision, dimension (max_template,maxres) :: rescore
435 double precision, dimension (max_template,maxres) :: rescore2
436 double precision, dimension (max_template,maxres) :: rescore3
437 character*24 tpl_k_rescore
438 c -----------------------------------------------------------------
439 c Reading multiple PDB ref structures and calculation of retraints
440 c not using pre-computed ones stored in files model_ki_{dist,angle}
442 c -----------------------------------------------------------------
445 c Alternative: reading from input
446 call card_concat(controlcard,.true.)
447 call reada(controlcard,"HOMOL_DIST",waga_dist,1.0d0)
448 call reada(controlcard,"HOMOL_ANGLE",waga_angle,1.0d0)
449 call reada(controlcard,"HOMOL_THETA",waga_theta,1.0d0) ! new
450 call reada(controlcard,"HOMOL_SCD",waga_d,1.0d0) ! new
451 call reada(controlcard,'DIST_CUT',dist_cut,5.0d0) ! for diff ways of calc sigma
452 call reada(controlcard,'DIST2_CUT',dist2_cut,9999.0d0)
453 call readi(controlcard,"HOMOL_SET",homol_nset,1)
454 read2sigma=(index(controlcard,'READ2SIGMA').gt.0)
455 call readi(controlcard,"IHSET",ihset,1)
456 if (homol_nset.gt.1)then
457 call card_concat(controlcard,.true.)
458 read(controlcard,*) (waga_homology(i),i=1,homol_nset)
459 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
460 write(iout,*) "iset homology_weight "
462 c write(iout,*) i,waga_homology(i)
465 iset=mod(kolor,homol_nset)+1
470 c write(iout,*) "waga_homology(",iset,")",waga_homology(iset)
472 cd write (iout,*) "nnt",nnt," nct",nct
482 c Reading HM global scores (prob not required)
485 do k=1,constr_homology
489 c open (4,file="HMscore")
490 c do k=1,constr_homology
491 c read (4,*,end=521) hmscore_tmp
492 c hmscore(k)=hmscore_tmp ! Another transformation can be used
493 c write(*,*) "Model", k, ":", hmscore(k)
504 c write(iout,*) "waga_theta",waga_theta,"waga_d",waga_d
506 do k=1,constr_homology
508 read(inp,'(a)') pdbfile
509 c Next stament causes error upon compilation (?)
510 c if(me.eq.king.or. .not. out1file)
511 c write (iout,'(2a)') 'PDB data will be read from file ',
512 c & pdbfile(:ilen(pdbfile))
513 write (iout,'(a,5x,a)') 'HOMOL: Opening PDB file',
514 & pdbfile(:ilen(pdbfile))
515 open(ipdbin,file=pdbfile,status='old',err=33)
517 33 write (iout,'(a,5x,a)') 'Error opening PDB file',
518 & pdbfile(:ilen(pdbfile))
521 c print *,'Begin reading pdb data'
523 c Files containing res sim or local scores (former containing sigmas)
526 write(kic2,'(bz,i2.2)') k
528 tpl_k_rescore="template"//kic2//".sco"
531 call readpdb_template(k)
534 cref crefjlee(j,i)=c(j,i)
539 write (iout,'(i5,3f8.3,5x,3f8.3)') i,(crefjlee(j,i),j=1,3),
540 & (crefjlee(j,i+nres),j=1,3)
543 write (iout,*) "read_constr_homology: after reading pdb file"
547 c Distance restraints
550 C Copy the coordinates from reference coordinates (?)
554 c write (iout,*) "c(",j,i,") =",c(j,i)
558 c From read_dist_constr (commented out 25/11/2014 <-> res sim)
560 c write(iout,*) "tpl_k_rescore - ",tpl_k_rescore
561 open (ientin,file=tpl_k_rescore,status='old')
562 if (nnt.gt.1) rescore(k,1)=0.0d0
563 do irec=nnt,nct ! loop for reading res sim
565 read (ientin,*,end=1401) i_tmp,rescore2_tmp,rescore_tmp,
566 & rescore3_tmp,idomain_tmp
568 idomain(k,i_tmp)=idomain_tmp
569 rescore(k,i_tmp)=rescore_tmp
570 rescore2(k,i_tmp)=rescore2_tmp
571 rescore3(k,i_tmp)=rescore3_tmp
572 write(iout,'(a7,i5,3f10.5,i5)') "rescore",
573 & i_tmp,rescore2_tmp,rescore_tmp,
574 & rescore3_tmp,idomain_tmp
577 read (ientin,*,end=1401) rescore_tmp
579 c rescore(k,irec)=rescore_tmp+1.0d0 ! to avoid 0 values
580 rescore(k,irec)=0.5d0*(rescore_tmp+0.5d0) ! alt transf to reduce scores
581 c write(iout,*) "rescore(",k,irec,") =",rescore(k,irec)
586 if (waga_dist.ne.0.0d0) then
594 distal=dsqrt(x12*x12+y12*y12+z12*z12)
595 c write (iout,*) k,i,j,distal,dist2_cut
597 if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0
598 & .and. distal.le.dist2_cut ) then
604 c write (iout,*) "k",k
605 c write (iout,*) "i",i," j",j," constr_homology",
613 sigma_odl(k,ii)=sigma_odl(k,ii)+rescore2(k,ik)
615 sigma_odl(k,ii)=sigma_odl(k,ii)/(j-i+1)
616 if (odl(k,ii).gt.dist_cut) sigma_odl(k,ii) =
617 & sigma_odl(k,ii)*dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
619 if (odl(k,ii).le.dist_cut) then
620 sigma_odl(k,ii)=rescore(k,i)+rescore(k,j)
623 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
624 & dexp(0.5d0*(odl(k,ii)/dist_cut)**2)
626 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
627 & dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
631 sigma_odl(k,ii)=1.0d0/(sigma_odl(k,ii)*sigma_odl(k,ii))
641 c Theta, dihedral and SC retraints
643 if (waga_angle.gt.0.0d0) then
644 c open (ientin,file=tpl_k_sigma_dih,status='old')
645 c do irec=1,maxres-3 ! loop for reading sigma_dih
646 c read (ientin,*,end=1402) i,j,ki,l,sigma_dih(k,i+nnt-1) ! j,ki,l what for?
647 c if (i+nnt-1.gt.lim_dih) lim_dih=i+nnt-1 ! right?
648 c sigma_dih(k,i+nnt-1)=sigma_dih(k,i+nnt-1)* ! not inverse because of use of res. similarity
649 c & sigma_dih(k,i+nnt-1)
654 if (idomain(k,i).eq.0) then
658 dih(k,i)=phiref(i) ! right?
659 c read (ientin,*) sigma_dih(k,i) ! original variant
660 c write (iout,*) "dih(",k,i,") =",dih(k,i)
661 c write(iout,*) "rescore(",k,i,") =",rescore(k,i),
662 c & "rescore(",k,i-1,") =",rescore(k,i-1),
663 c & "rescore(",k,i-2,") =",rescore(k,i-2),
664 c & "rescore(",k,i-3,") =",rescore(k,i-3)
666 sigma_dih(k,i)=(rescore(k,i)+rescore(k,i-1)+
667 & rescore(k,i-2)+rescore(k,i-3))/4.0
668 c if (read2sigma) sigma_dih(k,i)=sigma_dih(k,i)/4.0
669 c write (iout,*) "Raw sigmas for dihedral angle restraints"
670 c write (iout,'(i5,10(2f8.2,4x))') i,sigma_dih(k,i)
671 c sigma_dih(k,i)=hmscore(k)*rescore(k,i)*rescore(k,i-1)*
672 c rescore(k,i-2)*rescore(k,i-3) ! right expression ?
673 c Instead of res sim other local measure of b/b str reliability possible
674 if (sigma_dih(k,i).ne.0)
675 & sigma_dih(k,i)=1.0d0/(sigma_dih(k,i)*sigma_dih(k,i))
676 c sigma_dih(k,i)=sigma_dih(k,i)*sigma_dih(k,i)
681 if (waga_theta.gt.0.0d0) then
682 c open (ientin,file=tpl_k_sigma_theta,status='old')
683 c do irec=1,maxres-2 ! loop for reading sigma_theta, right bounds?
684 c read (ientin,*,end=1403) i,j,ki,sigma_theta(k,i+nnt-1) ! j,ki what for?
685 c sigma_theta(k,i+nnt-1)=sigma_theta(k,i+nnt-1)* ! not inverse because of use of res. similarity
686 c & sigma_theta(k,i+nnt-1)
691 do i = nnt+2,nct ! right? without parallel.
692 c do i = i=1,nres ! alternative for bounds acc to readpdb?
693 c do i=ithet_start,ithet_end ! with FG parallel.
694 if (idomain(k,i).eq.0) then
698 thetatpl(k,i)=thetaref(i)
699 c write (iout,*) "thetatpl(",k,i,") =",thetatpl(k,i)
700 c write(iout,*) "rescore(",k,i,") =",rescore(k,i),
701 c & "rescore(",k,i-1,") =",rescore(k,i-1),
702 c & "rescore(",k,i-2,") =",rescore(k,i-2)
703 c read (ientin,*) sigma_theta(k,i) ! 1st variant
704 sigma_theta(k,i)=(rescore(k,i)+rescore(k,i-1)+
705 & rescore(k,i-2))/3.0
706 c if (read2sigma) sigma_theta(k,i)=sigma_theta(k,i)/3.0
707 if (sigma_theta(k,i).ne.0)
708 & sigma_theta(k,i)=1.0d0/(sigma_theta(k,i)*sigma_theta(k,i))
710 c sigma_theta(k,i)=hmscore(k)*rescore(k,i)*rescore(k,i-1)*
711 c rescore(k,i-2) ! right expression ?
712 c sigma_theta(k,i)=sigma_theta(k,i)*sigma_theta(k,i)
716 if (waga_d.gt.0.0d0) then
717 c open (ientin,file=tpl_k_sigma_d,status='old')
718 c do irec=1,maxres-1 ! loop for reading sigma_theta, right bounds?
719 c read (ientin,*,end=1404) i,j,sigma_d(k,i+nnt-1) ! j,ki what for?
720 c sigma_d(k,i+nnt-1)=sigma_d(k,i+nnt-1)* ! not inverse because of use of res. similarity
721 c & sigma_d(k,i+nnt-1)
725 do i = nnt,nct ! right? without parallel.
726 c do i=2,nres-1 ! alternative for bounds acc to readpdb?
727 c do i=loc_start,loc_end ! with FG parallel.
728 if (itype(i).eq.10) cycle
729 if (idomain(k,i).eq.0 ) then
736 c write (iout,*) "xxtpl(",k,i,") =",xxtpl(k,i)
737 c write (iout,*) "yytpl(",k,i,") =",yytpl(k,i)
738 c write (iout,*) "zztpl(",k,i,") =",zztpl(k,i)
739 c write(iout,*) "rescore(",k,i,") =",rescore(k,i)
740 sigma_d(k,i)=rescore3(k,i) ! right expression ?
741 if (sigma_d(k,i).ne.0)
742 & sigma_d(k,i)=1.0d0/(sigma_d(k,i)*sigma_d(k,i))
744 c sigma_d(k,i)=hmscore(k)*rescore(k,i) ! right expression ?
745 c sigma_d(k,i)=sigma_d(k,i)*sigma_d(k,i)
746 c read (ientin,*) sigma_d(k,i) ! 1st variant
751 c remove distance restraints not used in any model from the list
752 c shift data in all arrays
754 if (waga_dist.ne.0.0d0) then
760 if (ii_in_use(ii).eq.0.and.liiflag) then
764 if (ii_in_use(ii).ne.0.and..not.liiflag.or.
765 & .not.liiflag.and.ii.eq.lim_odl) then
766 if (ii.eq.lim_odl) then
772 do ki=iistart,lim_odl-iishift
773 ires_homo(ki)=ires_homo(ki+iishift)
774 jres_homo(ki)=jres_homo(ki+iishift)
775 ii_in_use(ki)=ii_in_use(ki+iishift)
776 do k=1,constr_homology
777 odl(k,ki)=odl(k,ki+iishift)
778 sigma_odl(k,ki)=sigma_odl(k,ki+iishift)
779 l_homo(k,ki)=l_homo(k,ki+iishift)
783 lim_odl=lim_odl-iishift
788 if (constr_homology.gt.0) call homology_partition
789 if (constr_homology.gt.0) call init_int_table
790 cd write (iout,*) "homology_partition: lim_theta= ",lim_theta,
791 cd & "lim_xx=",lim_xx
792 c write (iout,*) "ithet_start =",ithet_start,"ithet_end =",ithet_end
793 c write (iout,*) "loc_start =",loc_start,"loc_end =",loc_end
797 if (.not.lprn) return
798 cd write(iout,*) "waga_theta",waga_theta,"waga_d",waga_d
799 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
800 write (iout,*) "Distance restraints from templates"
802 write(iout,'(3i5,100(2f8.2,1x,l1,4x))')
803 & ii,ires_homo(ii),jres_homo(ii),
804 & (odl(ki,ii),1.0d0/dsqrt(sigma_odl(ki,ii)),l_homo(ki,ii),
805 & ki=1,constr_homology)
807 write (iout,*) "Dihedral angle restraints from templates"
809 write (iout,'(i5,a4,100(2f8.2,4x))') i,restyp(itype(i)),
810 & (rad2deg*dih(ki,i),
811 & rad2deg/dsqrt(sigma_dih(ki,i)),ki=1,constr_homology)
813 write (iout,*) "Virtual-bond angle restraints from templates"
815 write (iout,'(i5,a4,100(2f8.2,4x))') i,restyp(itype(i)),
816 & (rad2deg*thetatpl(ki,i),
817 & rad2deg/dsqrt(sigma_theta(ki,i)),ki=1,constr_homology)
819 write (iout,*) "SC restraints from templates"
821 write(iout,'(i5,100(4f8.2,4x))') i,
822 & (xxtpl(ki,i),yytpl(ki,i),zztpl(ki,i),
823 & 1.0d0/dsqrt(sigma_d(ki,i)),ki=1,constr_homology)
826 c -----------------------------------------------------------------
829 c----------------------------------------------------------------------