#
# The high-throughput toolkit (httk)
# Copyright (C) 2012-2015 Rickard Armiento
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# List from http://cci.lbl.gov/sginfo/hall symbols.html, Sydney R. Hall, Ralf W. Grosse-Kunstleve
spacegroups = [
(1, 1, "", ("P1", "A1", "B1", "C1", "F1", "I1"), "P 1", "C1^1"),
(2, 1, "", ("P-1", "-A1", "A-1", "B-1", "-B1", "-C1", "-C1", "F-1", "-F1", "I-1", "-I1"), "-P 1", "Ci^1"),
(3, 1, "b", ("P2:b", "P121",), "P 2y", "C2^1"),
(3, 2, "c", ("P2:c", "P112",), "P 2", "C2^1"),
(3, 3, "a", ("P2:a", "P211",), "P 2x", "C2^1"),
(4, 1, "b", ("P21:b", "P1211",), "P 2yb", "C2^2"),
(4, 2, "c", ("P21:c", "P1121",), "P 2c", "C2^2"),
(4, 3, "a", ("P21:a", "P2111",), "P 2xa", "C2^2"),
(5, 1, "b1", ("C2:b1", "C121",), "C 2y", "C2^3"),
(5, 2, "b2", ("C2:b2", "A121",), "A 2y", "C2^3"),
(5, 3, "b3", ("C2:b3", "I121",), "I 2y", "C2^3"),
(5, 4, "c1", ("C2:c1", "A112",), "A 2", "C2^3"),
(5, 5, "c2", ("C2:c2", "B112", "B2",), "B 2", "C2^3"),
(5, 6, "c3", ("C2:c3", "I112",), "I 2", "C2^3"),
(5, 7, "a1", ("C2:a1", "B211",), "B 2x", "C2^3"),
(5, 8, "a2", ("C2:a2", "C211",), "C 2x", "C2^3"),
(5, 9, "a3", ("C2:a3", "I211",), "I 2x", "C2^3"),
(6, 1, "b", ("Pm:b", "P1m1",), "P -2y", "Cs^1"),
(6, 2, "c", ("Pm:c", "P11m",), "P -2", "Cs^1"),
(6, 3, "a", ("Pm:a", "Pm11",), "P -2x", "Cs^1"),
(7, 1, "b1", ("Pc:b1", "P1c1",), "P -2yc", "Cs^2"),
(7, 2, "b2", ("Pc:b2", "P1n1",), "P -2yac", "Cs^2"),
(7, 3, "b3", ("Pc:b3", "P1a1",), "P -2ya", "Cs^2"),
(7, 4, "c1", ("Pc:c1", "P11a",), "P -2a", "Cs^2"),
(7, 5, "c2", ("Pc:c2", "P11n",), "P -2ab", "Cs^2"),
(7, 6, "c3", ("Pc:c3", "P11b", "Pb",), "P -2b", "Cs^2"),
(7, 7, "a1", ("Pc:a1", "Pb11",), "P -2xb", "Cs^2"),
(7, 8, "a2", ("Pc:a2", "Pn11",), "P -2xbc", "Cs^2"),
(7, 9, "a3", ("Pc:a3", "Pc11",), "P -2xc", "Cs^2"),
(8, 1, "b1", ("Cm:b1", "C1m1",), "C -2y", "Cs^3"),
(8, 2, "b2", ("Cm:b2", "A1m1",), "A -2y", "Cs^3"),
(8, 3, "b3", ("Cm:b3", "I1m1",), "I -2y", "Cs^3"),
(8, 4, "c1", ("Cm:c1", "A11m",), "A -2", "Cs^3"),
(8, 5, "c2", ("Cm:c2", "B11m", "Bm",), "B -2", "Cs^3"),
(8, 6, "c3", ("Cm:c3", "I11m",), "I -2", "Cs^3"),
(8, 7, "a1", ("Cm:a1", "Bm11",), "B -2x", "Cs^3"),
(8, 8, "a2", ("Cm:a2", "Cm11",), "C -2x", "Cs^3"),
(8, 9, "a3", ("Cm:a3", "Im11",), "I -2x", "Cs^3"),
(9, 1, "b1", ("Cc:b1", "C1c1",), "C -2yc", "Cs^4"),
(9, 2, "b2", ("Cc:b2", "A1n1",), "A -2yac", "Cs^4"),
(9, 3, "b3", ("Cc:b3", "I1a1",), "I -2ya", "Cs^4"),
(9, 4, "-b1", ("Cc:-b1", "A1a1",), "A -2ya", "Cs^4"),
(9, 5, "-b2", ("Cc:-b2", "C1n1",), "C -2ybc", "Cs^4"),
(9, 6, "-b3", ("Cc:-b3", "I1c1",), "I -2yc", "Cs^4"),
(9, 7, "c1", ("Cc:c1", "A11a",), "A -2a", "Cs^4"),
(9, 8, "c2", ("Cc:c2", "B11n",), "B -2bc", "Cs^4"),
(9, 9, "c3", ("Cc:c3", "I11b",), "I -2b", "Cs^4"),
(9, 10, "-c1", ("Cc:-c1", "B11b", "Bb",), "B -2b", "Cs^4"),
(9, 11, "-c2", ("Cc:-c2", "A11n",), "A -2ac", "Cs^4"),
(9, 12, "-c3", ("Cc:-c3", "I11a",), "I -2a", "Cs^4"),
(9, 13, "a1", ("Cc:a1", "Bb11",), "B -2xb", "Cs^4"),
(9, 14, "a2", ("Cc:a2", "Cn11",), "C -2xbc", "Cs^4"),
(9, 15, "a3", ("Cc:a3", "Ic11",), "I -2xc", "Cs^4"),
(9, 16, "-a1", ("Cc:-a1", "Cc11",), "C -2xc", "Cs^4"),
(9, 17, "-a2", ("Cc:-a2", "Bn11",), "B -2xbc", "Cs^4"),
(9, 18, "-a3", ("Cc:-a3", "Ib11",), "I -2xb", "Cs^4"),
(10, 1, "b", ("P2/m:b", "P12/m1",), "-P 2y", "C2h^1"),
(10, 2, "c", ("P2/m:c", "P112/m",), "-P 2", "C2h^1"),
(10, 3, "a", ("P2/m:a", "P2/m11",), "-P 2x", "C2h^1"),
(11, 1, "b", ("P21/m:b", "P121/m1",), "-P 2yb", "C2h^2"),
(11, 2, "c", ("P21/m:c", "P1121/m",), "-P 2c", "C2h^2"),
(11, 3, "a", ("P21/m:a", "P21/m11",), "-P 2xa", "C2h^2"),
(12, 1, "b1", ("C2/m:b1", "C12/m1",), "-C 2y", "C2h^3"),
(12, 2, "b2", ("C2/m:b2", "A12/m1",), "-A 2y", "C2h^3"),
(12, 3, "b3", ("C2/m:b3", "I12/m1",), "-I 2y", "C2h^3"),
(12, 4, "c1", ("C2/m:c1", "A112/m",), "-A 2", "C2h^3"),
(12, 5, "c2", ("C2/m:c2", "B112/m", "B2/m",), "-B 2", "C2h^3"),
(12, 6, "c3", ("C2/m:c3", "I112/m",), "-I 2", "C2h^3"),
(12, 7, "a1", ("C2/m:a1", "B2/m11",), "-B 2x", "C2h^3"),
(12, 8, "a2", ("C2/m:a2", "C2/m11",), "-C 2x", "C2h^3"),
(12, 9, "a3", ("C2/m:a3", "I2/m11",), "-I 2x", "C2h^3"),
(13, 1, "b1", ("P2/c:b1", "P12/c1",), "-P 2yc", "C2h^4"),
(13, 2, "b2", ("P2/c:b2", "P12/n1",), "-P 2yac", "C2h^4"),
(13, 3, "b3", ("P2/c:b3", "P12/a1",), "-P 2ya", "C2h^4"),
(13, 4, "c1", ("P2/c:c1", "P112/a",), "-P 2a", "C2h^4"),
(13, 5, "c2", ("P2/c:c2", "P112/n",), "-P 2ab", "C2h^4"),
(13, 6, "c3", ("P2/c:c3", "P112/b", "P2/b",), "-P 2b", "C2h^4"),
(13, 7, "a1", ("P2/c:a1", "P2/b11",), "-P 2xb", "C2h^4"),
(13, 8, "a2", ("P2/c:a2", "P2/n11",), "-P 2xbc", "C2h^4"),
(13, 9, "a3", ("P2/c:a3", "P2/c11",), "-P 2xc", "C2h^4"),
(14, 1, "b1", ("P21/c:b1", "P121/c1",), "-P 2ybc", "C2h^5"),
(14, 2, "b2", ("P21/c:b2", "P121/n1",), "-P 2yn", "C2h^5"),
(14, 3, "b3", ("P21/c:b3", "P121/a1",), "-P 2yab", "C2h^5"),
(14, 4, "c1", ("P21/c:c1", "P1121/a",), "-P 2ac", "C2h^5"),
(14, 5, "c2", ("P21/c:c2", "P1121/n",), "-P 2n", "C2h^5"),
(14, 6, "c3", ("P21/c:c3", "P1121/b", "P21/b",), "-P 2bc", "C2h^5"),
(14, 7, "a1", ("P21/c:a1", "P21/b11",), "-P 2xab", "C2h^5"),
(14, 8, "a2", ("P21/c:a2", "P21/n11",), "-P 2xn", "C2h^5"),
(14, 9, "a3", ("P21/c:a3", "P21/c11",), "-P 2xac", "C2h^5"),
(15, 1, "b1", ("C2/c:b1", "C12/c1",), "-C 2yc", "C2h^6"),
(15, 2, "b2", ("C2/c:b2", "A12/n1",), "-A 2yac", "C2h^6"),
(15, 3, "b3", ("C2/c:b3", "I12/a1",), "-I 2ya", "C2h^6"),
(15, 4, "-b1", ("C2/c:-b1", "A12/a1",), "-A 2ya", "C2h^6"),
(15, 5, "-b2", ("C2/c:-b2", "C12/n1",), "-C 2ybc", "C2h^6"),
(15, 6, "-b3", ("C2/c:-b3", "I12/c1",), "-I 2yc", "C2h^6"),
(15, 7, "c1", ("C2/c:c1", "A112/a",), "-A 2a", "C2h^6"),
(15, 8, "c2", ("C2/c:c2", "B112/n",), "-B 2bc", "C2h^6"),
(15, 9, "c3", ("C2/c:c3", "I112/b",), "-I 2b", "C2h^6"),
(15, 10, "-c1", ("C2/c:-c1", "B112/b", "B2/b",), "-B 2b", "C2h^6"),
(15, 11, "-c2", ("C2/c:-c2", "A112/n",), "-A 2ac", "C2h^6"),
(15, 12, "-c3", ("C2/c:-c3", "I112/a",), "-I 2a", "C2h^6"),
(15, 13, "a1", ("C2/c:a1", "B2/b11",), "-B 2xb", "C2h^6"),
(15, 14, "a2", ("C2/c:a2", "C2/n11",), "-C 2xbc", "C2h^6"),
(15, 15, "a3", ("C2/c:a3", "I2/c11",), "-I 2xc", "C2h^6"),
(15, 16, "-a1", ("C2/c:-a1", "C2/c11",), "-C 2xc", "C2h^6"),
(15, 17, "-a2", ("C2/c:-a2", "B2/n11",), "-B 2xbc", "C2h^6"),
(15, 18, "-a3", ("C2/c:-a3", "I2/b11",), "-I 2xb", "C2h^6"),
(16, 1, "", ("P222",), "P 2 2", "D2^1"),
(17, 1, "", ("P2221",), "P 2c 2", "D2^2"),
(17, 2, "cab", ("P2122",), "P 2a 2a", "D2^2"),
(17, 3, "bca", ("P2212",), "P 2 2b", "D2^2"),
(18, 1, "", ("P21212",), "P 2 2ab", "D2^3"),
(18, 2, "cab", ("P22121",), "P 2bc 2", "D2^3"),
(18, 3, "bca", ("P21221",), "P 2ac 2ac", "D2^3"),
(19, 1, "", ("P212121",), "P 2ac 2ab", "D2^4"),
(20, 1, "", ("C2221",), "C 2c 2", "D2^5"),
(20, 2, "cab", ("A2122",), "A 2a 2a", "D2^5"),
(20, 3, "bca", ("B2212",), "B 2 2b", "D2^5"),
(21, 1, "", ("C222",), "C 2 2", "D2^6"),
(21, 2, "cab", ("A222",), "A 2 2", "D2^6"),
(21, 3, "bca", ("B222",), "B 2 2", "D2^6"),
(22, 1, "", ("F222",), "F 2 2", "D2^7"),
(23, 1, "", ("I222",), "I 2 2", "D2^8"),
(24, 1, "", ("I212121",), "I 2b 2c", "D2^9"),
(25, 1, "", ("Pmm2",), "P 2 -2", "C2v^1"),
(25, 2, "cab", ("P2mm",), "P -2 2", "C2v^1"),
(25, 3, "bca", ("Pm2m",), "P -2 -2", "C2v^1"),
(26, 1, "", ("Pmc21",), "P 2c -2", "C2v^2"),
(26, 2, "ba-c", ("Pcm21",), "P 2c -2c", "C2v^2"),
(26, 3, "cab", ("P21ma",), "P -2a 2a", "C2v^2"),
(26, 4, "-cba", ("P21am",), "P -2 2a", "C2v^2"),
(26, 5, "bca", ("Pb21m",), "P -2 -2b", "C2v^2"),
(26, 6, "a-cb", ("Pm21b",), "P -2b -2", "C2v^2"),
(27, 1, "", ("Pcc2",), "P 2 -2c", "C2v^3"),
(27, 2, "cab", ("P2aa",), "P -2a 2", "C2v^3"),
(27, 3, "bca", ("Pb2b",), "P -2b -2b", "C2v^3"),
(28, 1, "", ("Pma2",), "P 2 -2a", "C2v^4"),
(28, 2, "ba-c", ("Pbm2",), "P 2 -2b", "C2v^4"),
(28, 3, "cab", ("P2mb",), "P -2b 2", "C2v^4"),
(28, 4, "-cba", ("P2cm",), "P -2c 2", "C2v^4"),
(28, 5, "bca", ("Pc2m",), "P -2c -2c", "C2v^4"),
(28, 6, "a-cb", ("Pm2a",), "P -2a -2a", "C2v^4"),
(29, 1, "", ("Pca21",), "P 2c -2ac", "C2v^5"),
(29, 2, "ba-c", ("Pbc21",), "P 2c -2b", "C2v^5"),
(29, 3, "cab", ("P21ab",), "P -2b 2a", "C2v^5"),
(29, 4, "-cba", ("P21ca",), "P -2ac 2a", "C2v^5"),
(29, 5, "bca", ("Pc21b",), "P -2bc -2c", "C2v^5"),
(29, 6, "a-cb", ("Pb21a",), "P -2a -2ab", "C2v^5"),
(30, 1, "", ("Pnc2",), "P 2 -2bc", "C2v^6"),
(30, 2, "ba-c", ("Pcn2",), "P 2 -2ac", "C2v^6"),
(30, 3, "cab", ("P2na",), "P -2ac 2", "C2v^6"),
(30, 4, "-cba", ("P2an",), "P -2ab 2", "C2v^6"),
(30, 5, "bca", ("Pb2n",), "P -2ab -2ab", "C2v^6"),
(30, 6, "a-cb", ("Pn2b",), "P -2bc -2bc", "C2v^6"),
(31, 1, "", ("Pmn21",), "P 2ac -2", "C2v^7"),
(31, 2, "ba-c", ("Pnm21",), "P 2bc -2bc", "C2v^7"),
(31, 3, "cab", ("P21mn",), "P -2ab 2ab", "C2v^7"),
(31, 4, "-cba", ("P21nm",), "P -2 2ac", "C2v^7"),
(31, 5, "bca", ("Pn21m",), "P -2 -2bc", "C2v^7"),
(31, 6, "a-cb", ("Pm21n",), "P -2ab -2", "C2v^7"),
(32, 1, "", ("Pba2",), "P 2 -2ab", "C2v^8"),
(32, 2, "cab", ("P2cb",), "P -2bc 2", "C2v^8"),
(32, 3, "bca", ("Pc2a",), "P -2ac -2ac", "C2v^8"),
(33, 1, "", ("Pna21",), "P 2c -2n", "C2v^9"),
(33, 2, "ba-c", ("Pbn21",), "P 2c -2ab", "C2v^9"),
(33, 3, "cab", ("P21nb",), "P -2bc 2a", "C2v^9"),
(33, 4, "-cba", ("P21cn",), "P -2n 2a", "C2v^9"),
(33, 5, "bca", ("Pc21n",), "P -2n -2ac", "C2v^9"),
(33, 6, "a-cb", ("Pn21a",), "P -2ac -2n", "C2v^9"),
(34, 1, "", ("Pnn2",), "P 2 -2n", "C2v^10"),
(34, 2, "cab", ("P2nn",), "P -2n 2", "C2v^10"),
(34, 3, "bca", ("Pn2n",), "P -2n -2n", "C2v^10"),
(35, 1, "", ("Cmm2",), "C 2 -2", "C2v^11"),
(35, 2, "cab", ("A2mm",), "A -2 2", "C2v^11"),
(35, 3, "bca", ("Bm2m",), "B -2 -2", "C2v^11"),
(36, 1, "", ("Cmc21",), "C 2c -2", "C2v^12"),
(36, 2, "ba-c", ("Ccm21",), "C 2c -2c", "C2v^12"),
(36, 3, "cab", ("A21ma",), "A -2a 2a", "C2v^12"),
(36, 4, "-cba", ("A21am",), "A -2 2a", "C2v^12"),
(36, 5, "bca", ("Bb21m",), "B -2 -2b", "C2v^12"),
(36, 6, "a-cb", ("Bm21b",), "B -2b -2", "C2v^12"),
(37, 1, "", ("Ccc2",), "C 2 -2c", "C2v^13"),
(37, 2, "cab", ("A2aa",), "A -2a 2", "C2v^13"),
(37, 3, "bca", ("Bb2b",), "B -2b -2b", "C2v^13"),
(38, 1, "", ("Amm2",), "A 2 -2", "C2v^14"),
(38, 2, "ba-c", ("Bmm2",), "B 2 -2", "C2v^14"),
(38, 3, "cab", ("B2mm",), "B -2 2", "C2v^14"),
(38, 4, "-cba", ("C2mm",), "C -2 2", "C2v^14"),
(38, 5, "bca", ("Cm2m",), "C -2 -2", "C2v^14"),
(38, 6, "a-cb", ("Am2m",), "A -2 -2", "C2v^14"),
(39, 1, "", ("Abm2",), "A 2 -2c", "C2v^15"),
(39, 2, "ba-c", ("Bma2",), "B 2 -2c", "C2v^15"),
(39, 3, "cab", ("B2cm",), "B -2c 2", "C2v^15"),
(39, 4, "-cba", ("C2mb",), "C -2b 2", "C2v^15"),
(39, 5, "bca", ("Cm2a",), "C -2b -2b", "C2v^15"),
(39, 6, "a-cb", ("Ac2m",), "A -2c -2c", "C2v^15"),
(40, 1, "", ("Ama2",), "A 2 -2a", "C2v^16"),
(40, 2, "ba-c", ("Bbm2",), "B 2 -2b", "C2v^16"),
(40, 3, "cab", ("B2mb",), "B -2b 2", "C2v^16"),
(40, 4, "-cba", ("C2cm",), "C -2c 2", "C2v^16"),
(40, 5, "bca", ("Cc2m",), "C -2c -2c", "C2v^16"),
(40, 6, "a-cb", ("Am2a",), "A -2a -2a", "C2v^16"),
(41, 1, "", ("Aba2",), "A 2 -2ac", "C2v^17"),
(41, 2, "ba-c", ("Bba2",), "B 2 -2bc", "C2v^17"),
(41, 3, "cab", ("B2cb",), "B -2bc 2", "C2v^17"),
(41, 4, "-cba", ("C2cb",), "C -2bc 2", "C2v^17"),
(41, 5, "bca", ("Cc2a",), "C -2bc -2bc", "C2v^17"),
(41, 6, "a-cb", ("Ac2a",), "A -2ac -2ac", "C2v^17"),
(42, 1, "", ("Fmm2",), "F 2 -2", "C2v^18"),
(42, 2, "cab", ("F2mm",), "F -2 2", "C2v^18"),
(42, 3, "bca", ("Fm2m",), "F -2 -2", "C2v^18"),
(43, 1, "", ("Fdd2",), "F 2 -2d", "C2v^19"),
(43, 2, "cab", ("F2dd",), "F -2d 2", "C2v^19"),
(43, 3, "bca", ("Fd2d",), "F -2d -2d", "C2v^19"),
(44, 1, "", ("Imm2",), "I 2 -2", "C2v^20"),
(44, 2, "cab", ("I2mm",), "I -2 2", "C2v^20"),
(44, 3, "bca", ("Im2m",), "I -2 -2", "C2v^20"),
(45, 1, "", ("Iba2",), "I 2 -2c", "C2v^21"),
(45, 2, "cab", ("I2cb",), "I -2a 2", "C2v^21"),
(45, 3, "bca", ("Ic2a",), "I -2b -2b", "C2v^21"),
(46, 1, "", ("Ima2",), "I 2 -2a", "C2v^22"),
(46, 2, "ba-c", ("Ibm2",), "I 2 -2b", "C2v^22"),
(46, 3, "cab", ("I2mb",), "I -2b 2", "C2v^22"),
(46, 4, "-cba", ("I2cm",), "I -2c 2", "C2v^22"),
(46, 5, "bca", ("Ic2m",), "I -2c -2c", "C2v^22"),
(46, 6, "a-cb", ("Im2a",), "I -2a -2a", "C2v^22"),
(47, 1, "", ("Pmmm",), "-P 2 2", "D2h^1"),
(48, 1, "1", ("Pnnn:1",), "P 2 2 -1n", "D2h^2"),
(48, 2, "2", ("Pnnn:2",), "-P 2ab 2bc", "D2h^2"),
(49, 1, "", ("Pccm",), "-P 2 2c", "D2h^3"),
(49, 2, "cab", ("Pmaa",), "-P 2a 2", "D2h^3"),
(49, 3, "bca", ("Pbmb",), "-P 2b 2b", "D2h^3"),
(50, 1, "1", ("Pban:1",), "P 2 2 -1ab", "D2h^4"),
(50, 2, "2", ("Pban:2",), "-P 2ab 2b", "D2h^4"),
(50, 3, "1cab", ("Pncb:1",), "P 2 2 -1bc", "D2h^4"),
(50, 4, "2cab", ("Pncb:2",), "-P 2b 2bc", "D2h^4"),
(50, 5, "1bca", ("Pcna:1",), "P 2 2 -1ac", "D2h^4"),
(50, 6, "2bca", ("Pcna:2",), "-P 2a 2c", "D2h^4"),
(51, 1, "", ("Pmma",), "-P 2a 2a", "D2h^5"),
(51, 2, "ba-c", ("Pmmb",), "-P 2b 2", "D2h^5"),
(51, 3, "cab", ("Pbmm",), "-P 2 2b", "D2h^5"),
(51, 4, "-cba", ("Pcmm",), "-P 2c 2c", "D2h^5"),
(51, 5, "bca", ("Pmcm",), "-P 2c 2", "D2h^5"),
(51, 6, "a-cb", ("Pmam",), "-P 2 2a", "D2h^5"),
(52, 1, "", ("Pnna",), "-P 2a 2bc", "D2h^6"),
(52, 2, "ba-c", ("Pnnb",), "-P 2b 2n", "D2h^6"),
(52, 3, "cab", ("Pbnn",), "-P 2n 2b", "D2h^6"),
(52, 4, "-cba", ("Pcnn",), "-P 2ab 2c", "D2h^6"),
(52, 5, "bca", ("Pncn",), "-P 2ab 2n", "D2h^6"),
(52, 6, "a-cb", ("Pnan",), "-P 2n 2bc", "D2h^6"),
(53, 1, "", ("Pmna",), "-P 2ac 2", "D2h^7"),
(53, 2, "ba-c", ("Pnmb",), "-P 2bc 2bc", "D2h^7"),
(53, 3, "cab", ("Pbmn",), "-P 2ab 2ab", "D2h^7"),
(53, 4, "-cba", ("Pcnm",), "-P 2 2ac", "D2h^7"),
(53, 5, "bca", ("Pncm",), "-P 2 2bc", "D2h^7"),
(53, 6, "a-cb", ("Pman",), "-P 2ab 2", "D2h^7"),
(54, 1, "", ("Pcca",), "-P 2a 2ac", "D2h^8"),
(54, 2, "ba-c", ("Pccb",), "-P 2b 2c", "D2h^8"),
(54, 3, "cab", ("Pbaa",), "-P 2a 2b", "D2h^8"),
(54, 4, "-cba", ("Pcaa",), "-P 2ac 2c", "D2h^8"),
(54, 5, "bca", ("Pbcb",), "-P 2bc 2b", "D2h^8"),
(54, 6, "a-cb", ("Pbab",), "-P 2b 2ab", "D2h^8"),
(55, 1, "", ("Pbam",), "-P 2 2ab", "D2h^9"),
(55, 2, "cab", ("Pmcb",), "-P 2bc 2", "D2h^9"),
(55, 3, "bca", ("Pcma",), "-P 2ac 2ac", "D2h^9"),
(56, 1, "", ("Pccn",), "-P 2ab 2ac", "D2h^10"),
(56, 2, "cab", ("Pnaa",), "-P 2ac 2bc", "D2h^10"),
(56, 3, "bca", ("Pbnb",), "-P 2bc 2ab", "D2h^10"),
(57, 1, "", ("Pbcm",), "-P 2c 2b", "D2h^11"),
(57, 2, "ba-c", ("Pcam",), "-P 2c 2ac", "D2h^11"),
(57, 3, "cab", ("Pmca",), "-P 2ac 2a", "D2h^11"),
(57, 4, "-cba", ("Pmab",), "-P 2b 2a", "D2h^11"),
(57, 5, "bca", ("Pbma",), "-P 2a 2ab", "D2h^11"),
(57, 6, "a-cb", ("Pcmb",), "-P 2bc 2c", "D2h^11"),
(58, 1, "", ("Pnnm",), "-P 2 2n", "D2h^12"),
(58, 2, "cab", ("Pmnn",), "-P 2n 2", "D2h^12"),
(58, 3, "bca", ("Pnmn",), "-P 2n 2n", "D2h^12"),
(59, 1, "1", ("Pmmn:1",), "P 2 2ab -1ab", "D2h^13"),
(59, 2, "2", ("Pmmn:2",), "-P 2ab 2a", "D2h^13"),
(59, 3, "1cab", ("Pnmm:1",), "P 2bc 2 -1bc", "D2h^13"),
(59, 4, "2cab", ("Pnmm:2",), "-P 2c 2bc", "D2h^13"),
(59, 5, "1bca", ("Pmnm:1",), "P 2ac 2ac -1ac", "D2h^13"),
(59, 6, "2bca", ("Pmnm:2",), "-P 2c 2a", "D2h^13"),
(60, 1, "", ("Pbcn",), "-P 2n 2ab", "D2h^14"),
(60, 2, "ba-c", ("Pcan",), "-P 2n 2c", "D2h^14"),
(60, 3, "cab", ("Pnca",), "-P 2a 2n", "D2h^14"),
(60, 4, "-cba", ("Pnab",), "-P 2bc 2n", "D2h^14"),
(60, 5, "bca", ("Pbna",), "-P 2ac 2b", "D2h^14"),
(60, 6, "a-cb", ("Pcnb",), "-P 2b 2ac", "D2h^14"),
(61, 1, "", ("Pbca",), "-P 2ac 2ab", "D2h^15"),
(61, 2, "ba-c", ("Pcab",), "-P 2bc 2ac", "D2h^15"),
(62, 1, "", ("Pnma",), "-P 2ac 2n", "D2h^16"),
(62, 2, "ba-c", ("Pmnb",), "-P 2bc 2a", "D2h^16"),
(62, 3, "cab", ("Pbnm",), "-P 2c 2ab", "D2h^16"),
(62, 4, "-cba", ("Pcmn",), "-P 2n 2ac", "D2h^16"),
(62, 5, "bca", ("Pmcn",), "-P 2n 2a", "D2h^16"),
(62, 6, "a-cb", ("Pnam",), "-P 2c 2n", "D2h^16"),
(63, 1, "", ("Cmcm",), "-C 2c 2", "D2h^17"),
(63, 2, "ba-c", ("Ccmm",), "-C 2c 2c", "D2h^17"),
(63, 3, "cab", ("Amma",), "-A 2a 2a", "D2h^17"),
(63, 4, "-cba", ("Amam",), "-A 2 2a", "D2h^17"),
(63, 5, "bca", ("Bbmm",), "-B 2 2b", "D2h^17"),
(63, 6, "a-cb", ("Bmmb",), "-B 2b 2", "D2h^17"),
(64, 1, "", ("Cmca",), "-C 2bc 2", "D2h^18"),
(64, 2, "ba-c", ("Ccmb",), "-C 2bc 2bc", "D2h^18"),
(64, 3, "cab", ("Abma",), "-A 2ac 2ac", "D2h^18"),
(64, 4, "-cba", ("Acam",), "-A 2 2ac", "D2h^18"),
(64, 5, "bca", ("Bbcm",), "-B 2 2bc", "D2h^18"),
(64, 6, "a-cb", ("Bmab",), "-B 2bc 2", "D2h^18"),
(65, 1, "", ("Cmmm",), "-C 2 2", "D2h^19"),
(65, 2, "cab", ("Ammm",), "-A 2 2", "D2h^19"),
(65, 3, "bca", ("Bmmm",), "-B 2 2", "D2h^19"),
(66, 1, "", ("Cccm",), "-C 2 2c", "D2h^20"),
(66, 2, "cab", ("Amaa",), "-A 2a 2", "D2h^20"),
(66, 3, "bca", ("Bbmb",), "-B 2b 2b", "D2h^20"),
(67, 1, "", ("Cmma",), "-C 2b 2", "D2h^21"),
(67, 2, "ba-c", ("Cmmb",), "-C 2b 2b", "D2h^21"),
(67, 3, "cab", ("Abmm",), "-A 2c 2c", "D2h^21"),
(67, 4, "-cba", ("Acmm",), "-A 2 2c", "D2h^21"),
(67, 5, "bca", ("Bmcm",), "-B 2 2c", "D2h^21"),
(67, 6, "a-cb", ("Bmam",), "-B 2c 2", "D2h^21"),
(68, 1, "1", ("Ccca:1",), "C 2 2 -1bc", "D2h^22"),
(68, 2, "2", ("Ccca:2",), "-C 2b 2bc", "D2h^22"),
(68, 3, "1ba-c", ("Cccb:1",), "C 2 2 -1bc", "D2h^22"),
(68, 4, "2ba-c", ("Cccb:2",), "-C 2b 2c", "D2h^22"),
(68, 5, "1cab", ("Abaa:1",), "A 2 2 -1ac", "D2h^22"),
(68, 6, "2cab", ("Abaa:2",), "-A 2a 2c", "D2h^22"),
(68, 7, "1-cba", ("Acaa:1",), "A 2 2 -1ac", "D2h^22"),
(68, 8, "2-cba", ("Acaa:2",), "-A 2ac 2c", "D2h^22"),
(68, 9, "1bca", ("Bbcb:1",), "B 2 2 -1bc", "D2h^22"),
(68, 10, "2bca", ("Bbcb:2",), "-B 2bc 2b", "D2h^22"),
(68, 11, "1a-cb", ("Bbab:1",), "B 2 2 -1bc", "D2h^22"),
(68, 12, "2a-cb", ("Bbab:2",), "-B 2b 2bc", "D2h^22"),
(69, 1, "", ("Fmmm",), "-F 2 2", "D2h^23"),
(70, 1, "1", ("Fddd:1",), "F 2 2 -1d", "D2h^24"), # What is "-F 2 2 -1d"?! It comes out of cif2cell
(70, 2, "2", ("Fddd:2",), "-F 2uv 2vw", "D2h^24"),
(71, 1, "", ("Immm",), "-I 2 2", "D2h^25"),
(72, 1, "", ("Ibam",), "-I 2 2c", "D2h^26"),
(72, 2, "cab", ("Imcb",), "-I 2a 2", "D2h^26"),
(72, 3, "bca", ("Icma",), "-I 2b 2b", "D2h^26"),
(73, 1, "", ("Ibca",), "-I 2b 2c", "D2h^27"),
(73, 2, "ba-c", ("Icab",), "-I 2a 2b", "D2h^27"),
(74, 1, "", ("Imma",), "-I 2b 2", "D2h^28"),
(74, 2, "ba-c", ("Immb",), "-I 2a 2a", "D2h^28"),
(74, 3, "cab", ("Ibmm",), "-I 2c 2c", "D2h^28"),
(74, 4, "-cba", ("Icmm",), "-I 2 2b", "D2h^28"),
(74, 5, "bca", ("Imcm",), "-I 2 2a", "D2h^28"),
(74, 6, "a-cb", ("Imam",), "-I 2c 2", "D2h^28"),
(75, 1, "", ("P4",), "P 4", "C4^1"),
(76, 1, "", ("P41",), "P 4w", "C4^2"),
(77, 1, "", ("P42",), "P 4c", "C4^3"),
(78, 1, "", ("P43",), "P 4cw", "C4^4"),
(79, 1, "", ("I4",), "I 4", "C4^5"),
(80, 1, "", ("I41",), "I 4bw", "C4^6"),
(81, 1, "", ("P-4",), "P -4", "S4^1"),
(82, 1, "", ("I-4",), "I -4", "S4^2"),
(83, 1, "", ("P4/m",), "-P 4", "C4h^1"),
(84, 1, "", ("P42/m",), "-P 4c", "C4h^2"),
(85, 1, "1", ("P4/n:1",), "P 4ab -1ab", "C4h^3"),
(85, 2, "2", ("P4/n:2",), "-P 4a", "C4h^3"),
(86, 1, "1", ("P42/n:1",), "P 4n -1n", "C4h^4"),
(86, 2, "2", ("P42/n:2",), "-P 4bc", "C4h^4"),
(87, 1, "", ("I4/m",), "-I 4", "C4h^5"),
(88, 1, "1", ("I41/a:1",), "I 4bw -1bw", "C4h^6"),
(88, 2, "2", ("I41/a:2",), "-I 4ad", "C4h^6"),
(89, 1, "", ("P422",), "P 4 2", "D4^1"),
(90, 1, "", ("P4212",), "P 4ab 2ab", "D4^2"),
(91, 1, "", ("P4122",), "P 4w 2c", "D4^3"),
(92, 1, "", ("P41212",), "P 4abw 2nw", "D4^4"),
(93, 1, "", ("P4222",), "P 4c 2", "D4^5"),
(94, 1, "", ("P42212",), "P 4n 2n", "D4^6"),
(95, 1, "", ("P4322",), "P 4cw 2c", "D4^7"),
(96, 1, "", ("P43212",), "P 4nw 2abw", "D4^8"),
(97, 1, "", ("I422",), "I 4 2", "D4^9"),
(98, 1, "", ("I4122",), "I 4bw 2bw", "D4^10"),
(99, 1, "", ("P4mm",), "P 4 -2", "C4v^1"),
(100, 1, "", ("P4bm",), "P 4 -2ab", "C4v^2"),
(101, 1, "", ("P42cm",), "P 4c -2c", "C4v^3"),
(102, 1, "", ("P42nm",), "P 4n -2n", "C4v^4"),
(103, 1, "", ("P4cc",), "P 4 -2c", "C4v^5"),
(104, 1, "", ("P4nc",), "P 4 -2n", "C4v^6"),
(105, 1, "", ("P42mc",), "P 4c -2", "C4v^7"),
(106, 1, "", ("P42bc",), "P 4c -2ab", "C4v^8"),
(107, 1, "", ("I4mm",), "I 4 -2", "C4v^9"),
(108, 1, "", ("I4cm",), "I 4 -2c", "C4v^10"),
(109, 1, "", ("I41md",), "I 4bw -2", "C4v^11"),
(110, 1, "", ("I41cd",), "I 4bw -2c", "C4v^12"),
(111, 1, "", ("P-42m",), "P -4 2", "D2d^1"),
(112, 1, "", ("P-42c",), "P -4 2c", "D2d^2"),
(113, 1, "", ("P-421m",), "P -4 2ab", "D2d^3"),
(114, 1, "", ("P-421c",), "P -4 2n", "D2d^4"),
(115, 1, "", ("P-4m2",), "P -4 -2", "D2d^5"),
(116, 1, "", ("P-4c2",), "P -4 -2c", "D2d^6"),
(117, 1, "", ("P-4b2",), "P -4 -2ab", "D2d^7"),
(118, 1, "", ("P-4n2",), "P -4 -2n", "D2d^8"),
(119, 1, "", ("I-4m2",), "I -4 -2", "D2d^9"),
(120, 1, "", ("I-4c2",), "I -4 -2c", "D2d^10"),
(121, 1, "", ("I-42m",), "I -4 2", "D2d^11"),
(122, 1, "", ("I-42d",), "I -4 2bw", "D2d^12"),
(123, 1, "", ("P4/mmm",), "-P 4 2", "D4h^1"),
(124, 1, "", ("P4/mcc",), "-P 4 2c", "D4h^2"),
(125, 1, "1", ("P4/nbm:1",), "P 4 2 -1ab", "D4h^3"),
(125, 2, "2", ("P4/nbm:2",), "-P 4a 2b", "D4h^3"),
(126, 1, "1", ("P4/nnc:1",), "P 4 2 -1n", "D4h^4"),
(126, 2, "2", ("P4/nnc:2",), "-P 4a 2bc", "D4h^4"),
(127, 1, "", ("P4/mbm",), "-P 4 2ab", "D4h^5"),
(128, 1, "", ("P4/mnc",), "-P 4 2n", "D4h^6"),
(129, 1, "1", ("P4/nmm:1",), "P 4ab 2ab -1ab", "D4h^7"),
(129, 2, "2", ("P4/nmm:2",), "-P 4a 2a", "D4h^7"),
(130, 1, "1", ("P4/ncc:1",), "P 4ab 2n -1ab", "D4h^8"),
(130, 2, "2", ("P4/ncc:2",), "-P 4a 2ac", "D4h^8"),
(131, 1, "", ("P42/mmc",), "-P 4c 2", "D4h^9"),
(132, 1, "", ("P42/mcm",), "-P 4c 2c", "D4h^10"),
(133, 1, "1", ("P42/nbc:1",), "P 4n 2c -1n", "D4h^11"),
(133, 2, "2", ("P42/nbc:2",), "-P 4ac 2b", "D4h^11"),
(134, 1, "1", ("P42/nnm:1",), "P 4n 2 -1n", "D4h^12"),
(134, 2, "2", ("P42/nnm:2",), "-P 4ac 2bc", "D4h^12"),
(135, 1, "", ("P42/mbc",), "-P 4c 2ab", "D4h^13"),
(136, 1, "", ("P42/mnm",), "-P 4n 2n", "D4h^14"),
(137, 1, "1", ("P42/nmc:1",), "P 4n 2n -1n", "D4h^15"),
(137, 2, "2", ("P42/nmc:2",), "-P 4ac 2a", "D4h^15"),
(138, 1, "1", ("P42/ncm:1",), "P 4n 2ab -1n", "D4h^16"),
(138, 2, "2", ("P42/ncm:2",), "-P 4ac 2ac", "D4h^16"),
(139, 1, "", ("I4/mmm",), "-I 4 2", "D4h^17"),
(140, 1, "", ("I4/mcm",), "-I 4 2c", "D4h^18"),
(141, 1, "1", ("I41/amd:1",), "I 4bw 2bw -1bw", "D4h^19"),
(141, 2, "2", ("I41/amd:2",), "-I 4bd 2", "D4h^19"),
(142, 1, "1", ("I41/acd:1",), "I 4bw 2aw -1bw", "D4h^20"),
(142, 2, "2", ("I41/acd:2",), "-I 4bd 2c", "D4h^20"),
(143, 1, "", ("P3",), "P 3", "C3^1"),
(144, 1, "", ("P31",), "P 31", "C3^2"),
(145, 1, "", ("P32",), "P 32", "C3^3"),
(146, 1, "H", ("R3:H",), "R 3", "C3^4"),
(146, 2, "R", ("R3:R",), "P 3*", "C3^4"),
(147, 1, "", ("P-3",), "-P 3", "C3i^1"),
(148, 1, "H", ("R-3:H",), "-R 3", "C3i^2"),
(148, 2, "R", ("R-3:R",), "-P 3*", "C3i^2"),
(149, 1, "", ("P312",), "P 3 2", "D3^1"),
(150, 1, "", ("P321",), "P 3 2\"", "D3^2"),
(151, 1, "", ("P3112",), "P 31 2c (0 0 1)", "D3^3"),
(152, 1, "", ("P3121",), "P 31 2\"", "D3^4"),
(153, 1, "", ("P3212",), "P 32 2c (0 0 -1)", "D3^5"),
(154, 1, "", ("P3221",), "P 32 2\"", "D3^6"),
(155, 1, "H", ("R32:H",), "R 3 2\"", "D3^7"),
(155, 2, "R", ("R32:R",), "P 3* 2", "D3^7"),
(156, 1, "", ("P3m1",), "P 3 -2\"", "C3v^1"),
(157, 1, "", ("P31m",), "P 3 -2", "C3v^2"),
(158, 1, "", ("P3c1",), "P 3 -2\"c", "C3v^3"),
(159, 1, "", ("P31c",), "P 3 -2c", "C3v^4"),
(160, 1, "H", ("R3m:H",), "R 3 -2\"", "C3v^5"),
(160, 2, "R", ("R3m:R",), "P 3* -2", "C3v^5"),
(161, 1, "H", ("R3c:H",), "R 3 -2\"c", "C3v^6"),
(161, 2, "R", ("R3c:R",), "P 3* -2n", "C3v^6"),
(162, 1, "", ("P-31m",), "-P 3 2", "D3d^1"),
(163, 1, "", ("P-31c",), "-P 3 2c", "D3d^2"),
(164, 1, "", ("P-3m1",), "-P 3 2\"", "D3d^3"),
(165, 1, "", ("P-3c1",), "-P 3 2\"c", "D3d^4"),
(166, 1, "H", ("R-3m:H",), "-R 3 2\"", "D3d^5"),
(166, 2, "R", ("R-3m:R",), "-P 3* 2", "D3d^5"),
(167, 1, "H", ("R-3c:H",), "-R 3 2\"c", "D3d^6"),
(167, 2, "R", ("R-3c:R",), "-P 3* 2n", "D3d^6"),
(168, 1, "", ("P6",), "P 6", "C6^1"),
(169, 1, "", ("P61",), "P 61", "C6^2"),
(170, 1, "", ("P65",), "P 65", "C6^3"),
(171, 1, "", ("P62",), "P 62", "C6^4"),
(172, 1, "", ("P64",), "P 64", "C6^5"),
(173, 1, "", ("P63",), "P 6c", "C6^6"),
(174, 1, "", ("P-6",), "P -6", "C3h^1"),
(175, 1, "", ("P6/m",), "-P 6", "C6h^1"),
(176, 1, "", ("P63/m",), "-P 6c", "C6h^2"),
(177, 1, "", ("P622",), "P 6 2", "D6^1"),
(178, 1, "", ("P6122",), "P 61 2 (0 0 -1)", "D6^2"),
(179, 1, "", ("P6522",), "P 65 2 (0 0 1)", "D6^3"),
(180, 1, "", ("P6222",), "P 62 2c (0 0 1)", "D6^4"),
(181, 1, "", ("P6422",), "P 64 2c (0 0 -1)", "D6^5"),
(182, 1, "", ("P6322",), "P 6c 2c", "D6^6"),
(183, 1, "", ("P6mm",), "P 6 -2", "C6v^1"),
(184, 1, "", ("P6cc",), "P 6 -2c", "C6v^2"),
(185, 1, "", ("P63cm",), "P 6c -2", "C6v^3"),
(186, 1, "", ("P63mc",), "P 6c -2c", "C6v^4"),
(187, 1, "", ("P-6m2",), "P -6 2", "D3h^1"),
(188, 1, "", ("P-6c2",), "P -6c 2", "D3h^2"),
(189, 1, "", ("P-62m",), "P -6 -2", "D3h^3"),
(190, 1, "", ("P-62c",), "P -6c -2c", "D3h^4"),
(191, 1, "", ("P6/mmm",), "-P 6 2", "D6h^1"),
(192, 1, "", ("P6/mcc",), "-P 6 2c", "D6h^2"),
(193, 1, "", ("P63/mcm",), "-P 6c 2", "D6h^3"),
(194, 1, "", ("P63/mmc",), "-P 6c 2c", "D6h^4"),
(195, 1, "", ("P23",), "P 2 2 3", "T^1"),
(196, 1, "", ("F23",), "F 2 2 3", "T^2"),
(197, 1, "", ("I23",), "I 2 2 3", "T^3"),
(198, 1, "", ("P213",), "P 2ac 2ab 3", "T^4"),
(199, 1, "", ("I213",), "I 2b 2c 3", "T^5"),
(200, 1, "", ("Pm-3",), "-P 2 2 3", "Th^1"),
(201, 1, "1", ("Pn-3:1",), "P 2 2 3 -1n", "Th^2"),
(201, 2, "2", ("Pn-3:2",), "-P 2ab 2bc 3", "Th^2"),
(202, 1, "", ("Fm-3",), "-F 2 2 3", "Th^3"),
(203, 1, "1", ("Fd-3:1",), "F 2 2 3 -1d", "Th^4"),
(203, 2, "2", ("Fd-3:2",), "-F 2uv 2vw 3", "Th^4"),
(204, 1, "", ("Im-3",), "-I 2 2 3", "Th^5"),
(205, 1, "", ("Pa-3",), "-P 2ac 2ab 3", "Th^6"),
(206, 1, "", ("Ia-3",), "-I 2b 2c 3", "Th^7"),
(207, 1, "", ("P432",), "P 4 2 3", "O^1"),
(208, 1, "", ("P4232",), "P 4n 2 3", "O^2"),
(209, 1, "", ("F432",), "F 4 2 3", "O^3"),
(210, 1, "", ("F4132",), "F 4d 2 3", "O^4"),
(211, 1, "", ("I432",), "I 4 2 3", "O^5"),
(212, 1, "", ("P4332",), "P 4acd 2ab 3", "O^6"),
(213, 1, "", ("P4132",), "P 4bd 2ab 3", "O^7"),
(214, 1, "", ("I4132",), "I 4bd 2c 3", "O^8"),
(215, 1, "", ("P-43m",), "P -4 2 3", "Td^1"),
(216, 1, "", ("F-43m",), "F -4 2 3", "Td^2"),
(217, 1, "", ("I-43m",), "I -4 2 3", "Td^3"),
(218, 1, "", ("P-43n",), "P -4n 2 3", "Td^4"),
(219, 1, "", ("F-43c",), "F -4c 2 3", "Td^5"),
(220, 1, "", ("I-43d",), "I -4bd 2c 3", "Td^6"),
(221, 1, "", ("Pm-3m",), "-P 4 2 3", "Oh^1"),
(222, 1, "1", ("Pn-3n:1",), "P 4 2 3 -1n", "Oh^2"),
(222, 2, "2", ("Pn-3n:2",), "-P 4a 2bc 3", "Oh^2"),
(223, 1, "", ("Pm-3n",), "-P 4n 2 3", "Oh^3"),
(224, 1, "1", ("Pn-3m:1",), "P 4n 2 3 -1n", "Oh^4"),
(224, 2, "2", ("Pn-3m:2",), "-P 4bc 2bc 3", "Oh^4"),
(225, 1, "", ("Fm-3m",), "-F 4 2 3", "Oh^5"),
(226, 1, "", ("Fm-3c",), "-F 4c 2 3", "Oh^6"),
(227, 1, "1", ("Fd-3m:1",), "F 4d 2 3 -1d", "Oh^7"),
(227, 2, "2", ("Fd-3m:2",), "-F 4vw 2vw 3", "Oh^7"),
(228, 1, "1", ("Fd-3c:1",), "F 4d 2 3 -1cd", "Oh^8"),
(228, 2, "2", ("Fd-3c:2",), "-F 4cvw 2vw 3", "Oh^8"),
(229, 1, "", ("Im-3m",), "-I 4 2 3", "Oh^9"),
(230, 1, "", ("Ia-3d",), "-I 4bd 2c 3", "Oh^10"),
]
parse_spacegroups = {}
for i in range(len(spacegroups)):
entry = spacegroups[i]
parse_spacegroups[entry[4]] = i
parse_spacegroups[entry[5]] = i
for alt in entry[3]:
parse_spacegroups[alt] = i
parse_spacegroups[alt.upper()] = i
parse_spacegroups[alt.lower()] = i
if entry[1] == 1 and alt.find(':') != -1:
falt = alt.split(':')[0]
parse_spacegroups[falt] = i
parse_spacegroups[falt.upper()] = i
parse_spacegroups[falt.lower()] = i
if entry[1] == 1:
parse_spacegroups[entry[0]] = i
parse_spacegroups[str(entry[0])+":"+str(entry[1])] = i
parse_spacegroups[str(entry[0])+":"+entry[2]] = i
[docs]def find_index(parse):
parse = str(parse).strip()
try:
return parse_spacegroups[parse]
except KeyError:
pass
try:
return parse_spacegroups[parse.replace(" ", "").replace("_", " ")]
except KeyError:
pass
raise Exception("Could not parse spacegroup:"+parse)
[docs]def spacegroup_get_schoenflies(parse):
return spacegroups[find_index(parse)][5]
[docs]def spacegroup_get_hm(parse):
return spacegroups[find_index(parse)][3][0]
[docs]def spacegroup_get_number_of_settings(number):
count = 0
for spacegroup in spacegroups:
if spacegroup[0] == number:
count += 1
return count
[docs]def spacegroup_get_hall(parse):
return spacegroups[find_index(parse)][4]
[docs]def spacegroup_get_number(parse):
index = find_index(parse)
return spacegroups[index][0]
[docs]def spacegroup_get_number_and_setting(parse):
index = find_index(parse)
return spacegroups[index][0], spacegroups[index][1]
# This really should go in the main table; this whole module should be cleaned up.
hm_symbols = {
1: ("P 1",),
2: ("P -1",),
3: ("P 2", "P 2 1 1", "P 1 2 1", "P 1 1 2",),
4: ("P 21", "P 21 1 1", "P 1 21 1", "P 1 1 21",),
5: ("C 2", "C 2 1 1", "C 1 2 1",),
6: ("P m", "P m 1 1", "P 1 m 1", "P 1 1 m",),
7: ("P c", "P c 1 1", "P 1 c 1",),
8: ("C m", "C m 1 1", "C 1 m 1",),
9: ("C c", "C c 1 1", "C 1 c 1",),
10: ("P 2/m", "P 2/m 1 1", "P 1 2/m 1", "P 1 1 2/m",),
11: ("P 21/m", "P 21/m 1 1", "P 1 21/m 1", "P 1 1 21/m",),
12: ("C 2/m", "C 2/m 1 1", "C 1 2/m 1",),
13: ("P 2/c", "P 2/c 1 1", "P 1 2/c 1",),
14: ("P 21/c", "P 21/c 1 1", "P 1 21/c 1",),
15: ("C 2/c", "C 2/c 1 1", "C 1 2/c 1",),
16: ("P 2 2 2",),
17: ("P 2 2 21", "P 21 2 2", "P 2 21 2", "P 2 21 2",),
18: ("P 21 21 2", "P 2 21 21", "P 21 2 21",),
19: ("P 21 21 21",),
20: ("C 2 2 21", "A 21 2 2", "B 2 21 2",),
21: ("C 2 2 2", "A 2 2 2", "B 2 2 2",),
22: ("F 2 2 2",),
23: ("I 2 2 2",),
24: ("I 21 21 21",),
25: ("P m m 2", "P 2 m m", "P m 2 m",),
26: ("P m c 21", "P 21 m a", "P b 21 m",),
27: ("P c c 2", "P 2 a a", "P b 2 b",),
28: ("P m a 2", "P 2 m b", "P c 2 m",),
29: ("P c a 21", "P 21 a b", "P c 21 b",),
30: ("P n c 2", "P 2 n a", "P b 2 n",),
31: ("P m n 21", "P 21 m n", "P n 21 m",),
32: ("P b a 2", "P 2 c b", "P c 2 a",),
33: ("P n a 21", "P 21 n b", "P c 21 n",),
34: ("P n n 2", "P 2 n n", "P n 2 n",),
35: ("C m m 2", "A 2 m m", "B m 2 m",),
36: ("C m c 21", "A 21 m a", "B b 21 m",),
37: ("C c c 2", "A 2 a a", "B b 2 b",),
38: ("A m m 2", "B 2 m m", "C m 2 m",),
39: ("A b m 2", "B 2 c m", "C m 2 a",),
40: ("A m a 2", "B 2 m b", "C c 2 m",),
41: ("A b a 2", "B 2 c b", "C c 2 a",),
42: ("F m m 2", "F 2 m m", "F m 2 m",),
43: ("F d d 2", "F 2 d d", "F d 2 d",),
44: ("I m m 2", "I 2 m m", "I m 2 m",),
45: ("I b a 2", "I 2 c b", "I c 2 a",),
46: ("I m a 2", "I 2 m b", "I c 2 m",),
47: ("P m m m",),
48: ("P n n n",),
49: ("P c c m", "P m a a", "P b m b",),
50: ("P b a n", "P n c b", "P c n a",),
51: ("P m m a", "P b m m", "P m c m",),
52: ("P n n a", "P b n n", "P n c n",),
53: ("P m n a", "P b m n", "P n c m",),
54: ("P c c a", "P b a a", "P b c b",),
55: ("P b a m", "P m c b", "P c m a",),
56: ("P c c n", "P n a a", "P b n b",),
57: ("P b c m", "P m c a", "P b m a",),
58: ("P n n m", "P m n n", "P n m n",),
59: ("P m m n", "P n m m", "P m n m",),
60: ("P b c n", "P n c a", "P b n a",),
61: ("P b c a", "P c a b",),
62: ("P n m a", "P b n m", "P m c n",),
63: ("C m c m", "A m m a", "B b m m",),
64: ("C m c a", "A b m a", "B b c m",),
65: ("C m m m", "A m m m", "B m m m",),
66: ("C c c m", "A m a a", "B b m b",),
67: ("C m m a", "A b m m", "B m c m",),
68: ("C c c a", "A b a a", "B b c b",),
69: ("F m m m",),
70: ("F d d d",),
71: ("I m m m",),
72: ("I b a m", "I m c b", "I c m a",),
73: ("I b c a", "I c a b",),
74: ("I m m a", "I b m m", "I m c m",),
75: ("P 4",),
76: ("P 41",),
77: ("P 42",),
78: ("P 43",),
79: ("I 4",),
80: ("I 41",),
81: ("P -4",),
82: ("I -4",),
83: ("P 4/m",),
84: ("P 42/m",),
85: ("P 4/n",),
86: ("P 42/n",),
87: ("I 4/m",),
88: ("I 41/a",),
89: ("P 4 2 2",),
90: ("P 4 21 2",),
91: ("P 41 2 2",),
92: ("P 41 21 2",),
93: ("P 42 2 2",),
94: ("P 42 21 2",),
95: ("P 43 2 2",),
96: ("P 43 21 2",),
97: ("I 4 2 2",),
98: ("I 41 2 2",),
99: ("P 4 m m",),
100: ("P 4 b m",),
101: ("P 42 c m",),
102: ("P 42 n m",),
103: ("P 4 c c",),
104: ("P 4 n c",),
105: ("P 42 m c",),
106: ("P 42 b c",),
107: ("I 4 m m",),
108: ("I 4 c m",),
109: ("I 41 m d",),
110: ("I 41 c d",),
111: ("P -4 2 m",),
112: ("P -4 2 c",),
113: ("P -4 21 m",),
114: ("P -4 21 c",),
115: ("P -4 m 2",),
116: ("P -4 c 2",),
117: ("P -4 b 2",),
118: ("P -4 n 2",),
119: ("I -4 m 2",),
120: ("I -4 c 2",),
121: ("I -4 2 m",),
122: ("I -4 2 d",),
123: ("P 4/m m m",),
124: ("P 4/m c c",),
125: ("P 4/n b m",),
126: ("P 4/n n c",),
127: ("P 4/m b m",),
128: ("P 4/m n c",),
129: ("P 4/n m m",),
130: ("P 4/n c c",),
131: ("P 42/m m c",),
132: ("P 42/m c m",),
133: ("P 42/n b c",),
134: ("P 42/n n m",),
135: ("P 42/m b c",),
136: ("P 42/m n m",),
137: ("P 42/n m c",),
138: ("P 42/n c m",),
139: ("I 4/m m m",),
140: ("I 4/m c m",),
141: ("I 41/a m d",),
142: ("I 41/a c d",),
143: ("P 3",),
144: ("P 31",),
145: ("P 32",),
146: ("R 3",),
147: ("P -3",),
148: ("R -3",),
149: ("P 3 1 2",),
150: ("P 3 2 1",),
151: ("P 31 1 2",),
152: ("P 31 2 1",),
153: ("P 32 1 2",),
154: ("P 32 2 1",),
155: ("R 3 2",),
156: ("P 3 m 1",),
157: ("P 3 1 m",),
158: ("P 3 c 1",),
159: ("P 3 1 c",),
160: ("R 3 m",),
161: ("R 3 c",),
162: ("P -3 1 m",),
163: ("P -3 1 c",),
164: ("P -3 m 1",),
165: ("P -3 c 1",),
166: ("R -3 m",),
167: ("R -3 c",),
168: ("P 6",),
169: ("P 61",),
170: ("P 65",),
171: ("P 62",),
172: ("P 64",),
173: ("P 63",),
174: ("P -6",),
175: ("P 6/m",),
176: ("P 63/m",),
177: ("P 6 2 2",),
178: ("P 61 2 2",),
179: ("P 65 2 2",),
180: ("P 62 2 2",),
181: ("P 64 2 2",),
182: ("P 63 2 2",),
183: ("P 6 m m",),
184: ("P 6 c c",),
185: ("P 63 c m",),
186: ("P 63 m c",),
187: ("P -6 m 2",),
188: ("P -6 c 2",),
189: ("P -6 2 m",),
190: ("P -6 2 c",),
191: ("P 6/m m m",),
192: ("P 6/m c c",),
193: ("P 63/m c m",),
194: ("P 63/m m c",),
195: ("P 2 3",),
196: ("F 2 3",),
197: ("I 2 3",),
198: ("P 21 3",),
199: ("I 21 3",),
200: ("P m -3", "P m 3",),
201: ("P n -3", "P n 3",),
202: ("F m -3", "F m 3",),
203: ("F d -3", "F d 3",),
204: ("I m -3", "I m 3",),
205: ("P a -3", "P a 3",),
206: ("I a -3", "I a 3",),
207: ("P 4 3 2",),
208: ("P 42 3 2",),
209: ("F 4 3 2",),
210: ("F 41 3 2",),
211: ("I 4 3 2",),
212: ("P 43 3 2",),
213: ("P 41 3 2",),
214: ("I 41 3 2",),
215: ("P -4 3 m",),
216: ("F -4 3 m",),
217: ("I -4 3 m",),
218: ("P -4 3 n",),
219: ("F -4 3 c",),
220: ("I -4 3 d",),
221: ("P m -3 m", "P m 3 m",),
222: ("P n -3 n", "P n 3 n",),
223: ("P m -3 n", "P m 3 n",),
224: ("P n -3 m", "P n 3 m",),
225: ("F m -3 m", "F m 3 m",),
226: ("F m -3 c", "F m 3 c",),
227: ("F d -3 m", "F d 3 m",),
228: ("F d -3 c", "F d 3 c",),
229: ("I m -3 m", "I m 3 m",),
230: ("I a -3 d", "I a 3 d",)
}
[docs]def get_proper_hm_symbol(parse):
idx = find_index(parse)
symbols = spacegroups[idx][3]
number = spacegroups[idx][0]
for stidysymb in hm_symbols[number]:
for symb in symbols:
if stidysymb.replace(" ", "") == symb:
return stidysymb.upper()
raise Exception("Cannot find matching HM symbol")