From a305b9a274506213d4452c489e5b8f22c7f4943c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Aug 2026 10:43:51 +0200 Subject: [PATCH 1/4] expose PowderPatternDiffraction.X2XCorrPhase --- src/extensions/powderpatterndiffraction_ext.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/extensions/powderpatterndiffraction_ext.cpp b/src/extensions/powderpatterndiffraction_ext.cpp index def3afa..839c925 100644 --- a/src/extensions/powderpatterndiffraction_ext.cpp +++ b/src/extensions/powderpatterndiffraction_ext.cpp @@ -90,6 +90,7 @@ void wrap_powderpatterndiffraction() &PowderPatternDiffraction::GetNbReflBelowMaxSinThetaOvLambda) .def("GetFhklObsSq", &PowderPatternDiffraction::GetFhklObsSq, return_value_policy()) + .def("X2XCorrPhase", &PowderPatternDiffraction::X2XCorrPhase) ; } From 856ac8a97e8faea84c0989af566131d57718ea9a Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Aug 2026 10:47:54 +0200 Subject: [PATCH 2/4] add news file --- news/x2xcorrphase-public.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 news/x2xcorrphase-public.rst diff --git a/news/x2xcorrphase-public.rst b/news/x2xcorrphase-public.rst new file mode 100644 index 0000000..45ccd5d --- /dev/null +++ b/news/x2xcorrphase-public.rst @@ -0,0 +1,23 @@ +**Added:** + +* Expose PowderPatternDiffraction.X2XCorrPhase + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* From f5ac65d32a1c1145e12af751f147063bcbf0c231 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Aug 2026 13:22:32 +0200 Subject: [PATCH 3/4] Add test for X2XCorrPhase and 2ThetaFlatDetDispRatioPhase --- tests/test_powderpattern.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/test_powderpattern.py b/tests/test_powderpattern.py index b1d43dc..da6bb31 100644 --- a/tests/test_powderpattern.py +++ b/tests/test_powderpattern.py @@ -364,7 +364,37 @@ class TestPowderPatternBackground(unittest.TestCase): class TestPowderPatternDiffraction(unittest.TestCase): - pass + def test_X2XCorrPhase_flat_detector_displacement(self): + pp = PowderPattern() + pp.SetWavelength(1.54056) + pp.SetPowderPatternPar( + np.deg2rad(5), np.deg2rad(0.1), 851 + ) + crystal = makeCrystal(*makeScatterer()) + pdiff = pp.AddPowderPatternDiffraction(crystal) + + x = np.deg2rad(30) + self.assertAlmostEqual(pdiff.X2XCorrPhase(x), x) + + phase_ratio = 1e-4 + pdiff.GetPar("2ThetaFlatDetDispRatioPhase").SetValue(phase_ratio) + expected = x + np.arctan( + phase_ratio + * np.sin(2 * x) + / (2 - 2 * phase_ratio * np.sin(x) ** 2) + ) + self.assertAlmostEqual(pdiff.X2XCorrPhase(x), expected) + + pattern_ratio = 2e-4 + pp.GetPar("2ThetaFlatDetDispRatio").SetValue(pattern_ratio) + total_ratio = phase_ratio + pattern_ratio + expected = x + np.arctan( + total_ratio + * np.sin(2 * x) + / (2 - 2 * total_ratio * np.sin(x) ** 2) + ) + self.assertAlmostEqual(pdiff.X2XCorrPhase(x), expected) + # def test___init__(self): assert False # def test_ExtractLeBail(self): assert False # def test_GetExtractionMode(self): assert False From f45a62ce076e49d99c5940ad4e244d3bb7b303cb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 11:23:43 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit hooks --- tests/test_powderpattern.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/test_powderpattern.py b/tests/test_powderpattern.py index da6bb31..a5420a1 100644 --- a/tests/test_powderpattern.py +++ b/tests/test_powderpattern.py @@ -367,9 +367,7 @@ class TestPowderPatternDiffraction(unittest.TestCase): def test_X2XCorrPhase_flat_detector_displacement(self): pp = PowderPattern() pp.SetWavelength(1.54056) - pp.SetPowderPatternPar( - np.deg2rad(5), np.deg2rad(0.1), 851 - ) + pp.SetPowderPatternPar(np.deg2rad(5), np.deg2rad(0.1), 851) crystal = makeCrystal(*makeScatterer()) pdiff = pp.AddPowderPatternDiffraction(crystal)