[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ccp4bb]: Problem with AMORE in a monoclinic space group
*** For details on how to be removed from this list visit the ***
*** CCP4 home page http://www.dl.ac.uk/CCP/CCP4/main.html ***
Amore users,
Below are details of a possible problem (and fix) with AMORE when
searching in a monoclinic space group. This problem is not believed
to be unique to ccp4 version 4.1* but is post 3.5*.
for complete instructions on fixing the problem please see the CCP4
problems page:
http://www.dl.ac.uk/CCP/CCP4/problems.html
Many thanks to those who reported the problem and Eleanor for fixing the
code and supplying the below message.
Alun
________________________________________________________
Alun Ashton, awa@ccp4.ac.uk Tel: +44 1925 603528
CCP4, ccp4@ccp4.ac.uk Fax: +44 1925 603825
http://www.dl.ac.uk/CCP/CCP4/main.html
Daresbury Laboratory, Daresbury, Warrington, UK, WA4 4AD
---------- Forwarded message ----------
Reply-To: E.Dodson@ysbl.york.ac.uk
There is a bug in Amore which shows itself only when the search is in a
monoclinic space group where b is shorter than c. The fix is ????
In an attempt to reduce the amount of memory required we set different
limits for Hmax, Kmax and Lmax.
The explanation is this:
Since the Cheshire cell for a monoclinic space group is
0 to 1/2 along a;
0 to 1/2 along c, and
undetermined along b,
Amore reindexes the reflection list as h' l' k' where k'=0.
Unfortunately the limits on h' k' l' are pre-calculated and did not
take the possibility of exchanging k' and l' into account.
A new version of the subroutine SETPAK is attached:
please substiute etc etc..
C =============================
subroutine setpak(ASP,BSP,CSP,NSMP,drmins)
C =============================
C This resets the PACO common block
integer id,neq,km,lm,nh,nk,nl,nm,kprt,iecr,ilec,iout,hmm,nts,hm,
+ klmax
real xlam,a,b,c,rbid1,rbid2
c COMMON /ALLFUN/IVERB,ITABB(5),FMINC(5),FMAXC(5),TFACC(5),NSYM,
c + NSYMP,RSYM(4,4,96)
COMMON /IOPRG/KPRT
C COMMON /CELL/A,B,C,ALPHA,BETA,GAMMA
C common/simt/ rbid2(153),ibid1(432),neq,nts
common/paco/ hm,km,lm,nh,nk,nl,nm
C
id=((2**30)+(2**30-1))/(2*nsmp+1)
c id=((2**30)+(2**30-1))/(2*neq+1)
C Needto allow a packing in TRAFUN of half the data resolution.
C ie - if RESOL is 2A, then indices for TRAFUN could need 1A grid
C drmins is maximum resolution of data;
xlamchk = 2.0/(drmins/2.0)
xlammax=(id/(asp*bsp*csp))**(1./3)
xlam = xlammax
C Resmax = d; check if resmax > 1/sqrt(smax)
if (xlammax.gt.xlamchk) then
Write(6,'(2a,F10.4)') ' Maximum data resolution ',
+ 'allowing for packing TRANSLATIOn fn could be', 2.0/xlammax
xlam = xlamchk
end if
hmm= int(xlam*asp/2) +1
kmm= int(xlam*bsp/2) +1
lmm= int(xlam*csp/2) +1
C Need a bit of cunning to handle translation limits for monoclinic
spacegroups.
C Here k and l will be swapped!
C recognise them because nsmp = 2
if(nsmp.le. 2) then
klmax = max(kmm,lmm)
kmm = klmax
lmm = klmax
end if
C Choose a grid divisible by 4
nhh= 2*hmm+1
nkk= 2*kmm+1
nll= 2*lmm+1
nhh = 4*(1+ int(nhh/4))
nkk = 4*(1+ int(nkk/4))
nll = 4*(1+ int(nll/4))
nmm=2*nsmp+1
write(6,2010)
+ ' Setpak: max resn in As allowed with 32 bit arithmetic=',
+ 4/xlam,
+ ' Current "cell" = ', asp,bsp,csp,
+ ' Symmetry counter set to 2NSMP + 1: =', nmm,
+ ' Maximum required H K L',hmm,kmm,lmm,
+ ' Maximum required Grid ',nhh,nkk,nll
IF( HM.LT.HMM .OR. KM.LT.KMM .OR. LM.LT.LMM .OR.
+ NH.LT.NHH .OR. NK.LT.NKK .OR.NL.LT.NLL.OR.NM.LT.NMM) then
write(6,'(a,/,a,7I5,/,a,7i5)')
+ ' Need to reset H K L NM limits',
+ ' hm km lm nh nk nl nm ',hm,km,lm,nh,nk,nl,nm,
+ ' hmm kmm lmm nhh nkk nll nmm',hmm,kmm,lmm,nhh,nkk,nll,nmm
c call ccperr(1,' Error: Need to reset H K L NM limits')
end if
HM = HMM
KM = KMM
LM = LMM
NH = NHH
NK = NKK
NL = NLL
NM = NMM
return
2010 format(/,a,f10.6,/,a,3F10.3,/,a,I5,/,a,3I5,/,a,3I5)
end
C
My apologies to all.
Eleanor Dodson