[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 ***
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
Many thanks to those who reported the problem and Eleanor for fixing the
code and supplying the below message.
Alun Ashton, firstname.lastname@example.org Tel: +44 1925 603528
CCP4, email@example.com Fax: +44 1925 603825
Daresbury Laboratory, Daresbury, Warrington, UK, WA4 4AD
---------- Forwarded message ----------
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 This resets the PACO common block
c COMMON /ALLFUN/IVERB,ITABB(5),FMINC(5),FMAXC(5),TFACC(5),NSYM,
c + NSYMP,RSYM(4,4,96)
C COMMON /CELL/A,B,C,ALPHA,BETA,GAMMA
C common/simt/ rbid2(153),ibid1(432),neq,nts
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)
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
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
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
C Choose a grid divisible by 4
nhh = 4*(1+ int(nhh/4))
nkk = 4*(1+ int(nkk/4))
nll = 4*(1+ int(nll/4))
+ ' Setpak: max resn in As allowed with 32 bit arithmetic=',
+ ' 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
+ ' 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')
HM = HMM
KM = KMM
LM = LMM
NH = NHH
NK = NKK
NL = NLL
NM = NMM
My apologies to all.