def test_fromComposition(self): """check SFAverage.fromComposition() """ sfavg1 = SFAverage.fromComposition({'Na' : 1, 'Cl' : 1}, self.sftx) fm = ['Na', 0.25, 'Cl', 0.75, 'Cl', 0.25, 'Na', 0.5, 'Na', 0.25] smblcnts = zip(fm[0::2], fm[1::2]) sfavg2 = SFAverage.fromComposition(smblcnts, self.sftx) self.assertEqual(sfavg1.f1sum, sfavg2.f1sum) self.assertEqual(sfavg1.f2sum, sfavg2.f2sum) self.assertEqual(sfavg1.count, sfavg2.count) sfempty = SFAverage.fromComposition([], self.sftx) self.assertEqual(0, sfempty.f1avg) self.assertEqual(0, sfempty.f2avg) self.assertEqual(0, sfempty.count) return
def calc_fs_from_comps(*comps: Formula, qa=0) -> List[float]: """Calculate the compositional average scattering factor from the compositions.""" def to_dict(f: Formula): dct = {} c = f.composition() for tup in c: dct[tup[0]] = tup[1] return dct return [ SFAverage.fromComposition(to_dict(comp), XTB, qa).f1avg for comp in comps ]
def calc_fs_from_comps(*comps: Dict[str, int], qa=0) -> List[float]: """Calculate the compositional average scattering factor from the compositions.""" return [SFAverage.fromComposition(comp, XTB, qa).f1avg for comp in comps]