Skip to content

Commit 52eb53d

Browse files
committed
Switch arguments in SFAverage.fromComposition.
It feels more natural to order SFAverage.fromComposition arguments as (`composition`, `sftb`, `q`) and likewise fromStructure arguments as (`structure`, `sftb`, `q`).
1 parent 95cbd15 commit 52eb53d

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

Diff for: diffpy/srreal/sfaverage.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
from diffpy.srreal.scatteringfactortable import SFTXray
2727
xtb = SFTXray()
2828
qa = np.linspace(0, 25)
29-
sfavg1 = SFAverage.fromComposition(xtb, {'Na' : 1, 'Cl' : 1}, qa)
30-
sfavg2 = SFAverage.fromComposition(xtb, [('Mn', 1), ('O', 2)], qa)
29+
sfavg1 = SFAverage.fromComposition({'Na' : 1, 'Cl' : 1}, xtb, qa)
30+
sfavg2 = SFAverage.fromComposition([('Mn', 1), ('O', 2)], xtb, qa)
3131
3232
from diffpy.Structure import loadStructure
3333
from diffpy.srreal.pdfcalculator import DebyePDFCalculator
3434
dpdfc = DebyePDFCalculator()
3535
dpdfc(loadStructure('rutile.cif'))
36-
sfavg3 = SFAverage.fromStructure(dpdfc.scatteringfactortable,
37-
dpdfc.getStructure(), dpdfc.qgrid)
36+
sfavg3 = SFAverage.fromStructure(dpdfc.getStructure(),
37+
dpdfc.scatteringfactortable, dpdfc.qgrid)
3838
"""
3939

4040

@@ -76,18 +76,18 @@ class SFAverage(object):
7676
composition = None
7777

7878
@classmethod
79-
def fromStructure(cls, sftb, stru, q=0):
79+
def fromStructure(cls, stru, sftb, q=0):
8080
"""\
8181
Calculate average scattering factors from a structure object.
8282
8383
Parameters
8484
----------
85-
sftb : ScatteringFactorTable
86-
The ScatteringFactorTable object for looking up the values.
8785
stru : diffpy Structure or pyobjcryst Crystal or StructureAdapter
8886
The structure object that stores the atom species and their
8987
occupancies. Can be any type with a registered conversion
9088
to the StructureAdapter class.
89+
sftb : ScatteringFactorTable
90+
The ScatteringFactorTable object for looking up the values.
9191
q : float or NumPy array (optional)
9292
The Q value in inverse Angstroms for which to lookup
9393
the scattering factor values.
@@ -105,7 +105,7 @@ def fromStructure(cls, sftb, stru, q=0):
105105
if hasattr(type(stru), 'composition'):
106106
composition = stru.composition
107107
if isinstance(composition, dict):
108-
return cls.fromComposition(sftb, composition, q)
108+
return cls.fromComposition(composition, sftb, q)
109109
# otherwise let's convert to a known structure type
110110
from diffpy.srreal.structureadapter import createStructureAdapter
111111
adpt = createStructureAdapter(stru)
@@ -114,21 +114,21 @@ def fromStructure(cls, sftb, stru, q=0):
114114
smbl = adpt.siteAtomType(i)
115115
cnt = adpt.siteOccupancy(i) * adpt.siteMultiplicity(i)
116116
composition[smbl] = composition.get(smbl, 0) + cnt
117-
return cls.fromComposition(sftb, composition, q)
117+
return cls.fromComposition(composition, sftb, q)
118118

119119

120120
@classmethod
121-
def fromComposition(cls, sftb, composition, q=0):
121+
def fromComposition(cls, composition, sftb, q=0):
122122
"""\
123123
Calculate average scattering factors from atom concentrations.
124124
125125
Parameters
126126
----------
127-
sftb : ScatteringFactorTable
128-
The ScatteringFactorTable object for looking up the values.
129127
composition : dictionary or a list of (symbol, amount) pairs.
130128
The chemical composition for evaluating the average. Atom
131129
symbols may repeat when it is a list of (symbol, amount) pairs.
130+
sftb : ScatteringFactorTable
131+
The ScatteringFactorTable object for looking up the values.
132132
q : float or NumPy array (optional)
133133
The Q value in inverse Angstroms for which to lookup
134134
the scattering factor values.

Diff for: diffpy/srreal/tests/testsfaverage.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def test_fromStructure_CdSe(self):
3030
"""check SFAverage.fromStructure() for CdSe
3131
"""
3232
cdse = loadDiffPyStructure('CdSe_cadmoselite.cif')
33-
sfavg = SFAverage.fromStructure(self.sftx, cdse)
33+
sfavg = SFAverage.fromStructure(cdse, self.sftx)
3434
fcd = self.sftx.lookup('Cd')
3535
fse = self.sftx.lookup('Se')
3636
self.assertTrue(isinstance(sfavg.f1sum, float))
@@ -39,29 +39,29 @@ def test_fromStructure_CdSe(self):
3939
self.assertEqual(4, sfavg.count)
4040
self.assertEqual(cdse.composition, sfavg.composition)
4141
qa = numpy.arange(0, 25, 0.1)
42-
sfavg2 = SFAverage.fromStructure(self.sftx, cdse, qa)
42+
sfavg2 = SFAverage.fromStructure(cdse, self.sftx, qa)
4343
self.assertTrue(isinstance(sfavg2.f1sum, numpy.ndarray))
4444
self.assertNotEqual(sfavg2.f1sum[0], sfavg2.f1sum[-1])
4545
self.assertEqual(sfavg.f1sum, sfavg2.f1sum[0])
4646
self.assertEqual(sfavg.f2sum, sfavg2.f2sum[0])
47-
sfavg3 = SFAverage.fromStructure(self.sftn, cdse, qa)
47+
sfavg3 = SFAverage.fromStructure(cdse, self.sftn, qa)
4848
self.assertEqual(sfavg3.f1sum[0], sfavg3.f1sum[-1])
4949
self.assertRaises(TypeError, SFAverage.fromStructure,
50-
self.sftx, 'notastructure')
50+
'notastructure', self.sftx)
5151
return
5252

5353

5454
def test_fromComposition(self):
5555
"""check SFAverage.fromComposition()
5656
"""
57-
sfavg1 = SFAverage.fromComposition(self.sftx, {'Na' : 1, 'Cl' : 1})
57+
sfavg1 = SFAverage.fromComposition({'Na' : 1, 'Cl' : 1}, self.sftx)
5858
fm = ['Na', 0.25, 'Cl', 0.75, 'Cl', 0.25, 'Na', 0.5, 'Na', 0.25]
5959
smblcnts = zip(fm[0::2], fm[1::2])
60-
sfavg2 = SFAverage.fromComposition(self.sftx, smblcnts)
60+
sfavg2 = SFAverage.fromComposition(smblcnts, self.sftx)
6161
self.assertEqual(sfavg1.f1sum, sfavg2.f1sum)
6262
self.assertEqual(sfavg1.f2sum, sfavg2.f2sum)
6363
self.assertEqual(sfavg1.count, sfavg2.count)
64-
sfempty = SFAverage.fromComposition(self.sftx, [])
64+
sfempty = SFAverage.fromComposition([], self.sftx)
6565
self.assertEqual(0, sfempty.f1avg)
6666
self.assertEqual(0, sfempty.f2avg)
6767
self.assertEqual(0, sfempty.count)
@@ -85,7 +85,7 @@ def test_from_rutile(self):
8585
"""
8686
rutile = loadObjCrystCrystal('rutile.cif')
8787
qa = numpy.arange(0, 25, 0.1)
88-
sfavg = SFAverage.fromStructure(self.sftx, rutile, qa)
88+
sfavg = SFAverage.fromStructure(rutile, self.sftx, qa)
8989
fti = self.sftx.lookup('Ti', qa)
9090
fo = self.sftx.lookup('O', qa)
9191
self.assertTrue(numpy.allclose((fti + 2 * fo) / 3.0, sfavg.f1avg))

0 commit comments

Comments
 (0)