--- Marc Gailhanou
I still have a small discrepancy with an independant structure factor calculation I do, but as I do not know the default parameters of the x-ray scatterer in cctbx ( energy, anomalous scattering factor, ...) this is not surprising.
Below you'll find a slightly extended version of your original script. It shows how to modify f' and f", which default to zero, and how to see the content of the scattering dictionary. I hope it is reasonably obvious how to modify the attributes of scatterers (.site, .u_iso or .u_star, .occupancy, .fp, .fdp, .scattering_type). However, the interaction of .scattering_type and scattering_dict is a little bit complex because it supports a variety of customizations and is designed to optimize runtime performance. If the default Gaussian approximations to the atomic scattering factors are not suitable I'd be happy to explain more. Cheers, Ralf from cctbx import xray from cctbx import crystal from cctbx.array_family import flex silicon_structure = xray.structure( special_position_settings=crystal.special_position_settings( crystal_symmetry=crystal.symmetry( unit_cell=(5.4307,5.4307,5.4307,90,90,90), space_group_symbol="Fd3m:1")), scatterers=flex.xray_scatterer([ xray.scatterer( label="Si", site=(0.,0.,0.), u=0) ])) silicon_structure.show_summary().show_scatterers() print for scatterer in silicon_structure.scatterers(): print "%s:" % scatterer.label, "%8.4f %8.4f %8.4f" % scatterer.site site_symmetry = silicon_structure.site_symmetry(scatterer.site) print " point group type:", site_symmetry.point_group_type() print " special position operator:", site_symmetry.special_op() print " scattering type:", scatterer.scattering_type print " f-prime:", scatterer.fp print " f-double-prime:", scatterer.fdp print " anisotropic_flag:", scatterer.anisotropic_flag print silicon_structure.scattering_dict(d_min=1).show() print f_calc = silicon_structure.structure_factors(d_min=1).f_calc() f_calc.show_summary().show_array() print scatterer = silicon_structure.scatterers()[0] scatterer.fp = -1 scatterer.fdp = 0.5 silicon_structure.show_summary().show_scatterers() print f_calc = silicon_structure.structure_factors(d_min=1).f_calc() f_calc.show_summary().show_array() print __________________________________ Start your day with Yahoo! - Make it your home page! http://www.yahoo.com/r/hs