|
1 | 1 | """Tests for the RefineUBModel"""
|
2 | 2 |
|
3 | 3 | import pytest
|
| 4 | +import numpy as np |
4 | 5 | from shiver.models.refine_ub import RefineUBModel
|
| 6 | +from shiver.models.generate import gather_mde_config_dict, save_mde_config_dict |
5 | 7 | from mantid.simpleapi import ( # pylint: disable=no-name-in-module,wrong-import-order
|
6 | 8 | CreateMDWorkspace,
|
7 | 9 | FakeMDEventData,
|
@@ -172,3 +174,98 @@ def test_refine_ub_model():
|
172 | 174 | assert peak_table_model.ws.sample().getOrientedLattice().gamma() == pytest.approx(90)
|
173 | 175 | assert peak_table_model.ws.sample().getOrientedLattice().getuVector() == pytest.approx([1, 0, 0])
|
174 | 176 | assert peak_table_model.ws.sample().getOrientedLattice().getvVector() == pytest.approx([0, 1, 0])
|
| 177 | + |
| 178 | + |
| 179 | +def test_mdeconfig_refine_ub(): |
| 180 | + """test the mdeconfig in RefineUBModel""" |
| 181 | + |
| 182 | + expt_info = CreateSampleWorkspace() |
| 183 | + SetUB(expt_info) |
| 184 | + |
| 185 | + mde = CreateMDWorkspace( |
| 186 | + Dimensions=4, |
| 187 | + Extents="-10,10,-10,10,-10,10,-10,10", |
| 188 | + Names="x,y,z,DeltaE", |
| 189 | + Units="r.l.u.,r.l.u.,r.l.u.,DeltaE", |
| 190 | + Frames="QSample,QSample,QSample,General Frame", |
| 191 | + ) |
| 192 | + mde.addExperimentInfo(expt_info) |
| 193 | + FakeMDEventData(mde, PeakParams="1e+05,6.283,0,0,0,0.02", RandomSeed="3873875") |
| 194 | + FakeMDEventData(mde, PeakParams="1e+05,0,6.283,0,0,0.02", RandomSeed="3873875") |
| 195 | + FakeMDEventData(mde, PeakParams="1e+05,0,0,6.283,0,0.02", RandomSeed="3873875") |
| 196 | + |
| 197 | + # add new MDEConfig |
| 198 | + new_mde_config = {} |
| 199 | + new_mde_config["mde_name"] = mde.name() |
| 200 | + new_mde_config["output_dir"] = "/test/file/path" |
| 201 | + new_mde_config["mde_type"] = "Data" |
| 202 | + save_mde_config_dict(mde.name(), new_mde_config) |
| 203 | + # check the mde config values |
| 204 | + mde_config = gather_mde_config_dict(mde.name()) |
| 205 | + |
| 206 | + assert len(mde_config) == 3 |
| 207 | + |
| 208 | + mdh = CreateMDWorkspace( |
| 209 | + Dimensions=4, |
| 210 | + Extents="-5,5,-5,5,-5,5,-10,10", |
| 211 | + Names="[H,0,0],[0,K,0],[0,0,L],DeltaE", |
| 212 | + Units="r.l.u.,r.l.u.,r.l.u.,DeltaE", |
| 213 | + Frames="HKL,HKL,HKL,General Frame", |
| 214 | + ) |
| 215 | + mdh.addExperimentInfo(expt_info) |
| 216 | + SetUB(mdh) |
| 217 | + FakeMDEventData(mdh, PeakParams="1e+05,1,0,0,0,0.02", RandomSeed="3873875") |
| 218 | + FakeMDEventData(mdh, PeakParams="1e+05,0,1,0,0,0.02", RandomSeed="3873875") |
| 219 | + FakeMDEventData(mdh, PeakParams="1e+05,0,0,1,0,0.02", RandomSeed="3873875") |
| 220 | + mdh.getExperimentInfo(0).run().addProperty("W_MATRIX", [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], True) |
| 221 | + |
| 222 | + mdh = BinMD( |
| 223 | + mdh, |
| 224 | + AlignedDim0="[H,0,0],-2,2,50", |
| 225 | + AlignedDim1="[0,K,0],-2,2,50", |
| 226 | + AlignedDim2="[0,0,L],-2,2,50", |
| 227 | + AlignedDim3="DeltaE,-1.25,1.25,1", |
| 228 | + ) |
| 229 | + |
| 230 | + model = RefineUBModel("mdh", "mde") |
| 231 | + model.predict_peaks() |
| 232 | + |
| 233 | + # peak table model |
| 234 | + peak_table_model = model.get_peaks_table_model() |
| 235 | + peak_table_model.set_peak_number_to_rows() |
| 236 | + |
| 237 | + # recenter peaks |
| 238 | + peak_table_model.recenter_rows([0, 4]) |
| 239 | + |
| 240 | + # refine, should change the lattice parameters and u/v vectors |
| 241 | + peak_table_model.refine([3, 4, 5], "") |
| 242 | + model.update_mde_with_new_ub() |
| 243 | + # check the oriented lattice |
| 244 | + mde_oriented_lattice = mde.getExperimentInfo(0).sample().getOrientedLattice() |
| 245 | + peak_oriented_lattice = peak_table_model.ws.sample().getOrientedLattice() |
| 246 | + |
| 247 | + assert peak_oriented_lattice.a() == mde_oriented_lattice.a() |
| 248 | + assert peak_oriented_lattice.b() == mde_oriented_lattice.b() |
| 249 | + assert peak_oriented_lattice.c() == mde_oriented_lattice.c() |
| 250 | + assert peak_oriented_lattice.alpha() == mde_oriented_lattice.alpha() |
| 251 | + assert peak_oriented_lattice.beta() == mde_oriented_lattice.beta() |
| 252 | + assert peak_oriented_lattice.gamma() == mde_oriented_lattice.gamma() |
| 253 | + assert peak_oriented_lattice.getuVector() == pytest.approx(mde_oriented_lattice.getuVector()) |
| 254 | + assert peak_oriented_lattice.getvVector() == pytest.approx(mde_oriented_lattice.getvVector()) |
| 255 | + |
| 256 | + # check the mde config values |
| 257 | + mde_config = gather_mde_config_dict(mde.name()) |
| 258 | + |
| 259 | + assert len(mde_config) == 4 |
| 260 | + assert "SampleParameters" in mde_config |
| 261 | + assert mde_config["SampleParameters"]["a"] == mde_oriented_lattice.a() |
| 262 | + assert mde_config["SampleParameters"]["b"] == mde_oriented_lattice.b() |
| 263 | + assert mde_config["SampleParameters"]["c"] == mde_oriented_lattice.c() |
| 264 | + assert mde_config["SampleParameters"]["alpha"] == mde_oriented_lattice.alpha() |
| 265 | + assert mde_config["SampleParameters"]["beta"] == mde_oriented_lattice.beta() |
| 266 | + assert mde_config["SampleParameters"]["gamma"] == mde_oriented_lattice.gamma() |
| 267 | + |
| 268 | + u_array = np.array(mde_config["SampleParameters"]["u"].split(","), dtype=float) |
| 269 | + assert u_array == pytest.approx(mde_oriented_lattice.getuVector()) |
| 270 | + v_array = np.array(mde_config["SampleParameters"]["v"].split(","), dtype=float) |
| 271 | + assert v_array == pytest.approx(mde_oriented_lattice.getvVector()) |
0 commit comments