None
Test: scipp-analysis|estia|analyze_reduced_data|fit_model_success
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning
load_data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
@pytest.fixture(scope="module")
def fit_model(load_data):
data = load_data
# Rescale data
reflectivity = data["data"]["R_0"].values
scale_factor = 1 / np.max(reflectivity)
data["data"]["R_0"].values *= scale_factor
# Create a model for the sample
si = Material(sld=2.07, isld=0.0, name="Si")
sio2 = Material(sld=3.47, isld=0.0, name="SiO2")
d2o = Material(sld=6.33, isld=0.0, name="D2O")
dlipids = Material(sld=5.0, isld=0.0, name="DLipids")
superphase = Layer(material=si, thickness=0, roughness=0, name="Si superphase")
sio2_layer = Layer(material=sio2, thickness=20, roughness=4, name="SiO2 layer")
dlipids_layer = Layer(
material=dlipids, thickness=40, roughness=4, name="DLipids layer"
)
subphase = Layer(material=d2o, thickness=0, roughness=5, name="D2O subphase")
multi_sample = Sample(
Multilayer(superphase),
Multilayer(sio2_layer),
Multilayer(dlipids_layer),
Multilayer(subphase),
name="Multilayer Structure",
)
multi_layer_model = Model(
sample=multi_sample,
scale=1,
background=0.000001,
resolution_function=PercentageFwhm(0),
name="Multilayer Model",
)
# Set the fitting parameters
sio2_layer.roughness.bounds = (3, 12)
sio2_layer.material.sld.bounds = (3.47, 5)
sio2_layer.thickness.bounds = (10, 30)
subphase.material.sld.bounds = (6, 6.35)
dlipids_layer.thickness.bounds = (30, 60)
dlipids_layer.roughness.bounds = (3, 10)
dlipids_layer.material.sld.bounds = (4, 6)
multi_layer_model.scale.bounds = (0.8, 1.2)
multi_layer_model.background.bounds = (1e-6, 1e-3)
# Run the model and plot the results
multi_layer_model.interface = CalculatorFactory()
fitter1 = MultiFitter(multi_layer_model)
fitter1.switch_minimizer(AvailableMinimizers.Bumps_simplex)
> analysed = fitter1.fit(data)
^^^^^^^^^^^^^^^^^
tests/scipp-analysis/estia/ort_file_test.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
data = DataGroup(sizes={}, keys=[
data: {'R_0':
])
id = 0
def fit(self, data: sc.DataGroup, id: int = 0) -> sc.DataGroup:
"""
Perform the fitting and populate the DataGroups with the result.
:param data: DataGroup to be fitted to and populated
:param method: Optimisation method
:note: Points with zero variance in the data will be automatically masked
out during fitting. A warning will be issued if any such points
are found, indicating the number of points masked per reflectivity.
"""
refl_nums = [k[3:] for k in data['coords'].keys() if 'Qz' == k[:2]]
x = []
y = []
dy = []
# Process each reflectivity dataset
for i in refl_nums:
x_vals = data['coords'][f'Qz_{i}'].values
y_vals = data['data'][f'R_{i}'].values
variances = data['data'][f'R_{i}'].variances
# Find points with non-zero variance
zero_variance_mask = (variances == 0.0)
num_zero_variance = np.sum(zero_variance_mask)
if num_zero_variance > 0:
> warnings.warn(
f"Masked {num_zero_variance} data point(s) in reflectivity {i} due to zero variance during fitting.",
UserWarning
)
E UserWarning: Masked 11 data point(s) in reflectivity 0 due to zero variance during fitting.
.tox/scipp-analysis-estia/lib/python3.12/site-packages/easyreflectometry/fitting.py:62: UserWarning