integer modecalc,iscode,indpdb,indback,indphi,iranconf,icheckgrad,
& iprint,i2ndstr,mucadyn,constr_dist,constr_homology,homol_nset
real*8 waga_homology
- real*8 waga_dist, waga_angle, waga_theta, waga_d, dist_cut
+ real*8 waga_dist, waga_angle, waga_theta, waga_d, dist_cut,
+ & dist2_cut
logical minim,refstr,pdbref,outpdb,outmol2,outx,overlapsc,
& energy_dec,
& sideadd,lsecondary,read_cart,unres_pdb,
& constr_dist,gnorm_check,gradout,split_ene,constr_homology,
& homol_nset,read2sigma,start_from_model
common /homol/ waga_homology(maxprocs/20),
- & waga_dist, waga_angle, waga_theta, waga_d, dist_cut
+ & waga_dist, waga_angle, waga_theta, waga_d, dist_cut,dist2_cut
C... minim = .true. means DO minimization.
C... energy_dec = .true. means print energy decomposition matrix
call readi(controlcard,"NPAIR",npair_,0)
call readi(controlcard,"NDIST",ndist_,0)
call reada(controlcard,'DIST_CUT',dist_cut,5.0d0)
+ call reada(controlcard,'DIST2_CUT',dist2_cut,9999.0d0)
call multreadi(controlcard,"IFRAG",ifrag_(1,1),2*nfrag_,0)
call multreadi(controlcard,"IPAIR",ipair_(1,1),2*npair_,0)
call multreada(controlcard,"WFRAG",wfrag_(1),nfrag_,0.0d0)
do i = nnt,nct-2
do j=i+2,nct
- if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0) then
-
+ x12=c(1,i)-c(1,j)
+ y12=c(2,i)-c(2,j)
+ z12=c(3,i)-c(3,j)
+ distal=dsqrt(x12*x12+y12*y12+z12*z12)
+
+
+ if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0
+ & .and. distal.le.dist2_cut ) then
+
ii=ii+1
ii_in_use(ii)=1
l_homo(k,ii)=.true.
c & constr_homology
ires_homo(ii)=i
jres_homo(ii)=j
-c
-c Attempt to replace dist(i,j) by its definition in ...
-c
- x12=c(1,i)-c(1,j)
- y12=c(2,i)-c(2,j)
- z12=c(3,i)-c(3,j)
- distal=dsqrt(x12*x12+y12*y12+z12*z12)
odl(k,ii)=distal
if (read2sigma) then
sigma_odl(k,ii)=0
& sigma_odl(k,ii)*dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
else
if (odl(k,ii).le.dist_cut) then
- sigma_odl(k,ii)=rescore(k,i)+rescore(k,j) ! other exprs possible
-c sigma_odl(k,ii)=hmscore(k)*rescore(k,i)*rescore(k,j)
+ sigma_odl(k,ii)=rescore(k,i)+rescore(k,j)
else
#ifdef OLDSIGMA
- sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* ! sigma ~ rescore ~ error
+ sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
& dexp(0.5d0*(odl(k,ii)/dist_cut)**2)
#else
- sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* ! sigma ~ rescore ~ error
+ sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
& dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
#endif
endif
endif
-c Following expr replaced by a positive exp argument
-c sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
-c & dexp(-0.5d0*(odl(k,ii)/dist_cut)**2)
-
-c sigma_odl(k,ii)=hmscore(k)*rescore(k,i)*rescore(k,j)*
-c & dexp(-0.5d0*(odl(k,ii)/dist_cut)**2)
-c
- sigma_odl(k,ii)=1.0d0/(sigma_odl(k,ii)*sigma_odl(k,ii)) ! rescore ~ error
-c sigma_odl(k,ii)=sigma_odl(k,ii)*sigma_odl(k,ii)
-c
-c sigma_odl(k,ii)=sigma_odl_temp(i,j,k)* ! new var read from file (?)
-c & sigma_odl_temp(i,j,k) ! not inverse because of use of res. similarity
+ sigma_odl(k,ii)=1.0d0/(sigma_odl(k,ii)*sigma_odl(k,ii))
else
ii=ii+1
l_homo(k,ii)=.false.