From b524023b482ff9d7ede9884fb8f7b6929727468e Mon Sep 17 00:00:00 2001 From: Max <17359435+MaxPelly@users.noreply.github.com> Date: Tue, 18 Aug 2026 10:30:30 +0100 Subject: [PATCH 1/3] Update G2phase_CIF.py Add check to compare calculated site multiplicities to those stated in the cif file. Will hopefully make issues such as #352 more obvious. --- GSASII/imports/G2phase_CIF.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/GSASII/imports/G2phase_CIF.py b/GSASII/imports/G2phase_CIF.py index a9a0067d..245b20ae 100644 --- a/GSASII/imports/G2phase_CIF.py +++ b/GSASII/imports/G2phase_CIF.py @@ -427,6 +427,14 @@ def Reader(self,filename, ParentFrame=None, usedRanIdList=[], **unused): atomlbllist = [] # table to look up atom IDs atomloop = blk.GetLoop('_atom_site_label') atomkeys = [i.lower() for i in atomloop.keys()] + for _key_i, _key in enumerate(atomkeys): + if "site_symmetry_multiplicity" in _key: # accept both _atom_site_site_symmetry_multiplicity and _atom_site_symmetry_multiplicity + multiplicity_key = _key + multiplicity_key_i = _key_i + break + else: + multiplicity_key = False + self.warnings += "Unable to find site multiplicities in CIF, will not be able to cross check calculated multiplicities." if not blk.get('_atom_site_type_symbol'): isodistort_warnings += '\natom types are missing. \n Check & revise atom types as needed' if magnetic: @@ -556,6 +564,13 @@ def Reader(self,filename, ParentFrame=None, usedRanIdList=[], **unused): atomlist[9] = 'I' atomlist[11:17] = [0.,0.,0.,0.,0.,0.] atomlist[7],atomlist[8] = G2spc.SytSym(atomlist[3:6],SGData)[:2] + if multiplicity_key: + expected_multiplicity = int(aitem[multiplicity_key_i]) + observed_multiplicity = atomlist[8] + if expected_multiplicity == observed_multiplicity: + pass + else: + self.warnings += f"Given and calculated multiplicity for {atomlist[0]} differ\n" atomlist[1] = G2elem.FixValence(atomlist[1]) atomlist.append(ran.randint(0,sys.maxsize)) # add a random Id self.Phase['Atoms'].append(atomlist) From 03c5947229713bd63bc858cb967973989e841b73 Mon Sep 17 00:00:00 2001 From: Brian Toby Date: Tue, 18 Aug 2026 17:06:21 -0500 Subject: [PATCH 2/3] Comment out warning for missing multiplicities in CIF Comment out warning message for missing site multiplicities. --- GSASII/imports/G2phase_CIF.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GSASII/imports/G2phase_CIF.py b/GSASII/imports/G2phase_CIF.py index 245b20ae..b391b35b 100644 --- a/GSASII/imports/G2phase_CIF.py +++ b/GSASII/imports/G2phase_CIF.py @@ -434,7 +434,8 @@ def Reader(self,filename, ParentFrame=None, usedRanIdList=[], **unused): break else: multiplicity_key = False - self.warnings += "Unable to find site multiplicities in CIF, will not be able to cross check calculated multiplicities." + #self.warnings += "Unable to find site multiplicities in CIF, will not be able to cross check calculated multiplicities." + print("Unable to find site multiplicities in CIF. No multiplicity cross check.") if not blk.get('_atom_site_type_symbol'): isodistort_warnings += '\natom types are missing. \n Check & revise atom types as needed' if magnetic: From ad71ab75d8c8e30c0347a18ba147ec488b7f5aad Mon Sep 17 00:00:00 2001 From: Brian Toby Date: Wed, 19 Aug 2026 12:39:23 -0500 Subject: [PATCH 3/3] Improve multiplicity warning messages Update warning messages for multiplicity mismatch in G2phase_CIF.py. --- GSASII/imports/G2phase_CIF.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GSASII/imports/G2phase_CIF.py b/GSASII/imports/G2phase_CIF.py index b391b35b..34a53e13 100644 --- a/GSASII/imports/G2phase_CIF.py +++ b/GSASII/imports/G2phase_CIF.py @@ -571,7 +571,7 @@ def Reader(self,filename, ParentFrame=None, usedRanIdList=[], **unused): if expected_multiplicity == observed_multiplicity: pass else: - self.warnings += f"Given and calculated multiplicity for {atomlist[0]} differ\n" + self.warnings += f"Provided ({expected_multiplicity}) and calculated ({observed_multiplicity}) multiplicity for {atomlist[0]} differ\n" atomlist[1] = G2elem.FixValence(atomlist[1]) atomlist.append(ran.randint(0,sys.maxsize)) # add a random Id self.Phase['Atoms'].append(atomlist)