[cctbxbb] Bug in structure.expand_to_p1?

Jan Marten Simons marten at xtal.rwth-aachen.de
Mon Jun 20 02:13:00 PDT 2011


Hi,

I'm quite puzzled at the moment.

using this code:

if __name__ == '__main__':
  quartz_structure = xray.structure(
    special_position_settings=crystal.special_position_settings(
      crystal_symmetry=crystal.symmetry(
        unit_cell=(5.01,5.01,5.47,90,90,120),
        space_group_symbol="P6222")),
    scatterers=flex.xray_scatterer([
      xray.scatterer(
        label="Si",
        site=(1/2.,1/2.,1/3.),
        u=0.2),
      xray.scatterer(
        label="O",
        site=(0.197,-0.197,0.83333),
        u=0)]))

  ref_structure = quartz_structure.expand_to_p1(
           append_number_to_labels=True)
  
  print(ref_structure.as_py_code())


I get this result:

xray.structure(
  crystal_symmetry=crystal.symmetry(
    unit_cell=(5.01, 5.01, 5.47, 90, 90, 120),
    space_group_symbol="P 1"),
  scatterers=flex.xray_scatterer([
    xray.scatterer( #0
      label="Si_0",
      site=(0.500000, 0.500000, 0.333333),
      u=0.200000),
    xray.scatterer( #1
      label="Si_1",
      site=(0.000000, 0.500000, 0.666667),
      u=0.200000),
    xray.scatterer( #2
      label="Si_2",
      site=(0.500000, 0.000000, 1.000000),
      u=0.200000),
    xray.scatterer( #3
      label="O_0",
      site=(0.197000, -0.197000, 0.833333),
      u=0.000000),
    xray.scatterer( #4
      label="O_1",
      site=(0.394000, 0.197000, 1.166667),
      u=0.000000),
    xray.scatterer( #5
      label="O_2",
      site=(-0.197000, -0.394000, 1.500000),
      u=0.000000),
    xray.scatterer( #6
      label="O_3",
      site=(0.197000, 0.394000, 1.500000),
      u=0.000000),
    xray.scatterer( #7
      label="O_4",
      site=(-0.394000, -0.197000, 1.166667),
      u=0.000000),
    xray.scatterer( #8
      label="O_5",
      site=(-0.197000, 0.197000, 0.833333),
      u=0.000000)]))


It bothers me that there are x,y,z not in [0, 1[. Shouldn't the newly expanded 
cell only contain atoms within the unit cell? I realize, that the quarz 
structure (from the sample code from the website) also violates this with Oy 
beeing negative, but still I think expand_to_p1 should return a regular 
structure.

Also is there a method already implemented to change a structure from a non-
conventional description into a conventional one (with all atoms within its 
unit cell)?

With regards,

 Dipl. Phys.
  Jan M. Simons
 
Institute of Crystallography
RWTH Aachen University


More information about the cctbxbb mailing list