Skip to content

Commit 6b5a670

Browse files
clemischvincefn
andauthored
Expose GetPowderPatternObsSigma and SetPowderPatternObsSigma (#84)
* Add SetPowderPatternObsSigma to ObjCryst and expose GetPowderPatternObsSigma/SetPowderPatternObsSigma in the Python bindings * Add test for GetPowderPatternObsSigma/SetPowderPatternObsSigma * add news/main.rst * fix news file * Require libobjcryst>=2026.1 --------- Co-authored-by: Vincent Favre-Nicolin <vincefn@gmail.com>
1 parent 23a2080 commit 6b5a670

File tree

4 files changed

+48
-1
lines changed

4 files changed

+48
-1
lines changed

news/main.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
**Added:**
2+
3+
* Expose PowderPattern.GetPowderPatternObsSigma and PowderPattern.SetPowderPatternObsSigma from objcryst
4+
5+
**Changed:**
6+
7+
* <news item>
8+
9+
**Deprecated:**
10+
11+
* <news item>
12+
13+
**Removed:**
14+
15+
* <news item>
16+
17+
**Fixed:**
18+
19+
* <news item>
20+
21+
**Security:**
22+
23+
* <news item>

requirements/conda.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
numpy
2-
libobjcryst
2+
libobjcryst>=2026.1
33
libboost-devel
44
libboost-python
55
packaging # for matplotlib version parsing in powderpattern.py

src/extensions/powderpattern_ext.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ void setpowderpatternobs (PowderPattern& pp, bp::object x)
141141
pp.SetPowderPatternObs(cvx);
142142
}
143143

144+
void setpowderpatternobssigma (PowderPattern& pp, bp::object x)
145+
{
146+
CrystVector_REAL cvx;
147+
assignCrystVector(cvx, x);
148+
pp.SetPowderPatternObsSigma(cvx);
149+
}
150+
144151

145152
// Allow override (since we can't benefit from override in RefinableObjWrap)
146153
class PowderPatternWrap : public PowderPattern, public wrapper<PowderPattern>
@@ -230,6 +237,9 @@ void wrap_powderpattern()
230237
.def("GetPowderPatternObs",
231238
&PowderPattern::GetPowderPatternObs,
232239
return_value_policy<copy_const_reference>())
240+
.def("GetPowderPatternObsSigma",
241+
&PowderPattern::GetPowderPatternObsSigma,
242+
return_value_policy<copy_const_reference>())
233243
.def("GetPowderPatternX",
234244
&PowderPattern::GetPowderPatternX,
235245
return_value_policy<copy_const_reference>())
@@ -287,6 +297,9 @@ void wrap_powderpattern()
287297
.def("SetPowderPatternObs",
288298
&setpowderpatternobs,
289299
bp::arg("obs"))
300+
.def("SetPowderPatternObsSigma",
301+
&setpowderpatternobssigma,
302+
bp::arg("sigma"))
290303
.def("FitScaleFactorForR",
291304
&PowderPattern::FitScaleFactorForR)
292305
.def("FitScaleFactorForIntegratedR",

tests/test_powderpattern.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,17 @@ def test_SetPowderPatternObs(self):
101101
self.assertTrue(np.array_equal(obs[::-1], pp.GetPowderPatternObs()))
102102
return
103103

104+
def test_SetPowderPatternObsSigma(self):
105+
pp = self.pp
106+
obs = np.array([1.0, 3.0, 7.0])
107+
sig = np.array([1.0, 2.0, 3.0])
108+
self.assertRaises(ObjCrystException, pp.SetPowderPatternObsSigma, sig)
109+
pp.SetPowderPatternPar(0, 0.5, 3)
110+
pp.SetPowderPatternObs(obs)
111+
pp.SetPowderPatternObsSigma(sig)
112+
self.assertTrue(np.array_equal(sig, pp.GetPowderPatternObsSigma()))
113+
return
114+
104115
def test_SetPowderPatternPar(self):
105116
pp = self.pp
106117
pp.SetPowderPatternPar(0, 0.25, 5)

0 commit comments

Comments
 (0)