[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Extending solomon output masks
*** For details on how to be removed from this list visit the ***
*** CCP4 home page http://www.dl.ac.uk/CCP/CCP4/main.html ***
Byron Delabarre writes:
> Space-group ..................................... 1
As you can see, the space group is marked as P1 in the mask header. As
a result, mapmask expects a whole unit cell of data.
Actually this is a bug in both programs: Solomon should give the
correct space group in the mask header, and mapmask should allow the
SYMM card to override the map/mask header.
Here is an (untested) patch which should fix mapmask. It also adds a
'mode' keyword, which contains the names of the input assignments
(like sfall).
MODE [logical name 1] [logical name 2]
-overrides the default mapmask bahaviour of looking for any
assignment or file with a likely name. The two names given on the
mode line may be file names or names of logical assingments on the
command line.
Kevin
----------------------------------------------------------------------
*** /y/programs/xtal/ccp4/src/mapmask_/mapmask.f Tue Apr 28 21:19:07 1998
--- mapmask.f Thu Jun 11 11:47:26 1998
***************
*** 108,117 ****
character xyz*4,axisf*20,axism*20,axiss*20,axisp*20
logical cont,lxyzasu,lsclsig,lsclmea,lsclrat,
+ lprtmap,lprtmsk,lmapadd,lmapmul,lsolven,
! + lextcpy,lextxtl,lextovl
c
real uvwlim(2,3),mskvol
! integer i,j,k,iu,iv,iw,ntok,ou,ov,ow
character name1(0:4)*8,name2(0:4)*8,file1*8,file2*8,key*6,line*600
c
common /filenames/file1,file2
--- 108,117 ----
character xyz*4,axisf*20,axism*20,axiss*20,axisp*20
logical cont,lxyzasu,lsclsig,lsclmea,lsclrat,
+ lprtmap,lprtmsk,lmapadd,lmapmul,lsolven,
! + lextcpy,lextxtl,lextovl,lmode
c
real uvwlim(2,3),mskvol
! integer i,j,k,iu,iv,iw,ntok,ou,ov,ow,xspgrp
character name1(0:4)*8,name2(0:4)*8,file1*8,file2*8,key*6,line*600
c
common /filenames/file1,file2
***************
*** 143,148 ****
--- 143,149 ----
means=0.330
ratio=1.0
attnu=1.0
+ xspgrp=0
nspgrp=1
namspg=' '
axiss=' '
***************
*** 166,171 ****
--- 167,173 ----
lextcpy=.false.
lextxtl=.false.
lextovl=.false.
+ lmode=.false.
c
do 920 k=1,192
do 910 i=1,4
***************
*** 178,190 ****
file1=' '
file2=' '
- do 950 i=1,4
-
- call ugtenv(name1(i),line)
- if (line.ne.' ') file1=name1(i)
- call ugtenv(name2(i),line)
- if (line.ne.' ') file2=name2(i)
- 950 continue
call ugtenv('XYZIN',line)
if (line.ne.' ') border=10.0
c
--- 180,185 ----
***************
*** 192,198 ****
c
1000 call memoparse(.true.)
c SYMM
! call parsesymm(namspg,nspgrp,nampg,nsym,nsymp,rsym)
c XYZLIM
call parsesubkey('XYZL','ASU ',lxyzasu)
call parsesubreal('XYZL',' ',1,.false.,uvwlim(1,1))
--- 187,193 ----
c
1000 call memoparse(.true.)
c SYMM
! call parsesymm(namspg,xspgrp,nampg,nsym,nsymp,rsym)
c XYZLIM
call parsesubkey('XYZL','ASU ',lxyzasu)
call parsesubreal('XYZL',' ',1,.false.,uvwlim(1,1))
***************
*** 242,247 ****
--- 237,246 ----
call parsesubkey ('SOLV',' ',lsolven)
call parsesubreal('SOLV','FLIP',1,.true.,flipfac)
call parsesubreal('SOLV','ATTN',1,.true.,attnu)
+ c MODE
+ call parsesubkey ('MODE',' ',lmode)
+ call parsesubchar('MODE',' ',1,.false.,file1)
+ call parsesubchar('MODE',' ',2,.false.,file2)
c
call parsediagnose(cont)
if (cont) goto 1000
***************
*** 248,254 ****
c
c NOW SET UP THINGS --------------------
c
- if (lxyzasu) call setlim(nspgrp,uvwlim)
if (lmapadd) mapcmb=1
if (lmapmul) mapcmb=2
if (lsolven) mapcmb=3
--- 247,252 ----
***************
*** 261,282 ****
if (lextxtl) mapext=2
if (lextovl) mapext=3
c
! c Sort out input files
! if (lsolven) then
! file1 = 'MAPIN1'
! file2 = 'MSKIN2'
! else if (mapscl .eq. 2) then
! file2 = 'MSKIN2'
! endif
!
! if (file1 .eq. ' ') then
! file1 = 'MAPIN'
endif
! c
call ccpmaphead(file1,file2)
if (axisf.eq.' ') axisf=xyz(jfmsi(1):jfmsi(1))
if (axism.eq.' ') axism=xyz(jfmsi(2):jfmsi(2))
if (axiss.eq.' ') axiss=xyz(jfmsi(3):jfmsi(3))
c
c matrics
call calcmetric()
--- 259,281 ----
if (lextxtl) mapext=2
if (lextovl) mapext=3
c
! c get map names
! if (.not.lmode) then
! do 950 i=1,4
! call ugtenv(name1(i),line)
! if (line.ne.' ') file1=name1(i)
! call ugtenv(name2(i),line)
! if (line.ne.' ') file2=name2(i)
! 950 continue
endif
! if (mapcmb.eq.0.and.mapscl.eq.0) file2=' '
! c get map headers
call ccpmaphead(file1,file2)
if (axisf.eq.' ') axisf=xyz(jfmsi(1):jfmsi(1))
if (axism.eq.' ') axism=xyz(jfmsi(2):jfmsi(2))
if (axiss.eq.' ') axiss=xyz(jfmsi(3):jfmsi(3))
+ if (xspgrp.ne.0) nspgrp=xspgrp
+ if (lxyzasu) call setlim(nspgrp,uvwlim)
c
c matrics
call calcmetric()
***************
*** 368,374 ****
character name1*8,name2*8
c
integer mxyz(3),juvwi(3),msec,mode,m1(3),m2(3)
! integer qxyz(3),qfmsi(3),qsec,qode,q1(3),q2(3)
integer i,ifail,iprint
real rmin,rmax,rmean,rrms,qmin,qmax,qmean,qrms,qcell(6)
character title*80,qtitle*80
--- 367,373 ----
character name1*8,name2*8
c
integer mxyz(3),juvwi(3),msec,mode,m1(3),m2(3)
! integer qxyz(3),qfmsi(3),qsec,qode,q1(3),q2(3),mspgrp
integer i,ifail,iprint
real rmin,rmax,rmean,rrms,qmin,qmax,qmean,qrms,qcell(6)
character title*80,qtitle*80
***************
*** 384,390 ****
c .. second file - if present
if (name2.ne.' ') then
call mrdhds(lmap1,name2,qtitle,qsec,qfmsi,qxyz,q1(3),q1(1),q2(1),
! + q1(2),q2(2),qcell,nspgrp,qode,qmin,qmax,qmean,qrms,ifail,iprint)
call mrclos(lmap1)
q2(3)=q1(3)+qsec-1
do 100 i=1,3
--- 383,389 ----
c .. second file - if present
if (name2.ne.' ') then
call mrdhds(lmap1,name2,qtitle,qsec,qfmsi,qxyz,q1(3),q1(1),q2(1),
! + q1(2),q2(2),qcell,mspgrp,qode,qmin,qmax,qmean,qrms,ifail,iprint)
call mrclos(lmap1)
q2(3)=q1(3)+qsec-1
do 100 i=1,3