Am Mittwoch 22 Dezember 2010 23:48:21 schrieb Ralf W. Grosse-Kunstleve:
Hi Jan,
We have the N-Gaussians for all ions that appear in the International Tables Volume C. You can find the source code for the compiled-in tables here:
cctbx/eltbx/xray_scattering
RuntimeError: gaussian not defined for scattering_type "Y4+".
RuntimeError: gaussian not defined for scattering_type "V4+". RuntimeError: gaussian not defined for scattering_type "H1+".
These three do not appear in the Int. Tables. We'd need to find out what form factors were actually used in the refinement. I see the structures are from 1981-1993. It could be very difficult to find out for sure.
I just checked Int. Tables Vol C from 2006 and those are not there as well.
We already have an option to make the form factor lookup less strict. The critical line is this in cctbx/xray/structure.py:
std_lbl = eltbx.xray_scattering.get_standard_label( label=t_undef, exact=True, optional=True)
I think your script should run if you set exact=False, but it will use plain Y, V, H form factors for the unknown ions. Is that good enough for your purposes?
I think it should be enough, but how can I activate it with structure.structure_factors().f_calc()? According to documentation there's only structure_factors(self, d_min), and f_calc = structure.structure_factors(d_min=1.0, exact=False).f_calc() yields a "TypeError: structure_factors() got an unexpected keyword argument 'exact'" So, do I have to edit/patch cctbx/xray/structure.py: to achieve the desired behaviour or is there a better way? (Imho best way would be to have more optional parameters for structure.structure_factors().f_calc().) With regards, Dipl. Pyhs. Jan M. Simons Institute of Crystallography RWTH Aachen University