from __future__ import division
from cctbx.adptbx import b_as_u
from libtbx.str_utils import format_value

pdb_str = """\
CRYST1   10.000   10.000   10.000  90.00  90.00  90.00 P 1
ATOM      2  CA  GLY A   1       0.000   0.000   0.000  1.00  0.00           C
TER
END
"""

def exercise():
  import iotbx.pdb
  pdb_inp = iotbx.pdb.input(source_info = None, lines = pdb_str)
  xs = pdb_inp.xray_structure_simple()
  assert xs.scatterers().size() == 1
  for b_iso in [1.e-3, 1.e-1, 0.5, 1, 10, 100]:
    xs.scatterers()[0].u_iso = b_as_u(b_iso)
    ug_n = xs.scattering_type_registry(
      table="n_gaussian", d_min=1/12.).unique_gaussians_as_list()[0]
    ug_i = xs.scattering_type_registry(
      table="it1992").unique_gaussians_as_list()[0]
    ug_w = xs.scattering_type_registry(
      table="wk1995").unique_gaussians_as_list()[0]
    print "%15s %15s %15s %15s"%(
      format_value("%.6g",b_iso), 
      format_value("%.6g",ug_n.electron_density(0, b_iso)),
      format_value("%.6g",ug_w.electron_density(0, b_iso)),
      format_value("%.6g",ug_i.electron_density(0, b_iso)))
    
if(__name__ == "__main__"):
  exercise()
