1 | #!/usr/bin/env /Users/toby/build/cctbx_build/bin/python |
---|
2 | import sys, datetime |
---|
3 | from cctbx import sgtbx |
---|
4 | |
---|
5 | # generate input for test 7 in GSASIIlattice |
---|
6 | dmin = 3 |
---|
7 | fp = open('sgtbxlattinp.py','w') |
---|
8 | fp.write("# output from sgtbx computed on platform %s on %s\n" % |
---|
9 | (sys.platform, datetime.date.today()) ) |
---|
10 | fp.write("dmin = %s\n" % dmin) |
---|
11 | fp.write("sgtbx7 = {\n") |
---|
12 | for sg in ("P-1", # space groups for all 14 Bravais lattices |
---|
13 | "P2/m", |
---|
14 | "C2/m", |
---|
15 | "Pmmm", |
---|
16 | "Cmmm", |
---|
17 | "Fmmm", |
---|
18 | "Immm", |
---|
19 | "P4/mmm", |
---|
20 | "I4/mmm", |
---|
21 | "R-3m", |
---|
22 | "P6/mmm", |
---|
23 | "Pm-3m", |
---|
24 | "Im-3m", |
---|
25 | "Fm-3m", |
---|
26 | ): |
---|
27 | sgi = sgtbx.space_group_info(symbol=sg) |
---|
28 | cs = sgi.any_compatible_crystal_symmetry(volume=1000) |
---|
29 | ms = cs.build_miller_set(anomalous_flag=False, d_min=dmin) |
---|
30 | #ms.show_summary() |
---|
31 | spcg = ("%s" % ms.space_group_info()).split(':')[0] |
---|
32 | print spcg |
---|
33 | fp.write("'%s': [\n" % spcg) |
---|
34 | fp.write("%s ,\n" % ms.unit_cell()) |
---|
35 | hkllist = {} |
---|
36 | for hkl,d in ms.d_spacings(): |
---|
37 | if hkllist.has_key(d): |
---|
38 | hkllist[d].append(hkl) |
---|
39 | print hkllist[d] |
---|
40 | else: |
---|
41 | hkllist[d] = [hkl,] |
---|
42 | fp.write(" (\n") |
---|
43 | for d in sorted(hkllist.keys(),reverse=True): |
---|
44 | fp.write(" (%s, %s),\n" % (hkllist[d],d)) |
---|
45 | fp.write(" )],\n\n") |
---|
46 | fp.write("}\n\n") |
---|
47 | |
---|
48 | # generate input for test 8 in GSASIIlattice |
---|
49 | spg = ("P -1", |
---|
50 | "P 2/m", |
---|
51 | "C 2/m", |
---|
52 | "B 1 1 2/m", |
---|
53 | "B 2/m 1 1", |
---|
54 | "I 2/m", |
---|
55 | "P m m m", |
---|
56 | "A m m m", |
---|
57 | "B m m m", |
---|
58 | "C m m m", |
---|
59 | "F m m m", |
---|
60 | "I m m m", |
---|
61 | "P -4", |
---|
62 | "P 4/m m m", |
---|
63 | "I 4/m m m", |
---|
64 | "P 3", |
---|
65 | "P 3 2 1", |
---|
66 | "P 3 1 m", |
---|
67 | "P -3 1 m", |
---|
68 | "R 3", |
---|
69 | "R 3 m", |
---|
70 | "R -3 m", |
---|
71 | "R 3 R", |
---|
72 | "R -3 m R", |
---|
73 | "P -6", |
---|
74 | "P 6/m m m", |
---|
75 | "P m -3 m", |
---|
76 | "I m -3 m", |
---|
77 | "F m -3 m", |
---|
78 | ) # test w/space groups with only centering extinctions |
---|
79 | # N.B. (cctbx does not accept F -1, etc) |
---|
80 | |
---|
81 | fp.write("sgtbx8 = {\n") |
---|
82 | for sg in spg: |
---|
83 | sgi = sgtbx.space_group_info(symbol=sg) |
---|
84 | cs = sgi.any_compatible_crystal_symmetry(volume=1000) |
---|
85 | ms = cs.build_miller_set(anomalous_flag=False, d_min=dmin) |
---|
86 | #ms.show_summary() |
---|
87 | spcglist = ("%s" % ms.space_group_info()).split(':') |
---|
88 | spcg = spcglist[0] |
---|
89 | if len(spcglist) > 1: |
---|
90 | if spcglist[1] == 'R': spcg += ' R' |
---|
91 | print spcg |
---|
92 | #fp.write("'%s': [\n" % spcg) |
---|
93 | fp.write("'%s': [\n" % sg) |
---|
94 | fp.write("%s ,\n" % ms.unit_cell()) |
---|
95 | fp.write(" (\n") |
---|
96 | for hkl,d in ms.d_spacings(): |
---|
97 | fp.write(" (%s, %s),\n" % (hkl,d)) |
---|
98 | fp.write(" )],\n\n") |
---|
99 | fp.write("}\n") |
---|
100 | |
---|
101 | #if __name__ == '__main__': |
---|
102 | # from IPython.Shell import IPShellEmbed |
---|
103 | # ipshell = IPShellEmbed() |
---|
104 | # ipshell() # this call anywhere in your program will start IPython |
---|