Strange Fo-Fc map

Anonymous nobody at REPLAY.COM
Thu Dec 4 13:26:45 EST 1997


In article <34866FA8.41C6 at btk.utu.fi>, Vesa Tuominen O_GOLD
<Vesa.Tuominen at btk.utu.fi> wrote:


> Yes I am using X-plor online? And yes I am also calculating sigmaA
> weighted maps. 
> Thank you !

Here is what I could find.
Depending upon the scrit you are using, the syntax migh be different. Look
for the part of the script that deals with the weighting of centric
reflections and see how it looks. Here is that section of my script with a
comment before the line that was changed.


     do (fom=2 sigmaa eobs ecalc / (1 - sigmaa^2))
        ($low_res >= d >= $high_res and ampl(fobs) > 0)

     do (fom=i1overi0(fom)) ( acentric and ampl(fobs) > 0 )
     do (fom=tanh(fom/2))   ( centric  and ampl(fobs) > 0 )
!changes for map coeffiecient weighting of centric reflections
     do (deri1=combine(2 $nn fom ampl(fobs) - 2 $mm dd ampl(fcalc+fpart),
                       phase(fcalc+fpart)))
        ($low_res >= d >= $high_res and acentric and ampl(fobs) > 0 )

     do (deri1=combine($nn fom ampl(fobs) - $mm dd ampl(fcalc+fpart),
                       phase(fcalc+fpart)))
        ($low_res >= d >= $high_res and centric and ampl(fobs) > 0 )
     undeclare name=ddgmad   domain=reciprocal end


Here is the whole script for you to try it. I hope it works for you.

remarks  file tutorial/xtal_ml/map.inp
remarks  Makes a (nfo-mfc, phi_calc) map.
remarks  Sigmaa-weighting optional.
remarks  Cross-validation for sigmaa-weighting optional.
remarks  Averaging from several structures optional.
remarks
remarks  Authors: Axel T. Brunger and Paul D. Adams

 !
 ! Cite the following papers when using this protocol:
 !
 !  1. R.J. Read (1986).  Improved Fourier coefficients
 !     for maps using phases from partial structures with
 !     errors.  Acta Cryst. A42 (1986), 140--149.
 !
 !
 !  2. G.J. Kleywegt, A.T. Brunger, Checking your imagination:
 !     Applications of the free R value, Structure 4, 897-904 (1996).
 !

{* Guidelines for using this file:
   - all strings must be quoted by double-quotes
   - logical variables (true/false) must not be quoted
   - do not remove any evaluate statements from the file *}

{======================= molecular structure =========================}

{* structure file(s) *}
{===>} evaluate ($structure_file="ref4/t13g_start_r4.psf")
structure @$structure_file end

{* parameter file(s) *}
{===>} evaluate ($par_1="../partop/toppar/paramcsdx_mod.pro")
{===>} evaluate ($par_2="../partop/param19_HOH.sol")
{===>} evaluate ($par_3="../partop/param11x.adp")
{===>} evaluate ($par_4="")
{===>} evaluate ($par_5="")

{* calculate map from a single structure *}
{* this will be ignored if averaging is carried out *}
{* coordinate file(s) *}
{===>} evaluate ($coord_in_file="ref4/slowcool_1.pdb")

{* average structure factors from a number of models *}
{===>} evaluate ($averaging=true)

{* number of structures to average *}
{===>} evaluate ($num_struct=2)

{* root file name to determine coordinates to be read for averaging *}
{* assumed that coordinates start at name_1.pdb and go up to name_n.pdb *}
{===>} evaluate ($coord_root="ref4/slowcool")

if ( $averaging = false ) then
  coordinates @@$coord_in_file
elseif ( $averaging = true ) then
  evaluate ($input_coor=$coord_root + "_1.pdb")
  coordinates @@$input_coor
end if

{=========================== output files ============================}

{* output map *}
{===>} evaluate ($output_map="maps/fo-fc_ref4_siga.map")

{====================== crystallographic data ========================}

{* form factor library *}
{===>} evaluate ($scatter_library="XTALLIB:scatter.lib")

{* space group *}
{* uses International Table conventions with
   subcripts substituted by parenthesis *}
{===>} evaluate ($sg="P2(1)2(1)2(1)")

{* unit cell *}
 evaluate ($a=143.350)
 evaluate ($b=64.300)
 evaluate ($c=46.230)
 evaluate ($alpha=90)
 evaluate ($beta=90)
 evaluate ($gamma=90)

{* reflection file *}
{* includes test set for cross validation *}
{===>} evaluate ($ref="t13g_2.cv")

{* resolution limits for data included in map calculation *}
{* all data available should be included in the map calculation *}
{===>} evaluate ($low_res=40.0)
       evaluate ($high_res=1.7)

{* F/sigma amplitude cutoff. *}
{===>} evaluate ($f_cut=0.0)

{* Absolute amplitude cutoffs - used to remove outliers *}
{===>} evaluate ($f_low=0.001)
       evaluate ($f_high=1000000)

{* NCS information *}
{* choice of: "restrain", "strict", "none" (type: string) *}
{===>} evaluate ($ncs_flag="none")

{* NCS-restraints/constraints file name *}
{* examples are in xtalrefine/ncs_strict.inp
   and xtalrefine/ncs_restrain.inp *}
{===>} evaluate ($ncs_file="" )

{========================== atom selection ===========================}

{* select atoms to be included in map calculation *}
{===>} vector ident (store1) (known and not hydrogen)

{==================== map generation parameters ======================}

{* maps are calculated nFo - mFc *}
{* eg. 2fo-fc map -> $nn=1 and $mm=1
        fo-fc map -> $nn=1 and $mm=1 *}
{* specify n *}
{===>} evaluate ($nn=1)

{* specify m *}
{===>} evaluate ($mm=1)

{* use sigmaa weighting for map *}
{===>} evaluate ($sigmaa=true)

{* should cross validated sigmaa estimate be used *}
{===>} evaluate ($sigmaa_cv=true)

{* scale map by dividing by the rms sigma of the map *}
{* otherwise map will be on an absolute FOBS scale *}
{===>} evaluate ($map_scale=true)

{* map grid size: dmin*grid,  use grid=0.22 for better map appearance *}
{===>} evaluate ($grid=0.22) 

{============ initial b-factor and bulk solvent corrections ==========}

{* Initial B-factor correction *}
{* choice of: "none", "iso", "aniso" (type: string) *}
{===>} evaluate ($bscale="none")

{* lower resolution limit for B-factor correction *}
{* the correction can only be calculated using data truncated at a
   lower resolution limit of between 8 and 6 A. The correction will be
   applied to all reflections *}
{===>} evaluate ($low_res_bscale=6.0)

{* bulk solvent correction (true or false, type: logical) *}
{* a mask is created around the atoms selected in store1. The region
   outside this mask is the solvent region *}
{===>} evaluate ($bulk_sol=false)

{* mask for bulk solvent - from file if name given, otherwise
   from coords of atoms selected in xrefin (store1) *}
{===>} evaluate ($bulk_mask="")

{* optional: fix solvent density level by setting
   this parameter to a positive value. *}
{===>} evaluate ($k3=-9999.)

{* optional: fix solvent b-factor by setting
   this parameter to a positive value. *}
{===>} evaluate ($b3=-9999.)

{===========================================================================}
{         things below this line do not normally need to be changed         }
{===========================================================================}

 parameter
   if ($par_1 # " ") then
      @@$par_1
   end if
   if ($par_2 # " ") then
      @@$par_2
   end if
   if ($par_3 # " ") then
      @@$par_3
   end if
   if ($par_4 # " ") then
      @@$par_4
   end if
   if ($par_5 # " ") then
      @@$par_5
   end if
 end

xrefine

   @XTALLIB:spacegroup.lib                         { Read symmetry library. }

   a=$a b=$b c=$c  alpha=$alpha beta=$beta gamma=$gamma { Define unit cell. }
  
   @$scatter_library                             { Read form factor library }

   reflection @$ref end

   resolution_limits= $low_res $high_res

   do (fobs=0) (amplitude(fobs) <= $f_cut * sigma) 

   do (fobs=0) ($f_low > ampl(fobs) or ampl(fobs) > $f_high)

   evaluate ($f_low=0.001)

   evaluate ($f_high=1000000)

   fwindow $f_low  $f_high    

   selection=( store1 )

   method=FFT          
   
   fft 
      memory=2000000  grid=$grid  
   end                 
      
 end                  

 if ($ncs_flag="strict") then
    @@$ncs_file
 elseif ($ncs_flag="restrain") then
    @@$ncs_file
    flags include ncs end
 end if

 xrefin
   update
 end

  @@XTALMACRO:scalenbulk (
             bscale=$bscale;
             sel=( $high_res <= d <= $low_res_bscale and
                   $f_low <= amplitude(fobs) <= $f_high and test=0 );
             atom_select=( store1 );
             sel_bulk=( $high_res <= d <= $low_res and
                        $f_low <= amplitude(fobs) <= $f_high and test=0 );
             bulk_sol=$bulk_sol;
             bulk_mask=$bulk_mask;
             k3=$k3;
             b3=$b3;
             fcalc=fcalc;
             fobs=fobs;
             sigma=sigma;
             fpart=fpart;
             B2_11=$aniso_11;
             B2_22=$aniso_22;
             B2_33=$aniso_33;
             B2_12=$aniso_12;
             B2_13=$aniso_13;
             B2_23=$aniso_23;)

 xrefin
   update
 end
  
 xrefin
   declare name=sel domain=reciprocal type=integer end
   declare name=sel_test domain=reciprocal type=integer end

   do (sel=0) ( all )
   do (sel_test=0) ( all )
   do (sel=1)
      ($f_low <= ampl(fobs) <= $f_high and
       $high_res <= d <= $low_res)
   if ($sigmaa_cv=true) then
     do (sel_test=1)
        ($f_low <= ampl(fobs) <= $f_high and
         $high_res <= d <= $low_res and test=1)
   else
     do (sel_test=1)
        ($f_low <= ampl(fobs) <= $f_high and
         $high_res <= d <= $low_res)
   end if

   {* Calculate number of bins used for E and sigmaa calculation. }
   { Make sure there are at least 25 reflections in each bin.     }

   show sum (1) (sel_test=1)
   evaluate ($mbins=int(max(20,$result/25)))
   evaluate ($mbins=min($mbins,50))
   mbins=$mbins
 end

 if ( $sigmaa = true ) then
   xrefin
     declare name=eobs   domain=reciprocal type=real end
     declare name=ecalc  domain=reciprocal type=real end
     declare name=sigmaa domain=reciprocal type=real end
     declare name=sigmad domain=reciprocal type=real end
     declare name=dd     domain=reciprocal type=real end

     do (eobs=norm(amplitude(fobs)))   ( sel_test=1 )
     do (ecalc=norm(amplitude(fcalc+fpart))) ( sel_test=1 )
     do (sigmaa=sigacv[weight=100](eobs,ecalc))      ( sel_test=1 )
     do (sigmad=sqrt(save(ampl(fobs)^2) ( 1 - sigmaa^2 ) ) ) ( sel_test=1) 
    
     do (dd= sigmaa * sqrt( save(amplitude(fobs)^2)  / 
         save(amplitude(fcalc+fpart)^2) ) )           ( sel_test=1 )
    
     if ($sigmaa_cv=true) then
    
       {* Cross-validation active: need to expand to all selected *}
       {* reflections and compute the normalized structure factor *}
       {* for all data.                                           *}
    
       do (sigmaa=sum(sigmaa*test)/ max(1,sum(test))) ( sel=1 )
       do (sigmad=sum(sigmad*test)/ max(1,sum(test))) ( sel=1 )
       do (dd=sum(dd*test)/ max(1,sum(test)))        ( sel=1 )
       do (eobs=norm(amplitude(fobs)))   ( sel=1 )
       do (ecalc=norm(amplitude(fcalc+fpart))) ( sel=1 )
     end if
    
     print r
     statistics
       (sigmaa) (sigmad) (dd) (save(eobs^2)) (save(ecalc^2)) 
        selection=( sel=1)
     end

     do (fom=2 sigmaa eobs ecalc / (1 - sigmaa^2))
        ($low_res >= d >= $high_res and ampl(fobs) > 0)

     do (fom=i1overi0(fom)) ( acentric and ampl(fobs) > 0 )
     do (fom=tanh(fom/2))   ( centric  and ampl(fobs) > 0 )
!changes for map coeffiecient weighting of centric reflections
     do (deri1=combine(2 $nn fom ampl(fobs) - 2 $mm dd ampl(fcalc+fpart),
                       phase(fcalc+fpart)))
        ($low_res >= d >= $high_res and acentric and ampl(fobs) > 0 )

     do (deri1=combine($nn fom ampl(fobs) - $mm dd ampl(fcalc+fpart),
                       phase(fcalc+fpart)))
        ($low_res >= d >= $high_res and centric and ampl(fobs) > 0 )

     undeclare name=eobs     domain=reciprocal end
     undeclare name=ecalc    domain=reciprocal end
     undeclare name=sigmaa   domain=reciprocal end
     undeclare name=sigmad   domain=reciprocal end
     undeclare name=dd       domain=reciprocal end

   end
 else
   xrefin
     do (deri2=fcalc+fpart) (all)
     multiscale
       bfmin=-40 bfmax=40
       set1=fobs     k1=-1 b1=0
       set2=deri2          b2=0
       selection=($low_res_bscale >= d >= $high_res and ampl(fobs) > 0 )
     end
     do (deri2=$k2*deri2) (all)        { apply scaling to all reflections }
     do (deri1=combine($nn * ampl(fobs) - $mm * ampl(deri2), phase(deri2)))
                 ( sel=1 )
   end
 end if

 xrefin
   do (map1=ft(deri1)) ($low_res >= d >= $high_res and ampl(fobs) > 0 ) 
 end

 evaluate ($remark="")
 if ( $averaging = true ) then
   evaluate ($remark="averaged ")
 end if
 evaluate ($remark=$remark + encode($nn) + "fo-" + encode($mm) + "fc ")
 if ( $sigmaa = true ) then
   evaluate ($remark=$remark + "sigmaa")
   if ( $sigmaa_cv = true ) then
     evaluate ($remark=$remark + "cv")
   end if
 end if
 evaluate ($remark=$remark + " map")

 remark $remark

 xrefin
   write map
     automatic=$map_scale
     from=map1
     formatted=false
     output=$output_map
     cushion=5.0
     selection=( store1 )
     extend=molecule
   end
 end

 stop



More information about the X-plor mailing list