easydiffraction 0.13.0__tar.gz → 0.14.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.0 → easydiffraction-0.14.0}/PKG-INFO +2 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/ROADMAP.md +81 -57
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/architecture.md +118 -76
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/issues_closed.md +16 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/issues_open.md +6 -26
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/package-structure-full.md +20 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/package-structure-short.md +13 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-1.ipynb +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-1.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-10.ipynb +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-10.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-11.ipynb +5 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-11.py +5 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-12.ipynb +15 -25
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-12.py +6 -9
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-13.ipynb +104 -85
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-13.py +71 -54
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-14.ipynb +4 -4
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-14.py +4 -4
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-15.ipynb +29 -19
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-15.py +8 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-16.ipynb +21 -39
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-16.py +6 -12
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-17.ipynb +48 -18
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-17.py +48 -18
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-18.ipynb +4 -20
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-18.py +2 -8
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-2.ipynb +17 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-2.py +8 -4
- easydiffraction-0.14.0/docs/docs/tutorials/ed-20.ipynb +816 -0
- easydiffraction-0.14.0/docs/docs/tutorials/ed-20.py +381 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-3.ipynb +138 -228
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-3.py +25 -55
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-4.ipynb +11 -19
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-4.py +8 -9
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-5.ipynb +142 -41
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-5.py +48 -11
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-6.ipynb +75 -105
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-6.py +24 -30
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-7.ipynb +64 -72
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-7.py +23 -19
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-8.ipynb +28 -63
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-8.py +9 -20
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-9.ipynb +12 -33
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/ed-9.py +4 -13
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/index.json +7 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/tutorials/index.md +8 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/analysis.md +10 -11
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/project.md +13 -18
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/first-steps.md +7 -8
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/mkdocs.yml +3 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/pixi.lock +886 -802
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/pyproject.toml +1 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/__main__.py +4 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/analysis.py +13 -66
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/crysfml.py +125 -39
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/cryspy.py +77 -50
- easydiffraction-0.14.0/src/easydiffraction/analysis/categories/fit/__init__.py +6 -0
- easydiffraction-0.14.0/src/easydiffraction/analysis/categories/fit/default.py +200 -0
- {easydiffraction-0.13.0/src/easydiffraction/analysis/categories/fit_mode → easydiffraction-0.14.0/src/easydiffraction/analysis/categories/fit}/enums.py +2 -2
- {easydiffraction-0.13.0/src/easydiffraction/analysis/categories/fit_mode → easydiffraction-0.14.0/src/easydiffraction/analysis/categories/fit}/factory.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/fit_helpers/reporting.py +8 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/base.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/enums.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/sequential.py +3 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +1 -4
- easydiffraction-0.14.0/src/easydiffraction/datablocks/experiment/categories/calculation/__init__.py +8 -0
- easydiffraction-0.14.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +106 -0
- easydiffraction-0.14.0/src/easydiffraction/datablocks/experiment/categories/calculation/factory.py +17 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +5 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/instrument/tof.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/__init__.py +1 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl.py +7 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py +2 -2
- easydiffraction-0.14.0/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +148 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof.py +38 -12
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/total.py +7 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/base.py +147 -97
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +25 -10
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/enums.py +35 -27
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/factory.py +2 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +3 -45
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +4 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/item/base.py +17 -10
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/cif/serialize.py +69 -36
- easydiffraction-0.14.0/src/easydiffraction/project/categories/display/__init__.py +8 -0
- easydiffraction-0.14.0/src/easydiffraction/project/categories/display/default.py +117 -0
- easydiffraction-0.14.0/src/easydiffraction/project/categories/display/factory.py +17 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/project/project.py +17 -20
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/summary/summary.py +62 -32
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/utils.py +34 -11
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_adp_switching.py +5 -7
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_switchable_categories.py +5 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/conftest.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_analysis_display.py +5 -6
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_aniso_adp_fitting.py +2 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_exploration_help.py +4 -7
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_multi.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_plotting.py +5 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_powder-diffraction_joint-fit.py +4 -4
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_project_load.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_switch-calculator.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/test_analyze_reduced_data.py +5 -15
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/test_package_import.py +6 -0
- easydiffraction-0.14.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +116 -0
- easydiffraction-0.14.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +92 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +1 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_analysis.py +10 -10
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +3 -3
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_parameters.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_base.py +2 -2
- easydiffraction-0.14.0/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_default.py +90 -0
- easydiffraction-0.14.0/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_factory.py +27 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_tof.py +1 -1
- easydiffraction-0.14.0/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +89 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof.py +13 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base_coverage.py +15 -15
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc_coverage.py +4 -4
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums_coverage.py +24 -12
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_total_pd.py +3 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/test_collection.py +1 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_site_aniso.py +48 -87
- easydiffraction-0.14.0/tests/unit/easydiffraction/display/tablers/__init__.py +2 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/tablers/test_pandas.py +2 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/io/cif/test_serialize.py +39 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/io/cif/test_serialize_more.py +5 -7
- easydiffraction-0.14.0/tests/unit/easydiffraction/project/categories/display/test_default.py +55 -0
- easydiffraction-0.14.0/tests/unit/easydiffraction/project/categories/display/test_factory.py +23 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/project/test_project_load.py +16 -5
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/summary/test_summary.py +4 -1
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/summary/test_summary_details.py +26 -12
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/test___init__.py +2 -2
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/test___main__.py +33 -11
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_utils_coverage.py +19 -12
- easydiffraction-0.13.0/docs/docs/tutorials/data/MAT005500.BS.bin02Double_0_int_c.histogramIgor +0 -12638
- easydiffraction-0.13.0/docs/docs/tutorials/data/MAT005500.SE.bin02Double_0_int_c.histogramIgor +0 -9813
- easydiffraction-0.13.0/docs/docs/tutorials/data/ed-7.xye +0 -5600
- easydiffraction-0.13.0/docs/docs/tutorials/data/lbco_project/summary.cif +0 -1
- easydiffraction-0.13.0/src/easydiffraction/analysis/categories/fit_mode/__init__.py +0 -6
- easydiffraction-0.13.0/src/easydiffraction/analysis/categories/fit_mode/fit_mode.py +0 -65
- easydiffraction-0.13.0/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +0 -30
- easydiffraction-0.13.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +0 -28
- easydiffraction-0.13.0/tests/unit/easydiffraction/analysis/categories/test_fit_mode.py +0 -85
- easydiffraction-0.13.0/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +0 -57
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.badgery.yaml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.codefactorignore +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.copier-answers.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/download-artifact/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/github-script/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/setup-easyscience-bot/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/setup-pixi/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/upload-artifact/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/actions/upload-codecov/action.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/configs/pages-deployment.json +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/configs/rulesets-develop.json +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/configs/rulesets-gh-pages.json +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/configs/rulesets-master.json +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/copilot-instructions.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/scripts/backmerge-conflict-issue.js +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/backmerge.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/cleanup.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/coverage.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/dashboard.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/docs.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/issues-labels.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/lint-format.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/pr-labels.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/pypi-publish.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/pypi-test.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/release-notes.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/release-pr.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/security.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/test-trigger.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/test.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/tutorial-tests-colab.yaml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/tutorial-tests-trigger.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.github/workflows/tutorial-tests.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.gitignore +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.pre-commit-config.yaml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/.prettierignore +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/CONTRIBUTING.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/LICENSE +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/README.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/codecov.yml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/adp_implementation.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/architecture/cryspy-dwf-bug.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/analysis.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/core.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/crystallography.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/datablocks/experiment.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/datablocks/structure.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/display.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/io.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/project.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/summary.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/api-reference/utils.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/favicon.png +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/logo_dark.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/logo_light.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/user-guide/data-analysis_model.png +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/javascripts/extra.js +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/javascripts/mathjax.js +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/assets/stylesheets/extra.css +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/cli/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/installation-and-setup/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/introduction/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/experiment.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/model.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/analysis-workflow/summary.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/concept.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/data-format.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/glossary.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/index.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/_exptl_crystal.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/_extinction.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/_pd_calib.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/atom_site.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/background.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/cell.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/expt_type.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/instrument.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/linked_phases.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/pd_meas.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/peak.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters/space_group.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/docs/user-guide/parameters.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/includes/abbreviations.md +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/.icons/app.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/.icons/easydiffraction.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/.icons/easyscience.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/.icons/google-colab.svg +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/main.html +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/docs/overrides/partials/logo.html +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/pixi.toml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/prettierrc.toml +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/calculators/pdffit.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/aliases/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/aliases/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/aliases/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/constraints/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/constraints/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/constraints/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/categories/joint_fit_experiments/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/fit_helpers/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/fit_helpers/metrics.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/fit_helpers/tracking.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/fitting.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/bumps.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/bumps_amoeba.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/bumps_de.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/bumps_lm.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/dfols.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/lmfit.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/lmfit_least_squares.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/analysis/minimizers/lmfit_leastsq.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/category.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/collection.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/datablock.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/diagnostic.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/guard.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/identity.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/metadata.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/singleton.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/validation.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/core/variable.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/crystallography/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/crystallography/crystallography.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/crystallography/space_groups.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/data/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/extinction/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/extinction/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/instrument/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/instrument/cwl.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/instrument/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof_mixins.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/categories/peak/total_mixins.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/collection.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/experiment/item/total_pd.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/cell/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/cell/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/cell/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/space_group/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/space_group/default.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/categories/space_group/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/collection.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/item/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/datablocks/structure/item/factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/plotters/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/plotters/ascii.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/plotters/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/plotters/plotly.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/plotting.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/tablers/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/tablers/base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/tablers/pandas.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/tablers/rich.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/tables.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/display/utils.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/ascii.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/cif/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/cif/handler.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/io/cif/parse.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/project/__init__.py +0 -0
- {easydiffraction-0.13.0/src/easydiffraction/summary → easydiffraction-0.14.0/src/easydiffraction/project/categories}/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/project/project_info.py +0 -0
- {easydiffraction-0.13.0/tests/unit/easydiffraction/datablocks/structure/categories → easydiffraction-0.14.0/src/easydiffraction/summary}/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/_vendored/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/detector.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/_vendored/theme_detect.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/environment.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/src/easydiffraction/utils/logging.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/conftest.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_experiment_workflow.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_fitting_workflow.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_project_lifecycle.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/functional/test_structure_workflow.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_cif_round_trip.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_pair-distribution-function.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_sequential.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_single-crystal-diffraction.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/fitting/test_summary_report.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/conftest.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/test_read_reduced_data.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/test_validate_meta_data.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/integration/scipp-analysis/dream/test_validate_physical_data.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/calculators/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/calculators/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/categories/test_aliases.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/categories/test_constraints.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_amoeba.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_de.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_lm.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_least_squares.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_leastsq.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_fitting.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/analysis/test_sequential.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_category.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_collection.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_datablock.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_diagnostic.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_guard.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_identity.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_metadata.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_singletons.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/core/test_validation.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/crystallography/test_crystallography.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/crystallography/test_space_groups.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/crystallography/test_space_groups_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_chebyshev.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_line_segment.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_sc.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_cwl.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl_mixins.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof_mixins.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total_mixins.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_diffrn.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_excluded_regions.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_experiment_type.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_extinction.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_crystal.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_phases.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_pd.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory_coverage.py +0 -0
- {easydiffraction-0.13.0/tests/unit/easydiffraction/display/tablers → easydiffraction-0.14.0/tests/unit/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_sites.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_cell.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_space_group.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/item/test_factory.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/test_collection.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/datablocks/structure/test_collection_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/plotters/test_ascii.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/plotters/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/plotters/test_plotly.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/tablers/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/tablers/test_rich.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/test_base.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/test_plotting.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/test_plotting_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/test_tables.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/display/test_utils.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/io/cif/test_handler.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/io/cif/test_parse.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/io/test_ascii.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/project/test_project.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/project/test_project_info.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/project/test_project_save.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_enums.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_environment.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_environment_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_logging.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_logging_coverage.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_theme_detect.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tests/unit/easydiffraction/utils/test_utils.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/gen_tests_scaffold.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/generate_package_docs.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/license_headers.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/naming_check.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/param_consistency.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/test_scripts.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/test_structure_check.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/tweak_notebooks.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/update_docs_assets.py +0 -0
- {easydiffraction-0.13.0 → easydiffraction-0.14.0}/tools/update_github_labels.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easydiffraction
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.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
|
|
@@ -69,6 +69,7 @@ Requires-Dist: nbstripout; extra == 'dev'
|
|
|
69
69
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
70
70
|
Requires-Dist: pydoclint; extra == 'dev'
|
|
71
71
|
Requires-Dist: pytest; extra == 'dev'
|
|
72
|
+
Requires-Dist: pytest-benchmark; extra == 'dev'
|
|
72
73
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
73
74
|
Requires-Dist: pytest-xdist; extra == 'dev'
|
|
74
75
|
Requires-Dist: pyyaml; extra == 'dev'
|
|
@@ -18,9 +18,9 @@ Legend:
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
# 1.
|
|
21
|
+
# 1. Structure Model
|
|
22
22
|
|
|
23
|
-
## 1.1 Crystal Structure
|
|
23
|
+
## 1.1 Crystal Structure
|
|
24
24
|
|
|
25
25
|
### Space Group
|
|
26
26
|
|
|
@@ -48,35 +48,51 @@ Legend:
|
|
|
48
48
|
| Occupancy | ✅ | ✅ |
|
|
49
49
|
| Symmetry _wyckoff_letter_ | ✅ | ✅ |
|
|
50
50
|
|
|
51
|
-
### Atomic Displacement
|
|
51
|
+
### Atomic Displacement (ADP)
|
|
52
52
|
|
|
53
|
-
| Feature
|
|
54
|
-
|
|
|
55
|
-
| Isotropic
|
|
56
|
-
| Isotropic
|
|
57
|
-
| Anisotropic
|
|
58
|
-
| Anisotropic
|
|
53
|
+
| Feature | LIB | APP |
|
|
54
|
+
| --------------------------------------------------- | --- | --- |
|
|
55
|
+
| Isotropic _Biso_ | ✅ | 🗓 |
|
|
56
|
+
| Isotropic _Uiso_ | 🚧 | ✅ |
|
|
57
|
+
| Anisotropic _Bani_ (_B11, B22, B33, B12, B13, B23_) | 🚧 | 🗓 |
|
|
58
|
+
| Anisotropic _Uani_ (_U11, U22, U33, U12, U13, U23_) | 🚧 | 🗓 |
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
-
## 1.2 Magnetic Structure
|
|
62
|
+
## 1.2 Magnetic Structure - EPIC
|
|
63
63
|
|
|
64
|
-
| Feature
|
|
65
|
-
|
|
|
66
|
-
|
|
|
64
|
+
| Feature | LIB | APP |
|
|
65
|
+
| ----------------------------------------------------- | --- | --- |
|
|
66
|
+
| Magnetic Space Groups | 🗓 | 🗓 |
|
|
67
|
+
| Irreducible representations | 🗓 | 🗓 |
|
|
68
|
+
| Magnetic propagation vector (_kx, ky, kz_) | 🗓 | 🗓 |
|
|
69
|
+
| Magnetic moments (_mx, my, mz_) | 🗓 | 🗓 |
|
|
70
|
+
| Local Susceptibility (_𝜒11, 𝜒22, 𝜒33, 𝜒12, 𝜒13, 𝜒23_) | 🗓 | 🗓 |
|
|
67
71
|
|
|
68
72
|
---
|
|
69
73
|
|
|
70
74
|
# 2. Experiment Model
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
76
|
+
| Techniques | LIB | APP |
|
|
77
|
+
| ---------------------------------------------------- | ----- | ----- |
|
|
78
|
+
| 2.1. Powder Diffraction | ✅/🗓 | ✅/🗓 |
|
|
79
|
+
| 2.1.1. Common features | ✅/🗓 | ✅/🗓 |
|
|
80
|
+
| 2.1.2. Standard Bragg diffraction (CWL) | ✅/🗓 | ✅/🗓 |
|
|
81
|
+
| 2.1.2. Standard Bragg diffraction (TOF) | ✅/🗓 | ✅/🗓 |
|
|
82
|
+
| 2.1.3. Total Scattering (Pair-Distribution Function) | ✅/🗓 | 🗓 |
|
|
83
|
+
| 2.2. Single-Crystal Diffraction (CWL) | ✅/🗓 | ✅/🗓 |
|
|
84
|
+
| 2.2. Single-Crystal Diffraction (TOF) | ✅/🗓 | ✅/🗓 |
|
|
85
|
+
| 2.3. Polarized Powder Diffraction | 🗓 | 🗓 |
|
|
86
|
+
| 2.3.1. Flipping-rathio method (TOF) | 🗓 | 🗓 |
|
|
87
|
+
| 2.3.1. Flipping-rathio method (CWL) | 🗓 | 🗓 |
|
|
88
|
+
| 2.4. Polarized Single-Crystal Diffraction | 🗓 | 🗓 |
|
|
89
|
+
| 2.4.1. Flipping-rathio method (CWL) | 🗓 | 🗓 |
|
|
90
|
+
| 2.4.2. Flipping-rathio method (TOF) | 🗓 | 🗓 |
|
|
91
|
+
| 2.4.3. Spherical neutron polarimetry | 🗓 | 🗓 |
|
|
92
|
+
|
|
93
|
+
## 2.1. Powder Diffraction
|
|
94
|
+
|
|
95
|
+
## 2.1.1 Common features
|
|
80
96
|
|
|
81
97
|
### Linked Phases
|
|
82
98
|
|
|
@@ -90,7 +106,14 @@ Legend:
|
|
|
90
106
|
| ----------------------------------------- | --- | --- |
|
|
91
107
|
| Multiple regions<br>_start/end positions_ | ✅ | 🗓 |
|
|
92
108
|
|
|
93
|
-
|
|
109
|
+
## 2.1.1 Standard Bragg diffraction
|
|
110
|
+
|
|
111
|
+
### Fitting Methods
|
|
112
|
+
|
|
113
|
+
| Feature | LIB | APP |
|
|
114
|
+
| ------------------------------------- | --- | --- |
|
|
115
|
+
| Rietveld refinement (full pattern) | ✅ | ✅ |
|
|
116
|
+
| Le Bail refinement (profile matching) | 🗓 | 🗓 |
|
|
94
117
|
|
|
95
118
|
### Background
|
|
96
119
|
|
|
@@ -130,20 +153,12 @@ Legend:
|
|
|
130
153
|
|
|
131
154
|
### Peak Profile — Time-of-Flight
|
|
132
155
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
type 0m)
|
|
140
|
-
|
|
141
|
-
| Feature | LIB | APP |
|
|
142
|
-
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- |
|
|
143
|
-
| Jorgensen (back-to-back exponentials ⊗ Gaussian)<br>_Gaussian broadening σ₀, σ₁, σ₂<br>Back-to-back exponential rise α₀, α₁. Back-to-back exponential decay β₀, β₁_<br>(CrysPy) | ✅ | ✅ |
|
|
144
|
-
| Jorgensen-Von Dreele (back-to-back exponentials ⊗ pseudo-Voigt)<br>_Gaussian broadening σ₀, σ₁, σ₂. Lorentzian broadening γ₀, γ₁, γ₂<br>Back-to-back exponential rise α₀, α₁. Back-to-back exponential decay β₀, β₁_<br>(CrysPy) | ✅ | ✅ |
|
|
145
|
-
| Double back-to-back exponentials ⊗ pseudo-Voigt [Z-Rietveld type0m]<br>_Gaussian broadening σ₀, σ₁, σ₂. Lorentzian broadening γ₀, γ₁, γ₂<br>Rise α₁, α₂. Fast decay β₀₀, β₀₁. Slow decay β₁₀. Switching r₀₁, r₀₂, r₀₃_<br>(CrysPy) | ✅ | 🗓 |
|
|
146
|
-
| Ikeda-Carpenter ⊗ pseudo-Voigt<br>_Moderator pulse α₀, α₁, β₀, κ<br>Gaussian broadening σ². Lorentzian broadening γ_<br>(CrysFML) | 🗓 | 🗓 |
|
|
156
|
+
| Feature | LIB | APP |
|
|
157
|
+
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- |
|
|
158
|
+
| Jorgensen (back-to-back exponentials ⊗ Gaussian)<br>_Gaussian broadening σ₀, σ₁, σ₂<br>Back-to-back exponential rise α₀, α₁. Back-to-back exponential decay β₀, β₁_<br>(CrysPy "Gauss") | ✅ | ✅ |
|
|
159
|
+
| Jorgensen-Von Dreele (back-to-back exponentials ⊗ pseudo-Voigt)<br>_Gaussian broadening σ₀, σ₁, σ₂. Lorentzian broadening γ₀, γ₁, γ₂<br>Back-to-back exponential rise α₀, α₁. Back-to-back exponential decay β₀, β₁_<br>(CrysPy "pseudo-Voigt") | ✅ | ✅ |
|
|
160
|
+
| Double back-to-back exponentials ⊗ pseudo-Voigt [Z-Rietveld type0m]<br>_Gaussian broadening σ₀, σ₁, σ₂. Lorentzian broadening γ₀, γ₁, γ₂<br>Rise α₁, α₂. Fast decay β₀₀, β₀₁. Slow decay β₁₀. Switching r₀₁, r₀₂, r₀₃_<br>(CrysPy "type0m") | ✅ | 🗓 |
|
|
161
|
+
| Ikeda-Carpenter ⊗ pseudo-Voigt<br>_Moderator pulse α₀, α₁, β₀, κ<br>Gaussian broadening σ². Lorentzian broadening γ_<br>(CrysFML) | 🗓 | 🗓 |
|
|
147
162
|
|
|
148
163
|
| TOF profile | TOF source | Performance |
|
|
149
164
|
| ------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------- |
|
|
@@ -154,13 +169,13 @@ CrysPy peak_shape options:
|
|
|
154
169
|
|
|
155
170
|
---
|
|
156
171
|
|
|
157
|
-
## 2.1.
|
|
172
|
+
## 2.1.3 Total Scattering (Pair Distribution Function)
|
|
158
173
|
|
|
159
174
|
### Peak Profile
|
|
160
175
|
|
|
161
|
-
| Feature
|
|
162
|
-
|
|
|
163
|
-
|
|
|
176
|
+
| Feature | LIB | APP |
|
|
177
|
+
| ------------------------------------------------------------------------------------------------------------------------ | --- | --- |
|
|
178
|
+
| Gaussian-damped sinc termination function<br>_cutoff q. broadening q. sharpening δ₁, δ₂<br>damping q, particle diameter_ | ✅ | 🗓 |
|
|
164
179
|
|
|
165
180
|
---
|
|
166
181
|
|
|
@@ -196,11 +211,20 @@ Gauss or Lorentz mosaicity distribution
|
|
|
196
211
|
| ------------------------------------ | --- | --- |
|
|
197
212
|
| Individual wavelength per reflection | ✅ | 🗓 |
|
|
198
213
|
|
|
199
|
-
## 2.3. Polarized Neutron Diffraction
|
|
214
|
+
## 2.3. Polarized Neutron Powder Diffraction - EPIC
|
|
200
215
|
|
|
201
|
-
| Feature
|
|
202
|
-
|
|
|
203
|
-
|
|
|
216
|
+
| Feature | LIB | APP |
|
|
217
|
+
| ---------------------------- | --- | --- |
|
|
218
|
+
| Flipping-rathio method (TOF) | 🗓 | 🗓 |
|
|
219
|
+
| Flipping-rathio method (CWL) | 🗓 | 🗓 |
|
|
220
|
+
|
|
221
|
+
## 2.3. Polarized Neutron Single Crystal Diffraction - EPIC
|
|
222
|
+
|
|
223
|
+
| Feature | LIB | APP |
|
|
224
|
+
| ----------------------------- | --- | --- |
|
|
225
|
+
| Flipping-rathio method (TOF) | 🗓 | 🗓 |
|
|
226
|
+
| Flipping-rathio method (CWL) | 🗓 | 🗓 |
|
|
227
|
+
| Spherical neutron polarimetry | 🗓 | 🗓 |
|
|
204
228
|
|
|
205
229
|
---
|
|
206
230
|
|
|
@@ -215,19 +239,21 @@ Gauss or Lorentz mosaicity distribution
|
|
|
215
239
|
|
|
216
240
|
# 4. Analysis (Fitting)
|
|
217
241
|
|
|
218
|
-
### Refinement Algorithms
|
|
242
|
+
### Refinement Algorithms (numerical derivatives)
|
|
219
243
|
|
|
220
|
-
| Feature
|
|
221
|
-
|
|
|
222
|
-
| Levenberg–Marquardt
|
|
223
|
-
| Levenberg–Marquardt
|
|
224
|
-
|
|
|
225
|
-
|
|
|
244
|
+
| Feature | LIB | APP |
|
|
245
|
+
| ---------------------------------------------------- | --- | --- |
|
|
246
|
+
| Levenberg–Marquardt<br>LMFIT minimizer | ✅ | ✅ |
|
|
247
|
+
| Levenberg–Marquardt<br>LMFIT minimizer (scipy-based) | ✅ | ✅ |
|
|
248
|
+
| Levenberg–Marquardt<br>BUMPS minimizer | 🚧 | 🗓 |
|
|
249
|
+
| Derivative-free minimization<br>DFO-LS minimizer | ✅ | ✅ |
|
|
250
|
+
| Bayesian analysis<br>BUMPS minimizer | 🗓 | 🗓 |
|
|
226
251
|
|
|
227
252
|
### Fit Strategies
|
|
228
253
|
|
|
229
254
|
| Feature | LIB | APP |
|
|
230
255
|
| ---------------------------------------------------------------------------------------------------- | --- | --- |
|
|
256
|
+
| Single fit of one experimental data block to one/multiple structural data block | ✅ | ✅ |
|
|
231
257
|
| Sequential fit of experimental data blocks | ✅ | 🗓 |
|
|
232
258
|
| Joint fit of experimental data blocks within the same calculation engine | ✅ | 🗓 |
|
|
233
259
|
| Joint fit of experimental data blocks using different calculation engines<br>(e.g. CrysPy + Pdffit2) | ✅ | 🗓 |
|
|
@@ -292,8 +318,8 @@ Gauss or Lorentz mosaicity distribution
|
|
|
292
318
|
|
|
293
319
|
| Feature | LIB | APP | CLI |
|
|
294
320
|
| --------------------------------- | --- | --- | --- |
|
|
295
|
-
| List available tutorial notebooks |
|
|
296
|
-
| Download tutorial notebooks |
|
|
321
|
+
| List available tutorial notebooks | ✅ | — | ✅ |
|
|
322
|
+
| Download tutorial notebooks | ✅ | — | ✅ |
|
|
297
323
|
|
|
298
324
|
---
|
|
299
325
|
|
|
@@ -371,12 +397,10 @@ Gauss or Lorentz mosaicity distribution
|
|
|
371
397
|
|
|
372
398
|
---
|
|
373
399
|
|
|
374
|
-
# 10.
|
|
375
|
-
|
|
376
|
-
Here, we list features that are not sorted into the above categories,
|
|
377
|
-
but are still on our radar for future development.
|
|
400
|
+
# 10. Unsorted features
|
|
378
401
|
|
|
379
402
|
- Restrains (soft constraints, e.g. bond lengths, angles)
|
|
403
|
+
- Refinement using analytical derivatives
|
|
380
404
|
- Global optimization algorithms (e.g. simulated annealing)
|
|
381
405
|
- Incommensurate structures
|
|
382
406
|
- 2D Rietveld refinement
|
|
@@ -389,14 +389,14 @@ class PeakFactory(FactoryBase):
|
|
|
389
389
|
frozenset({
|
|
390
390
|
('scattering_type', ScatteringTypeEnum.BRAGG),
|
|
391
391
|
('beam_mode', BeamModeEnum.CONSTANT_WAVELENGTH),
|
|
392
|
-
}): PeakProfileTypeEnum.
|
|
392
|
+
}): PeakProfileTypeEnum.CWL_PSEUDO_VOIGT,
|
|
393
393
|
frozenset({
|
|
394
394
|
('scattering_type', ScatteringTypeEnum.BRAGG),
|
|
395
395
|
('beam_mode', BeamModeEnum.TIME_OF_FLIGHT),
|
|
396
|
-
}): PeakProfileTypeEnum.
|
|
396
|
+
}): PeakProfileTypeEnum.TOF_JORGENSEN,
|
|
397
397
|
frozenset({
|
|
398
398
|
('scattering_type', ScatteringTypeEnum.TOTAL),
|
|
399
|
-
}): PeakProfileTypeEnum.
|
|
399
|
+
}): PeakProfileTypeEnum.TOTAL_GAUSSIAN_DAMPED_SINC,
|
|
400
400
|
}
|
|
401
401
|
```
|
|
402
402
|
|
|
@@ -413,8 +413,8 @@ attributes:
|
|
|
413
413
|
@PeakFactory.register
|
|
414
414
|
class CwlPseudoVoigt(PeakBase, CwlBroadeningMixin):
|
|
415
415
|
type_info = TypeInfo(
|
|
416
|
-
tag=
|
|
417
|
-
description=
|
|
416
|
+
tag=PeakProfileTypeEnum.CWL_PSEUDO_VOIGT.value,
|
|
417
|
+
description=PeakProfileTypeEnum.CWL_PSEUDO_VOIGT.description(),
|
|
418
418
|
)
|
|
419
419
|
compatibility = Compatibility(
|
|
420
420
|
scattering_type=frozenset({ScatteringTypeEnum.BRAGG}),
|
|
@@ -478,7 +478,11 @@ from .line_segment import LineSegmentBackground
|
|
|
478
478
|
|
|
479
479
|
### 5.6 Tag Naming Convention
|
|
480
480
|
|
|
481
|
-
|
|
481
|
+
Canonical tags are the stable identifiers for factory lookup and
|
|
482
|
+
serialisation. User-facing APIs may expose context-local aliases when
|
|
483
|
+
the owner object already provides enough context to disambiguate the
|
|
484
|
+
choice (for example, `experiment.peak_profile_type = 'pseudo-voigt'`
|
|
485
|
+
inside a CWL or TOF experiment). Canonical tags must be:
|
|
482
486
|
|
|
483
487
|
- **Consistent** — use the same abbreviations everywhere.
|
|
484
488
|
- **Hyphen-separated** — all lowercase, words joined by hyphens.
|
|
@@ -507,15 +511,22 @@ Tags are the user-facing identifiers for selecting types. They must be:
|
|
|
507
511
|
|
|
508
512
|
**Peak tags**
|
|
509
513
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
|
517
|
-
|
|
|
518
|
-
| `
|
|
514
|
+
Canonical peak tags are globally unique within `PeakFactory`. The
|
|
515
|
+
experiment-facing `peak_profile_type` getter, setter, and supported-type
|
|
516
|
+
display use context-local aliases so users do not need to type `cwl-`,
|
|
517
|
+
`tof-`, or `total-` when the experiment context already disambiguates
|
|
518
|
+
the choice.
|
|
519
|
+
|
|
520
|
+
| Canonical tag | Local alias | Class |
|
|
521
|
+
| -------------------------------------- | ------------------------------------ | ---------------------------------- |
|
|
522
|
+
| `cwl-pseudo-voigt` | `pseudo-voigt` | `CwlPseudoVoigt` |
|
|
523
|
+
| `cwl-pseudo-voigt-empirical-asymmetry` | `pseudo-voigt + empirical asymmetry` | `CwlPseudoVoigtEmpiricalAsymmetry` |
|
|
524
|
+
| `cwl-thompson-cox-hastings` | `thompson-cox-hastings` | `CwlThompsonCoxHastings` |
|
|
525
|
+
| `tof-pseudo-voigt` | `pseudo-voigt` | `TofPseudoVoigt` |
|
|
526
|
+
| `tof-jorgensen` | `jorgensen` | `TofJorgensen` |
|
|
527
|
+
| `tof-jorgensen-von-dreele` | `jorgensen-von-dreele` | `TofJorgensenVonDreele` |
|
|
528
|
+
| `tof-double-jorgensen-von-dreele` | `double-jorgensen-von-dreele` | `TofDoubleJorgensenVonDreele` |
|
|
529
|
+
| `total-gaussian-damped-sinc` | `gaussian-damped-sinc` | `TotalGaussianDampedSinc` |
|
|
519
530
|
|
|
520
531
|
**Instrument tags**
|
|
521
532
|
|
|
@@ -684,14 +695,14 @@ category's `calculator_support` metadata and
|
|
|
684
695
|
registry by `engine_imported` (whether the third-party library is
|
|
685
696
|
available in the environment).
|
|
686
697
|
|
|
687
|
-
The experiment exposes
|
|
698
|
+
The experiment exposes a dedicated `calculation` category:
|
|
688
699
|
|
|
689
|
-
- `
|
|
690
|
-
|
|
691
|
-
- `
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
700
|
+
- `calculation.calculator_type` — getter + setter for the calculator
|
|
701
|
+
backend tag
|
|
702
|
+
- `calculation.calculator` — read-only access to the live backend
|
|
703
|
+
instance
|
|
704
|
+
- `calculation.show_calculator_types()` — filtered by data category
|
|
705
|
+
support and marks the current type
|
|
695
706
|
|
|
696
707
|
### 6.2 Minimiser
|
|
697
708
|
|
|
@@ -713,22 +724,19 @@ workflow:
|
|
|
713
724
|
|
|
714
725
|
`Analysis` is bound to a `Project` and provides the high-level API:
|
|
715
726
|
|
|
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.
|
|
727
|
+
- Fit configuration: `fit` (`CategoryItem` with `minimizer_type` and
|
|
728
|
+
`mode` descriptors). `fit.minimizer_type` selects the minimizer
|
|
729
|
+
backend. `fit.mode` stores whether fitting is `'single'`, `'joint'`,
|
|
730
|
+
or `'sequential'`. `fit.show_minimizer_types()` lists supported
|
|
731
|
+
minimizers; `fit.show_modes()` filters modes by experiment count (≤1 →
|
|
732
|
+
only `single`; >1 → all three).
|
|
725
733
|
- Joint-fit weights: `joint_fit_experiments` (`CategoryCollection` of
|
|
726
|
-
per-experiment weight entries); sibling of `
|
|
734
|
+
per-experiment weight entries); sibling of `fit`, not a child.
|
|
727
735
|
- Parameter tables: `show_all_params()`, `show_fittable_params()`,
|
|
728
736
|
`show_free_params()`, `how_to_access_parameters()`
|
|
729
|
-
- Fitting: `fit()` dispatches single/joint
|
|
730
|
-
sequential mode (sets `
|
|
731
|
-
`display.fit_results()` shows results.
|
|
737
|
+
- Fitting: `fit()` dispatches single/joint through the callable `fit`
|
|
738
|
+
category; `fit_sequential()` handles sequential mode (sets `fit.mode`
|
|
739
|
+
to `'sequential'` internally). `display.fit_results()` shows results.
|
|
732
740
|
- Aliases and constraints (single-type categories; no public `_type`
|
|
733
741
|
getter or setter)
|
|
734
742
|
|
|
@@ -751,9 +759,9 @@ It owns and coordinates all components:
|
|
|
751
759
|
| `project.info` | `ProjectInfo` | Metadata: name, title, description, path |
|
|
752
760
|
| `project.structures` | `Structures` | Collection of structure datablocks |
|
|
753
761
|
| `project.experiments` | `Experiments` | Collection of experiment datablocks |
|
|
754
|
-
| `project.
|
|
762
|
+
| `project.display` | `Display` | Plot/table engine selection and facades |
|
|
763
|
+
| `project.analysis` | `Analysis` | Minimiser, fitting, aliases, constraints |
|
|
755
764
|
| `project.summary` | `Summary` | Report generation |
|
|
756
|
-
| `project.plotter` | `Plotter` | Visualisation |
|
|
757
765
|
| `project.verbosity` | `str` | Console output level (full/short/silent) |
|
|
758
766
|
|
|
759
767
|
### 7.1 Data Flow
|
|
@@ -778,7 +786,7 @@ Projects are saved as a directory of CIF files:
|
|
|
778
786
|
|
|
779
787
|
```shell
|
|
780
788
|
project_dir/
|
|
781
|
-
├── project.cif # ProjectInfo
|
|
789
|
+
├── project.cif # ProjectInfo + Display preferences
|
|
782
790
|
├── summary.cif # Summary report
|
|
783
791
|
├── structures/
|
|
784
792
|
│ └── lbco.cif # One file per structure
|
|
@@ -788,6 +796,13 @@ project_dir/
|
|
|
788
796
|
└── analysis.cif # Analysis settings
|
|
789
797
|
```
|
|
790
798
|
|
|
799
|
+
`project.cif` carries both the `_project.*` metadata and the
|
|
800
|
+
`_display.*` engine preferences (`plotter_type`, `tabler_type`), so a
|
|
801
|
+
saved project re-opens with the same display backends. Per-experiment
|
|
802
|
+
calculator selection (`_calculation.calculator_type`) lives in each
|
|
803
|
+
experiment file, and fit configuration (`_fit.minimizer_type`,
|
|
804
|
+
`_fit.mode`) lives in `analysis/analysis.cif`.
|
|
805
|
+
|
|
791
806
|
### 7.3 Verbosity
|
|
792
807
|
|
|
793
808
|
`Project.verbosity` controls how much console output operations produce.
|
|
@@ -894,7 +909,7 @@ project.experiments['hrpt'].instrument.setup_wavelength = 1.494
|
|
|
894
909
|
project.experiments['hrpt'].instrument.calib_twotheta_offset = 0.6
|
|
895
910
|
|
|
896
911
|
# Browse and select peak profile type
|
|
897
|
-
project.experiments['hrpt'].
|
|
912
|
+
project.experiments['hrpt'].show_peak_profile_types()
|
|
898
913
|
project.experiments['hrpt'].peak_profile_type = 'pseudo-voigt'
|
|
899
914
|
|
|
900
915
|
# Set peak profile parameters
|
|
@@ -902,7 +917,7 @@ project.experiments['hrpt'].peak.broad_gauss_u = 0.1
|
|
|
902
917
|
project.experiments['hrpt'].peak.broad_gauss_v = -0.1
|
|
903
918
|
|
|
904
919
|
# Browse and select background type
|
|
905
|
-
project.experiments['hrpt'].
|
|
920
|
+
project.experiments['hrpt'].show_background_types()
|
|
906
921
|
project.experiments['hrpt'].background_type = 'line-segment'
|
|
907
922
|
|
|
908
923
|
# Add background points
|
|
@@ -917,12 +932,12 @@ project.experiments['hrpt'].linked_phases.create(id='lbco', scale=10.0)
|
|
|
917
932
|
|
|
918
933
|
```python
|
|
919
934
|
# Calculator is auto-resolved per experiment; override if needed
|
|
920
|
-
project.experiments['hrpt'].
|
|
921
|
-
project.experiments['hrpt'].calculator_type = 'cryspy'
|
|
922
|
-
project.analysis.
|
|
935
|
+
project.experiments['hrpt'].calculation.show_calculator_types()
|
|
936
|
+
project.experiments['hrpt'].calculation.calculator_type = 'cryspy'
|
|
937
|
+
project.analysis.fit.minimizer_type = 'lmfit'
|
|
923
938
|
|
|
924
939
|
# Plot before fitting
|
|
925
|
-
project.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
940
|
+
project.display.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
926
941
|
|
|
927
942
|
# Select free parameters
|
|
928
943
|
project.structures['lbco'].cell.length_a.free = True
|
|
@@ -938,7 +953,7 @@ project.analysis.fit()
|
|
|
938
953
|
project.analysis.display.fit_results()
|
|
939
954
|
|
|
940
955
|
# Plot after fitting
|
|
941
|
-
project.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
956
|
+
project.display.plotter.plot_meas_vs_calc(expt_name='hrpt', show_residual=True)
|
|
942
957
|
|
|
943
958
|
# Save
|
|
944
959
|
project.save()
|
|
@@ -1030,13 +1045,12 @@ exposes the full switchable API:
|
|
|
1030
1045
|
| --------------- | -------------------------------------------- | ------------------------------------------------ |
|
|
1031
1046
|
| Current object | `<category>` property (read-only) | `expt.background`, `expt.peak` |
|
|
1032
1047
|
| 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()` |
|
|
1048
|
+
| Show types | `show_<category>_types()` | `expt.show_background_types()` |
|
|
1035
1049
|
|
|
1036
1050
|
Multi-type categories:
|
|
1037
1051
|
|
|
1038
|
-
- **Experiment:** `
|
|
1039
|
-
`
|
|
1052
|
+
- **Experiment:** `background_type`, `peak_profile_type`,
|
|
1053
|
+
`extinction_type`.
|
|
1040
1054
|
|
|
1041
1055
|
Categories that are **fixed at creation** (determined by the experiment
|
|
1042
1056
|
type and never changed) expose only a read-only `<category>` property
|
|
@@ -1056,10 +1070,15 @@ Single-type categories (no public `_type` property):
|
|
|
1056
1070
|
- **Structure:** `cell`, `space_group`, `atom_sites`, `atom_site_aniso`.
|
|
1057
1071
|
- **Analysis:** `aliases`, `constraints`.
|
|
1058
1072
|
|
|
1059
|
-
`
|
|
1060
|
-
`
|
|
1061
|
-
|
|
1062
|
-
|
|
1073
|
+
`fit` is a dedicated analysis category. Its public selector surface is
|
|
1074
|
+
`fit.minimizer_type` and `fit.mode`; there is no separate owner-level
|
|
1075
|
+
proxy API. Likewise, `calculation` is a dedicated experiment category
|
|
1076
|
+
that owns calculator selection —
|
|
1077
|
+
`experiment.calculation.calculator_type` and
|
|
1078
|
+
`experiment.calculation.show_calculator_types()` — instead of the
|
|
1079
|
+
selector being exposed at the experiment owner level. The same pattern
|
|
1080
|
+
applies to `display` on `Project`, which owns `plotter_type` and
|
|
1081
|
+
`tabler_type` (see §9.4.1).
|
|
1063
1082
|
|
|
1064
1083
|
**Design decisions:**
|
|
1065
1084
|
|
|
@@ -1074,17 +1093,39 @@ the `fit_mode.mode` descriptor directly.
|
|
|
1074
1093
|
displaying the current content (not on the base
|
|
1075
1094
|
`CategoryItem`/`CategoryCollection`).
|
|
1076
1095
|
|
|
1096
|
+
#### 9.4.1 Selector Families
|
|
1097
|
+
|
|
1098
|
+
Not every `_type` attribute represents the same kind of choice. The API
|
|
1099
|
+
recognises three distinct selector families. They share a similar
|
|
1100
|
+
`<name>_type` shape so the user can inspect and set them uniformly, but
|
|
1101
|
+
their intent and ownership differ:
|
|
1102
|
+
|
|
1103
|
+
| Family | User intent | Examples | CIF |
|
|
1104
|
+
| ---------------------------------- | ------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
1105
|
+
| Backend selector | Pick an execution backend | `fit.minimizer_type`, `calculation.calculator_type`, `display.plotter_type` | `_fit.minimizer_type`, `_calculation.calculator_type`, `_display.plotter_type` |
|
|
1106
|
+
| Switchable-category impl. selector | Swap a category implementation | `experiment.background_type`, `experiment.peak_profile_type` | category-owned type tag such as `_peak.profile_type` |
|
|
1107
|
+
| Semantic value selector | Pick a scientific/analysis mode | `fit.mode` | `_fit.mode` |
|
|
1108
|
+
|
|
1109
|
+
Backend selectors and semantic value selectors live on a dedicated
|
|
1110
|
+
configuration category (`fit`, `calculation`, `display`). Switchable-
|
|
1111
|
+
category implementation selectors are owned by the host (typically the
|
|
1112
|
+
experiment) because switching them replaces the category instance, as
|
|
1113
|
+
described in §9.3.
|
|
1114
|
+
|
|
1077
1115
|
### 9.5 Discoverable Supported Options
|
|
1078
1116
|
|
|
1079
1117
|
The user can always discover what is supported for the current
|
|
1080
1118
|
experiment:
|
|
1081
1119
|
|
|
1082
1120
|
```python
|
|
1083
|
-
expt.
|
|
1084
|
-
expt.
|
|
1085
|
-
expt.
|
|
1086
|
-
expt.
|
|
1087
|
-
project.analysis.
|
|
1121
|
+
expt.show_peak_profile_types()
|
|
1122
|
+
expt.show_background_types()
|
|
1123
|
+
expt.calculation.show_calculator_types()
|
|
1124
|
+
expt.show_extinction_types()
|
|
1125
|
+
project.analysis.fit.show_minimizer_types()
|
|
1126
|
+
project.analysis.fit.show_modes()
|
|
1127
|
+
project.display.show_plotter_types()
|
|
1128
|
+
project.display.show_tabler_types()
|
|
1088
1129
|
```
|
|
1089
1130
|
|
|
1090
1131
|
Available calculators are filtered by `engine_imported` (whether the
|
|
@@ -1122,10 +1163,10 @@ but internal dispatch always uses the enum:
|
|
|
1122
1163
|
|
|
1123
1164
|
```python
|
|
1124
1165
|
# ✅ Correct — compare with enum
|
|
1125
|
-
if self.
|
|
1166
|
+
if self._fit.mode.value == FitModeEnum.JOINT:
|
|
1126
1167
|
|
|
1127
1168
|
# ❌ Wrong — compare with raw string
|
|
1128
|
-
if self.
|
|
1169
|
+
if self._fit.mode.value == 'joint':
|
|
1129
1170
|
```
|
|
1130
1171
|
|
|
1131
1172
|
### 9.7 Flat Category Structure — No Nested Categories
|
|
@@ -1150,25 +1191,26 @@ Owner
|
|
|
1150
1191
|
└── CategoryB ← WRONG: CategoryB is a child of CategoryA
|
|
1151
1192
|
```
|
|
1152
1193
|
|
|
1153
|
-
**Example — `
|
|
1154
|
-
`CategoryItem` holding the active
|
|
1194
|
+
**Example — `fit` and `joint_fit_experiments`:** `fit` is a
|
|
1195
|
+
`CategoryItem` holding the active minimizer and fitting mode.
|
|
1155
1196
|
`joint_fit_experiments` is a separate `CategoryCollection` holding
|
|
1156
1197
|
per-experiment weights. Both are direct children of `Analysis`, not
|
|
1157
1198
|
nested:
|
|
1158
1199
|
|
|
1159
1200
|
```python
|
|
1160
1201
|
# ✅ Correct — sibling categories on Analysis
|
|
1161
|
-
project.analysis.
|
|
1202
|
+
project.analysis.fit.mode = 'joint'
|
|
1162
1203
|
project.analysis.joint_fit_experiments['npd'].weight = 0.7
|
|
1163
1204
|
|
|
1164
|
-
# ❌ Wrong — joint_fit_experiments as a child of
|
|
1165
|
-
project.analysis.
|
|
1205
|
+
# ❌ Wrong — joint_fit_experiments as a child of fit
|
|
1206
|
+
project.analysis.fit.joint_fit_experiments['npd'].weight = 0.7
|
|
1166
1207
|
```
|
|
1167
1208
|
|
|
1168
1209
|
In CIF output, sibling categories appear as independent blocks:
|
|
1169
1210
|
|
|
1170
1211
|
```
|
|
1171
|
-
|
|
1212
|
+
_fit.minimizer_type lmfit
|
|
1213
|
+
_fit.mode joint
|
|
1172
1214
|
|
|
1173
1215
|
loop_
|
|
1174
1216
|
_joint_fit_experiment.id
|
|
@@ -1326,16 +1368,16 @@ in `KNOWN_ALIASES` inside the tool script.
|
|
|
1326
1368
|
|
|
1327
1369
|
### 10.3 What to Test per Source Module Type
|
|
1328
1370
|
|
|
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.
|
|
1371
|
+
| Source module type | Required tests |
|
|
1372
|
+
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1373
|
+
| **Core base class** (`core/`) | Instantiation, public properties, validation edge cases, identity wiring. |
|
|
1374
|
+
| **Factory** (`factory.py`) | Registration check, `supported_tags()`, `default_tag()`, `create()` for each tag, `show_supported()` output, invalid-tag handling. |
|
|
1375
|
+
| **Category** (`default.py`) | Instantiation, all public properties (read + write where applicable), CIF round-trip (`as_cif` → `from_cif`), parameter enumeration. |
|
|
1376
|
+
| **Enum** (`enums.py`) | Membership of all members, `default()` method, `description()` for every member, `StrEnum` string equality. |
|
|
1377
|
+
| **Datablock item** (`base.py`) | Construction, switchable-category full API (`<cat>`, `<cat>_type` get/set, `show_<cat>_types`), `show`/`show_as_cif`. |
|
|
1378
|
+
| **Collection** (`collection.py`) | `create`, `add`, `remove`, `names`, `show_names`, `show_params`, iteration, duplicate-name handling. |
|
|
1379
|
+
| **Calculator / Minimizer** | `can_handle()` with compatible and incompatible experiment types, `_compute()` stub or mock. |
|
|
1380
|
+
| **Display / IO** | Input → output for representative cases; file-not-found and malformed-input error paths. |
|
|
1339
1381
|
|
|
1340
1382
|
### 10.4 Test Conventions
|
|
1341
1383
|
|
|
@@ -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.
|