Skip to content
This repository was archived by the owner on Aug 16, 2022. It is now read-only.

Commit 9d75d45

Browse files
committed
Change three variable names & bugfix
1 parent 18f07b1 commit 9d75d45

File tree

1 file changed

+55
-56
lines changed

1 file changed

+55
-56
lines changed

tilde/core/symmetry.py

Lines changed: 55 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# *SymmetryFinder*: platform-independent symmetry finder, wrapping Spglib code
33
# *SymmetryHandler*: symmetry inferences for 0D-, 1D-, 2D- and 3D-systems
44
# Author: Evgeny Blokhin
5-
# v080416
65

76
from numpy.linalg import det
87

@@ -26,11 +25,11 @@ def get_spacegroup(self, tilde_obj):
2625
except Exception as ex:
2726
self.error = 'Symmetry finder error: %s' % ex
2827
else:
29-
symmetry = symmetry.split()
30-
self.i = symmetry[0]
31-
try: self.n = int( symmetry[1].replace("(", "").replace(")", "") )
32-
except (ValueError, IndexError): self.n = 0
33-
if self.n == 0:
28+
try:
29+
self.sg, self.ng = symmetry.split()
30+
self.ng = int(self.ng.strip("()"))
31+
except (ValueError, IndexError, AttributeError):
32+
self.ng = 0
3433
self.error = 'Symmetry finder error (probably, coinciding atoms)'
3534

3635
def refine_cell(self, tilde_obj):
@@ -53,15 +52,15 @@ def __init__(self, tilde_obj, accuracy=None):
5352
self.error = None
5453
self.accuracy=accuracy if accuracy else SymmetryFinder.accuracy
5554
def get_spacegroup(self, tilde_obj):
56-
self.n = 1
57-
self.i = 'P1'
55+
self.ng = 1
56+
self.sg = 'P1'
5857
"""
5958

6059
class SymmetryHandler(SymmetryFinder):
6160
def __init__(self, tilde_obj, accuracy=None):
62-
self.i = None
63-
self.n = None
64-
self.symmetry = None
61+
self.sg = None
62+
self.ng = None
63+
self.system = None
6564
self.pg = None
6665
self.dg = None
6766

@@ -75,61 +74,61 @@ def __init__(self, tilde_obj, accuracy=None):
7574
# NB 7 crystal systems != 7 lattice systems
7675

7776
# space group to crystal system conversion
78-
if 195 <= self.n <= 230: self.symmetry = 'cubic'
79-
elif 168 <= self.n <= 194: self.symmetry = 'hexagonal'
80-
elif 143 <= self.n <= 167: self.symmetry = 'trigonal'
81-
elif 75 <= self.n <= 142: self.symmetry = 'tetragonal'
82-
elif 16 <= self.n <= 74: self.symmetry = 'orthorhombic'
83-
elif 3 <= self.n <= 15: self.symmetry = 'monoclinic'
84-
elif 1 <= self.n <= 2: self.symmetry = 'triclinic'
77+
if 195 <= self.ng <= 230: self.system = 'cubic'
78+
elif 168 <= self.ng <= 194: self.system = 'hexagonal'
79+
elif 143 <= self.ng <= 167: self.system = 'trigonal'
80+
elif 75 <= self.ng <= 142: self.system = 'tetragonal'
81+
elif 16 <= self.ng <= 74: self.system = 'orthorhombic'
82+
elif 3 <= self.ng <= 15: self.system = 'monoclinic'
83+
elif 1 <= self.ng <= 2: self.system = 'triclinic'
8584

8685
# space group to point group conversion
87-
if 221 <= self.n <= 230: self.pg = 'O<sub>h</sub>'
88-
elif 215 <= self.n <= 220: self.pg = 'T<sub>d</sub>'
89-
elif 207 <= self.n <= 214: self.pg = 'O'
90-
elif 200 <= self.n <= 206: self.pg = 'T<sub>h</sub>'
91-
elif 195 <= self.n <= 199: self.pg = 'T'
92-
elif 191 <= self.n <= 194: self.pg = 'D<sub>6h</sub>'
93-
elif 187 <= self.n <= 190: self.pg = 'D<sub>3h</sub>'
94-
elif 183 <= self.n <= 186: self.pg = 'C<sub>6v</sub>'
95-
elif 177 <= self.n <= 182: self.pg = 'D<sub>6</sub>'
96-
elif 175 <= self.n <= 176: self.pg = 'C<sub>6h</sub>'
97-
elif self.n == 174: self.pg = 'C<sub>3h</sub>'
98-
elif 168 <= self.n <= 173: self.pg = 'C<sub>6</sub>'
99-
elif 162 <= self.n <= 167: self.pg = 'D<sub>3d</sub>'
100-
elif 156 <= self.n <= 161: self.pg = 'C<sub>3v</sub>'
101-
elif 149 <= self.n <= 155: self.pg = 'D<sub>3</sub>'
102-
elif 147 <= self.n <= 148: self.pg = 'C<sub>3i</sub>'
103-
elif 143 <= self.n <= 146: self.pg = 'C<sub>3</sub>'
104-
elif 123 <= self.n <= 142: self.pg = 'D<sub>4h</sub>'
105-
elif 111 <= self.n <= 122: self.pg = 'D<sub>2d</sub>'
106-
elif 99 <= self.n <= 110: self.pg = 'C<sub>4v</sub>'
107-
elif 89 <= self.n <= 98: self.pg = 'D<sub>4</sub>'
108-
elif 83 <= self.n <= 88: self.pg = 'C<sub>4h</sub>'
109-
elif 81 <= self.n <= 82: self.pg = 'S<sub>4</sub>'
110-
elif 75 <= self.n <= 80: self.pg = 'C<sub>4</sub>'
111-
elif 47 <= self.n <= 74: self.pg = 'D<sub>2h</sub>'
112-
elif 25 <= self.n <= 46: self.pg = 'C<sub>2v</sub>'
113-
elif 16 <= self.n <= 24: self.pg = 'D<sub>2</sub>'
114-
elif 10 <= self.n <= 15: self.pg = 'C<sub>2h</sub>'
115-
elif 6 <= self.n <= 9: self.pg = 'C<sub>s</sub>'
116-
elif 3 <= self.n <= 5: self.pg = 'C<sub>2</sub>'
117-
elif self.n == 2: self.pg = 'C<sub>i</sub>'
118-
elif self.n == 1: self.pg = 'C<sub>1</sub>'
86+
if 221 <= self.ng <= 230: self.pg = 'O<sub>h</sub>'
87+
elif 215 <= self.ng <= 220: self.pg = 'T<sub>d</sub>'
88+
elif 207 <= self.ng <= 214: self.pg = 'O'
89+
elif 200 <= self.ng <= 206: self.pg = 'T<sub>h</sub>'
90+
elif 195 <= self.ng <= 199: self.pg = 'T'
91+
elif 191 <= self.ng <= 194: self.pg = 'D<sub>6h</sub>'
92+
elif 187 <= self.ng <= 190: self.pg = 'D<sub>3h</sub>'
93+
elif 183 <= self.ng <= 186: self.pg = 'C<sub>6v</sub>'
94+
elif 177 <= self.ng <= 182: self.pg = 'D<sub>6</sub>'
95+
elif 175 <= self.ng <= 176: self.pg = 'C<sub>6h</sub>'
96+
elif self.ng == 174: self.pg = 'C<sub>3h</sub>'
97+
elif 168 <= self.ng <= 173: self.pg = 'C<sub>6</sub>'
98+
elif 162 <= self.ng <= 167: self.pg = 'D<sub>3d</sub>'
99+
elif 156 <= self.ng <= 161: self.pg = 'C<sub>3v</sub>'
100+
elif 149 <= self.ng <= 155: self.pg = 'D<sub>3</sub>'
101+
elif 147 <= self.ng <= 148: self.pg = 'C<sub>3i</sub>'
102+
elif 143 <= self.ng <= 146: self.pg = 'C<sub>3</sub>'
103+
elif 123 <= self.ng <= 142: self.pg = 'D<sub>4h</sub>'
104+
elif 111 <= self.ng <= 122: self.pg = 'D<sub>2d</sub>'
105+
elif 99 <= self.ng <= 110: self.pg = 'C<sub>4v</sub>'
106+
elif 89 <= self.ng <= 98: self.pg = 'D<sub>4</sub>'
107+
elif 83 <= self.ng <= 88: self.pg = 'C<sub>4h</sub>'
108+
elif 81 <= self.ng <= 82: self.pg = 'S<sub>4</sub>'
109+
elif 75 <= self.ng <= 80: self.pg = 'C<sub>4</sub>'
110+
elif 47 <= self.ng <= 74: self.pg = 'D<sub>2h</sub>'
111+
elif 25 <= self.ng <= 46: self.pg = 'C<sub>2v</sub>'
112+
elif 16 <= self.ng <= 24: self.pg = 'D<sub>2</sub>'
113+
elif 10 <= self.ng <= 15: self.pg = 'C<sub>2h</sub>'
114+
elif 6 <= self.ng <= 9: self.pg = 'C<sub>s</sub>'
115+
elif 3 <= self.ng <= 5: self.pg = 'C<sub>2</sub>'
116+
elif self.ng == 2: self.pg = 'C<sub>i</sub>'
117+
elif self.ng == 1: self.pg = 'C<sub>1</sub>'
119118

120119
# space group to layer group conversion
121120
if tilde_obj.structures[-1].periodicity == 2:
122-
if self.n in [25, 26, 28, 51]:
121+
if self.ng in [25, 26, 28, 51]:
123122
tilde_obj.warning('Warning! Diperiodical group setting is undefined!')
124123
DIPERIODIC_MAPPING = {3:8, 4:9, 5:10, 6:11, 7:12, 8:13, 10:14, 11:15, 12:16, 13:17, 14:18, 16:19, 17:20, 18:21, 21:22, 25:23, 25:24, 26:25, 26:26, 27:27, 28:28, 28:29, 29:30, 30:31, 31:32, 32:33, 35:34, 38:35, 39:36, 47:37, 49:38, 50:39, 51:40, 51:41, 53:42, 54:43, 55:44, 57:45, 59:46, 65:47, 67:48, 75:49, 81:50, 83:51, 85:52, 89:53, 90:54, 99:55, 100:56, 111:57, 113:58, 115:59, 117:60, 123:61, 125:62, 127:63, 129:64, 143:65, 147:66, 149:67, 150:68, 156:69, 157:70, 162:71, 164:72, 168:73, 174:74, 175:75, 177:76, 183:77, 187:78, 189:79, 191:80}
125124

126125
cellpar = cell_to_cellpar( tilde_obj.structures[-1].cell ).tolist()
127126
if cellpar[3] != 90 or cellpar[4] != 90 or cellpar[5] != 90:
128127
DIPERIODIC_MAPPING.update({1:1, 2:2, 3:3, 6:4, 7:5, 10:6, 13:7})
129-
try: self.dg = DIPERIODIC_MAPPING[self.n]
128+
try: self.dg = DIPERIODIC_MAPPING[self.ng]
130129
except KeyError: tilde_obj.warning('No diperiodical group found because rotational axes inconsistent with 2d translations!')
131130
else:
132-
if 65 <= self.dg <= 80: self.symmetry = '2d-hexagonal'
133-
elif 49 <= self.dg <= 64: self.symmetry = '2d-square'
134-
elif 8 <= self.dg <= 48: self.symmetry = '2d-rectangular'
135-
elif 1 <= self.dg <= 7: self.symmetry = '2d-oblique'
131+
if 65 <= self.dg <= 80: self.system = '2d-hexagonal'
132+
elif 49 <= self.dg <= 64: self.system = '2d-square'
133+
elif 8 <= self.dg <= 48: self.system = '2d-rectangular'
134+
elif 1 <= self.dg <= 7: self.system = '2d-oblique'

0 commit comments

Comments
 (0)