Dear Herman,

please find attached a patch for sftools that will add support 
for the following non-standard space group settings:

A2, C21, I21, P2122, P2212, P21221, P22121

Note: the number for I21 follows the upcomming change to 
syminfo.lib: 3004 -> 5005.

diffstat -p0 < 
CCP4-20091104-src-sftools_-sftools.f-Add-some-non-standard-spgrps-v1.patch
 src/sftools_/sftools.f |   52 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 35 insertions(+), 17 deletions(-)

The patch applies equally well to series-6_1 and trunk.


Regards,

ClAuS

P.S. After applying the patch and compiling sftools, you can use it in BUSTER 
with this command line option:

% refine autoBUSTER_Exe_sftools=/path/to/patched-sftools/sftools ...

On Wed, Sep 01, 2010 at 12:29:55PM +0200, herman.schreu...@sanofi-aventis.com 
wrote:
> Dear CCP4,
> 
> In our automated data processing and refinement pipeline, phaser
> sometimes comes up with solutions in non-standard settings (e.g. P 21 2
> 21). These solutions subsequently fail in autobuster and it turned out
> that this is because autobuster invokes sftools and sftools apparently
> is not able to handle non-standard settings.
> 
> I am really puzzled. We upgraded to the latest CCP4 version (6.1.13) and
> the symmetry libraries have P 21 2 21 (space group 2018) in them. Other
> programs like reindex and coot handle this setting without any problems.
> Is sftools still supported by ccp4, or should we ask the buster people
> to switch to some other program?
> 
> Thank you for your help,
> Herman Schreuder
--- src/sftools_/sftools.f-orig 2008-09-19 09:12:11.000000000 +0100
+++ src/sftools_/sftools.f      2009-11-04 08:50:05.000000000 +0000
@@ -4169,8 +4169,9 @@
 
       implicit none
 
-      integer maxop, maxgrp
-      parameter (maxop=45, maxgrp=73)
+      integer maxop, maxgrp, maxops, maxcen
+      parameter (maxops=45, maxcen=5)
+      parameter (maxop=maxops+maxcen, maxgrp=80)
 
 c subroutine arguments
       integer spnum,klass,nsym,nprim
@@ -4267,7 +4268,15 @@
       data syminf( 70) /'  214 I4132       40   8  25   0   0'/
       data syminf( 71) /' 1146 R3R         25   0   0   0   0'/
       data syminf( 72) /' 1155 R32R        25  26   0   0   0'/
-      data syminf( 73) /' 4005 I2           1   0   0   0   0'/
+      data syminf( 73) /' 2005 A2           1   0   0   0   0'/
+      data syminf( 74) /' 3005 C21         41   0   0   0   0'/
+      data syminf( 75) /' 4005 I2           1   0   0   0   0'/
+      data syminf( 76) /' 5005 I21         42   0   0   0   0'/
+      data syminf( 77) /' 1017 P2122        1  43   0   0   0'/
+      data syminf( 78) /' 2017 P2212        2  44   0   0   0'/
+      data syminf( 79) /' 2018 P21221       1   7   0   0   0'/
+      data syminf( 80) /' 3018 P22121       8  45   0   0   0'/
+c 5005 (I21) used to be 3004 in syminfo.lib!
 
 c the matrices for each generator
       data (g(n,  1),n=1,12) /-1, 0, 0, 0, 0, 1, 0, 0, 0, 0,-1, 0/
@@ -4310,12 +4319,17 @@
       data (g(n, 38),n=1,12) / 0,-1, 0,18, 1, 0, 0,18, 0, 0, 1, 6/
       data (g(n, 39),n=1,12) / 0,-1, 0,18, 1, 0, 0, 6, 0, 0, 1,18/
       data (g(n, 40),n=1,12) / 0,-1, 0, 6, 1, 0, 0,18, 0, 0, 1, 6/
+      data (g(n, 41),n=1,12) /-1, 0, 0,12, 0, 1, 0, 0, 0, 0,-1, 0/
+      data (g(n, 42),n=1,12) /-1, 0, 0,12, 0, 1, 0, 0, 0, 0,-1,12/
+      data (g(n, 43),n=1,12) / 1, 0, 0,12, 0,-1, 0, 0, 0, 0,-1, 0/
+      data (g(n, 44),n=1,12) / 1, 0, 0, 0, 0,-1, 0,12, 0, 0,-1, 0/
+      data (g(n, 45),n=1,12) / 1, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1, 0/
 c centering operators
-      data (g(n, 41),n=1,12) / 1, 0, 0, 0, 0, 1, 0,12, 0, 0, 1,12/
-      data (g(n, 42),n=1,12) / 1, 0, 0,12, 0, 1, 0, 0, 0, 0, 1,12/
-      data (g(n, 43),n=1,12) / 1, 0, 0,12, 0, 1, 0,12, 0, 0, 1, 0/
-      data (g(n, 44),n=1,12) / 1, 0, 0,12, 0, 1, 0,12, 0, 0, 1,12/
-      data (g(n, 45),n=1,12) / 1, 0, 0,16, 0, 1, 0, 8, 0, 0, 1, 8/
+      data (g(n, maxops+1),n=1,12) / 1, 0, 0, 0, 0, 1, 0,12, 0, 0, 1,12/
+      data (g(n, maxops+2),n=1,12) / 1, 0, 0,12, 0, 1, 0, 0, 0, 0, 1,12/
+      data (g(n, maxops+3),n=1,12) / 1, 0, 0,12, 0, 1, 0,12, 0, 0, 1, 0/
+      data (g(n, maxops+4),n=1,12) / 1, 0, 0,12, 0, 1, 0,12, 0, 0, 1,12/
+      data (g(n, maxops+5),n=1,12) / 1, 0, 0,16, 0, 1, 0, 8, 0, 0, 1, 8/
 
 c point group names according to CCP4
       data pgnams / 'PG1'  ,'PG2'  ,'PG222', 'PG4'  ,'PG422', 'PG3',
@@ -4407,7 +4421,9 @@
 c monoclinic and rhombohedral use the cell parameters to distinguish settings
       if(spnum2.eq.1)then
         klass2 = 1
-      else if((spnum2.ge.3 .and. spnum2.le.5) .or. spnum2.eq.4005)then
+      else if( (spnum2.ge.3 .and. spnum2.le.5) .or. 
+     $         (spnum2.eq.2005 .or. spnum2.eq.3005 .or.
+     $          spnum2.eq.4005 .or. spnum2.eq.5005) ) then
         if(cell(4).ne.90.0)then
           write(*,*)' !!! Illegal, monoclinic A unique is not valid !!!'
           return
@@ -4424,7 +4440,9 @@
           write(*,*)' to work with C-unique (e.g. -3, -4 or -5)'
         endif
         klass2 = 2
-      else if(16.le.spnum2 .and. spnum2.le.24)then
+      else if( (16.le.spnum2 .and. spnum2.le.24) .or.
+     $         (spnum2.eq.1017 .or. spnum2.eq.2017 .or.
+     $          spnum2.eq.2018 .or. spnum2.eq.3018) ) then
         klass2=3
       else if(75.le.spnum2 .and. spnum2.le.80)then
         klass2=4
@@ -4527,19 +4545,19 @@
       centr2 = spgnam2(1:1)
       nprim2 = 2
       if(centr2.eq.'A')then
-        ops(nop)=41
+        ops(nop)=maxops+1
       else if(centr2.eq.'B')then
-        ops(nop)=42
+        ops(nop)=maxops+2
       else if(centr2.eq.'C')then
-        ops(nop)=43
+        ops(nop)=maxops+3
       else if(centr2.eq.'I')then
-        ops(nop)=44
+        ops(nop)=maxops+4
       else if(centr2.eq.'F')then
-        ops(nop)=41
-        ops(nop+1)=42
+        ops(nop)=maxops+1
+        ops(nop+1)=maxops+2
         nprim2=4
       else if(centr2.eq.'R'.and.(cell(6).ne.cell(5)))then
-        ops(nop)=45
+        ops(nop)=maxops+5
         nprim2=3
       else
 c no centering, explicitly set centr2 to 'P' for R3(2) rhombohedral

Reply via email to