From a39a0f09d204fa3bc7944ed3dbff2a35af8970c1 Mon Sep 17 00:00:00 2001 From: rhfogh Date: Fri, 4 Oct 2024 17:53:32 +0100 Subject: [PATCH 1/4] First attempt to add space group synonyms --- mxcubecore/model/crystal_symmetry.py | 1100 ++++++++++++++++++----- mxcubecore/model/queue_model_objects.py | 8 +- 2 files changed, 864 insertions(+), 244 deletions(-) diff --git a/mxcubecore/model/crystal_symmetry.py b/mxcubecore/model/crystal_symmetry.py index 718c240fde..680d6faa9a 100644 --- a/mxcubecore/model/crystal_symmetry.py +++ b/mxcubecore/model/crystal_symmetry.py @@ -136,241 +136,857 @@ ] CRYSTAL_CLASS_MAP = OrderedDict((info.name, info) for info in CRYSTAL_CLASS_DATA) -SpaceGroupInfo = namedtuple("SpaceGroupInfo", ("number", "name", "crystal_class")) -# Data from https://onlinelibrary.wiley.com/iucr/itc/Cb/ch1o4v0001/ +SpaceGroupInfo = namedtuple( + "SpaceGroupInfo", ("number", "name", "crystal_class", "synonyms") +) +# Names and synonyms derived from CCP4 (v9.) symop.lib +# Additional synonyms added for SG3-15 (e.g. 'P 21') +# Alternative axis orders added as synonyms for SG17,18 +# SG 146,148,155,160,161,166,167 are given names starting with 'R', +# with 'H' names as synonyms +# Crystal class names from https://onlinelibrary.wiley.com/iucr/itc/Cb/ch1o4v0001/ SPACEGROUP_DATA = [ - SpaceGroupInfo(1, "P1", "1P"), - SpaceGroupInfo(2, "P-1", "-1P"), - SpaceGroupInfo(3, "P2", "2P"), - SpaceGroupInfo(4, "P21", "2P"), - SpaceGroupInfo(5, "C2", "2C"), - SpaceGroupInfo(6, "Pm", "mP"), - SpaceGroupInfo(7, "Pc", "mP"), - SpaceGroupInfo(8, "Cm", "mC"), - SpaceGroupInfo(9, "Cc", "mC"), - SpaceGroupInfo(10, "P2/m", "2/mP"), - SpaceGroupInfo(11, "P21/m", "2/mP"), - SpaceGroupInfo(12, "C2/m", "2/mC"), - SpaceGroupInfo(13, "P2/c", "2/mP"), - SpaceGroupInfo(14, "P21/c", "2/mP"), - SpaceGroupInfo(15, "C2/c", "2/mC"), - SpaceGroupInfo(16, "P222", "222P"), - SpaceGroupInfo(17, "P2221", "222P"), - SpaceGroupInfo(18, "P21212", "222P"), - SpaceGroupInfo(19, "P212121", "222P"), - SpaceGroupInfo(20, "C2221", "222C"), - SpaceGroupInfo(21, "C222", "222C"), - SpaceGroupInfo(22, "F222", "222F"), - SpaceGroupInfo(23, "I222", "222I"), - SpaceGroupInfo(24, "I212121", "222I"), - SpaceGroupInfo(25, "Pmm2", "mm2P"), - SpaceGroupInfo(26, "Pmc21", "mm2P"), - SpaceGroupInfo(27, "Pcc2", "mm2P"), - SpaceGroupInfo(28, "Pma2", "mm2P"), - SpaceGroupInfo(29, "Pca21", "mm2P"), - SpaceGroupInfo(30, "Pnc2", "mm2P"), - SpaceGroupInfo(31, "Pmn21", "mm2P"), - SpaceGroupInfo(32, "Pba2", "mm2P"), - SpaceGroupInfo(33, "Pna21", "mm2P"), - SpaceGroupInfo(34, "Pnn2", "mm2P"), - SpaceGroupInfo(35, "Cmm2", "mm2C"), - SpaceGroupInfo(36, "Cmc21", "mm2C"), - SpaceGroupInfo(37, "Ccc2", "mm2C"), - SpaceGroupInfo(38, "C2mm", "2mmC"), # NB Standard setting is in A, not C - SpaceGroupInfo(39, "C2me", "2mmC"), # NB Standard setting is in A, not C - SpaceGroupInfo(40, "C2cm", "2mmC"), # NB Standard setting is in A, not C - SpaceGroupInfo(41, "C2ce", "2mmC"), # NB Standard setting is in A, not C - SpaceGroupInfo(42, "Fmm2", "mm2F"), - SpaceGroupInfo(43, "Fdd2", "mm2F"), - SpaceGroupInfo(44, "Imm2", "mm2I"), - SpaceGroupInfo(45, "Iba2", "mm2I"), - SpaceGroupInfo(46, "Ima2", "mm2I"), - SpaceGroupInfo(47, "Pmmm", "mmmP"), - SpaceGroupInfo(48, "Pnnn", "mmmP"), - SpaceGroupInfo(49, "Pccm", "mmmP"), - SpaceGroupInfo(50, "Pban", "mmmP"), - SpaceGroupInfo(51, "Pmma", "mmmP"), - SpaceGroupInfo(52, "Pnna", "mmmP"), - SpaceGroupInfo(53, "Pmna", "mmmP"), - SpaceGroupInfo(54, "Pcca", "mmmP"), - SpaceGroupInfo(55, "Pbam", "mmmP"), - SpaceGroupInfo(56, "Pccn", "mmmP"), - SpaceGroupInfo(57, "Pbcm", "mmmP"), - SpaceGroupInfo(58, "Pnnm", "mmmP"), - SpaceGroupInfo(59, "Pmmn", "mmmP"), - SpaceGroupInfo(60, "Pbcn", "mmmP"), - SpaceGroupInfo(61, "Pbca", "mmmP"), - SpaceGroupInfo(62, "Pnma", "mmmP"), - SpaceGroupInfo(63, "Cmcm", "mmmC"), - SpaceGroupInfo(64, "Cmce", "mmmC"), - SpaceGroupInfo(65, "Cmmm", "mmmC"), - SpaceGroupInfo(66, "Cccm", "mmmC"), - SpaceGroupInfo(67, "Cmme", "mmmC"), - SpaceGroupInfo(68, "Ccce", "mmmC"), - SpaceGroupInfo(69, "Fmmm", "mmmF"), - SpaceGroupInfo(70, "Fddd", "mmmF"), - SpaceGroupInfo(71, "Immm", "mmmI"), - SpaceGroupInfo(72, "Ibam", "mmmI"), - SpaceGroupInfo(73, "Ibca", "mmmI"), - SpaceGroupInfo(74, "Imma", "mmmI"), - SpaceGroupInfo(75, "P4", "4P"), - SpaceGroupInfo(76, "P41", "4P"), - SpaceGroupInfo(77, "P42", "4P"), - SpaceGroupInfo(78, "P43", "4P"), - SpaceGroupInfo(79, "I4", "4I"), - SpaceGroupInfo(80, "I41", "4I"), - SpaceGroupInfo(81, "P-4", "-4P"), - SpaceGroupInfo(82, "I-4", "-4I"), - SpaceGroupInfo(83, "P4/m", "4/mP"), - SpaceGroupInfo(84, "P42/m", "4/mP"), - SpaceGroupInfo(85, "P4/n", "4/mP"), - SpaceGroupInfo(86, "P42/n", "4/mP"), - SpaceGroupInfo(87, "I4/m", "4/mI"), - SpaceGroupInfo(88, "I41/a", "4/mI"), - SpaceGroupInfo(89, "P422", "422P"), - SpaceGroupInfo(90, "P4212", "422P"), - SpaceGroupInfo(91, "P4122", "422P"), - SpaceGroupInfo(92, "P41212", "422P"), - SpaceGroupInfo(93, "P4222", "422P"), - SpaceGroupInfo(94, "P42212", "422P"), - SpaceGroupInfo(95, "P4322", "422P"), - SpaceGroupInfo(96, "P43212", "422P"), - SpaceGroupInfo(97, "I422", "422I"), - SpaceGroupInfo(98, "I4122", "422I"), - SpaceGroupInfo(99, "P4mm", "4mmP"), - SpaceGroupInfo(100, "P4bm", "4mmP"), - SpaceGroupInfo(101, "P42cm", "4mmP"), - SpaceGroupInfo(102, "P42nm", "4mmP"), - SpaceGroupInfo(103, "P4cc", "4mmP"), - SpaceGroupInfo(104, "P4nc", "4mmP"), - SpaceGroupInfo(105, "P42mc", "4mmP"), - SpaceGroupInfo(106, "P42bc", "4mmP"), - SpaceGroupInfo(107, "I4mm", "4mmI"), - SpaceGroupInfo(108, "I4cm", "4mmI"), - SpaceGroupInfo(109, "I41md", "4mmI"), - SpaceGroupInfo(110, "I41cd", "4mmI"), - SpaceGroupInfo(111, "P-42m", "-42mP"), - SpaceGroupInfo(112, "P-42c", "-42mP"), - SpaceGroupInfo(113, "P-421m", "-42mP"), - SpaceGroupInfo(114, "P-421c", "-42mP"), - SpaceGroupInfo(115, "P-4m2", "-4m2P"), - SpaceGroupInfo(116, "P-4c2", "-4m2P"), - SpaceGroupInfo(117, "P-4b2", "-4m2P"), - SpaceGroupInfo(118, "P-4n2", "-4m2P"), - SpaceGroupInfo(119, "I-4m2", "-4m2I"), - SpaceGroupInfo(120, "I-4c2", "-4m2I"), - SpaceGroupInfo(121, "I-42m", "-42mI"), - SpaceGroupInfo(122, "I-42d", "-42mI"), - SpaceGroupInfo(123, "P4/mmm", "4/mmmP"), - SpaceGroupInfo(124, "P4/mcc", "4/mmmP"), - SpaceGroupInfo(125, "P4/nbm", "4/mmmP"), - SpaceGroupInfo(126, "P4/nnc", "4/mmmP"), - SpaceGroupInfo(127, "P4/mbm", "4/mmmP"), - SpaceGroupInfo(128, "P4/mnc", "4/mmmP"), - SpaceGroupInfo(129, "P4/nmm", "4/mmmP"), - SpaceGroupInfo(130, "P4/ncc", "4/mmmP"), - SpaceGroupInfo(131, "P42/mmc", "4/mmmP"), - SpaceGroupInfo(132, "P42/mcm", "4/mmmP"), - SpaceGroupInfo(133, "P42/nbc", "4/mmmP"), - SpaceGroupInfo(134, "P42/nnm", "4/mmmP"), - SpaceGroupInfo(135, "P42/mbc", "4/mmmP"), - SpaceGroupInfo(136, "P42/mnm", "4/mmmP"), - SpaceGroupInfo(137, "P42/nmc", "4/mmmP"), - SpaceGroupInfo(138, "P42/ncm", "4/mmmP"), - SpaceGroupInfo(139, "I4/mmm", "4/mmmI"), - SpaceGroupInfo(140, "I4/mcm", "4/mmmI"), - SpaceGroupInfo(141, "I41/amd", "4/mmmI"), - SpaceGroupInfo(142, "I41/acd", "4/mmmI"), - SpaceGroupInfo(143, "P3", "3P"), - SpaceGroupInfo(144, "P31", "3P"), - SpaceGroupInfo(145, "P32", "3P"), - SpaceGroupInfo(146, "H3", "3R"), - SpaceGroupInfo(147, "P-3", "-3P"), - SpaceGroupInfo(148, "H-3", "-3R"), - SpaceGroupInfo(149, "P312", "312P"), - SpaceGroupInfo(150, "P321", "321P"), - SpaceGroupInfo(151, "P3112", "312P"), - SpaceGroupInfo(152, "P3121", "321P"), - SpaceGroupInfo(153, "P3212", "312P"), - SpaceGroupInfo(154, "P3221", "321P"), - SpaceGroupInfo(155, "H32", "32R"), - SpaceGroupInfo(156, "P3m1", "3m1P"), - SpaceGroupInfo(157, "P31m", "31mP"), - SpaceGroupInfo(158, "P3c1", "3m1P"), - SpaceGroupInfo(159, "P31c", "31mP"), - SpaceGroupInfo(160, "H3m", "3mR"), - SpaceGroupInfo(161, "H3c", "3mR"), - SpaceGroupInfo(162, "P-31m", "-31mP"), - SpaceGroupInfo(163, "P-31c", "-31mP"), - SpaceGroupInfo(164, "P-3m1", "-3m1P"), - SpaceGroupInfo(165, "P-3c1", "-3m1P"), - SpaceGroupInfo(166, "H-3m", "-3mR"), - SpaceGroupInfo(167, "H-3c", "-3mR"), - SpaceGroupInfo(168, "P6", "6P"), - SpaceGroupInfo(169, "P61", "6P"), - SpaceGroupInfo(170, "P65", "6P"), - SpaceGroupInfo(171, "P62", "6P"), - SpaceGroupInfo(172, "P64", "6P"), - SpaceGroupInfo(173, "P63", "6P"), - SpaceGroupInfo(174, "P-6", "-6P"), - SpaceGroupInfo(175, "P6/m", "6/mP"), - SpaceGroupInfo(176, "P63/m", "6/mP"), - SpaceGroupInfo(177, "P622", "622P"), - SpaceGroupInfo(178, "P6122", "622P"), - SpaceGroupInfo(179, "P6522", "622P"), - SpaceGroupInfo(180, "P6222", "622P"), - SpaceGroupInfo(181, "P6422", "622P"), - SpaceGroupInfo(182, "P6322", "622P"), - SpaceGroupInfo(183, "P6mm", "6mmP"), - SpaceGroupInfo(184, "P6cc", "6mmP"), - SpaceGroupInfo(185, "P63cm", "6mmP"), - SpaceGroupInfo(186, "P63mc", "6mmP"), - SpaceGroupInfo(187, "P-6m2", "-6m2P"), - SpaceGroupInfo(188, "P-6c2", "-6m2P"), - SpaceGroupInfo(189, "P-62m", "-62mP"), - SpaceGroupInfo(190, "P-62c", "-62mP"), - SpaceGroupInfo(191, "P6/mmm", "6/mmmP"), - SpaceGroupInfo(192, "P6/mmc", "6/mmmP"), - SpaceGroupInfo(193, "P63/mcm", "6/mmmP"), - SpaceGroupInfo(194, "P63/mmc", "6/mmmP"), - SpaceGroupInfo(195, "P23", "23P"), - SpaceGroupInfo(196, "F23", "23F"), - SpaceGroupInfo(197, "I23", "23I"), - SpaceGroupInfo(198, "P213", "23P"), - SpaceGroupInfo(199, "I213", "23I"), - SpaceGroupInfo(200, "Pm-3", "m-3P"), - SpaceGroupInfo(201, "Pn-3", "m-3P"), - SpaceGroupInfo(202, "Fm-3", "m-3F"), - SpaceGroupInfo(203, "Fd-3", "m-3F"), - SpaceGroupInfo(204, "Im-3", "m-3I"), - SpaceGroupInfo(205, "Pa-3", "m-3P"), - SpaceGroupInfo(206, "Ia-3", "m-3I"), - SpaceGroupInfo(207, "P432", "432P"), - SpaceGroupInfo(208, "P4232", "432P"), - SpaceGroupInfo(209, "F432", "432F"), - SpaceGroupInfo(210, "F4132", "432F"), - SpaceGroupInfo(211, "I432", "432I"), - SpaceGroupInfo(212, "P4332", "432P"), - SpaceGroupInfo(213, "P4132", "432P"), - SpaceGroupInfo(214, "I4132", "432I"), - SpaceGroupInfo(215, "P-43m", "-43mP"), - SpaceGroupInfo(216, "F-43m", "-43mF"), - SpaceGroupInfo(217, "I-43m", "-43mI"), - SpaceGroupInfo(218, "P-43n", "-43mP"), - SpaceGroupInfo(219, "F-43c", "-43mF"), - SpaceGroupInfo(220, "I-43d", "-43mI"), - SpaceGroupInfo(221, "Pm-3m", "m-3mP"), - SpaceGroupInfo(222, "Pn-3n", "m-3mP"), - SpaceGroupInfo(223, "Pm-3n", "m-3mP"), - SpaceGroupInfo(224, "Pn-3m", "m-3mP"), - SpaceGroupInfo(225, "Fm-3m", "m-3mF"), - SpaceGroupInfo(226, "Fm-3c", "m-3mF"), - SpaceGroupInfo(227, "Fd-3m", "m-3mF"), - SpaceGroupInfo(228, "Fd-3c", "m-3mF"), - SpaceGroupInfo(229, "Im-3m", "m-3mI"), - SpaceGroupInfo(230, "Ia-3d", "m-3mI"), + SpaceGroupInfo(number=1, name="P1", crystal_class="1P", synonyms=("P 1",)), + SpaceGroupInfo(number=2, name="P-1", crystal_class="-1P", synonyms=("P -1",)), + SpaceGroupInfo( + number=3, name="P2", crystal_class="2P", synonyms=("P 1 2 1", "P121", "P 2") + ), + SpaceGroupInfo( + number=4, name="P21", crystal_class="2P", synonyms=("P 1 21 1", "P1211", "P 21") + ), + SpaceGroupInfo( + number=5, name="C2", crystal_class="2C", synonyms=("C 1 2 1", "C121", "C 2") + ), + SpaceGroupInfo( + number=6, name="Pm", crystal_class="mP", synonyms=("P 1 m 1", "P1m1", "P m") + ), + SpaceGroupInfo( + number=7, name="Pc", crystal_class="mP", synonyms=("P 1 c 1", "P1c1", "P c") + ), + SpaceGroupInfo( + number=8, name="Cm", crystal_class="mC", synonyms=("C 1 m 1", "C1m1", "C m") + ), + SpaceGroupInfo( + number=9, name="Cc", crystal_class="mC", synonyms=("C 1 c 1", "C1c1", "C c") + ), + SpaceGroupInfo( + number=10, + name="P2/m", + crystal_class="2/mP", + synonyms=("P 1 2/m 1", "P12/m1", "P 2/m"), + ), + SpaceGroupInfo( + number=11, + name="P21/m", + crystal_class="2/mP", + synonyms=("P 1 21/m 1", "P121/m1", "P 21/m"), + ), + SpaceGroupInfo( + number=12, + name="C2/m", + crystal_class="2/mC", + synonyms=("C 1 2/m 1", "C12/m1", "C 2/m"), + ), + SpaceGroupInfo( + number=13, + name="P2/c", + crystal_class="2/mP", + synonyms=("P 1 2/c 1", "P12/c1", "P 2/c"), + ), + SpaceGroupInfo( + number=14, + name="P21/c", + crystal_class="2/mP", + synonyms=("P 1 21/c 1", "P121/c1", "P 21/c"), + ), + SpaceGroupInfo( + number=15, + name="C2/c", + crystal_class="2/mC", + synonyms=("C 1 2/c 1", "C12/c1", "C 2/c"), + ), + SpaceGroupInfo(number=16, name="P222", crystal_class="222P", synonyms=("P 2 2 2",)), + SpaceGroupInfo( + number=17, name="P2221", crystal_class="222P", synonyms=("P 2 2 21",) + ), + SpaceGroupInfo( + number=18, name="P21212", crystal_class="222P", synonyms=("P 21 21 2",) + ), + SpaceGroupInfo( + number=19, name="P212121", crystal_class="222P", synonyms=("P 21 21 21",) + ), + SpaceGroupInfo( + number=20, name="C2221", crystal_class="222C", synonyms=("C 2 2 21",) + ), + SpaceGroupInfo(number=21, name="C222", crystal_class="222C", synonyms=("C 2 2 2",)), + SpaceGroupInfo(number=22, name="F222", crystal_class="222F", synonyms=("F 2 2 2",)), + SpaceGroupInfo(number=23, name="I222", crystal_class="222I", synonyms=("I 2 2 2",)), + SpaceGroupInfo( + number=24, name="I212121", crystal_class="222I", synonyms=("I 21 21 21",) + ), + SpaceGroupInfo(number=25, name="Pmm2", crystal_class="mm2P", synonyms=("P m m 2",)), + SpaceGroupInfo( + number=26, name="Pmc21", crystal_class="mm2P", synonyms=("P m c 21",) + ), + SpaceGroupInfo(number=27, name="Pcc2", crystal_class="mm2P", synonyms=("P c c 2",)), + SpaceGroupInfo(number=28, name="Pma2", crystal_class="mm2P", synonyms=("P m a 2",)), + SpaceGroupInfo( + number=29, name="Pca21", crystal_class="mm2P", synonyms=("P c a 21",) + ), + SpaceGroupInfo(number=30, name="Pnc2", crystal_class="mm2P", synonyms=("P n c 2",)), + SpaceGroupInfo( + number=31, name="Pmn21", crystal_class="mm2P", synonyms=("P m n 21",) + ), + SpaceGroupInfo(number=32, name="Pba2", crystal_class="mm2P", synonyms=("P b a 2",)), + SpaceGroupInfo( + number=33, name="Pna21", crystal_class="mm2P", synonyms=("P n a 21",) + ), + SpaceGroupInfo(number=34, name="Pnn2", crystal_class="mm2P", synonyms=("P n n 2",)), + SpaceGroupInfo(number=35, name="Cmm2", crystal_class="mm2C", synonyms=("C m m 2",)), + SpaceGroupInfo( + number=36, name="Cmc21", crystal_class="mm2C", synonyms=("C m c 21",) + ), + SpaceGroupInfo(number=37, name="Ccc2", crystal_class="mm2C", synonyms=("C c c 2",)), + SpaceGroupInfo(number=38, name="Amm2", crystal_class="2mmC", synonyms=("A m m 2",)), + SpaceGroupInfo(number=39, name="Abm2", crystal_class="2mmC", synonyms=("A b m 2",)), + SpaceGroupInfo(number=40, name="Ama2", crystal_class="2mmC", synonyms=("A m a 2",)), + SpaceGroupInfo(number=41, name="Aba2", crystal_class="2mmC", synonyms=("A b a 2",)), + SpaceGroupInfo(number=42, name="Fmm2", crystal_class="mm2F", synonyms=("F m m 2",)), + SpaceGroupInfo(number=43, name="Fdd2", crystal_class="mm2F", synonyms=("F d d 2",)), + SpaceGroupInfo(number=44, name="Imm2", crystal_class="mm2I", synonyms=("I m m 2",)), + SpaceGroupInfo(number=45, name="Iba2", crystal_class="mm2I", synonyms=("I b a 2",)), + SpaceGroupInfo(number=46, name="Ima2", crystal_class="mm2I", synonyms=("I m a 2",)), + SpaceGroupInfo( + number=47, + name="Pmmm", + crystal_class="mmmP", + synonyms=("P 2/m 2/m 2/m", "P2/m2/m2/m", "P m m m"), + ), + SpaceGroupInfo( + number=48, + name="Pnnn", + crystal_class="mmmP", + synonyms=("P 2/n 2/n 2/n", "P2/n2/n2/n", "P n n n"), + ), + SpaceGroupInfo( + number=49, + name="Pccm", + crystal_class="mmmP", + synonyms=("P 2/c 2/c 2/m", "P2/c2/c2/m", "P c c m"), + ), + SpaceGroupInfo( + number=50, + name="Pban", + crystal_class="mmmP", + synonyms=("P 2/b 2/a 2/n", "P2/b2/a2/n", "P b a n"), + ), + SpaceGroupInfo( + number=51, + name="Pmma", + crystal_class="mmmP", + synonyms=("P 21/m 2/m 2/a", "P21/m2/m2/a", "P m m a"), + ), + SpaceGroupInfo( + number=52, + name="Pnna", + crystal_class="mmmP", + synonyms=("P 2/n 21/n 2/a", "P2/n21/n2/a", "P n n a"), + ), + SpaceGroupInfo( + number=53, + name="Pmna", + crystal_class="mmmP", + synonyms=("P 2/m 2/n 21/a", "P2/m2/n21/a", "P m n a"), + ), + SpaceGroupInfo( + number=54, + name="Pcca", + crystal_class="mmmP", + synonyms=("P 21/c 2/c 2/a", "P21/c2/c2/a", "P c c a"), + ), + SpaceGroupInfo( + number=55, + name="Pbam", + crystal_class="mmmP", + synonyms=("P 21/b 21/a 2/m", "P21/b21/a2/m", "P b a m"), + ), + SpaceGroupInfo( + number=56, + name="Pccn", + crystal_class="mmmP", + synonyms=("P 21/c 21/c 2/n", "P21/c21/c2/n", "P c c n"), + ), + SpaceGroupInfo( + number=57, + name="Pbcm", + crystal_class="mmmP", + synonyms=("P 2/b 21/c 21/m", "P2/b21/c21/m", "P b c m"), + ), + SpaceGroupInfo( + number=58, + name="Pnnm", + crystal_class="mmmP", + synonyms=("P 21/n 21/n 2/m", "P21/n21/n2/m", "P n n m"), + ), + SpaceGroupInfo( + number=59, + name="Pmmn", + crystal_class="mmmP", + synonyms=("P 21/m 21/m 2/n", "P21/m21/m2/n", "P m m n"), + ), + SpaceGroupInfo( + number=60, + name="Pbcn", + crystal_class="mmmP", + synonyms=("P 21/b 2/c 21/n", "P21/b2/c21/n", "P b c n"), + ), + SpaceGroupInfo( + number=61, + name="Pbca", + crystal_class="mmmP", + synonyms=("P 21/b 21/c 21/a", "P21/b21/c21/a", "P b c a"), + ), + SpaceGroupInfo( + number=62, + name="Pnma", + crystal_class="mmmP", + synonyms=("P 21/n 21/m 21/a", "P21/n21/m21/a", "P n m a"), + ), + SpaceGroupInfo( + number=63, + name="Cmcm", + crystal_class="mmmC", + synonyms=("C 2/m 2/c 21/m", "C2/m2/c21/m", "C m c m"), + ), + SpaceGroupInfo( + number=64, + name="Cmca", + crystal_class="mmmC", + synonyms=("C 2/m 2/c 21/a", "C2/m2/c21/a", "C m c a"), + ), + SpaceGroupInfo( + number=65, + name="Cmmm", + crystal_class="mmmC", + synonyms=("C 2/m 2/m 2/m", "C2/m2/m2/m", "C m m m"), + ), + SpaceGroupInfo( + number=66, + name="Cccm", + crystal_class="mmmC", + synonyms=("C 2/c 2/c 2/m", "C2/c2/c2/m", "C c c m"), + ), + SpaceGroupInfo( + number=67, + name="Cmma", + crystal_class="mmmC", + synonyms=("C 2/m 2/m 2/a", "C2/m2/m2/a", "C m m a"), + ), + SpaceGroupInfo( + number=68, + name="Ccca", + crystal_class="mmmC", + synonyms=("C 2/c 2/c 2/a", "C2/c2/c2/a", "C c c a"), + ), + SpaceGroupInfo( + number=69, + name="Fmmm", + crystal_class="mmmF", + synonyms=("F 2/m 2/m 2/m", "F2/m2/m2/m", "F m m m"), + ), + SpaceGroupInfo( + number=70, + name="Fddd", + crystal_class="mmmF", + synonyms=("F 2/d 2/d 2/d", "F2/d2/d2/d", "F d d d"), + ), + SpaceGroupInfo( + number=71, + name="Immm", + crystal_class="mmmI", + synonyms=("I 2/m 2/m 2/m", "I2/m2/m2/m", "I m m m"), + ), + SpaceGroupInfo( + number=72, + name="Ibam", + crystal_class="mmmI", + synonyms=("I 2/b 2/a 2/m", "I2/b2/a2/m", "I b a m"), + ), + SpaceGroupInfo( + number=73, + name="Ibca", + crystal_class="mmmI", + synonyms=("I 21/b 21/c 21/a", "I21/b21/c21/a", "I b c a"), + ), + SpaceGroupInfo( + number=74, + name="Imma", + crystal_class="mmmI", + synonyms=("I 21/m 21/m 21/a", "I21/m21/m21/a", "I m m a"), + ), + SpaceGroupInfo(number=75, name="P4", crystal_class="4P", synonyms=("P 4",)), + SpaceGroupInfo(number=76, name="P41", crystal_class="4P", synonyms=("P 41",)), + SpaceGroupInfo(number=77, name="P42", crystal_class="4P", synonyms=("P 42",)), + SpaceGroupInfo(number=78, name="P43", crystal_class="4P", synonyms=("P 43",)), + SpaceGroupInfo(number=79, name="I4", crystal_class="4I", synonyms=("I 4",)), + SpaceGroupInfo(number=80, name="I41", crystal_class="4I", synonyms=("I 41",)), + SpaceGroupInfo(number=81, name="P-4", crystal_class="-4P", synonyms=("P -4",)), + SpaceGroupInfo(number=82, name="I-4", crystal_class="-4I", synonyms=("I -4",)), + SpaceGroupInfo(number=83, name="P4/m", crystal_class="4/mP", synonyms=("P 4/m",)), + SpaceGroupInfo(number=84, name="P42/m", crystal_class="4/mP", synonyms=("P 42/m",)), + SpaceGroupInfo(number=85, name="P4/n", crystal_class="4/mP", synonyms=("P 4/n",)), + SpaceGroupInfo(number=86, name="P42/n", crystal_class="4/mP", synonyms=("P 42/n",)), + SpaceGroupInfo(number=87, name="I4/m", crystal_class="4/mI", synonyms=("I 4/m",)), + SpaceGroupInfo(number=88, name="I41/a", crystal_class="4/mI", synonyms=("I 41/a",)), + SpaceGroupInfo(number=89, name="P422", crystal_class="422P", synonyms=("P 4 2 2",)), + SpaceGroupInfo( + number=90, name="P4212", crystal_class="422P", synonyms=("P 4 21 2",) + ), + SpaceGroupInfo( + number=91, name="P4122", crystal_class="422P", synonyms=("P 41 2 2",) + ), + SpaceGroupInfo( + number=92, name="P41212", crystal_class="422P", synonyms=("P 41 21 2",) + ), + SpaceGroupInfo( + number=93, name="P4222", crystal_class="422P", synonyms=("P 42 2 2",) + ), + SpaceGroupInfo( + number=94, name="P42212", crystal_class="422P", synonyms=("P 42 21 2",) + ), + SpaceGroupInfo( + number=95, name="P4322", crystal_class="422P", synonyms=("P 43 2 2",) + ), + SpaceGroupInfo( + number=96, name="P43212", crystal_class="422P", synonyms=("P 43 21 2",) + ), + SpaceGroupInfo(number=97, name="I422", crystal_class="422I", synonyms=("I 4 2 2",)), + SpaceGroupInfo( + number=98, name="I4122", crystal_class="422I", synonyms=("I 41 2 2",) + ), + SpaceGroupInfo(number=99, name="P4mm", crystal_class="4mmP", synonyms=("P 4 m m",)), + SpaceGroupInfo( + number=100, name="P4bm", crystal_class="4mmP", synonyms=("P 4 b m",) + ), + SpaceGroupInfo( + number=101, name="P42cm", crystal_class="4mmP", synonyms=("P 42 c m",) + ), + SpaceGroupInfo( + number=102, name="P42nm", crystal_class="4mmP", synonyms=("P 42 n m",) + ), + SpaceGroupInfo( + number=103, name="P4cc", crystal_class="4mmP", synonyms=("P 4 c c",) + ), + SpaceGroupInfo( + number=104, name="P4nc", crystal_class="4mmP", synonyms=("P 4 n c",) + ), + SpaceGroupInfo( + number=105, name="P42mc", crystal_class="4mmP", synonyms=("P 42 m c",) + ), + SpaceGroupInfo( + number=106, name="P42bc", crystal_class="4mmP", synonyms=("P 42 b c",) + ), + SpaceGroupInfo( + number=107, name="I4mm", crystal_class="4mmI", synonyms=("I 4 m m",) + ), + SpaceGroupInfo( + number=108, name="I4cm", crystal_class="4mmI", synonyms=("I 4 c m",) + ), + SpaceGroupInfo( + number=109, name="I41md", crystal_class="4mmI", synonyms=("I 41 m d",) + ), + SpaceGroupInfo( + number=110, name="I41cd", crystal_class="4mmI", synonyms=("I 41 c d",) + ), + SpaceGroupInfo( + number=111, name="P-42m", crystal_class="-42mP", synonyms=("P -4 2 m",) + ), + SpaceGroupInfo( + number=112, name="P-42c", crystal_class="-42mP", synonyms=("P -4 2 c",) + ), + SpaceGroupInfo( + number=113, name="P-421m", crystal_class="-42mP", synonyms=("P -4 21 m",) + ), + SpaceGroupInfo( + number=114, name="P-421c", crystal_class="-42mP", synonyms=("P -4 21 c",) + ), + SpaceGroupInfo( + number=115, name="P-4m2", crystal_class="-4m2P", synonyms=("P -4 m 2",) + ), + SpaceGroupInfo( + number=116, name="P-4c2", crystal_class="-4m2P", synonyms=("P -4 c 2",) + ), + SpaceGroupInfo( + number=117, name="P-4b2", crystal_class="-4m2P", synonyms=("P -4 b 2",) + ), + SpaceGroupInfo( + number=118, name="P-4n2", crystal_class="-4m2P", synonyms=("P -4 n 2",) + ), + SpaceGroupInfo( + number=119, name="I-4m2", crystal_class="-4m2I", synonyms=("I -4 m 2",) + ), + SpaceGroupInfo( + number=120, name="I-4c2", crystal_class="-4m2I", synonyms=("I -4 c 2",) + ), + SpaceGroupInfo( + number=121, name="I-42m", crystal_class="-42mI", synonyms=("I -4 2 m",) + ), + SpaceGroupInfo( + number=122, name="I-42d", crystal_class="-42mI", synonyms=("I -4 2 d",) + ), + SpaceGroupInfo( + number=123, + name="P4/mmm", + crystal_class="4/mmmP", + synonyms=("P 4/m 2/m 2/m", "P4/m2/m2/m", "P4/m m m"), + ), + SpaceGroupInfo( + number=124, + name="P4/mcc", + crystal_class="4/mmmP", + synonyms=("P 4/m 2/c 2/c", "P4/m2/c2/c", "P4/m c c"), + ), + SpaceGroupInfo( + number=125, + name="P4/nbm", + crystal_class="4/mmmP", + synonyms=("P 4/n 2/b 2/m", "P4/n2/b2/m", "P4/n b m"), + ), + SpaceGroupInfo( + number=126, + name="P4/nnc", + crystal_class="4/mmmP", + synonyms=("P 4/n 2/n 2/c", "P4/n2/n2/c", "P4/n n c"), + ), + SpaceGroupInfo( + number=127, + name="P4/mbm", + crystal_class="4/mmmP", + synonyms=("P 4/m 21/b 2/m", "P4/m21/b2/m", "P4/m b m"), + ), + SpaceGroupInfo( + number=128, + name="P4/mnc", + crystal_class="4/mmmP", + synonyms=("P 4/m 21/n 2/c", "P4/m21/n2/c", "P4/m n c"), + ), + SpaceGroupInfo( + number=129, + name="P4/nmm", + crystal_class="4/mmmP", + synonyms=("P 4/n 21/m 2/m", "P4/n21/m2/m", "P4/n m m"), + ), + SpaceGroupInfo( + number=130, + name="P4/ncc", + crystal_class="4/mmmP", + synonyms=("P 4/n 2/c 2/c", "P4/n2/c2/c", "P4/n c c"), + ), + SpaceGroupInfo( + number=131, + name="P42/mmc", + crystal_class="4/mmmP", + synonyms=("P 42/m 2/m 2/c", "P42/m2/m2/c", "P42/m m c"), + ), + SpaceGroupInfo( + number=132, + name="P42/mcm", + crystal_class="4/mmmP", + synonyms=("P 42/m 2/c 2/m", "P42/m2/c2/m", "P42/m c m"), + ), + SpaceGroupInfo( + number=133, + name="P42/nbc", + crystal_class="4/mmmP", + synonyms=("P 42/n 2/b 2/c", "P42/n2/b2/c", "P42/n b c"), + ), + SpaceGroupInfo( + number=134, + name="P42/nnm", + crystal_class="4/mmmP", + synonyms=("P 42/n 2/n 2/m", "P42/n2/n2/m", "P42/n n m"), + ), + SpaceGroupInfo( + number=135, + name="P42/mbc", + crystal_class="4/mmmP", + synonyms=("P 42/m 21/b 2/c", "P42/m21/b2/c", "P42/m b c"), + ), + SpaceGroupInfo( + number=136, + name="P42/mnm", + crystal_class="4/mmmP", + synonyms=("P 42/m 21/n 2/m", "P42/m21/n2/m", "P42/m n m"), + ), + SpaceGroupInfo( + number=137, + name="P42/nmc", + crystal_class="4/mmmP", + synonyms=("P 42/n 21/m 2/c", "P42/n21/m2/c", "P42/n m c"), + ), + SpaceGroupInfo( + number=138, + name="P42/ncm", + crystal_class="4/mmmP", + synonyms=("P 42/n 21/c 2/m", "P42/n21/c2/m", "P42/n c m"), + ), + SpaceGroupInfo( + number=139, + name="I4/mmm", + crystal_class="4/mmmI", + synonyms=("I 4/m 2/m 2/m", "I4/m2/m2/m", "I4/m m m"), + ), + SpaceGroupInfo( + number=140, + name="I4/mcm", + crystal_class="4/mmmI", + synonyms=("I 4/m 2/c 2/m", "I4/m2/c2/m", "I4/m c m"), + ), + SpaceGroupInfo( + number=141, + name="I41/amd", + crystal_class="4/mmmI", + synonyms=("I 41/a 2/m 2/d", "I41/a2/m2/d", "I41/a m d"), + ), + SpaceGroupInfo( + number=142, + name="I41/acd", + crystal_class="4/mmmI", + synonyms=("I 41/a 2/c 2/d", "I41/a2/c2/d", "I41/a c d"), + ), + SpaceGroupInfo(number=143, name="P3", crystal_class="3P", synonyms=("P 3",)), + SpaceGroupInfo(number=144, name="P31", crystal_class="3P", synonyms=("P 31",)), + SpaceGroupInfo(number=145, name="P32", crystal_class="3P", synonyms=("P 32",)), + SpaceGroupInfo( + number=146, name="R3", crystal_class="3R", synonyms=("H 3", "H3", " R 3") + ), + SpaceGroupInfo(number=147, name="P-3", crystal_class="-3P", synonyms=("P -3",)), + SpaceGroupInfo( + number=148, name="R-3", crystal_class="-3R", synonyms=("H -3", "H-3", "R -3") + ), + SpaceGroupInfo( + number=149, name="P312", crystal_class="312P", synonyms=("P 3 1 2",) + ), + SpaceGroupInfo( + number=150, name="P321", crystal_class="321P", synonyms=("P 3 2 1",) + ), + SpaceGroupInfo( + number=151, name="P3112", crystal_class="312P", synonyms=("P 31 1 2",) + ), + SpaceGroupInfo( + number=152, name="P3121", crystal_class="321P", synonyms=("P 31 2 1",) + ), + SpaceGroupInfo( + number=153, name="P3212", crystal_class="312P", synonyms=("P 32 1 2",) + ), + SpaceGroupInfo( + number=154, name="P3221", crystal_class="321P", synonyms=("P 32 2 1",) + ), + SpaceGroupInfo( + number=155, name="R32", crystal_class="32R", synonyms=("H 3 2", "H32", "R 3 2") + ), + SpaceGroupInfo( + number=156, name="P3m1", crystal_class="3m1P", synonyms=("P 3 m 1",) + ), + SpaceGroupInfo( + number=157, name="P31m", crystal_class="31mP", synonyms=("P 3 1 m",) + ), + SpaceGroupInfo( + number=158, name="P3c1", crystal_class="3m1P", synonyms=("P 3 c 1",) + ), + SpaceGroupInfo( + number=159, name="P31c", crystal_class="31mP", synonyms=("P 3 1 c",) + ), + SpaceGroupInfo( + number=160, name="R3m", crystal_class="3mR", synonyms=("H 3 m", "H3m", "R 3 m") + ), + SpaceGroupInfo( + number=161, name="R3c", crystal_class="3mR", synonyms=("H 3 c", "H3c", "R 3 c") + ), + SpaceGroupInfo( + number=162, + name="P-31m", + crystal_class="-31mP", + synonyms=("P -3 1 2/m", "P-312/m", "P -3 1 m"), + ), + SpaceGroupInfo( + number=163, + name="P-31c", + crystal_class="-31mP", + synonyms=("P -3 1 2/c", "P-312/c", "P -3 1 c"), + ), + SpaceGroupInfo( + number=164, + name="P-3m1", + crystal_class="-3m1P", + synonyms=("P -3 2/m 1", "P-32/m1", "P -3 m 1"), + ), + SpaceGroupInfo( + number=165, + name="P-3c1", + crystal_class="-3m1P", + synonyms=("P -3 2/c 1", "P-32/c1", "P -3 c 1"), + ), + SpaceGroupInfo( + number=166, + name="R-3m", + crystal_class="-3mR", + synonyms=( + "H-3m", + "H -3 2/m", + "H-32/m", + "H -3 m", + "R -3 2/m", + "R-32/m", + "R -3 m", + ), + ), + SpaceGroupInfo( + number=167, + name="R-3c", + crystal_class="-3mR", + synonyms=( + "H-3c", + "H -3 2/c", + "H-32/c", + "H -3 c", + "R -3 2/c", + "R-32/c", + "R -3 c", + ), + ), + SpaceGroupInfo(number=168, name="P6", crystal_class="6P", synonyms=("P 6",)), + SpaceGroupInfo(number=169, name="P61", crystal_class="6P", synonyms=("P 61",)), + SpaceGroupInfo(number=170, name="P65", crystal_class="6P", synonyms=("P 65",)), + SpaceGroupInfo(number=171, name="P62", crystal_class="6P", synonyms=("P 62",)), + SpaceGroupInfo(number=172, name="P64", crystal_class="6P", synonyms=("P 64",)), + SpaceGroupInfo(number=173, name="P63", crystal_class="6P", synonyms=("P 63",)), + SpaceGroupInfo(number=174, name="P-6", crystal_class="-6P", synonyms=("P -6",)), + SpaceGroupInfo(number=175, name="P6/m", crystal_class="6/mP", synonyms=("P 6/m",)), + SpaceGroupInfo( + number=176, name="P63/m", crystal_class="6/mP", synonyms=("P 63/m",) + ), + SpaceGroupInfo( + number=177, name="P622", crystal_class="622P", synonyms=("P 6 2 2",) + ), + SpaceGroupInfo( + number=178, name="P6122", crystal_class="622P", synonyms=("P 61 2 2",) + ), + SpaceGroupInfo( + number=179, name="P6522", crystal_class="622P", synonyms=("P 65 2 2",) + ), + SpaceGroupInfo( + number=180, name="P6222", crystal_class="622P", synonyms=("P 62 2 2",) + ), + SpaceGroupInfo( + number=181, name="P6422", crystal_class="622P", synonyms=("P 64 2 2",) + ), + SpaceGroupInfo( + number=182, name="P6322", crystal_class="622P", synonyms=("P 63 2 2",) + ), + SpaceGroupInfo( + number=183, name="P6mm", crystal_class="6mmP", synonyms=("P 6 m m",) + ), + SpaceGroupInfo( + number=184, name="P6cc", crystal_class="6mmP", synonyms=("P 6 c c",) + ), + SpaceGroupInfo( + number=185, name="P63cm", crystal_class="6mmP", synonyms=("P 63 c m",) + ), + SpaceGroupInfo( + number=186, name="P63mc", crystal_class="6mmP", synonyms=("P 63 m c",) + ), + SpaceGroupInfo( + number=187, name="P-6m2", crystal_class="-6m2P", synonyms=("P -6 m 2",) + ), + SpaceGroupInfo( + number=188, name="P-6c2", crystal_class="-6m2P", synonyms=("P -6 c 2",) + ), + SpaceGroupInfo( + number=189, name="P-62m", crystal_class="-62mP", synonyms=("P -6 2 m",) + ), + SpaceGroupInfo( + number=190, name="P-62c", crystal_class="-62mP", synonyms=("P -6 2 c",) + ), + SpaceGroupInfo( + number=191, + name="P6/mmm", + crystal_class="6/mmmP", + synonyms=("P 6/m 2/m 2/m", "P6/m2/m2/m", "P 6/m m m"), + ), + SpaceGroupInfo( + number=192, + name="P6/mcc", + crystal_class="6/mmmP", + synonyms=("P 6/m 2/c 2/c", "P6/m2/c2/c", "P 6/m c c"), + ), + SpaceGroupInfo( + number=193, + name="P63/mcm", + crystal_class="6/mmmP", + synonyms=("P 63/m 2/c 2/m", "P63/m2/c2/m", "P 63/m c m"), + ), + SpaceGroupInfo( + number=194, + name="P63/mmc", + crystal_class="6/mmmP", + synonyms=("P 63/m 2/m 2/c", "P63/m2/m2/c", "P 63/m m c"), + ), + SpaceGroupInfo(number=195, name="P23", crystal_class="23P", synonyms=("P 2 3",)), + SpaceGroupInfo(number=196, name="F23", crystal_class="23F", synonyms=("F 2 3",)), + SpaceGroupInfo(number=197, name="I23", crystal_class="23I", synonyms=("I 2 3",)), + SpaceGroupInfo(number=198, name="P213", crystal_class="23P", synonyms=("P 21 3",)), + SpaceGroupInfo(number=199, name="I213", crystal_class="23I", synonyms=("I 21 3",)), + SpaceGroupInfo( + number=200, + name="Pm-3", + crystal_class="m-3P", + synonyms=("P 2/m -3", "P2/m-3", "P m -3"), + ), + SpaceGroupInfo( + number=201, + name="Pn-3", + crystal_class="m-3P", + synonyms=("P 2/n -3", "P2/n-3", "P n -3"), + ), + SpaceGroupInfo( + number=202, + name="Fm-3", + crystal_class="m-3F", + synonyms=("F 2/m -3", "F2/m-3", "F m -3"), + ), + SpaceGroupInfo( + number=203, + name="Fd-3", + crystal_class="m-3F", + synonyms=("F 2/d -3", "F2/d-3", "F d -3"), + ), + SpaceGroupInfo( + number=204, + name="Im-3", + crystal_class="m-3I", + synonyms=("I 2/m -3", "I2/m-3", "I m -3"), + ), + SpaceGroupInfo( + number=205, + name="Pa-3", + crystal_class="m-3P", + synonyms=("P 21/a -3", "P21/a-3", "P a -3"), + ), + SpaceGroupInfo( + number=206, + name="Ia-3", + crystal_class="m-3I", + synonyms=("I 21/a -3", "I21/a-3", "I a -3"), + ), + SpaceGroupInfo( + number=207, name="P432", crystal_class="432P", synonyms=("P 4 3 2",) + ), + SpaceGroupInfo( + number=208, name="P4232", crystal_class="432P", synonyms=("P 42 3 2",) + ), + SpaceGroupInfo( + number=209, name="F432", crystal_class="432F", synonyms=("F 4 3 2",) + ), + SpaceGroupInfo( + number=210, name="F4132", crystal_class="432F", synonyms=("F 41 3 2",) + ), + SpaceGroupInfo( + number=211, name="I432", crystal_class="432I", synonyms=("I 4 3 2",) + ), + SpaceGroupInfo( + number=212, name="P4332", crystal_class="432P", synonyms=("P 43 3 2",) + ), + SpaceGroupInfo( + number=213, name="P4132", crystal_class="432P", synonyms=("P 41 3 2",) + ), + SpaceGroupInfo( + number=214, name="I4132", crystal_class="432I", synonyms=("I 41 3 2",) + ), + SpaceGroupInfo( + number=215, name="P-43m", crystal_class="-43mP", synonyms=("P -4 3 m",) + ), + SpaceGroupInfo( + number=216, name="F-43m", crystal_class="-43mF", synonyms=("F -4 3 m",) + ), + SpaceGroupInfo( + number=217, name="I-43m", crystal_class="-43mI", synonyms=("I -4 3 m",) + ), + SpaceGroupInfo( + number=218, name="P-43n", crystal_class="-43mP", synonyms=("P -4 3 n",) + ), + SpaceGroupInfo( + number=219, name="F-43c", crystal_class="-43mF", synonyms=("F -4 3 c",) + ), + SpaceGroupInfo( + number=220, name="I-43d", crystal_class="-43mI", synonyms=("I -4 3 d",) + ), + SpaceGroupInfo( + number=221, + name="Pm-3m", + crystal_class="m-3mP", + synonyms=("P 4/m -3 2/m", "P4/m-32/m", "P m -3 m"), + ), + SpaceGroupInfo( + number=222, + name="Pn-3n", + crystal_class="m-3mP", + synonyms=("P 4/n -3 2/n", "P4/n-32/n", "P n -3 n"), + ), + SpaceGroupInfo( + number=223, + name="Pm-3n", + crystal_class="m-3mP", + synonyms=("P 42/m -3 2/n", "P42/m-32/n", "P m -3 n"), + ), + SpaceGroupInfo( + number=224, + name="Pn-3m", + crystal_class="m-3mP", + synonyms=("P 42/n -3 2/m", "P42/n-32/m", "P n -3 m"), + ), + SpaceGroupInfo( + number=225, + name="Fm-3m", + crystal_class="m-3mF", + synonyms=("F 4/m -3 2/m", "F4/m-32/m", "F m -3 m"), + ), + SpaceGroupInfo( + number=226, + name="Fm-3c", + crystal_class="m-3mF", + synonyms=("F 4/m -3 2/c", "F4/m-32/c", "F m -3 c"), + ), + SpaceGroupInfo( + number=227, + name="Fd-3m", + crystal_class="m-3mF", + synonyms=("F 41/d -3 2/m", "F41/d-32/m", "F d -3 m"), + ), + SpaceGroupInfo( + number=228, + name="Fd-3c", + crystal_class="m-3mF", + synonyms=("F 41/d -3 2/c", "F41/d-32/c", "F d -3 c"), + ), + SpaceGroupInfo( + number=229, + name="Im-3m", + crystal_class="m-3mI", + synonyms=("I 4/m -3 2/m", "I4/m-32/m", "I m -3 m"), + ), + SpaceGroupInfo( + number=230, + name="Ia-3d", + crystal_class="m-3mI", + synonyms=("I 41/a -3 2/d", "I41/a-32/d", "I a -3 d"), + ), ] SPACEGROUP_MAP = OrderedDict((info.name, info) for info in SPACEGROUP_DATA) +for tpl in SPACEGROUP_DATA: + # Done this way so that first elemets in map are on item per spacegroup + for tag in tpl.synonyms: + SPACEGROUP_MAP[tag] = tpl # Space group names for space groups compatible with chiral molecules, # i.e. that do not contain mirror planes or centres of symmetry, @@ -399,8 +1015,9 @@ ) UI_LATTICES = BRAVAIS_LATTICES + ("mI",) + def filter_crystal_classes(bravais_lattice, crystal_classes=()): - """ Filter crystal classes to select those compatible with selected Bravais lattice + """Filter crystal classes to select those compatible with selected Bravais lattice including sublattices @@ -414,7 +1031,8 @@ def filter_crystal_classes(bravais_lattice, crystal_classes=()): """ compatibles = SUB_LATTICE_MAP[bravais_lattice[0]] result = tuple( - xcls for xcls in crystal_classes + xcls + for xcls in crystal_classes if CRYSTAL_CLASS_MAP[xcls].bravais_lattice[0] in compatibles ) # @@ -436,7 +1054,7 @@ def space_groups_from_params(lattices=(), point_groups=(), chiral_only=True): if chiral_only: space_groups = XTAL_SPACEGROUPS[1:] else: - space_groups = list(SPACEGROUP_MAP) + space_groups = list(info.name for info in SPACEGROUP_DATA) if lattices or point_groups: sgs1 = [] if lattices: @@ -574,10 +1192,10 @@ def strategy_laue_group(crystal_classes: tuple, phasing=False): return result -def regularise_space_group(sgname:str): - """Convert finput (ISPyB) space gorup name to official space group name""" +def regularise_space_group(sgname: str): + """Convert input (ISPyB) space group name to official space group name""" - if sgname in SPACEGROUP_MAP: - return sgname - else: - return None + sginfo = SPACEGROUP_MAP.get(sgname) + if sginfo: + return sginfo.name + return None diff --git a/mxcubecore/model/queue_model_objects.py b/mxcubecore/model/queue_model_objects.py index 928668a812..359c6e283a 100644 --- a/mxcubecore/model/queue_model_objects.py +++ b/mxcubecore/model/queue_model_objects.py @@ -2112,13 +2112,15 @@ def set_pre_strategy_params( # noqa: C901 from mxcubecore.HardwareObjects.Gphl import GphlMessages if space_group: - if space_group in crystal_symmetry.SPACEGROUP_MAP: - self.space_group = space_group - else: + sginfo = crystal_symmetry.SPACEGROUP_MAP.get(space_group) + if sginfo is None: raise ValueError( "Invalid space group %s, not in crystal_symmetry.SPACEGROUP_MAP" % space_group ) + else: + space_group = sginfo.name + self.space_group = space_group else: space_group = self.space_group if crystal_classes: From 101f49f7a1136380dbd9b0c82ff4ae62c76c86de Mon Sep 17 00:00:00 2001 From: rhfogh Date: Fri, 11 Oct 2024 15:39:06 +0100 Subject: [PATCH 2/4] Cleaned up further for linting --- .../HardwareObjects/Gphl/GphlWorkflow.py | 116 +++++++++--------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/mxcubecore/HardwareObjects/Gphl/GphlWorkflow.py b/mxcubecore/HardwareObjects/Gphl/GphlWorkflow.py index 4c24af9920..13d97d70f5 100644 --- a/mxcubecore/HardwareObjects/Gphl/GphlWorkflow.py +++ b/mxcubecore/HardwareObjects/Gphl/GphlWorkflow.py @@ -2356,64 +2356,64 @@ def process_centring_request(self, payload, correlation_id): "Sample re-centering now active - Zoom in before continuing." ) - # else: - # # TODO The UI popup does not work in mxcubeweb - # # NB Temporarily inactivated pending a fix - # - # # Ask user to zoom - # info_text = """Automatic sample re-centering is now active - # Switch to maximum zoom before continuing""" - # - # schema = { - # "title": "GΦL Translational calibration", - # "type": "object", - # "properties": {}, - # } - # fields = schema["properties"] - # fields["_info"] = { - # "type": "textdisplay", - # "default": info_text, - # "readOnly": True, - # } - # ui_schema = { - # "ui:order": ["_info"], - # "ui:widget": "vertical_box", - # "ui:options": { - # "return_signal": self.PARAMETER_RETURN_SIGNAL, - # # "update_signal": self.PARAMETER_UPDATE_SIGNAL, - # # "update_on_change": "selected", - # }, - # } - # self._return_parameters = gevent.event.AsyncResult() - # try: - # dispatcher.connect( - # self.receive_ok_cancel, - # self.PARAMETER_RETURN_SIGNAL, - # dispatcher.Any, - # ) - # responses = dispatcher.send( - # self.PARAMETERS_NEEDED, - # self, - # schema, - # ui_schema, - # ) - # if not responses: - # self._return_parameters.set_exception( - # RuntimeError( - # "Signal %s is not connected" % self.PARAMETERS_NEEDED - # ) - # ) - # - # result = self._return_parameters.get() - # if result is StopIteration: - # return StopIteration - # finally: - # dispatcher.disconnect( - # self.receive_ok_cancel, - # self.PARAMETER_RETURN_SIGNAL, - # dispatcher.Any, - # ) - # self._return_parameters = None + # else: + # # TODO The UI popup does not work in mxcubeweb + # # NB Temporarily inactivated pending a fix + # + # # Ask user to zoom + # info_text = """Automatic sample re-centering is now active + # Switch to maximum zoom before continuing""" + # + # schema = { + # "title": "GΦL Translational calibration", + # "type": "object", + # "properties": {}, + # } + # fields = schema["properties"] + # fields["_info"] = { + # "type": "textdisplay", + # "default": info_text, + # "readOnly": True, + # } + # ui_schema = { + # "ui:order": ["_info"], + # "ui:widget": "vertical_box", + # "ui:options": { + # "return_signal": self.PARAMETER_RETURN_SIGNAL, + # # "update_signal": self.PARAMETER_UPDATE_SIGNAL, + # # "update_on_change": "selected", + # }, + # } + # self._return_parameters = gevent.event.AsyncResult() + # try: + # dispatcher.connect( + # self.receive_ok_cancel, + # self.PARAMETER_RETURN_SIGNAL, + # dispatcher.Any, + # ) + # responses = dispatcher.send( + # self.PARAMETERS_NEEDED, + # self, + # schema, + # ui_schema, + # ) + # if not responses: + # self._return_parameters.set_exception( + # RuntimeError( + # "Signal %s is not connected" % self.PARAMETERS_NEEDED + # ) + # ) + # + # result = self._return_parameters.get() + # if result is StopIteration: + # return StopIteration + # finally: + # dispatcher.disconnect( + # self.receive_ok_cancel, + # self.PARAMETER_RETURN_SIGNAL, + # dispatcher.Any, + # ) + # self._return_parameters = None settings = goniostatRotation.axisSettings.copy() if goniostatTranslation is not None: From 1b429b94779a455ac75ab0a298763c6b182f9a0d Mon Sep 17 00:00:00 2001 From: rhfogh Date: Fri, 11 Oct 2024 16:34:35 +0100 Subject: [PATCH 3/4] Added extra Space Group synonyms for P2221 and P21212 non-std settings --- mxcubecore/model/crystal_symmetry.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mxcubecore/model/crystal_symmetry.py b/mxcubecore/model/crystal_symmetry.py index 680d6faa9a..d4275ecea3 100644 --- a/mxcubecore/model/crystal_symmetry.py +++ b/mxcubecore/model/crystal_symmetry.py @@ -207,10 +207,16 @@ ), SpaceGroupInfo(number=16, name="P222", crystal_class="222P", synonyms=("P 2 2 2",)), SpaceGroupInfo( - number=17, name="P2221", crystal_class="222P", synonyms=("P 2 2 21",) + number=17, + name="P2221", + crystal_class="222P", + synonyms=("P 2 2 21", 'P2212', 'P 2 21 2', 'P2122', 'P 21 2 2') ), SpaceGroupInfo( - number=18, name="P21212", crystal_class="222P", synonyms=("P 21 21 2",) + number=18, + name="P21212", + crystal_class="222P", + synonyms=("P 21 21 2",'P21221', 'P 21 2 21', 'P22121', 'P 2 21 21') ), SpaceGroupInfo( number=19, name="P212121", crystal_class="222P", synonyms=("P 21 21 21",) From 842955ab45cf27e97095131d5c92844281434fb0 Mon Sep 17 00:00:00 2001 From: rhfogh Date: Fri, 11 Oct 2024 16:35:54 +0100 Subject: [PATCH 4/4] Run black --- mxcubecore/model/crystal_symmetry.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mxcubecore/model/crystal_symmetry.py b/mxcubecore/model/crystal_symmetry.py index d4275ecea3..c2234141b2 100644 --- a/mxcubecore/model/crystal_symmetry.py +++ b/mxcubecore/model/crystal_symmetry.py @@ -210,13 +210,13 @@ number=17, name="P2221", crystal_class="222P", - synonyms=("P 2 2 21", 'P2212', 'P 2 21 2', 'P2122', 'P 21 2 2') + synonyms=("P 2 2 21", "P2212", "P 2 21 2", "P2122", "P 21 2 2"), ), SpaceGroupInfo( number=18, name="P21212", crystal_class="222P", - synonyms=("P 21 21 2",'P21221', 'P 21 2 21', 'P22121', 'P 2 21 21') + synonyms=("P 21 21 2", "P21221", "P 21 2 21", "P22121", "P 2 21 21"), ), SpaceGroupInfo( number=19, name="P212121", crystal_class="222P", synonyms=("P 21 21 21",)