[phenixbb] [ccp4bb] DANO from PDB

Peter Zwart PHZwart at lbl.gov
Thu Jun 7 17:03:04 PDT 2007


Hi Santosh,

Here is an alternative to methods mentioned earlier. If you get the 
latest version of the cctbx or cci_apps (from www.phenix-online.org) you 
will find a new application named phenix.xmanip (or mmtbx.xmanip if you 
only download the cctbx).

xmanip has some useful features, one of them is that one can provide 
pieces of python code to the interface that will be executed. You have 
full access to all cctbx methods available.

Please find below an example parameter file that perform structure 
factor calculation (in less than 90 lines of code and input) that 
includes elements with f" and f' not being equal to zero (you have to 
set the values of f" and f' yourself rather then rely on lookup tables 
by wavelength) and allows you to set bulk solvent parameters such as 
ksol, bsol and the overall anisotropic B of the data (B_cart).

Save the text below (between the hash-es in a file named params.def , 
change the unit cell and sg parameters, the input pdb file and f" and f' 
value dictionary to suit your needs:
( like
fp_dict  = { "S": 0, "C": 0   }
fdp_dict = { "S": 0, "C": 2.8 }
for instance }

You can fool around with solvent density, solvent B, overall scale 
factor and overall anisotropic B value and resolution (d_min).

Then run

phenix.xmanip params.def

and get a file named xmanip.mtz that will contain your error free data.
If you want, you can add uniform or Gaussian errors yourself.

Since xmanip is fairly new, you will find a bug in the current release 
that somehow appears when you do not read in any external xray data. 
This happens however right after the mtz file in question has been 
written out. This will be fixed in the forthcoming release (soonish).

Let me know if anything is unclear or if you have trouble running it.

HTH

Peter Zwart


###################################################################

xmanip {
   input {
     unit_cell =  "80.127   80.127   71.582  90.00  90.00 120.00"
     space_group = R3:H
     model {
       file_name = tst.pdb
     }
   }
   parameters {
     action = reindex manipulate_pdb *manipulate_miller
     manipulate_miller {
       task = get_dano get_diso lsq_scale sfcalc *custom None
       output_label_root = "Imock"
       custom{
         code = """
#-------------------------------------------------------
# This you can change if desired
#

# Dictionary for fp and fpp values
fp_dict  = { "Zn": -0.189 }
fdp_dict = { "Zn":  4.898 }

# final resolution of the data
d_min    = 2.0

# anisotropic B value
b_cart = [ 0, 0, 0, 0, 0, 0 ]

# solvent parameters
k_sol = 0.35
b_sol = 45.0

# overall scale
k_overall  = 1.0


#-------------------------------------------------------
# below this point, things should be more or less okai
#

from mmtbx import f_model
from cctbx.xray import observation_types

#loop over all scatterers in the xray structure
#print >> out, dir(xray_structure)
scatterers = xray_structure.scatterers()
for atom in scatterers.as_1d():
   if fp_dict.has_key( atom.element_symbol() ):
     atom.fp = fp_dict[ atom.element_symbol() ]
   if fdp_dict.has_key( atom.element_symbol() ):
     atom.fdp = fdp_dict[ atom.element_symbol() ]
#the changes have been made to fp and fdp

#Now we have to do some trickery to get some fobs with bulk solvent
#contribution ...

#First make a 'fake' set of f_obs
fake_f_obs = abs(xray_structure.structure_factors(
                    d_min          = d_min,
                    anomalous_flag = True ).f_calc())
# make a 'fake' set of free flags
fake_free_flags = fake_f_obs.generate_r_free_flags(fraction = 0.1,
                                                    max_free = 99999999)
fmodel = f_model.manager( xray_structure   = xray_structure,
                           r_free_flags     = fake_free_flags,
                           target_name      = "ls_wunit_k1",
                           f_obs            = fake_f_obs,
                           b_cart           = b_cart,
                           k_sol            = k_sol,
                           b_sol            = b_sol,
                           overall_scale    = k_overall )
# now get the final values of F+ and F-.
# Note the abs to get amplitudes only
result = abs( fmodel.f_model() ).set_observation_type( 
observation_types.amplitude() )
# you want make this into intensities?
result = result.f_as_f_sq()
# lets leave the intensities alone for now, and just make 'mock' sigmas
# to statisfy certain programs.
# Don't forget to set the observation type!
sigmas =  result.data()/100.0
result = result.customized_copy(data = result.data(), 
sigmas=sigmas).set_observation_type(result)
#By default, a parameter named result is passed back to the xmanip
#routines and will be written to the final mtz file

"""
       }
     }
   }
   output {
     logfile = "xmanip.log"
     hklout = "xmanip.mtz"
     xyzout = "xmanip.pdb"
   }
}



###################################################################



Santosh Panjikar wrote:
> Hi all,
> 
>  Does anybody have a program which can  calculate anomalous differences or
>  F+ and F-  from a refined structure at given wavelength and resolution ?
> 
>  Thanks
>  Santosh
> 
> 
> Santosh Panjikar, Ph.D.              panjikar at embl-hamburg.de
> Staff Scientist
> EMBL Hamburg outstation              http://www.embl-hamburg.de/~panjikar/
> DESY, Notkestrasse 85                Tel.:+49-40-89902-141
> 22603, Hamburg, Germany              Fax: +49-40-89902-149



More information about the phenixbb mailing list