diff --git a/RAT/inputs.py b/RAT/inputs.py index fbf46cd3..d950d0fd 100644 --- a/RAT/inputs.py +++ b/RAT/inputs.py @@ -39,7 +39,6 @@ def make_input(project: RAT.Project, controls: Union[RAT.controls.Calculate, RAT parameter_field = {'parameters': 'param', 'bulk_in': 'bulkIn', 'bulk_out': 'bulkOut', - 'qz_shifts': 'qzshift', 'scalefactors': 'scalefactor', 'domain_ratios': 'domainRatio', 'background_parameters': 'backgroundParam', @@ -48,7 +47,6 @@ def make_input(project: RAT.Project, controls: Union[RAT.controls.Calculate, RAT checks_field = {'parameters': 'fitParam', 'bulk_in': 'fitBulkIn', 'bulk_out': 'fitBulkOut', - 'qz_shifts': 'fitQzshift', 'scalefactors': 'fitScalefactor', 'domain_ratios': 'fitDomainRatio', 'background_parameters': 'fitBackgroundParam', @@ -71,6 +69,11 @@ def make_input(project: RAT.Project, controls: Union[RAT.controls.Calculate, RAT setattr(priors, parameter_field[class_list], [[element.name, element.prior_type, element.mu, element.sigma] for element in getattr(project, class_list)]) + # Use dummy values for qzshifts + checks.fitQzshift = [] + limits.qzshift = [] + priors.qzshift = [] + priors.priorNames = [param.name for class_list in RAT.project.parameter_class_lists for param in getattr(project, class_list)] priors.priorValues = [[prior_id[param.prior_type], param.mu, param.sigma] @@ -115,7 +118,7 @@ def make_problem(project: RAT.Project) -> ProblemDefinition: problem.params = [param.value for param in project.parameters] problem.bulkIn = [param.value for param in project.bulk_in] problem.bulkOut = [param.value for param in project.bulk_out] - problem.qzshifts = [param.value for param in project.qz_shifts] + problem.qzshifts = [] problem.scalefactors = [param.value for param in project.scalefactors] problem.domainRatio = [param.value for param in project.domain_ratios] problem.backgroundParams = [param.value for param in project.background_parameters] @@ -216,7 +219,7 @@ def make_cells(project: RAT.Project) -> Cells: cells.f7 = [param.name for param in project.parameters] cells.f8 = [param.name for param in project.background_parameters] cells.f9 = [param.name for param in project.scalefactors] - cells.f10 = [param.name for param in project.qz_shifts] + cells.f10 = [] # Placeholder for qzshifts cells.f11 = [param.name for param in project.bulk_in] cells.f12 = [param.name for param in project.bulk_out] cells.f13 = [param.name for param in project.resolution_parameters] diff --git a/RAT/project.py b/RAT/project.py index fdbbd9db..7f7d69dc 100644 --- a/RAT/project.py +++ b/RAT/project.py @@ -18,7 +18,6 @@ model_in_classlist = {'parameters': 'Parameter', 'bulk_in': 'Parameter', 'bulk_out': 'Parameter', - 'qz_shifts': 'Parameter', 'scalefactors': 'Parameter', 'domain_ratios': 'Parameter', 'background_parameters': 'Parameter', @@ -73,7 +72,7 @@ } # Note that the order of these parameters is hard-coded into RAT -parameter_class_lists = ['parameters', 'background_parameters', 'scalefactors', 'qz_shifts', 'bulk_in', 'bulk_out', +parameter_class_lists = ['parameters', 'background_parameters', 'scalefactors', 'bulk_in', 'bulk_out', 'resolution_parameters', 'domain_ratios'] class_lists = [*parameter_class_lists, 'backgrounds', 'resolutions', 'custom_files', 'data', 'layers', 'domain_contrasts', 'contrasts'] @@ -100,9 +99,6 @@ class Project(BaseModel, validate_assignment=True, extra='forbid', arbitrary_typ fit=False, prior_type=Priors.Uniform, mu=0.0, sigma=np.inf)) - qz_shifts: ClassList = ClassList(RAT.models.Parameter(name='Qz shift 1', min=-1e-4, value=0.0, max=1e-4, fit=False, - prior_type=Priors.Uniform, mu=0.0, sigma=np.inf)) - scalefactors: ClassList = ClassList(RAT.models.Parameter(name='Scalefactor 1', min=0.02, value=0.23, max=0.25, fit=False, prior_type=Priors.Uniform, mu=0.0, sigma=np.inf)) @@ -137,7 +133,7 @@ class Project(BaseModel, validate_assignment=True, extra='forbid', arbitrary_typ _contrast_model_field: str _protected_parameters: dict - @field_validator('parameters', 'bulk_in', 'bulk_out', 'qz_shifts', 'scalefactors', 'background_parameters', + @field_validator('parameters', 'bulk_in', 'bulk_out', 'scalefactors', 'background_parameters', 'backgrounds', 'resolution_parameters', 'resolutions', 'custom_files', 'data', 'layers', 'domain_contrasts', 'contrasts') @classmethod diff --git a/tests/test_inputs.py b/tests/test_inputs.py index 758a006f..3119122f 100644 --- a/tests/test_inputs.py +++ b/tests/test_inputs.py @@ -70,14 +70,14 @@ def standard_layers_problem(): problem.params = [3.0, 0.0, 0.0, 0.0] problem.bulkIn = [0.0] problem.bulkOut = [6.35e-06] - problem.qzshifts = [0.0] + problem.qzshifts = [] problem.scalefactors = [0.23] problem.domainRatio = [] problem.backgroundParams = [1e-06] problem.resolutionParams = [0.03] problem.contrastBulkIns = [1] problem.contrastBulkOuts = [1] - problem.contrastQzshifts = [1] + problem.contrastQzshifts = [] problem.contrastScalefactors = [1] problem.contrastBackgrounds = [1] problem.contrastBackgroundActions = [1] @@ -91,10 +91,10 @@ def standard_layers_problem(): problem.numberOfLayers = 1 problem.numberOfDomainContrasts = 0 problem.fitParams = [3.0] - problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 0.0, 6.35e-06, 0.03] + problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 6.35e-06, 0.03] problem.fitLimits = [[1.0, 5.0]] - problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [-0.0001, 0.0001], - [0.0, 0.0], [6.2e-06, 6.35e-06], [0.01, 0.05]] + problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [0.0, 0.0], + [6.2e-06, 6.35e-06], [0.01, 0.05]] return problem @@ -110,14 +110,14 @@ def domains_problem(): problem.params = [3.0, 0.0, 0.0, 0.0] problem.bulkIn = [0.0] problem.bulkOut = [6.35e-06] - problem.qzshifts = [0.0] + problem.qzshifts = [] problem.scalefactors = [0.23] problem.domainRatio = [0.5] problem.backgroundParams = [1e-06] problem.resolutionParams = [0.03] problem.contrastBulkIns = [1] problem.contrastBulkOuts = [1] - problem.contrastQzshifts = [1] + problem.contrastQzshifts = [] problem.contrastScalefactors = [1] problem.contrastBackgrounds = [1] problem.contrastBackgroundActions = [1] @@ -131,10 +131,10 @@ def domains_problem(): problem.numberOfLayers = 1 problem.numberOfDomainContrasts = 2 problem.fitParams = [3.0] - problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 0.0, 6.35e-06, 0.03, 0.5] + problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 6.35e-06, 0.03, 0.5] problem.fitLimits = [[1.0, 5.0]] - problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [-0.0001, 0.0001], - [0.0, 0.0], [6.2e-06, 6.35e-06], [0.01, 0.05], [0.4, 0.6]] + problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [0.0, 0.0], + [6.2e-06, 6.35e-06], [0.01, 0.05], [0.4, 0.6]] return problem @@ -150,14 +150,14 @@ def custom_xy_problem(): problem.params = [3.0, 0.0, 0.0, 0.0] problem.bulkIn = [0.0] problem.bulkOut = [6.35e-06] - problem.qzshifts = [0.0] + problem.qzshifts = [] problem.scalefactors = [0.23] problem.domainRatio = [] problem.backgroundParams = [1e-06] problem.resolutionParams = [0.03] problem.contrastBulkIns = [1] problem.contrastBulkOuts = [1] - problem.contrastQzshifts = [1] + problem.contrastQzshifts = [] problem.contrastScalefactors = [1] problem.contrastBackgrounds = [1] problem.contrastBackgroundActions = [1] @@ -171,10 +171,10 @@ def custom_xy_problem(): problem.numberOfLayers = 0 problem.numberOfDomainContrasts = 0 problem.fitParams = [3.0] - problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 0.0, 6.35e-06, 0.03] + problem.otherParams = [0.0, 0.0, 0.0, 1e-06, 0.23, 0.0, 6.35e-06, 0.03] problem.fitLimits = [[1.0, 5.0]] - problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [-0.0001, 0.0001], - [0.0, 0.0], [6.2e-06, 6.35e-06], [0.01, 0.05]] + problem.otherLimits = [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1e-07, 1e-05], [0.02, 0.25], [0.0, 0.0], + [6.2e-06, 6.35e-06], [0.01, 0.05]] return problem @@ -192,7 +192,7 @@ def standard_layers_cells(): cells.f7 = ['Substrate Roughness', 'Test Thickness', 'Test SLD', 'Test Roughness'] cells.f8 = ['Background Param 1'] cells.f9 = ['Scalefactor 1'] - cells.f10 = ['Qz shift 1'] + cells.f10 = [] cells.f11 = ['SLD Air'] cells.f12 = ['SLD D2O'] cells.f13 = ['Resolution Param 1'] @@ -220,7 +220,7 @@ def domains_cells(): cells.f7 = ['Substrate Roughness', 'Test Thickness', 'Test SLD', 'Test Roughness'] cells.f8 = ['Background Param 1'] cells.f9 = ['Scalefactor 1'] - cells.f10 = ['Qz shift 1'] + cells.f10 = [] cells.f11 = ['SLD Air'] cells.f12 = ['SLD D2O'] cells.f13 = ['Resolution Param 1'] @@ -248,7 +248,7 @@ def custom_xy_cells(): cells.f7 = ['Substrate Roughness', 'Test Thickness', 'Test SLD', 'Test Roughness'] cells.f8 = ['Background Param 1'] cells.f9 = ['Scalefactor 1'] - cells.f10 = ['Qz shift 1'] + cells.f10 = [] cells.f11 = ['SLD Air'] cells.f12 = ['SLD D2O'] cells.f13 = ['Resolution Param 1'] @@ -269,7 +269,7 @@ def non_polarised_limits(): limits = Limits() limits.param = [[1.0, 5.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] limits.backgroundParam = [[1e-7, 1e-5]] - limits.qzshift = [[-1e-4, 1e-4]] + limits.qzshift = [] limits.scalefactor = [[0.02, 0.25]] limits.bulkIn = [[0.0, 0.0]] limits.bulkOut = [[6.2e-6, 6.35e-6]] @@ -285,7 +285,7 @@ def domains_limits(): limits = Limits() limits.param = [[1.0, 5.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] limits.backgroundParam = [[1e-7, 1e-5]] - limits.qzshift = [[-1e-4, 1e-4]] + limits.qzshift = [] limits.scalefactor = [[0.02, 0.25]] limits.bulkIn = [[0.0, 0.0]] limits.bulkOut = [[6.2e-6, 6.35e-6]] @@ -304,16 +304,16 @@ def non_polarised_priors(): ['Test SLD', RAT.utils.enums.Priors.Uniform, 0.0, np.inf], ['Test Roughness', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.backgroundParam = [['Background Param 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] - priors.qzshift = [['Qz shift 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] + priors.qzshift = [] priors.scalefactor = [['Scalefactor 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.bulkIn = [['SLD Air', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.bulkOut = [['SLD D2O', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.resolutionParam = [['Resolution Param 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.domainRatio = [] priors.priorNames = ['Substrate Roughness', 'Test Thickness', 'Test SLD', 'Test Roughness', 'Background Param 1', - 'Scalefactor 1', 'Qz shift 1', 'SLD Air', 'SLD D2O', 'Resolution Param 1'] + 'Scalefactor 1', 'SLD Air', 'SLD D2O', 'Resolution Param 1'] priors.priorValues = [[1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], - [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf]] + [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf]] return priors @@ -327,17 +327,16 @@ def domains_priors(): ['Test SLD', RAT.utils.enums.Priors.Uniform, 0.0, np.inf], ['Test Roughness', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.backgroundParam = [['Background Param 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] - priors.qzshift = [['Qz shift 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] + priors.qzshift = [] priors.scalefactor = [['Scalefactor 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.bulkIn = [['SLD Air', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.bulkOut = [['SLD D2O', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.resolutionParam = [['Resolution Param 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.domainRatio = [['Domain Ratio 1', RAT.utils.enums.Priors.Uniform, 0.0, np.inf]] priors.priorNames = ['Substrate Roughness', 'Test Thickness', 'Test SLD', 'Test Roughness', 'Background Param 1', - 'Scalefactor 1', 'Qz shift 1', 'SLD Air', 'SLD D2O', 'Resolution Param 1', 'Domain Ratio 1'] + 'Scalefactor 1', 'SLD Air', 'SLD D2O', 'Resolution Param 1', 'Domain Ratio 1'] priors.priorValues = [[1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], - [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], - [1, 0.0, np.inf]] + [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf], [1, 0.0, np.inf]] return priors @@ -376,7 +375,7 @@ def standard_layers_controls(): controls.boundHandling = BoundHandling.Fold controls.checks.fitParam = [1, 0, 0, 0] controls.checks.fitBackgroundParam = [0] - controls.checks.fitQzshift = [0] + controls.checks.fitQzshift = [] controls.checks.fitScalefactor = [0] controls.checks.fitBulkIn = [0] controls.checks.fitBulkOut = [0] @@ -419,7 +418,7 @@ def custom_xy_controls(): controls.boundHandling = BoundHandling.Fold controls.checks.fitParam = [1, 0, 0, 0] controls.checks.fitBackgroundParam = [0] - controls.checks.fitQzshift = [0] + controls.checks.fitQzshift = [] controls.checks.fitScalefactor = [0] controls.checks.fitBulkIn = [0] controls.checks.fitBulkOut = [0] @@ -435,7 +434,7 @@ def test_checks(): checks = Checks() checks.fitParam = [1, 0, 0, 0] checks.fitBackgroundParam = [0] - checks.fitQzshift = [0] + checks.fitQzshift = [] checks.fitScalefactor = [0] checks.fitBulkIn = [0] checks.fitBulkOut = [0] @@ -535,7 +534,6 @@ def check_problem_equal(actual_problem, expected_problem) -> None: for scalar_field in scalar_fields: assert getattr(actual_problem, scalar_field) == getattr(expected_problem, scalar_field) for array_field in array_fields: - print(array_field) assert (getattr(actual_problem, array_field) == getattr(expected_problem, array_field)).all() # Need to account for "NaN" entries in contrastCustomFiles field diff --git a/tests/test_project.py b/tests/test_project.py index 7f57e4d0..ac6b138e 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -60,12 +60,6 @@ def default_project_repr(): '+-------+---------+---------+----------+----------+-------+------------+-----+-------+\n' '| 0 | SLD D2O | 6.2e-06 | 6.35e-06 | 6.35e-06 | False | uniform | 0.0 | inf |\n' '+-------+---------+---------+----------+----------+-------+------------+-----+-------+\n\n' - 'Qz Shifts: -----------------------------------------------------------------------------------------\n\n' - '+-------+------------+---------+-------+--------+-------+------------+-----+-------+\n' - '| index | name | min | value | max | fit | prior type | mu | sigma |\n' - '+-------+------------+---------+-------+--------+-------+------------+-----+-------+\n' - '| 0 | Qz shift 1 | -0.0001 | 0.0 | 0.0001 | False | uniform | 0.0 | inf |\n' - '+-------+------------+---------+-------+--------+-------+------------+-----+-------+\n\n' 'Scalefactors: --------------------------------------------------------------------------------------\n\n' '+-------+---------------+------+-------+------+-------+------------+-----+-------+\n' '| index | name | min | value | max | fit | prior type | mu | sigma |\n' @@ -116,7 +110,6 @@ def test_project_script(): " Parameter(name='Test Roughness', min=0.0, value=0.0, max=0.0, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" " background_parameters=RAT.ClassList([Parameter(name='Background Param 1', min=1e-07, value=1e-06, max=1e-05, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" " scalefactors=RAT.ClassList([Parameter(name='Scalefactor 1', min=0.02, value=0.23, max=0.25, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" - " qz_shifts=RAT.ClassList([Parameter(name='Qz shift 1', min=-0.0001, value=0.0, max=0.0001, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" " bulk_in=RAT.ClassList([Parameter(name='SLD Air', min=0.0, value=0.0, max=0.0, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" " bulk_out=RAT.ClassList([Parameter(name='SLD D2O', min=6.2e-06, value=6.35e-06, max=6.35e-06, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" " resolution_parameters=RAT.ClassList([Parameter(name='Resolution Param 1', min=0.01, value=0.03, max=0.05, fit=False, prior_type='uniform', mu=0.0, sigma=inf)]),\n" @@ -603,7 +596,6 @@ def test_get_all_names(test_project) -> None: 'Test Roughness'], 'bulk_in': ['SLD Air'], 'bulk_out': ['SLD D2O'], - 'qz_shifts': ['Qz shift 1'], 'scalefactors': ['Scalefactor 1'], 'domain_ratios': [], 'background_parameters': ['Background Param 1'], @@ -623,7 +615,6 @@ def test_get_all_protected_parameters(test_project) -> None: assert test_project.get_all_protected_parameters() == {'parameters': ['Substrate Roughness'], 'bulk_in': [], 'bulk_out': [], - 'qz_shifts': [], 'scalefactors': [], 'domain_ratios': [], 'background_parameters': [],