easydiffraction 0.13.1__tar.gz → 0.15.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/pypi-test.yml +9 -7
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/test.yml +6 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/PKG-INFO +3 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/architecture.md +130 -77
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/issues_closed.md +16 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/issues_open.md +6 -26
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/package-structure-full.md +20 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/package-structure-short.md +13 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-1.ipynb +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-1.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-10.ipynb +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-10.py +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-11.ipynb +5 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-11.py +5 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-12.ipynb +15 -25
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-12.py +6 -9
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-13.ipynb +104 -85
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-13.py +71 -54
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-14.ipynb +4 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-14.py +4 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-15.ipynb +29 -21
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-15.py +8 -7
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-16.ipynb +6 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-16.py +6 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-17.ipynb +48 -18
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-17.py +48 -18
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-18.ipynb +4 -20
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-18.py +2 -8
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-2.ipynb +76 -8
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-2.py +29 -8
- easydiffraction-0.15.0/docs/docs/tutorials/ed-20.ipynb +816 -0
- easydiffraction-0.15.0/docs/docs/tutorials/ed-20.py +381 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-3.ipynb +138 -228
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-3.py +25 -55
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-4.ipynb +8 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-4.py +8 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-5.ipynb +94 -173
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-5.py +32 -68
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-6.ipynb +12 -13
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-6.py +12 -13
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-7.ipynb +191 -15
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-7.py +89 -14
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-8.ipynb +9 -12
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-8.py +9 -12
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-9.ipynb +5 -7
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/ed-9.py +4 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/index.json +7 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/tutorials/index.md +8 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/analysis.md +10 -11
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/project.md +13 -18
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/first-steps.md +7 -8
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/mkdocs.yml +3 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/pixi.lock +864 -792
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/pixi.toml +8 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/pyproject.toml +3 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/__main__.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/analysis.py +25 -66
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/crysfml.py +133 -43
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/cryspy.py +77 -50
- easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/__init__.py +6 -0
- easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/default.py +200 -0
- {easydiffraction-0.13.1/src/easydiffraction/analysis/categories/fit_mode → easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit}/enums.py +2 -2
- {easydiffraction-0.13.1/src/easydiffraction/analysis/categories/fit_mode → easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit}/factory.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/sequential.py +3 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/variable.py +42 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/crystallography/crystallography.py +161 -13
- easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/calculation/__init__.py +8 -0
- easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +106 -0
- easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/calculation/factory.py +17 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +1 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py +1 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +1 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/instrument/tof.py +1 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/__init__.py +1 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl.py +7 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py +2 -2
- easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +148 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof.py +38 -12
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/total.py +7 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/base.py +143 -100
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +21 -11
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/enums.py +35 -27
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/factory.py +2 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +0 -42
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +35 -12
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/cell/default.py +15 -8
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/item/base.py +17 -10
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/cif/serialize.py +69 -36
- easydiffraction-0.15.0/src/easydiffraction/project/categories/display/__init__.py +8 -0
- easydiffraction-0.15.0/src/easydiffraction/project/categories/display/default.py +117 -0
- easydiffraction-0.15.0/src/easydiffraction/project/categories/display/factory.py +17 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/project/project.py +17 -20
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/summary/summary.py +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/utils.py +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_adp_switching.py +5 -7
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_structure_workflow.py +100 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_switchable_categories.py +5 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/conftest.py +1 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_analysis_display.py +5 -6
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_aniso_adp_fitting.py +2 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_exploration_help.py +4 -7
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_multi.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_plotting.py +5 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_powder-diffraction_joint-fit.py +4 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_project_load.py +2 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_switch-calculator.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/test_package_import.py +6 -0
- easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +116 -0
- easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +92 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_analysis.py +9 -9
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +3 -3
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +3 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_parameters.py +56 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +54 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +31 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_base.py +2 -2
- easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_default.py +90 -0
- easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_factory.py +27 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_tof.py +1 -1
- easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +89 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof.py +13 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base_coverage.py +15 -15
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc_coverage.py +4 -4
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums_coverage.py +24 -12
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/test_collection.py +1 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_site_aniso.py +48 -87
- easydiffraction-0.15.0/tests/unit/easydiffraction/display/tablers/__init__.py +2 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/io/cif/test_serialize.py +39 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/io/cif/test_serialize_more.py +5 -7
- easydiffraction-0.15.0/tests/unit/easydiffraction/project/categories/display/test_default.py +55 -0
- easydiffraction-0.15.0/tests/unit/easydiffraction/project/categories/display/test_factory.py +23 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/project/test_project_load.py +16 -5
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/summary/test_summary.py +4 -1
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/summary/test_summary_details.py +9 -2
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/test___main__.py +21 -29
- easydiffraction-0.13.1/docs/docs/tutorials/data/ed-7.xye +0 -5600
- easydiffraction-0.13.1/docs/docs/tutorials/ed-19.ipynb +0 -1101
- easydiffraction-0.13.1/docs/docs/tutorials/ed-19.py +0 -566
- easydiffraction-0.13.1/src/easydiffraction/analysis/categories/fit_mode/__init__.py +0 -6
- easydiffraction-0.13.1/src/easydiffraction/analysis/categories/fit_mode/fit_mode.py +0 -65
- easydiffraction-0.13.1/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +0 -30
- easydiffraction-0.13.1/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +0 -28
- easydiffraction-0.13.1/tests/unit/easydiffraction/analysis/categories/test_fit_mode.py +0 -85
- easydiffraction-0.13.1/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +0 -57
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.badgery.yaml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.codefactorignore +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.copier-answers.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/download-artifact/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/github-script/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/setup-easyscience-bot/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/setup-pixi/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/upload-artifact/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/actions/upload-codecov/action.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/configs/pages-deployment.json +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/configs/rulesets-develop.json +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/configs/rulesets-gh-pages.json +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/configs/rulesets-master.json +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/copilot-instructions.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/scripts/backmerge-conflict-issue.js +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/backmerge.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/cleanup.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/coverage.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/dashboard.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/docs.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/issues-labels.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/lint-format.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/pr-labels.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/pypi-publish.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/release-notes.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/release-pr.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/security.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/test-trigger.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/tutorial-tests-colab.yaml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/tutorial-tests-trigger.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.github/workflows/tutorial-tests.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.gitignore +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.pre-commit-config.yaml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/.prettierignore +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/CONTRIBUTING.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/LICENSE +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/README.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/codecov.yml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/ROADMAP.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/adp_implementation.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/cryspy-dwf-bug.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/analysis.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/core.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/crystallography.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/datablocks/experiment.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/datablocks/structure.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/display.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/io.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/project.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/summary.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/api-reference/utils.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/favicon.png +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/logo_dark.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/logo_light.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/user-guide/data-analysis_model.png +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/javascripts/extra.js +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/javascripts/mathjax.js +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/assets/stylesheets/extra.css +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/cli/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/installation-and-setup/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/introduction/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/experiment.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/model.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/analysis-workflow/summary.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/concept.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/data-format.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/glossary.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/index.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/_exptl_crystal.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/_extinction.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/_pd_calib.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/atom_site.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/background.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/cell.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/expt_type.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/instrument.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/linked_phases.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/pd_meas.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/peak.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters/space_group.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/docs/user-guide/parameters.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/includes/abbreviations.md +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/.icons/app.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/.icons/easydiffraction.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/.icons/easyscience.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/.icons/google-colab.svg +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/main.html +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/overrides/partials/logo.html +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/prettierrc.toml +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/calculators/pdffit.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/aliases/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/aliases/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/aliases/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/constraints/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/constraints/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/constraints/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/fit_helpers/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/fit_helpers/metrics.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/fit_helpers/reporting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/fit_helpers/tracking.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/fitting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/bumps.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/bumps_amoeba.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/bumps_de.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/bumps_lm.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/dfols.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/lmfit.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/lmfit_least_squares.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/analysis/minimizers/lmfit_leastsq.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/category.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/collection.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/datablock.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/diagnostic.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/guard.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/identity.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/metadata.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/singleton.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/core/validation.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/crystallography/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/crystallography/space_groups.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/data/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/extinction/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/extinction/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/instrument/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/instrument/cwl.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/instrument/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof_mixins.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/categories/peak/total_mixins.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/collection.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/experiment/item/total_pd.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/cell/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/cell/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/space_group/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/space_group/default.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/categories/space_group/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/collection.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/item/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/datablocks/structure/item/factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/plotters/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/plotters/ascii.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/plotters/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/plotters/plotly.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/plotting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/tablers/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/tablers/base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/tablers/pandas.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/tablers/rich.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/tables.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/display/utils.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/ascii.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/cif/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/cif/handler.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/io/cif/parse.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/project/__init__.py +0 -0
- {easydiffraction-0.13.1/src/easydiffraction/summary → easydiffraction-0.15.0/src/easydiffraction/project/categories}/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/project/project_info.py +0 -0
- {easydiffraction-0.13.1/tests/unit/easydiffraction/datablocks/structure/categories → easydiffraction-0.15.0/src/easydiffraction/summary}/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/_vendored/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/detector.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/_vendored/theme_detect.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/environment.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/src/easydiffraction/utils/logging.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/conftest.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_experiment_workflow.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_fitting_workflow.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/functional/test_project_lifecycle.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_cif_round_trip.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_pair-distribution-function.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_sequential.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_single-crystal-diffraction.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/fitting/test_summary_report.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/conftest.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/test_analyze_reduced_data.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/test_read_reduced_data.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/test_validate_meta_data.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/integration/scipp-analysis/dream/test_validate_physical_data.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/calculators/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/calculators/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/categories/test_aliases.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/categories/test_constraints.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_amoeba.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_de.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_lm.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_least_squares.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_leastsq.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_fitting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/analysis/test_sequential.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_category.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_collection.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_datablock.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_diagnostic.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_guard.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_identity.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_metadata.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_singletons.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/core/test_validation.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/crystallography/test_crystallography.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/crystallography/test_space_groups.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/crystallography/test_space_groups_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_chebyshev.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_line_segment.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_sc.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_cwl.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl_mixins.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof_mixins.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total_mixins.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_diffrn.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_excluded_regions.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_experiment_type.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_extinction.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_crystal.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_phases.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_pd.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_total_pd.py +0 -0
- {easydiffraction-0.13.1/tests/unit/easydiffraction/display/tablers → easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_sites.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_cell.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_space_group.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/item/test_factory.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/test_collection.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/datablocks/structure/test_collection_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/plotters/test_ascii.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/plotters/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/plotters/test_plotly.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/tablers/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/tablers/test_pandas.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/tablers/test_rich.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/test_base.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/test_plotting.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/test_plotting_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/test_tables.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/display/test_utils.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/io/cif/test_handler.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/io/cif/test_parse.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/io/test_ascii.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/project/test_project.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/project/test_project_info.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/project/test_project_save.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/test___init__.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_enums.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_environment.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_environment_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_logging.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_logging_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_theme_detect.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_utils.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tests/unit/easydiffraction/utils/test_utils_coverage.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/gen_tests_scaffold.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/generate_package_docs.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/license_headers.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/naming_check.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/param_consistency.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/test_scripts.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/test_structure_check.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/tweak_notebooks.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/update_docs_assets.py +0 -0
- {easydiffraction-0.13.1 → easydiffraction-0.15.0}/tools/update_github_labels.py +0 -0
|
@@ -50,7 +50,9 @@ jobs:
|
|
|
50
50
|
|
|
51
51
|
- name: Set the minimum system requirements
|
|
52
52
|
working-directory: easydiffraction
|
|
53
|
-
run:
|
|
53
|
+
run: |
|
|
54
|
+
pixi project system-requirements add macos 14.0
|
|
55
|
+
pixi project system-requirements add glibc 2.35
|
|
54
56
|
|
|
55
57
|
- name: Add Python 3.14 from Conda
|
|
56
58
|
working-directory: easydiffraction
|
|
@@ -62,12 +64,12 @@ jobs:
|
|
|
62
64
|
pixi add gsl
|
|
63
65
|
pixi add --platform osx-arm64 libcxx
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
#- name: Add pycrysfml calculator from custom PyPI index
|
|
68
|
+
# working-directory: easydiffraction
|
|
69
|
+
# run: |
|
|
70
|
+
# echo '' >> pixi.toml
|
|
71
|
+
# echo '[pypi-dependencies]' >> pixi.toml
|
|
72
|
+
# echo 'pycrysfml = { version = ">=0.2.1", index = "https://easyscience.github.io/pypi/" }' >> pixi.toml
|
|
71
73
|
|
|
72
74
|
- name: Add easydiffraction (with dev dependencies) from PyPI
|
|
73
75
|
working-directory: easydiffraction
|
|
@@ -217,8 +217,9 @@ jobs:
|
|
|
217
217
|
pixi init easydiffraction_py$py_ver
|
|
218
218
|
cd easydiffraction_py$py_ver
|
|
219
219
|
|
|
220
|
-
echo "Setting
|
|
220
|
+
echo "Setting the minimum system requirements"
|
|
221
221
|
pixi project system-requirements add macos 14.0
|
|
222
|
+
pixi project system-requirements add glibc 2.35
|
|
222
223
|
|
|
223
224
|
echo "Adding Python $py_ver"
|
|
224
225
|
pixi add "python=$py_ver"
|
|
@@ -236,10 +237,10 @@ jobs:
|
|
|
236
237
|
# Doing this in a hacky way, as pixi does not support adding
|
|
237
238
|
# dependencies from a custom PyPI index with a CLI command without
|
|
238
239
|
# specifying full wheel name.
|
|
239
|
-
echo "Adding pycrysfml from custom PyPI index"
|
|
240
|
-
echo '' >> pixi.toml
|
|
241
|
-
echo '[pypi-dependencies]' >> pixi.toml
|
|
242
|
-
echo 'pycrysfml = { version = ">=0.2.1", index = "https://easyscience.github.io/pypi/" }' >> pixi.toml
|
|
240
|
+
#echo "Adding pycrysfml from custom PyPI index"
|
|
241
|
+
#echo '' >> pixi.toml
|
|
242
|
+
#echo '[pypi-dependencies]' >> pixi.toml
|
|
243
|
+
#echo 'pycrysfml = { version = ">=0.2.1", index = "https://easyscience.github.io/pypi/" }' >> pixi.toml
|
|
243
244
|
|
|
244
245
|
echo "Looking for wheel in ../dist/py$py_ver/"
|
|
245
246
|
ls -l "../dist/py$py_ver/"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easydiffraction
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.0
|
|
4
4
|
Summary: Diffraction data analysis
|
|
5
5
|
Project-URL: Homepage, https://easydiffraction.org
|
|
6
6
|
Project-URL: Documentation, https://easyscience.github.io/diffraction-lib
|
|
@@ -24,6 +24,7 @@ Requires-Dist: asciichartpy
|
|
|
24
24
|
Requires-Dist: asteval
|
|
25
25
|
Requires-Dist: bumps
|
|
26
26
|
Requires-Dist: colorama
|
|
27
|
+
Requires-Dist: crysfml
|
|
27
28
|
Requires-Dist: cryspy
|
|
28
29
|
Requires-Dist: darkdetect
|
|
29
30
|
Requires-Dist: dfo-ls
|
|
@@ -69,6 +70,7 @@ Requires-Dist: nbstripout; extra == 'dev'
|
|
|
69
70
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
70
71
|
Requires-Dist: pydoclint; extra == 'dev'
|
|
71
72
|
Requires-Dist: pytest; extra == 'dev'
|
|
73
|
+
Requires-Dist: pytest-benchmark; extra == 'dev'
|
|
72
74
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
73
75
|
Requires-Dist: pytest-xdist; extra == 'dev'
|
|
74
76
|
Requires-Dist: pyyaml; extra == 'dev'
|
|
@@ -210,7 +210,7 @@ GuardedBase
|
|
|
210
210
|
└── GenericDescriptorBase # name, value (validated via AttributeSpec), description
|
|
211
211
|
├── GenericStringDescriptor # _value_type = DataTypes.STRING
|
|
212
212
|
└── GenericNumericDescriptor # _value_type = DataTypes.NUMERIC, + units
|
|
213
|
-
└── GenericParameter # + free, uncertainty, fit_min, fit_max, constrained
|
|
213
|
+
└── GenericParameter # + free, uncertainty, fit_min, fit_max, constrained, symmetry_fixed
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
CIF-bound concrete classes add a `CifHandler` for serialisation:
|
|
@@ -322,6 +322,17 @@ A `Structure` contains four categories:
|
|
|
322
322
|
Symmetry constraints (cell metric, atomic coordinates, ADPs) are applied
|
|
323
323
|
via the `crystallography` module during `_update_categories()`.
|
|
324
324
|
|
|
325
|
+
Parameters that are fully determined by symmetry (e.g. `lattice_b` in
|
|
326
|
+
cubic, `fract_y` of an atom on a 4-fold axis, off-diagonal ADPs forced
|
|
327
|
+
to zero by site symmetry) are flagged as `symmetry_fixed = True` on the
|
|
328
|
+
`Parameter`. This forces `free = False`; any subsequent attempt to set
|
|
329
|
+
`free = True` on such a parameter is ignored with a warning. Flags are
|
|
330
|
+
recomputed on every `_update_categories()` so that changing the space
|
|
331
|
+
group, Wyckoff letter, or ADP type re-evaluates which parameters are
|
|
332
|
+
fixed. Surface helpers `cell_symmetry_fixed_flags(...)` and
|
|
333
|
+
`atom_site_symmetry_fixed_flags(...)` in `crystallography` expose the
|
|
334
|
+
per-key flags.
|
|
335
|
+
|
|
325
336
|
### 4.2 Atomic Displacement Parameters (ADP)
|
|
326
337
|
|
|
327
338
|
ADP support covers four CIF-standard types: **Biso**, **Uiso**,
|
|
@@ -389,14 +400,14 @@ class PeakFactory(FactoryBase):
|
|
|
389
400
|
frozenset({
|
|
390
401
|
('scattering_type', ScatteringTypeEnum.BRAGG),
|
|
391
402
|
('beam_mode', BeamModeEnum.CONSTANT_WAVELENGTH),
|
|
392
|
-
}): PeakProfileTypeEnum.
|
|
403
|
+
}): PeakProfileTypeEnum.CWL_PSEUDO_VOIGT,
|
|
393
404
|
frozenset({
|
|
394
405
|
('scattering_type', ScatteringTypeEnum.BRAGG),
|
|
395
406
|
('beam_mode', BeamModeEnum.TIME_OF_FLIGHT),
|
|
396
|
-
}): PeakProfileTypeEnum.
|
|
407
|
+
}): PeakProfileTypeEnum.TOF_JORGENSEN,
|
|
397
408
|
frozenset({
|
|
398
409
|
('scattering_type', ScatteringTypeEnum.TOTAL),
|
|
399
|
-
}): PeakProfileTypeEnum.
|
|
410
|
+
}): PeakProfileTypeEnum.TOTAL_GAUSSIAN_DAMPED_SINC,
|
|
400
411
|
}
|
|
401
412
|
```
|
|
402
413
|
|
|
@@ -413,8 +424,8 @@ attributes:
|
|
|
413
424
|
@PeakFactory.register
|
|
414
425
|
class CwlPseudoVoigt(PeakBase, CwlBroadeningMixin):
|
|
415
426
|
type_info = TypeInfo(
|
|
416
|
-
tag=
|
|
417
|
-
description=
|
|
427
|
+
tag=PeakProfileTypeEnum.CWL_PSEUDO_VOIGT.value,
|
|
428
|
+
description=PeakProfileTypeEnum.CWL_PSEUDO_VOIGT.description(),
|
|
418
429
|
)
|
|
419
430
|
compatibility = Compatibility(
|
|
420
431
|
scattering_type=frozenset({ScatteringTypeEnum.BRAGG}),
|
|
@@ -478,7 +489,11 @@ from .line_segment import LineSegmentBackground
|
|
|
478
489
|
|
|
479
490
|
### 5.6 Tag Naming Convention
|
|
480
491
|
|
|
481
|
-
|
|
492
|
+
Canonical tags are the stable identifiers for factory lookup and
|
|
493
|
+
serialisation. User-facing APIs may expose context-local aliases when
|
|
494
|
+
the owner object already provides enough context to disambiguate the
|
|
495
|
+
choice (for example, `experiment.peak_profile_type = 'pseudo-voigt'`
|
|
496
|
+
inside a CWL or TOF experiment). Canonical tags must be:
|
|
482
497
|
|
|
483
498
|
- **Consistent** — use the same abbreviations everywhere.
|
|
484
499
|
- **Hyphen-separated** — all lowercase, words joined by hyphens.
|
|
@@ -507,15 +522,22 @@ Tags are the user-facing identifiers for selecting types. They must be:
|
|
|
507
522
|
|
|
508
523
|
**Peak tags**
|
|
509
524
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
|
517
|
-
|
|
|
518
|
-
| `
|
|
525
|
+
Canonical peak tags are globally unique within `PeakFactory`. The
|
|
526
|
+
experiment-facing `peak_profile_type` getter, setter, and supported-type
|
|
527
|
+
display use context-local aliases so users do not need to type `cwl-`,
|
|
528
|
+
`tof-`, or `total-` when the experiment context already disambiguates
|
|
529
|
+
the choice.
|
|
530
|
+
|
|
531
|
+
| Canonical tag | Local alias | Class |
|
|
532
|
+
| -------------------------------------- | ------------------------------------ | ---------------------------------- |
|
|
533
|
+
| `cwl-pseudo-voigt` | `pseudo-voigt` | `CwlPseudoVoigt` |
|
|
534
|
+
| `cwl-pseudo-voigt-empirical-asymmetry` | `pseudo-voigt + empirical asymmetry` | `CwlPseudoVoigtEmpiricalAsymmetry` |
|
|
535
|
+
| `cwl-thompson-cox-hastings` | `thompson-cox-hastings` | `CwlThompsonCoxHastings` |
|
|
536
|
+
| `tof-pseudo-voigt` | `pseudo-voigt` | `TofPseudoVoigt` |
|
|
537
|
+
| `tof-jorgensen` | `jorgensen` | `TofJorgensen` |
|
|
538
|
+
| `tof-jorgensen-von-dreele` | `jorgensen-von-dreele` | `TofJorgensenVonDreele` |
|
|
539
|
+
| `tof-double-jorgensen-von-dreele` | `double-jorgensen-von-dreele` | `TofDoubleJorgensenVonDreele` |
|
|
540
|
+
| `total-gaussian-damped-sinc` | `gaussian-damped-sinc` | `TotalGaussianDampedSinc` |
|
|
519
541
|
|
|
520
542
|
**Instrument tags**
|
|
521
543
|
|
|
@@ -684,14 +706,14 @@ category's `calculator_support` metadata and
|
|
|
684
706
|
registry by `engine_imported` (whether the third-party library is
|
|
685
707
|
available in the environment).
|
|
686
708
|
|
|
687
|
-
The experiment exposes
|
|
709
|
+
The experiment exposes a dedicated `calculation` category:
|
|
688
710
|
|
|
689
|
-
- `
|
|
690
|
-
|
|
691
|
-
- `
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
711
|
+
- `calculation.calculator_type` — getter + setter for the calculator
|
|
712
|
+
backend tag
|
|
713
|
+
- `calculation.calculator` — read-only access to the live backend
|
|
714
|
+
instance
|
|
715
|
+
- `calculation.show_calculator_types()` — filtered by data category
|
|
716
|
+
support and marks the current type
|
|
695
717
|
|
|
696
718
|
### 6.2 Minimiser
|
|
697
719
|
|
|
@@ -713,22 +735,19 @@ workflow:
|
|
|
713
735
|
|
|
714
736
|
`Analysis` is bound to a `Project` and provides the high-level API:
|
|
715
737
|
|
|
716
|
-
-
|
|
717
|
-
`
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
fitting was used. `show_supported_fit_mode_types()` filters by
|
|
723
|
-
experiment count (≤1 → only `single`; >1 → all three).
|
|
724
|
-
`show_current_fit_mode_type()` prints the current mode.
|
|
738
|
+
- Fit configuration: `fit` (`CategoryItem` with `minimizer_type` and
|
|
739
|
+
`mode` descriptors). `fit.minimizer_type` selects the minimizer
|
|
740
|
+
backend. `fit.mode` stores whether fitting is `'single'`, `'joint'`,
|
|
741
|
+
or `'sequential'`. `fit.show_minimizer_types()` lists supported
|
|
742
|
+
minimizers; `fit.show_modes()` filters modes by experiment count (≤1 →
|
|
743
|
+
only `single`; >1 → all three).
|
|
725
744
|
- Joint-fit weights: `joint_fit_experiments` (`CategoryCollection` of
|
|
726
|
-
per-experiment weight entries); sibling of `
|
|
745
|
+
per-experiment weight entries); sibling of `fit`, not a child.
|
|
727
746
|
- Parameter tables: `show_all_params()`, `show_fittable_params()`,
|
|
728
747
|
`show_free_params()`, `how_to_access_parameters()`
|
|
729
|
-
- Fitting: `fit()` dispatches single/joint
|
|
730
|
-
sequential mode (sets `
|
|
731
|
-
`display.fit_results()` shows results.
|
|
748
|
+
- Fitting: `fit()` dispatches single/joint through the callable `fit`
|
|
749
|
+
category; `fit_sequential()` handles sequential mode (sets `fit.mode`
|
|
750
|
+
to `'sequential'` internally). `display.fit_results()` shows results.
|
|
732
751
|
- Aliases and constraints (single-type categories; no public `_type`
|
|
733
752
|
getter or setter)
|
|
734
753
|
|
|
@@ -751,9 +770,9 @@ It owns and coordinates all components:
|
|
|
751
770
|
| `project.info` | `ProjectInfo` | Metadata: name, title, description, path |
|
|
752
771
|
| `project.structures` | `Structures` | Collection of structure datablocks |
|
|
753
772
|
| `project.experiments` | `Experiments` | Collection of experiment datablocks |
|
|
754
|
-
| `project.
|
|
773
|
+
| `project.display` | `Display` | Plot/table engine selection and facades |
|
|
774
|
+
| `project.analysis` | `Analysis` | Minimiser, fitting, aliases, constraints |
|
|
755
775
|
| `project.summary` | `Summary` | Report generation |
|
|
756
|
-
| `project.plotter` | `Plotter` | Visualisation |
|
|
757
776
|
| `project.verbosity` | `str` | Console output level (full/short/silent) |
|
|
758
777
|
|
|
759
778
|
### 7.1 Data Flow
|
|
@@ -778,7 +797,7 @@ Projects are saved as a directory of CIF files:
|
|
|
778
797
|
|
|
779
798
|
```shell
|
|
780
799
|
project_dir/
|
|
781
|
-
├── project.cif # ProjectInfo
|
|
800
|
+
├── project.cif # ProjectInfo + Display preferences
|
|
782
801
|
├── summary.cif # Summary report
|
|
783
802
|
├── structures/
|
|
784
803
|
│ └── lbco.cif # One file per structure
|
|
@@ -788,6 +807,13 @@ project_dir/
|
|
|
788
807
|
└── analysis.cif # Analysis settings
|
|
789
808
|
```
|
|
790
809
|
|
|
810
|
+
`project.cif` carries both the `_project.*` metadata and the
|
|
811
|
+
`_display.*` engine preferences (`plotter_type`, `tabler_type`), so a
|
|
812
|
+
saved project re-opens with the same display backends. Per-experiment
|
|
813
|
+
calculator selection (`_calculation.calculator_type`) lives in each
|
|
814
|
+
experiment file, and fit configuration (`_fit.minimizer_type`,
|
|
815
|
+
`_fit.mode`) lives in `analysis/analysis.cif`.
|
|
816
|
+
|
|
791
817
|
### 7.3 Verbosity
|
|
792
818
|
|
|
793
819
|
`Project.verbosity` controls how much console output operations produce.
|
|
@@ -894,7 +920,7 @@ project.experiments['hrpt'].instrument.setup_wavelength = 1.494
|
|
|
894
920
|
project.experiments['hrpt'].instrument.calib_twotheta_offset = 0.6
|
|
895
921
|
|
|
896
922
|
# Browse and select peak profile type
|
|
897
|
-
project.experiments['hrpt'].
|
|
923
|
+
project.experiments['hrpt'].show_peak_profile_types()
|
|
898
924
|
project.experiments['hrpt'].peak_profile_type = 'pseudo-voigt'
|
|
899
925
|
|
|
900
926
|
# Set peak profile parameters
|
|
@@ -902,7 +928,7 @@ project.experiments['hrpt'].peak.broad_gauss_u = 0.1
|
|
|
902
928
|
project.experiments['hrpt'].peak.broad_gauss_v = -0.1
|
|
903
929
|
|
|
904
930
|
# Browse and select background type
|
|
905
|
-
project.experiments['hrpt'].
|
|
931
|
+
project.experiments['hrpt'].show_background_types()
|
|
906
932
|
project.experiments['hrpt'].background_type = 'line-segment'
|
|
907
933
|
|
|
908
934
|
# Add background points
|
|
@@ -917,12 +943,12 @@ project.experiments['hrpt'].linked_phases.create(id='lbco', scale=10.0)
|
|
|
917
943
|
|
|
918
944
|
```python
|
|
919
945
|
# Calculator is auto-resolved per experiment; override if needed
|
|
920
|
-
project.experiments['hrpt'].
|
|
921
|
-
project.experiments['hrpt'].calculator_type = 'cryspy'
|
|
922
|
-
project.analysis.
|
|
946
|
+
project.experiments['hrpt'].calculation.show_calculator_types()
|
|
947
|
+
project.experiments['hrpt'].calculation.calculator_type = 'cryspy'
|
|
948
|
+
project.analysis.fit.minimizer_type = 'lmfit'
|
|
923
949
|
|
|
924
950
|
# Plot before fitting
|
|
925
|
-
project.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
951
|
+
project.display.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
926
952
|
|
|
927
953
|
# Select free parameters
|
|
928
954
|
project.structures['lbco'].cell.length_a.free = True
|
|
@@ -938,7 +964,7 @@ project.analysis.fit()
|
|
|
938
964
|
project.analysis.display.fit_results()
|
|
939
965
|
|
|
940
966
|
# Plot after fitting
|
|
941
|
-
project.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
967
|
+
project.display.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
942
968
|
|
|
943
969
|
# Save
|
|
944
970
|
project.save()
|
|
@@ -1030,13 +1056,12 @@ exposes the full switchable API:
|
|
|
1030
1056
|
| --------------- | -------------------------------------------- | ------------------------------------------------ |
|
|
1031
1057
|
| Current object | `<category>` property (read-only) | `expt.background`, `expt.peak` |
|
|
1032
1058
|
| Active type tag | `<category>_type` property (getter + setter) | `expt.background_type`, `expt.peak_profile_type` |
|
|
1033
|
-
| Show
|
|
1034
|
-
| Show current | `show_current_<category>_type()` | `expt.show_current_peak_profile_type()` |
|
|
1059
|
+
| Show types | `show_<category>_types()` | `expt.show_background_types()` |
|
|
1035
1060
|
|
|
1036
1061
|
Multi-type categories:
|
|
1037
1062
|
|
|
1038
|
-
- **Experiment:** `
|
|
1039
|
-
`
|
|
1063
|
+
- **Experiment:** `background_type`, `peak_profile_type`,
|
|
1064
|
+
`extinction_type`.
|
|
1040
1065
|
|
|
1041
1066
|
Categories that are **fixed at creation** (determined by the experiment
|
|
1042
1067
|
type and never changed) expose only a read-only `<category>` property
|
|
@@ -1056,10 +1081,15 @@ Single-type categories (no public `_type` property):
|
|
|
1056
1081
|
- **Structure:** `cell`, `space_group`, `atom_sites`, `atom_site_aniso`.
|
|
1057
1082
|
- **Analysis:** `aliases`, `constraints`.
|
|
1058
1083
|
|
|
1059
|
-
`
|
|
1060
|
-
`
|
|
1061
|
-
|
|
1062
|
-
|
|
1084
|
+
`fit` is a dedicated analysis category. Its public selector surface is
|
|
1085
|
+
`fit.minimizer_type` and `fit.mode`; there is no separate owner-level
|
|
1086
|
+
proxy API. Likewise, `calculation` is a dedicated experiment category
|
|
1087
|
+
that owns calculator selection —
|
|
1088
|
+
`experiment.calculation.calculator_type` and
|
|
1089
|
+
`experiment.calculation.show_calculator_types()` — instead of the
|
|
1090
|
+
selector being exposed at the experiment owner level. The same pattern
|
|
1091
|
+
applies to `display` on `Project`, which owns `plotter_type` and
|
|
1092
|
+
`tabler_type` (see §9.4.1).
|
|
1063
1093
|
|
|
1064
1094
|
**Design decisions:**
|
|
1065
1095
|
|
|
@@ -1074,17 +1104,39 @@ the `fit_mode.mode` descriptor directly.
|
|
|
1074
1104
|
displaying the current content (not on the base
|
|
1075
1105
|
`CategoryItem`/`CategoryCollection`).
|
|
1076
1106
|
|
|
1107
|
+
#### 9.4.1 Selector Families
|
|
1108
|
+
|
|
1109
|
+
Not every `_type` attribute represents the same kind of choice. The API
|
|
1110
|
+
recognises three distinct selector families. They share a similar
|
|
1111
|
+
`<name>_type` shape so the user can inspect and set them uniformly, but
|
|
1112
|
+
their intent and ownership differ:
|
|
1113
|
+
|
|
1114
|
+
| Family | User intent | Examples | CIF |
|
|
1115
|
+
| ---------------------------------- | ------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
1116
|
+
| Backend selector | Pick an execution backend | `fit.minimizer_type`, `calculation.calculator_type`, `display.plotter_type` | `_fit.minimizer_type`, `_calculation.calculator_type`, `_display.plotter_type` |
|
|
1117
|
+
| Switchable-category impl. selector | Swap a category implementation | `experiment.background_type`, `experiment.peak_profile_type` | category-owned type tag such as `_peak.profile_type` |
|
|
1118
|
+
| Semantic value selector | Pick a scientific/analysis mode | `fit.mode` | `_fit.mode` |
|
|
1119
|
+
|
|
1120
|
+
Backend selectors and semantic value selectors live on a dedicated
|
|
1121
|
+
configuration category (`fit`, `calculation`, `display`). Switchable-
|
|
1122
|
+
category implementation selectors are owned by the host (typically the
|
|
1123
|
+
experiment) because switching them replaces the category instance, as
|
|
1124
|
+
described in §9.3.
|
|
1125
|
+
|
|
1077
1126
|
### 9.5 Discoverable Supported Options
|
|
1078
1127
|
|
|
1079
1128
|
The user can always discover what is supported for the current
|
|
1080
1129
|
experiment:
|
|
1081
1130
|
|
|
1082
1131
|
```python
|
|
1083
|
-
expt.
|
|
1084
|
-
expt.
|
|
1085
|
-
expt.
|
|
1086
|
-
expt.
|
|
1087
|
-
project.analysis.
|
|
1132
|
+
expt.show_peak_profile_types()
|
|
1133
|
+
expt.show_background_types()
|
|
1134
|
+
expt.calculation.show_calculator_types()
|
|
1135
|
+
expt.show_extinction_types()
|
|
1136
|
+
project.analysis.fit.show_minimizer_types()
|
|
1137
|
+
project.analysis.fit.show_modes()
|
|
1138
|
+
project.display.show_plotter_types()
|
|
1139
|
+
project.display.show_tabler_types()
|
|
1088
1140
|
```
|
|
1089
1141
|
|
|
1090
1142
|
Available calculators are filtered by `engine_imported` (whether the
|
|
@@ -1122,10 +1174,10 @@ but internal dispatch always uses the enum:
|
|
|
1122
1174
|
|
|
1123
1175
|
```python
|
|
1124
1176
|
# ✅ Correct — compare with enum
|
|
1125
|
-
if self.
|
|
1177
|
+
if self._fit.mode.value == FitModeEnum.JOINT:
|
|
1126
1178
|
|
|
1127
1179
|
# ❌ Wrong — compare with raw string
|
|
1128
|
-
if self.
|
|
1180
|
+
if self._fit.mode.value == 'joint':
|
|
1129
1181
|
```
|
|
1130
1182
|
|
|
1131
1183
|
### 9.7 Flat Category Structure — No Nested Categories
|
|
@@ -1150,25 +1202,26 @@ Owner
|
|
|
1150
1202
|
└── CategoryB ← WRONG: CategoryB is a child of CategoryA
|
|
1151
1203
|
```
|
|
1152
1204
|
|
|
1153
|
-
**Example — `
|
|
1154
|
-
`CategoryItem` holding the active
|
|
1205
|
+
**Example — `fit` and `joint_fit_experiments`:** `fit` is a
|
|
1206
|
+
`CategoryItem` holding the active minimizer and fitting mode.
|
|
1155
1207
|
`joint_fit_experiments` is a separate `CategoryCollection` holding
|
|
1156
1208
|
per-experiment weights. Both are direct children of `Analysis`, not
|
|
1157
1209
|
nested:
|
|
1158
1210
|
|
|
1159
1211
|
```python
|
|
1160
1212
|
# ✅ Correct — sibling categories on Analysis
|
|
1161
|
-
project.analysis.
|
|
1213
|
+
project.analysis.fit.mode = 'joint'
|
|
1162
1214
|
project.analysis.joint_fit_experiments['npd'].weight = 0.7
|
|
1163
1215
|
|
|
1164
|
-
# ❌ Wrong — joint_fit_experiments as a child of
|
|
1165
|
-
project.analysis.
|
|
1216
|
+
# ❌ Wrong — joint_fit_experiments as a child of fit
|
|
1217
|
+
project.analysis.fit.joint_fit_experiments['npd'].weight = 0.7
|
|
1166
1218
|
```
|
|
1167
1219
|
|
|
1168
1220
|
In CIF output, sibling categories appear as independent blocks:
|
|
1169
1221
|
|
|
1170
1222
|
```
|
|
1171
|
-
|
|
1223
|
+
_fit.minimizer_type lmfit
|
|
1224
|
+
_fit.mode joint
|
|
1172
1225
|
|
|
1173
1226
|
loop_
|
|
1174
1227
|
_joint_fit_experiment.id
|
|
@@ -1326,16 +1379,16 @@ in `KNOWN_ALIASES` inside the tool script.
|
|
|
1326
1379
|
|
|
1327
1380
|
### 10.3 What to Test per Source Module Type
|
|
1328
1381
|
|
|
1329
|
-
| Source module type | Required tests
|
|
1330
|
-
| -------------------------------- |
|
|
1331
|
-
| **Core base class** (`core/`) | Instantiation, public properties, validation edge cases, identity wiring.
|
|
1332
|
-
| **Factory** (`factory.py`) | Registration check, `supported_tags()`, `default_tag()`, `create()` for each tag, `show_supported()` output, invalid-tag handling.
|
|
1333
|
-
| **Category** (`default.py`) | Instantiation, all public properties (read + write where applicable), CIF round-trip (`as_cif` → `from_cif`), parameter enumeration.
|
|
1334
|
-
| **Enum** (`enums.py`) | Membership of all members, `default()` method, `description()` for every member, `StrEnum` string equality.
|
|
1335
|
-
| **Datablock item** (`base.py`) | Construction, switchable-category full API (`<cat>`, `<cat>_type` get/set, `
|
|
1336
|
-
| **Collection** (`collection.py`) | `create`, `add`, `remove`, `names`, `show_names`, `show_params`, iteration, duplicate-name handling.
|
|
1337
|
-
| **Calculator / Minimizer** | `can_handle()` with compatible and incompatible experiment types, `_compute()` stub or mock.
|
|
1338
|
-
| **Display / IO** | Input → output for representative cases; file-not-found and malformed-input error paths.
|
|
1382
|
+
| Source module type | Required tests |
|
|
1383
|
+
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1384
|
+
| **Core base class** (`core/`) | Instantiation, public properties, validation edge cases, identity wiring. |
|
|
1385
|
+
| **Factory** (`factory.py`) | Registration check, `supported_tags()`, `default_tag()`, `create()` for each tag, `show_supported()` output, invalid-tag handling. |
|
|
1386
|
+
| **Category** (`default.py`) | Instantiation, all public properties (read + write where applicable), CIF round-trip (`as_cif` → `from_cif`), parameter enumeration. |
|
|
1387
|
+
| **Enum** (`enums.py`) | Membership of all members, `default()` method, `description()` for every member, `StrEnum` string equality. |
|
|
1388
|
+
| **Datablock item** (`base.py`) | Construction, switchable-category full API (`<cat>`, `<cat>_type` get/set, `show_<cat>_types`), `show`/`show_as_cif`. |
|
|
1389
|
+
| **Collection** (`collection.py`) | `create`, `add`, `remove`, `names`, `show_names`, `show_params`, iteration, duplicate-name handling. |
|
|
1390
|
+
| **Calculator / Minimizer** | `can_handle()` with compatible and incompatible experiment types, `_compute()` stub or mock. |
|
|
1391
|
+
| **Display / IO** | Input → output for representative cases; file-not-found and malformed-input error paths. |
|
|
1339
1392
|
|
|
1340
1393
|
### 10.4 Test Conventions
|
|
1341
1394
|
|
|
@@ -117,9 +117,19 @@ to an incompatible data class and silently discarding loaded data.
|
|
|
117
117
|
|
|
118
118
|
Added `SEQUENTIAL = 'sequential'` to `FitModeEnum`. `fit_sequential()`
|
|
119
119
|
now sets `fit_mode.mode = 'sequential'` internally so the mode is
|
|
120
|
-
persisted in CIF. Added `
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
`
|
|
125
|
-
|
|
120
|
+
persisted in CIF. Added `show_fit_mode_types()` (filters by experiment
|
|
121
|
+
count: ≤1 → only `single`; >1 → all three) and `show_fit_mode_types()`
|
|
122
|
+
on `Analysis`. If `fit()` is called while mode is `'sequential'`, it
|
|
123
|
+
logs an error directing the user to `fit_sequential()`. Promoted
|
|
124
|
+
`fit_mode` from a pure single-type category to one with show methods.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Persist Per-Experiment Calculator Selection
|
|
129
|
+
|
|
130
|
+
Calculator selection now lives in the experiment-side `calculation`
|
|
131
|
+
category and is persisted in experiment CIF via
|
|
132
|
+
`_calculation.calculator_type`. Loading restores the explicit backend
|
|
133
|
+
selection before dependent experiment categories are populated, so saved
|
|
134
|
+
projects keep the exact active calculator configuration instead of
|
|
135
|
+
falling back to auto-resolution.
|
|
@@ -14,7 +14,7 @@ needed.
|
|
|
14
14
|
|
|
15
15
|
**Type:** Fragility
|
|
16
16
|
|
|
17
|
-
`joint_fit_experiments` is created once when `
|
|
17
|
+
`joint_fit_experiments` is created once when `fit.mode` becomes
|
|
18
18
|
`'joint'`. If experiments are added, removed, or renamed afterwards, the
|
|
19
19
|
weight collection is stale. Joint fitting can fail with missing keys or
|
|
20
20
|
run with incorrect weights.
|
|
@@ -180,25 +180,6 @@ minimiser.
|
|
|
180
180
|
|
|
181
181
|
---
|
|
182
182
|
|
|
183
|
-
## 16. 🟡 Persist Per-Experiment `calculator_type`
|
|
184
|
-
|
|
185
|
-
**Type:** Completeness
|
|
186
|
-
|
|
187
|
-
The current architecture moved calculator selection to the experiment
|
|
188
|
-
level via `calculator_type`, but this selection is not written to CIF
|
|
189
|
-
during `save()` / `show_as_cif()`. Reloading or exporting a project
|
|
190
|
-
therefore loses explicit calculator choices and falls back to
|
|
191
|
-
auto-resolution.
|
|
192
|
-
|
|
193
|
-
**Fix:** serialise `calculator_type` as part of the experiment or
|
|
194
|
-
analysis state, and make sure `load()` restores it. The saved project
|
|
195
|
-
should represent the exact active calculator configuration, not just a
|
|
196
|
-
re-derivable default.
|
|
197
|
-
|
|
198
|
-
**Depends on:** nothing.
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
183
|
## 17. 🟢 Use PDF-Specific CIF Names for Total Scattering
|
|
203
184
|
|
|
204
185
|
**Type:** Naming
|
|
@@ -1191,9 +1172,9 @@ check. Options:
|
|
|
1191
1172
|
|
|
1192
1173
|
**Type:** API completeness
|
|
1193
1174
|
|
|
1194
|
-
`
|
|
1195
|
-
|
|
1196
|
-
|
|
1175
|
+
`show_calculator_types()` exists per-experiment, but there is no
|
|
1176
|
+
project/analysis-level method to list all available calculator engines.
|
|
1177
|
+
Users exploring the API have no single entry point to see what
|
|
1197
1178
|
calculators are installed.
|
|
1198
1179
|
|
|
1199
1180
|
**Depends on:** nothing.
|
|
@@ -1206,8 +1187,8 @@ calculators are installed.
|
|
|
1206
1187
|
|
|
1207
1188
|
The switchable-category naming convention prescribes `<category>_type`
|
|
1208
1189
|
(getter/setter) and `show_supported_<category>_types()`. But some names
|
|
1209
|
-
deviate: e.g. `
|
|
1210
|
-
`show_supported_minimizer_types()`, and `
|
|
1190
|
+
deviate: e.g. `show_minimizer_types()` instead of
|
|
1191
|
+
`show_supported_minimizer_types()`, and `minimizer_type` instead of
|
|
1211
1192
|
`minimizer_type`. Audit and align all switchable-category APIs.
|
|
1212
1193
|
|
|
1213
1194
|
**Depends on:** nothing.
|
|
@@ -1446,7 +1427,6 @@ operation is possible (e.g. in automated pipelines or tests).
|
|
|
1446
1427
|
| 13 | Suppress redundant dirty-flag sets | 🟢 Low | Performance |
|
|
1447
1428
|
| 14 | Finer-grained change tracking | 🟢 Low | Performance |
|
|
1448
1429
|
| 15 | Validate joint-fit weights | 🟡 Med | Correctness |
|
|
1449
|
-
| 16 | Persist per-experiment `calculator_type` | 🟡 Med | Completeness |
|
|
1450
1430
|
| 17 | Use PDF-specific CIF names | 🟢 Low | Naming |
|
|
1451
1431
|
| 18 | Move CIF v2→v1 conversion out of calculator | 🟢 Low | Maintainability |
|
|
1452
1432
|
| 19 | Debug-mode logging for calculator imports | 🟢 Low | Diagnostics |
|
{easydiffraction-0.13.1 → easydiffraction-0.15.0}/docs/architecture/package-structure-full.md
RENAMED
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
│ │ │ │ └── 🏷️ class Constraints
|
|
31
31
|
│ │ │ └── 📄 factory.py
|
|
32
32
|
│ │ │ └── 🏷️ class ConstraintsFactory
|
|
33
|
-
│ │ ├── 📁
|
|
33
|
+
│ │ ├── 📁 fit
|
|
34
34
|
│ │ │ ├── 📄 __init__.py
|
|
35
|
+
│ │ │ ├── 📄 default.py
|
|
36
|
+
│ │ │ │ └── 🏷️ class Fit
|
|
35
37
|
│ │ │ ├── 📄 enums.py
|
|
36
38
|
│ │ │ │ └── 🏷️ class FitModeEnum
|
|
37
|
-
│ │ │
|
|
38
|
-
│ │ │
|
|
39
|
-
│ │ │ └── 📄 fit_mode.py
|
|
40
|
-
│ │ │ └── 🏷️ class FitMode
|
|
39
|
+
│ │ │ └── 📄 factory.py
|
|
40
|
+
│ │ │ └── 🏷️ class FitFactory
|
|
41
41
|
│ │ ├── 📁 joint_fit_experiments
|
|
42
42
|
│ │ │ ├── 📄 __init__.py
|
|
43
43
|
│ │ │ ├── 📄 default.py
|
|
@@ -152,6 +152,12 @@
|
|
|
152
152
|
│ │ │ │ └── 📄 line_segment.py
|
|
153
153
|
│ │ │ │ ├── 🏷️ class LineSegment
|
|
154
154
|
│ │ │ │ └── 🏷️ class LineSegmentBackground
|
|
155
|
+
│ │ │ ├── 📁 calculation
|
|
156
|
+
│ │ │ │ ├── 📄 __init__.py
|
|
157
|
+
│ │ │ │ ├── 📄 default.py
|
|
158
|
+
│ │ │ │ │ └── 🏷️ class Calculation
|
|
159
|
+
│ │ │ │ └── 📄 factory.py
|
|
160
|
+
│ │ │ │ └── 🏷️ class CalculationFactory
|
|
155
161
|
│ │ │ ├── 📁 data
|
|
156
162
|
│ │ │ │ ├── 📄 __init__.py
|
|
157
163
|
│ │ │ │ ├── 📄 bragg_pd.py
|
|
@@ -238,6 +244,7 @@
|
|
|
238
244
|
│ │ │ │ ├── 📄 factory.py
|
|
239
245
|
│ │ │ │ │ └── 🏷️ class PeakFactory
|
|
240
246
|
│ │ │ │ ├── 📄 tof.py
|
|
247
|
+
│ │ │ │ │ ├── 🏷️ class TofPseudoVoigt
|
|
241
248
|
│ │ │ │ │ ├── 🏷️ class TofJorgensen
|
|
242
249
|
│ │ │ │ │ ├── 🏷️ class TofJorgensenVonDreele
|
|
243
250
|
│ │ │ │ │ └── 🏷️ class TofDoubleJorgensenVonDreele
|
|
@@ -360,6 +367,14 @@
|
|
|
360
367
|
│ ├── 📄 __init__.py
|
|
361
368
|
│ └── 📄 ascii.py
|
|
362
369
|
├── 📁 project
|
|
370
|
+
│ ├── 📁 categories
|
|
371
|
+
│ │ ├── 📁 display
|
|
372
|
+
│ │ │ ├── 📄 __init__.py
|
|
373
|
+
│ │ │ ├── 📄 default.py
|
|
374
|
+
│ │ │ │ └── 🏷️ class Display
|
|
375
|
+
│ │ │ └── 📄 factory.py
|
|
376
|
+
│ │ │ └── 🏷️ class DisplayFactory
|
|
377
|
+
│ │ └── 📄 __init__.py
|
|
363
378
|
│ ├── 📄 __init__.py
|
|
364
379
|
│ ├── 📄 project.py
|
|
365
380
|
│ │ └── 🏷️ class Project
|