Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions news/main.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
**Added:**

* Expose PowderPattern.GetPowderPatternObsSigma and PowderPattern.SetPowderPatternObsSigma from objcryst
13 changes: 13 additions & 0 deletions src/extensions/powderpattern_ext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,13 @@ void setpowderpatternobs (PowderPattern& pp, bp::object x)
pp.SetPowderPatternObs(cvx);
}

void setpowderpatternobssigma (PowderPattern& pp, bp::object x)
{
CrystVector_REAL cvx;
assignCrystVector(cvx, x);
pp.SetPowderPatternObsSigma(cvx);
}


// Allow override (since we can't benefit from override in RefinableObjWrap)
class PowderPatternWrap : public PowderPattern, public wrapper<PowderPattern>
Expand Down Expand Up @@ -230,6 +237,9 @@ void wrap_powderpattern()
.def("GetPowderPatternObs",
&PowderPattern::GetPowderPatternObs,
return_value_policy<copy_const_reference>())
.def("GetPowderPatternObsSigma",
&PowderPattern::GetPowderPatternObsSigma,
return_value_policy<copy_const_reference>())
.def("GetPowderPatternX",
&PowderPattern::GetPowderPatternX,
return_value_policy<copy_const_reference>())
Expand Down Expand Up @@ -287,6 +297,9 @@ void wrap_powderpattern()
.def("SetPowderPatternObs",
&setpowderpatternobs,
bp::arg("obs"))
.def("SetPowderPatternObsSigma",
&setpowderpatternobssigma,
bp::arg("sigma"))
.def("FitScaleFactorForR",
&PowderPattern::FitScaleFactorForR)
.def("FitScaleFactorForIntegratedR",
Expand Down
11 changes: 11 additions & 0 deletions tests/test_powderpattern.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,17 @@ def test_SetPowderPatternObs(self):
self.assertTrue(np.array_equal(obs[::-1], pp.GetPowderPatternObs()))
return

def test_SetPowderPatternObsSigma(self):
pp = self.pp
obs = np.array([1.0, 3.0, 7.0])
sig = np.array([1.0, 2.0, 3.0])
self.assertRaises(ObjCrystException, pp.SetPowderPatternObsSigma, sig)
pp.SetPowderPatternPar(0, 0.5, 3)
pp.SetPowderPatternObs(obs)
pp.SetPowderPatternObsSigma(sig)
self.assertTrue(np.array_equal(sig, pp.GetPowderPatternObsSigma()))
return

def test_SetPowderPatternPar(self):
pp = self.pp
pp.SetPowderPatternPar(0, 0.25, 5)
Expand Down
Loading