diff --git a/.github/workflows/pypi-test.yml b/.github/workflows/pypi-test.yml index 3dea22e42..5d0696f51 100644 --- a/.github/workflows/pypi-test.yml +++ b/.github/workflows/pypi-test.yml @@ -40,29 +40,43 @@ jobs: - name: Init pixi project run: pixi init easydiffraction - - name: Set the minimum system requirements + - name: Configure Pixi platforms working-directory: easydiffraction + shell: bash run: | - pixi project system-requirements add macos 14.0 - pixi project system-requirements add glibc 2.35 - - - name: Add Python 3.14 from Conda + set -euo pipefail + + case "$RUNNER_OS" in + Linux) + pixi_platforms='[{ name = "linux-64-glibc-2-35", platform = "linux-64", glibc = "2.35" }]' + ;; + macOS) + pixi_platforms='[{ name = "osx-arm64-macos-14-0", platform = "osx-arm64", macos = "14.0" }]' + ;; + Windows) + pixi_platforms='["win-64"]' + ;; + *) + echo "Unsupported runner OS: $RUNNER_OS" + exit 1 + ;; + esac + + PIXI_PLATFORMS="$pixi_platforms" python -c 'import os, pathlib; path = pathlib.Path("pixi.toml"); text = path.read_text(); path.write_text(text.replace(text.split("platforms = ", 1)[1].split("\n", 1)[0], os.environ["PIXI_PLATFORMS"], 1))' + pixi workspace platform list + + - name: Add Python 3.14 working-directory: easydiffraction run: pixi add "python=3.14" + # GNU Scientific Library (required by diffpy.pdffit2) + # libc++ for macOS (required by diffpy.pdffit2) - name: Add other Conda dependencies working-directory: easydiffraction run: | pixi add gsl pixi add --platform osx-arm64 libcxx - #- name: Add pycrysfml calculator from custom PyPI index - # working-directory: easydiffraction - # run: | - # echo '' >> pixi.toml - # echo '[pypi-dependencies]' >> pixi.toml - # echo 'pycrysfml = { version = ">=0.2.1", index = "https://easyscience.github.io/pypi/" }' >> pixi.toml - - name: Add easydiffraction (with dev dependencies) from PyPI working-directory: easydiffraction run: pixi add --pypi "easydiffraction[dev]" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f85c820c8..24a5c9caf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -231,14 +231,32 @@ jobs: pixi init easydiffraction_py$py_ver cd easydiffraction_py$py_ver - echo "Setting the minimum system requirements" - pixi project system-requirements add macos 14.0 - pixi project system-requirements add glibc 2.35 - - echo "Adding Python $py_ver" + echo "Configure Pixi platforms" + case "$RUNNER_OS" in + Linux) + pixi_platforms='[{ name = "linux-64-glibc-2-35", platform = "linux-64", glibc = "2.35" }]' + ;; + macOS) + pixi_platforms='[{ name = "osx-arm64-macos-14-0", platform = "osx-arm64", macos = "14.0" }]' + ;; + Windows) + pixi_platforms='["win-64"]' + ;; + *) + echo "Unsupported runner OS: $RUNNER_OS" + exit 1 + ;; + esac + + PIXI_PLATFORMS="$pixi_platforms" python -c 'import os, pathlib; path = pathlib.Path("pixi.toml"); text = path.read_text(); path.write_text(text.replace(text.split("platforms = ", 1)[1].split("\n", 1)[0], os.environ["PIXI_PLATFORMS"], 1))' + pixi workspace platform list + + echo "Add Python $py_ver" pixi add "python=$py_ver" - echo "Adding GNU Scientific Library (required by diffpy.pdffit2)" + # Add other Conda dependencies + + echo "Add GNU Scientific Library (required by diffpy.pdffit2)" pixi add gsl # diffpy.pdffit2 wheel links @rpath/libc++.1.dylib, which must be @@ -248,14 +266,6 @@ jobs: echo "Adding libc++ for macOS (required by diffpy.pdffit2)" pixi add --platform osx-arm64 libcxx - # Doing this in a hacky way, as pixi does not support adding - # dependencies from a custom PyPI index with a CLI command without - # specifying full wheel name. - #echo "Adding pycrysfml from custom PyPI index" - #echo '' >> pixi.toml - #echo '[pypi-dependencies]' >> pixi.toml - #echo 'pycrysfml = { version = ">=0.2.1", index = "https://easyscience.github.io/pypi/" }' >> pixi.toml - echo "Looking for wheel in ../dist/py$py_ver/" ls -l "../dist/py$py_ver/" @@ -267,7 +277,7 @@ jobs: whl_abs_path="$(python -c 'import os,sys; print(os.path.abspath(sys.argv[1]))' "${whl_path[0]}")" - echo "Adding easydiffraction from: $whl_abs_path" + echo "Add easydiffraction from: $whl_abs_path" pixi add --pypi "easydiffraction[dev] @ ${whl_abs_path}" echo "Exiting pixi project directory" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9e5b93cff..67a494ef1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,8 +42,7 @@ Please make sure you follow the EasyScience organization-wide If you are not planning to contribute code, you may want to: - ๐Ÿž Report a bug โ€” see [Reporting Issues](#11-reporting-issues) -- ๐Ÿ›ก Report a security issue โ€” see - [Security Issues](#12-security-issues) +- ๐Ÿ›ก Report a security issue โ€” see [Security Issues](#12-security-issues) - ๐Ÿ’ฌ Ask a question or start a discussion at [Project Discussions](https://github.com/easyscience/diffraction-lib/discussions) diff --git a/docs/dev/adrs/accepted/background-auto-estimate.md b/docs/dev/adrs/accepted/background-auto-estimate.md index a363c46f2..4d6d22574 100644 --- a/docs/dev/adrs/accepted/background-auto-estimate.md +++ b/docs/dev/adrs/accepted/background-auto-estimate.md @@ -368,8 +368,9 @@ one-line summary (ยง1). Empirical calibration was carried out in Phase 2: - The Stage-2 tolerance multiplier (`c ยท ฯƒ`, `c = 2`) and the width percentile (~75th) are first-cut constants; they were validated โ€” not - exhaustively swept โ€” against the representative CWL (`ed-2`) and TOF - (`ed-13`) datasets plus the analytic unit cases, and produce sensible + exhaustively swept โ€” against the representative CWL + (`refine-lbco-hrpt-from-data`) and TOF (`fitting-exercise-si-lbco`) + datasets plus the analytic unit cases, and produce sensible backgrounds there. Re-tuning stays possible if a future dataset needs it. - The single Stage-1 method (`arpls`) holds for both validated beam @@ -485,15 +486,16 @@ line-segment points are a real-world reference: stripping them and re-running `auto_estimate()` should reproduce a comparable background curve. **Phase 2 outcome:** the functional regression validates two representative datasets โ€” CWL -[`ed-2.py`](../../../../docs/docs/tutorials/ed-2.py) and TOF -[`ed-13.py`](../../../../docs/docs/tutorials/ed-13.py) โ€” comparing the -estimated curve against the hand-placed reference to within a fraction -of the measured signal scale; the single `arpls` default and the -first-cut constants hold for both. Sloping and curved backgrounds are -covered against exact analytic ground truth by the unit tests, not the -corpus. A broader per-tutorial sweep (e.g. `ed-17`, `ed-16`) was not -needed and stays available if a future dataset misbehaves. These checks -run at the functional / unit level. +[`refine-lbco-hrpt-from-data.py`](../../../../docs/docs/tutorials/refine-lbco-hrpt-from-data.py) +and TOF +[`fitting-exercise-si-lbco.py`](../../../../docs/docs/tutorials/fitting-exercise-si-lbco.py) +โ€” comparing the estimated curve against the hand-placed reference to +within a fraction of the measured signal scale; the single `arpls` +default and the first-cut constants hold for both. Sloping and curved +backgrounds are covered against exact analytic ground truth by the unit +tests, not the corpus. A broader per-tutorial sweep (e.g. `ed-17`, +`ed-16`) was not needed and stays available if a future dataset +misbehaves. These checks run at the functional / unit level. The estimator module mirrors into `tests/unit/easydiffraction/datablocks/experiment/categories/background/` diff --git a/docs/dev/adrs/accepted/iucr-cif-tag-alignment.md b/docs/dev/adrs/accepted/iucr-cif-tag-alignment.md index 255a4b410..c8f91f366 100644 --- a/docs/dev/adrs/accepted/iucr-cif-tag-alignment.md +++ b/docs/dev/adrs/accepted/iucr-cif-tag-alignment.md @@ -276,8 +276,10 @@ In `analysis/analysis.cif`: - Bayesian diagnostics, success/message/iterations/fitting*time, `result_kind`, `point_estimate_name`, fit-parameter posterior summaries, and the `_alias` / `_constraint` / `_joint_fit` / - `\_sequential_fit*`registries โ€” **stay under their current category names**. File-scoping to`analysis/analysis.cif`carries the disambiguation; no`\_easydiffraction\*\*` - prefix is added in the default save. + `\_sequential_fit*`registries โ€” **stay under their current category + names**. File-scoping to`analysis/analysis.cif`carries the + disambiguation; no`\_easydiffraction\*\*` prefix is added in the + default save. - The `_minimizer.*`, `_fitting_mode.*`, `_calculator.*` selectors stay under their current names for the same reason. diff --git a/docs/dev/adrs/accepted/project-summary-rendering.md b/docs/dev/adrs/accepted/project-summary-rendering.md index a9162d5b5..95f9fc30f 100644 --- a/docs/dev/adrs/accepted/project-summary-rendering.md +++ b/docs/dev/adrs/accepted/project-summary-rendering.md @@ -1130,7 +1130,7 @@ Summary, Software, Refinement, Structures (one subsection per phase), Experiments (one subsection per experiment). Tables use `booktabs` (`\toprule`/`\midrule`/`\bottomrule`) and `float`'s `[H]` placement; math uses inline LaTeX (`$Fd\bar{3}m$`, `\AA`, `$\deg$`). Reference -example at [`tmp/latex/example.tex`](../../../../tmp/latex/example.tex). +example at `tmp/latex/example.tex`. The `iucrjournals.cls` choice has two practical advantages over a bare `article`: diff --git a/docs/dev/adrs/accepted/switchable-category-owned-selectors.md b/docs/dev/adrs/accepted/switchable-category-owned-selectors.md index ee12e0ac0..c19ca9f4d 100644 --- a/docs/dev/adrs/accepted/switchable-category-owned-selectors.md +++ b/docs/dev/adrs/accepted/switchable-category-owned-selectors.md @@ -164,7 +164,7 @@ single-purpose blocks aligned with the new `_.type` rule. `_minimizer.optimizer_name` and `_minimizer.method_name` are also **dropped**. Inspecting -[`src/easydiffraction/analysis/minimizers/lmfit_leastsq.py`](../../../src/easydiffraction/analysis/minimizers/lmfit_leastsq.py) +[`src/easydiffraction/analysis/minimizers/lmfit_leastsq.py`](../../../../src/easydiffraction/analysis/minimizers/lmfit_leastsq.py) (and the matching `bumps_lm.py`, `dfols.py`, โ€ฆ) shows that `name` defaults to the enum tag itself and `method` to a per-engine module-level constant. The public API never overrides them at @@ -370,7 +370,7 @@ class PeakBase(CategoryItem, SwitchableCategoryBase): Categories that want to show aliases alongside canonical tags (peak) override `show_supported()` to add a third column; the per-category override pattern is the same as the existing -[`base.show_peak_profile_types()`](../../../src/easydiffraction/datablocks/experiment/item/base.py) +[`base.show_peak_profile_types()`](../../../../src/easydiffraction/datablocks/experiment/item/base.py) implementation, just moved onto the category. `type` is backed by a **real `StringDescriptor`** named `_type` that @@ -382,12 +382,12 @@ the staleness checks. For `CategoryItem` substrates (minimizer, peak, extinction, calculator, chart, table, fitting_mode) the generic CIF emit/read path -[`io/cif/serialize.py:170`](../../../src/easydiffraction/io/cif/serialize.py) +[`io/cif/serialize.py:170`](../../../../src/easydiffraction/io/cif/serialize.py) picks the descriptor up by name automatically โ€” no custom hook is needed. For the `CategoryCollection` substrate (background only), -[`category.py:230`](../../../src/easydiffraction/core/category.py)'s +[`category.py:230`](../../../../src/easydiffraction/core/category.py)'s `parameters` returns only loop-item parameters and -[`io/cif/serialize.py:244`](../../../src/easydiffraction/io/cif/serialize.py) +[`io/cif/serialize.py:244`](../../../../src/easydiffraction/io/cif/serialize.py) writes only the loop, so a collection-level `_type` descriptor needs a small additional path: the writer emits the scalar tag above the loop, and the reader peeks the scalar before iterating items. This is a @@ -451,8 +451,8 @@ class ExperimentBase: ``` The existing owner-level `show__types()` methods -([`bragg_pd.show_background_types()`](../../../src/easydiffraction/datablocks/experiment/item/bragg_pd.py), -[`base.show_peak_profile_types()`](../../../src/easydiffraction/datablocks/experiment/item/base.py), +([`bragg_pd.show_background_types()`](../../../../src/easydiffraction/datablocks/experiment/item/bragg_pd.py), +[`base.show_peak_profile_types()`](../../../../src/easydiffraction/datablocks/experiment/item/base.py), `Calculation.show_calculator_types()`, `Analysis.show_supported_minimizer_types()`, โ€ฆ) are **deleted**. The mixin's `show_supported()` reproduces the same `['*', tag, description]` @@ -722,7 +722,7 @@ Notes on the in-scope rows: renamed `calculator_type` โ†’ `type`, and the CIF block changes from `_calculation.*` to `_calculator.*`. The setter delegation pattern is already in place today - ([`calculation/default.py:61`](../../../src/easydiffraction/datablocks/experiment/categories/calculation/default.py)), + ([`calculator/default.py:61`](../../../../src/easydiffraction/datablocks/experiment/categories/calculator/default.py)), so no mechanism change is required. - Rows 6 and 7 involve ยง8a's `Rendering` โ†’ `Chart` + `Table` split (Python category restructure, CIF block split). @@ -958,7 +958,7 @@ Three things change in this block: - `_peak.profile_type` becomes `_peak.type`; the existing `_peak.broad_gauss_*` and `_peak.broad_lorentz_*` parameter tags are unchanged (the names come from - [`src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py`](../../../src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py)). + [`src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py`](../../../../src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py)). The CIF value is the **canonical tag** (`cwl-pseudo-voigt` here, since the example experiment is constant-wavelength); the writable Python setter `experiment.peak.type` accepts the alias `'pseudo-voigt'` too diff --git a/docs/dev/adrs/suggestions/cif-numeric-precision.md b/docs/dev/adrs/suggestions/cif-numeric-precision.md index f2d078545..d491299d0 100644 --- a/docs/dev/adrs/suggestions/cif-numeric-precision.md +++ b/docs/dev/adrs/suggestions/cif-numeric-precision.md @@ -8,10 +8,10 @@ Core model. > This ADR follows [`AGENTS.md`](../../../../AGENTS.md). It is the > data-side counterpart to -> [`plotting-docs-performance.md`](plotting-docs-performance.md), which -> handles **display** precision (downcasting plot arrays to float32). -> This ADR concerns the precision of numbers we **store and serialize** -> in CIF, which is a separate decision because CIF is a data +> [`plotting-docs-performance.md`](../accepted/plotting-docs-performance.md), +> which handles **display** precision (downcasting plot arrays to +> float32). This ADR concerns the precision of numbers we **store and +> serialize** in CIF, which is a separate decision because CIF is a data > source-of-truth, not a throwaway view. ## Context diff --git a/docs/dev/issues/closed/add-help-methods-to-public-discovery-facades.md b/docs/dev/issues/closed/add-help-methods-to-public-discovery-facades.md index b279ace06..cabd738b5 100644 --- a/docs/dev/issues/closed/add-help-methods-to-public-discovery-facades.md +++ b/docs/dev/issues/closed/add-help-methods-to-public-discovery-facades.md @@ -7,4 +7,4 @@ that do not inherit the guarded object hierarchy: `project.display`, Introduced `render_object_help()` so these helpers share the same property and method table style as `GuardedBase.help()`. Documented the convention in -[`help-discoverability.md`](../adrs/accepted/help-discoverability.md). +[`help-discoverability.md`](../../adrs/accepted/help-discoverability.md). diff --git a/docs/dev/issues/closed/consistent-type-suffix-in-switchable-category-api-names.md b/docs/dev/issues/closed/consistent-type-suffix-in-switchable-category-api-names.md index af47e4ad0..7fd3afb8c 100644 --- a/docs/dev/issues/closed/consistent-type-suffix-in-switchable-category-api-names.md +++ b/docs/dev/issues/closed/consistent-type-suffix-in-switchable-category-api-names.md @@ -1,7 +1,7 @@ # 76. Consistent `_type` Suffix in Switchable-Category API Names Closed by -[`switchable-category-owned-selectors.md`](../adrs/accepted/switchable-category-owned-selectors.md). +[`switchable-category-owned-selectors.md`](../../adrs/accepted/switchable-category-owned-selectors.md). The public suffix is dropped: owners expose categories, categories expose a uniform `type` property plus `show_supported()`, and CIF uses one `_.type` selector tag per category. diff --git a/docs/dev/issues/closed/warn-on-all-switchable-category-type-changes.md b/docs/dev/issues/closed/warn-on-all-switchable-category-type-changes.md index 314886149..174233834 100644 --- a/docs/dev/issues/closed/warn-on-all-switchable-category-type-changes.md +++ b/docs/dev/issues/closed/warn-on-all-switchable-category-type-changes.md @@ -1,7 +1,7 @@ # 72. Warn on All Switchable-Category Type Changes Closed by -[`switchable-category-owned-selectors.md`](../adrs/accepted/switchable-category-owned-selectors.md). +[`switchable-category-owned-selectors.md`](../../adrs/accepted/switchable-category-owned-selectors.md). Type-change warnings now run through owner `_swap_` hooks, so every category-owned selector assignment has a uniform owner-mediated place to warn about values that will be discarded. diff --git a/docs/dev/issues/open/high_clarify-logger-default-reaction-mode.md b/docs/dev/issues/open/high_clarify-logger-default-reaction-mode.md index e819ad1e7..f2e4d1ab7 100644 --- a/docs/dev/issues/open/high_clarify-logger-default-reaction-mode.md +++ b/docs/dev/issues/open/high_clarify-logger-default-reaction-mode.md @@ -9,7 +9,7 @@ **TODOs:** -- [logging.py](src/easydiffraction/utils/logging.py#L430) +- [logging.py](../../../../src/easydiffraction/utils/logging.py#L430) **Depends on:** nothing. diff --git a/docs/dev/issues/open/highest_calculate-structure-factors-contract-disagrees-across-backends-and-caller.md b/docs/dev/issues/open/highest_calculate-structure-factors-contract-disagrees-across-backends-and-caller.md index 6b0142e95..a73a6315a 100644 --- a/docs/dev/issues/open/highest_calculate-structure-factors-contract-disagrees-across-backends-and-caller.md +++ b/docs/dev/issues/open/highest_calculate-structure-factors-contract-disagrees-across-backends-and-caller.md @@ -21,11 +21,11 @@ non-supporting backends raise a clear `NotImplementedError`. **TODOs / locations:** -- [base.py](src/easydiffraction/analysis/calculators/base.py#L49) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L127) -- [crysfml.py](src/easydiffraction/analysis/calculators/crysfml.py#L112) -- [pdffit.py](src/easydiffraction/analysis/calculators/pdffit.py#L70) -- [bragg_sc.py](src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L400) +- [base.py](../../../../src/easydiffraction/analysis/calculators/base.py#L49) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L127) +- [crysfml.py](../../../../src/easydiffraction/analysis/calculators/crysfml.py#L112) +- [pdffit.py](../../../../src/easydiffraction/analysis/calculators/pdffit.py#L70) +- [bragg_sc.py](../../../../src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L400) **Depends on:** related to issue 63 (the sibling `calculate_pattern` signature question). diff --git a/docs/dev/issues/open/highest_unify-uncertainty-floor-handling-across-bragg-pd-single-crystal-and-pdf-data.md b/docs/dev/issues/open/highest_unify-uncertainty-floor-handling-across-bragg-pd-single-crystal-and-pdf-data.md index 58817eea6..2dd67a151 100644 --- a/docs/dev/issues/open/highest_unify-uncertainty-floor-handling-across-bragg-pd-single-crystal-and-pdf-data.md +++ b/docs/dev/issues/open/highest_unify-uncertainty-floor-handling-across-bragg-pd-single-crystal-and-pdf-data.md @@ -25,11 +25,11 @@ non-positive values at the boundary. **TODOs / locations:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L648) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L673) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L324) -- [bragg_sc.py](src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L466) -- [fitting.py](src/easydiffraction/analysis/fitting.py#L449) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L648) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L673) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L324) +- [bragg_sc.py](../../../../src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L466) +- [fitting.py](../../../../src/easydiffraction/analysis/fitting.py#L449) **Depends on:** supersedes the narrower issue 27 (Bragg PD zero uncertainty). Related to issue 15 (joint-fit weights). diff --git a/docs/dev/issues/open/highest_unknown-switchable-category-type-on-cif-restore-silently-drops-parameters.md b/docs/dev/issues/open/highest_unknown-switchable-category-type-on-cif-restore-silently-drops-parameters.md index cbe3db383..71fc4fe30 100644 --- a/docs/dev/issues/open/highest_unknown-switchable-category-type-on-cif-restore-silently-drops-parameters.md +++ b/docs/dev/issues/open/highest_unknown-switchable-category-type-on-cif-restore-silently-drops-parameters.md @@ -21,11 +21,11 @@ code is the concrete pre-ADR behaviour it would correct. **TODOs / locations:** -- [base.py](src/easydiffraction/datablocks/experiment/item/base.py#L687) +- [base.py](../../../../src/easydiffraction/datablocks/experiment/item/base.py#L687) โ€” `_replace_peak_profile` `strict=False` path -- [base.py](src/easydiffraction/datablocks/experiment/item/base.py#L350) +- [base.py](../../../../src/easydiffraction/datablocks/experiment/item/base.py#L350) โ€” `_swap_calculator` -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L206) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L206) โ€” background swap **Depends on:** the Edi persistence ADR diff --git a/docs/dev/issues/open/low_add-boundary-tests-for-verification-py-fullprof-igor-parsers.md b/docs/dev/issues/open/low_add-boundary-tests-for-verification-py-fullprof-igor-parsers.md index 4c12da9f3..06deb2357 100644 --- a/docs/dev/issues/open/low_add-boundary-tests-for-verification-py-fullprof-igor-parsers.md +++ b/docs/dev/issues/open/low_add-boundary-tests-for-verification-py-fullprof-igor-parsers.md @@ -16,7 +16,7 @@ non-numeric rows in the existing mirror. **TODOs / locations:** -- [verification.py](src/easydiffraction/analysis/verification.py) (tests - in `tests/unit/easydiffraction/analysis/test_verification.py`) +- [verification.py](../../../../src/easydiffraction/analysis/verification.py) + (tests in `tests/unit/easydiffraction/analysis/test_verification.py`) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_add-cif-name-validation-or-normalisation-in-parse.md b/docs/dev/issues/open/low_add-cif-name-validation-or-normalisation-in-parse.md index 3096f1fab..c20ed77ef 100644 --- a/docs/dev/issues/open/low_add-cif-name-validation-or-normalisation-in-parse.md +++ b/docs/dev/issues/open/low_add-cif-name-validation-or-normalisation-in-parse.md @@ -9,6 +9,6 @@ step. **TODOs:** -- [parse.py](src/easydiffraction/io/cif/parse.py#L29) +- [parse.py](../../../../src/easydiffraction/io/cif/parse.py#L29) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_add-debug-mode-logging-for-calculator-imports.md b/docs/dev/issues/open/low_add-debug-mode-logging-for-calculator-imports.md index 40355cc64..0f6338e42 100644 --- a/docs/dev/issues/open/low_add-debug-mode-logging-for-calculator-imports.md +++ b/docs/dev/issues/open/low_add-debug-mode-logging-for-calculator-imports.md @@ -10,11 +10,11 @@ under a debug level. **TODOs:** -- [pdffit.py](src/easydiffraction/analysis/calculators/pdffit.py#L34) -- [pdffit.py](src/easydiffraction/analysis/calculators/pdffit.py#L37) -- [crysfml.py](src/easydiffraction/analysis/calculators/crysfml.py#L19) -- [crysfml.py](src/easydiffraction/analysis/calculators/crysfml.py#L23) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L25) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L28) +- [pdffit.py](../../../../src/easydiffraction/analysis/calculators/pdffit.py#L34) +- [pdffit.py](../../../../src/easydiffraction/analysis/calculators/pdffit.py#L37) +- [crysfml.py](../../../../src/easydiffraction/analysis/calculators/crysfml.py#L19) +- [crysfml.py](../../../../src/easydiffraction/analysis/calculators/crysfml.py#L23) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L25) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L28) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_add-point-id-to-excluded-regions.md b/docs/dev/issues/open/low_add-point-id-to-excluded-regions.md index 263509613..e9508096a 100644 --- a/docs/dev/issues/open/low_add-point-id-to-excluded-regions.md +++ b/docs/dev/issues/open/low_add-point-id-to-excluded-regions.md @@ -9,6 +9,6 @@ categories. **TODOs:** -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L33) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L33) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_add-public-api-to-clear-a-project-path-cli-fit-dry.md b/docs/dev/issues/open/low_add-public-api-to-clear-a-project-path-cli-fit-dry.md index 5c800c552..40a647d67 100644 --- a/docs/dev/issues/open/low_add-public-api-to-clear-a-project-path-cli-fit-dry.md +++ b/docs/dev/issues/open/low_add-public-api-to-clear-a-project-path-cli-fit-dry.md @@ -15,6 +15,6 @@ public API to "unset" a project path. **TODOs / locations:** -- [\_\_main\_\_.py](src/easydiffraction/__main__.py#L266) +- [\_\_main\_\_.py](../../../../src/easydiffraction/__main__.py#L266) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_auto-extract-peakprofiletypeenum-from-peak-classes.md b/docs/dev/issues/open/low_auto-extract-peakprofiletypeenum-from-peak-classes.md index 427e63e7f..2c8304a04 100644 --- a/docs/dev/issues/open/low_auto-extract-peakprofiletypeenum-from-peak-classes.md +++ b/docs/dev/issues/open/low_auto-extract-peakprofiletypeenum-from-peak-classes.md @@ -11,8 +11,8 @@ whether the same pattern can be reused for other enums. **TODOs:** -- [enums.py](src/easydiffraction/datablocks/experiment/item/enums.py#L153) -- [enums.py](src/easydiffraction/datablocks/experiment/item/enums.py#L157) -- [enums.py](src/easydiffraction/datablocks/experiment/item/enums.py#L158) +- [enums.py](../../../../src/easydiffraction/datablocks/experiment/item/enums.py#L153) +- [enums.py](../../../../src/easydiffraction/datablocks/experiment/item/enums.py#L157) +- [enums.py](../../../../src/easydiffraction/datablocks/experiment/item/enums.py#L158) **Depends on:** related to issue 9. diff --git a/docs/dev/issues/open/low_automate-space-group-cif-name-variants.md b/docs/dev/issues/open/low_automate-space-group-cif-name-variants.md index bb9c11298..60f6f1173 100644 --- a/docs/dev/issues/open/low_automate-space-group-cif-name-variants.md +++ b/docs/dev/issues/open/low_automate-space-group-cif-name-variants.md @@ -10,6 +10,6 @@ generation. **TODOs:** -- [default.py](src/easydiffraction/datablocks/structure/categories/space_group/default.py#L52) +- [default.py](../../../../src/easydiffraction/datablocks/structure/categories/space_group/default.py#L52) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_check-cryspy-single-crystal-instrument-mapping.md b/docs/dev/issues/open/low_check-cryspy-single-crystal-instrument-mapping.md index c7fdd91b3..5be186e1a 100644 --- a/docs/dev/issues/open/low_check-cryspy-single-crystal-instrument-mapping.md +++ b/docs/dev/issues/open/low_check-cryspy-single-crystal-instrument-mapping.md @@ -9,6 +9,6 @@ single crystal and a `TODO: Check this mapping!` marker. **TODOs:** -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L506) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L506) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_check-whether-mark-dirty-in-set-value-is-actually-used.md b/docs/dev/issues/open/low_check-whether-mark-dirty-in-set-value-is-actually-used.md index 442d7721c..4b389a182 100644 --- a/docs/dev/issues/open/low_check-whether-mark-dirty-in-set-value-is-actually-used.md +++ b/docs/dev/issues/open/low_check-whether-mark-dirty-in-set-value-is-actually-used.md @@ -9,6 +9,6 @@ a TODO questioning whether this path is exercised. **TODOs:** -- [variable.py](src/easydiffraction/core/variable.py#L154) +- [variable.py](../../../../src/easydiffraction/core/variable.py#L154) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_check-whether-not-used-if-loading-from-cif-code-is-needed.md b/docs/dev/issues/open/low_check-whether-not-used-if-loading-from-cif-code-is-needed.md index 50b7c2d8f..a5bce21df 100644 --- a/docs/dev/issues/open/low_check-whether-not-used-if-loading-from-cif-code-is-needed.md +++ b/docs/dev/issues/open/low_check-whether-not-used-if-loading-from-cif-code-is-needed.md @@ -9,6 +9,6 @@ **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/item/bragg_pd.py#L112) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/item/bragg_pd.py#L112) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_clarify-bragg-pd-data-collection-description.md b/docs/dev/issues/open/low_clarify-bragg-pd-data-collection-description.md index 9abf62626..8d2e21771 100644 --- a/docs/dev/issues/open/low_clarify-bragg-pd-data-collection-description.md +++ b/docs/dev/issues/open/low_clarify-bragg-pd-data-collection-description.md @@ -9,7 +9,7 @@ **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L482) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L304) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L482) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L304) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_clarify-cell-update-usage-of-called-by-minimizer.md b/docs/dev/issues/open/low_clarify-cell-update-usage-of-called-by-minimizer.md index c27de8e3a..f7925884f 100644 --- a/docs/dev/issues/open/low_clarify-cell-update-usage-of-called-by-minimizer.md +++ b/docs/dev/issues/open/low_clarify-cell-update-usage-of-called-by-minimizer.md @@ -8,7 +8,7 @@ **TODOs:** -- [default.py](src/easydiffraction/datablocks/structure/categories/cell/default.py#L146) +- [default.py](../../../../src/easydiffraction/datablocks/structure/categories/cell/default.py#L146) **Depends on:** related to issue 11. diff --git a/docs/dev/issues/open/low_clarify-dtype-usage-in-data-point-arrays.md b/docs/dev/issues/open/low_clarify-dtype-usage-in-data-point-arrays.md index 64a82c30a..d211837fc 100644 --- a/docs/dev/issues/open/low_clarify-dtype-usage-in-data-point-arrays.md +++ b/docs/dev/issues/open/low_clarify-dtype-usage-in-data-point-arrays.md @@ -10,17 +10,17 @@ dtype is needed and align with `DataTypes`. **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L415) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L423) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L431) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L456) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L466) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L474) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L543) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L556) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L624) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L637) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L370) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L378) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L415) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L423) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L431) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L456) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L466) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L474) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L543) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L556) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L624) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L637) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L370) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L378) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_clean-up-cif-deserialisation-helpers.md b/docs/dev/issues/open/low_clean-up-cif-deserialisation-helpers.md index 8be9bb11b..cb408296b 100644 --- a/docs/dev/issues/open/low_clean-up-cif-deserialisation-helpers.md +++ b/docs/dev/issues/open/low_clean-up-cif-deserialisation-helpers.md @@ -12,10 +12,10 @@ stripping, find a better way to set `_item_type` on **TODOs:** -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L454) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L562) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L617) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L619) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L656) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L454) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L562) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L617) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L619) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L656) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_complete-migration-from-render-table-to-tablerenderer.md b/docs/dev/issues/open/low_complete-migration-from-render-table-to-tablerenderer.md index f0a598f42..244c866fd 100644 --- a/docs/dev/issues/open/low_complete-migration-from-render-table-to-tablerenderer.md +++ b/docs/dev/issues/open/low_complete-migration-from-render-table-to-tablerenderer.md @@ -9,6 +9,6 @@ replaced with `TableRenderer`. **TODOs:** -- [utils.py](src/easydiffraction/utils/utils.py#L510) +- [utils.py](../../../../src/easydiffraction/utils/utils.py#L510) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_consider-a-common-enumbase-with-default-description.md b/docs/dev/issues/open/low_consider-a-common-enumbase-with-default-description.md index 849fe8aaf..8244855b7 100644 --- a/docs/dev/issues/open/low_consider-a-common-enumbase-with-default-description.md +++ b/docs/dev/issues/open/low_consider-a-common-enumbase-with-default-description.md @@ -10,6 +10,6 @@ boilerplate. **TODOs:** -- [enums.py](src/easydiffraction/datablocks/experiment/categories/background/enums.py#L10) +- [enums.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/enums.py#L10) **Depends on:** related to issue 9. diff --git a/docs/dev/issues/open/low_cryspy-backend-hardcodes-flag-only-nuclear-no-magnetic-structures.md b/docs/dev/issues/open/low_cryspy-backend-hardcodes-flag-only-nuclear-no-magnetic-structures.md index 3455d0b95..621020dce 100644 --- a/docs/dev/issues/open/low_cryspy-backend-hardcodes-flag-only-nuclear-no-magnetic-structures.md +++ b/docs/dev/issues/open/low_cryspy-backend-hardcodes-flag-only-nuclear-no-magnetic-structures.md @@ -15,7 +15,7 @@ the backend path is implemented. **TODOs / locations:** -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L176) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L264) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L176) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L264) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_decide-default-for-alias-constraint-descriptors.md b/docs/dev/issues/open/low_decide-default-for-alias-constraint-descriptors.md index 016f78b91..ab4d22c06 100644 --- a/docs/dev/issues/open/low_decide-default-for-alias-constraint-descriptors.md +++ b/docs/dev/issues/open/low_decide-default-for-alias-constraint-descriptors.md @@ -9,7 +9,7 @@ **TODOs:** -- [default.py](src/easydiffraction/analysis/categories/aliases/default.py#L40) -- [default.py](src/easydiffraction/analysis/categories/constraints/default.py#L33) +- [default.py](../../../../src/easydiffraction/analysis/categories/aliases/default.py#L40) +- [default.py](../../../../src/easydiffraction/analysis/categories/constraints/default.py#L33) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_decide-future-of-show-residual-in-plot-meas-vs-calc.md b/docs/dev/issues/open/low_decide-future-of-show-residual-in-plot-meas-vs-calc.md index 66432ea15..32ba717ca 100644 --- a/docs/dev/issues/open/low_decide-future-of-show-residual-in-plot-meas-vs-calc.md +++ b/docs/dev/issues/open/low_decide-future-of-show-residual-in-plot-meas-vs-calc.md @@ -13,7 +13,7 @@ single-crystal plots. **TODOs:** -- [plotting.py](src/easydiffraction/display/plotting.py#L459) -- [\_\_main\_\_.py](src/easydiffraction/__main__.py#L105) +- [plotting.py](../../../../src/easydiffraction/display/plotting.py#L459) +- [\_\_main\_\_.py](../../../../src/easydiffraction/__main__.py#L105) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_document-fitresultbase-result-kind-default-rationale.md b/docs/dev/issues/open/low_document-fitresultbase-result-kind-default-rationale.md index 7a92e30df..bbb84174c 100644 --- a/docs/dev/issues/open/low_document-fitresultbase-result-kind-default-rationale.md +++ b/docs/dev/issues/open/low_document-fitresultbase-result-kind-default-rationale.md @@ -13,7 +13,7 @@ documented in code. **TODOs:** -- [base.py](src/easydiffraction/analysis/categories/fit_result/base.py#L44) +- [base.py](../../../../src/easydiffraction/analysis/categories/fit_result/base.py#L44) **Fix:** add a short code comment near the `result_kind` descriptor explaining why it keeps a concrete default while unknown result values diff --git a/docs/dev/issues/open/low_draw-adp-ellipsoids-for-beta-tensor-atoms.md b/docs/dev/issues/open/low_draw-adp-ellipsoids-for-beta-tensor-atoms.md index 66279856c..631223881 100644 --- a/docs/dev/issues/open/low_draw-adp-ellipsoids-for-beta-tensor-atoms.md +++ b/docs/dev/issues/open/low_draw-adp-ellipsoids-for-beta-tensor-atoms.md @@ -5,8 +5,8 @@ **Type:** Display / Visualization The 3D structure view -([builder.py](src/easydiffraction/display/structure/builder.py)) draws -anisotropic displacement ellipsoids only for the `Bani`/`Uani` ADP +([builder.py](../../../../src/easydiffraction/display/structure/builder.py)) +draws anisotropic displacement ellipsoids only for the `Bani`/`Uani` ADP types. Atoms stored as the dimensionless `beta` tensor currently fall through to a plain sphere. Drawing their ellipsoids needs a ฮฒโ†’U conversion in the renderer (using the reciprocal cell), analogous to the diff --git a/docs/dev/issues/open/low_drop-compute-and-ignore-result-kind-validation-in-cif-restore.md b/docs/dev/issues/open/low_drop-compute-and-ignore-result-kind-validation-in-cif-restore.md index f462a5481..031e95b8c 100644 --- a/docs/dev/issues/open/low_drop-compute-and-ignore-result-kind-validation-in-cif-restore.md +++ b/docs/dev/issues/open/low_drop-compute-and-ignore-result-kind-validation-in-cif-restore.md @@ -6,7 +6,7 @@ **Recommended:** fold into the emcee-minimizer plan. `_restore_persisted_fit_state` -([serialize.py:595-611](../../../src/easydiffraction/io/cif/serialize.py)) +([serialize.py:595-611](../../../../src/easydiffraction/io/cif/serialize.py)) calls `FitResultKindEnum(result_kind_value)` purely for the warning side effect; the result is discarded. After P1.10 absorbed the Bayesian-specific categories there is nothing else to do per diff --git a/docs/dev/issues/open/low_external-link-checking-in-the-docs-gate.md b/docs/dev/issues/open/low_external-link-checking-in-the-docs-gate.md index de45cc239..9b616c010 100644 --- a/docs/dev/issues/open/low_external-link-checking-in-the-docs-gate.md +++ b/docs/dev/issues/open/low_external-link-checking-in-the-docs-gate.md @@ -8,7 +8,7 @@ The fast docs gate (`docs-build` + `link-check` + `spell-check`) catches broken nav/internal links and typos on every push, but does not yet check external URLs. Add a `lychee` link checker (with an allowlist for rate-limited/unstable domains), coordinated with the -[Documentation CI and Build Verification](../adrs/accepted/documentation-ci-build.md) +[Documentation CI and Build Verification](../../adrs/accepted/documentation-ci-build.md) ADR. Run it nightly or on pull requests to avoid flakiness from external sites. Also covers link-checking of URLs that appear only inside executed notebook output cells (a feature that does not exist yet). diff --git a/docs/dev/issues/open/low_fix-calculator-calculate-pattern-signature-type.md b/docs/dev/issues/open/low_fix-calculator-calculate-pattern-signature-type.md index e39556f84..438d9949b 100644 --- a/docs/dev/issues/open/low_fix-calculator-calculate-pattern-signature-type.md +++ b/docs/dev/issues/open/low_fix-calculator-calculate-pattern-signature-type.md @@ -9,6 +9,6 @@ TODO asks whether it should be `Structure` (singular). **TODOs:** -- [base.py](src/easydiffraction/analysis/calculators/base.py#L40) +- [base.py](../../../../src/easydiffraction/analysis/calculators/base.py#L40) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_fix-cryspy-tof-instrument-default.md b/docs/dev/issues/open/low_fix-cryspy-tof-instrument-default.md index 22525e3f7..86b0cca92 100644 --- a/docs/dev/issues/open/low_fix-cryspy-tof-instrument-default.md +++ b/docs/dev/issues/open/low_fix-cryspy-tof-instrument-default.md @@ -9,6 +9,6 @@ CrysPy does not accept `0`. **TODOs:** -- [tof.py](src/easydiffraction/datablocks/experiment/categories/instrument/tof.py#L95) +- [tof.py](../../../../src/easydiffraction/datablocks/experiment/categories/instrument/tof.py#L95) **Depends on:** upstream CrysPy fix. diff --git a/docs/dev/issues/open/low_fix-jupyter-scroll-disabling-for-mkdocs.md b/docs/dev/issues/open/low_fix-jupyter-scroll-disabling-for-mkdocs.md index ec7d885bd..8f10d058b 100644 --- a/docs/dev/issues/open/low_fix-jupyter-scroll-disabling-for-mkdocs.md +++ b/docs/dev/issues/open/low_fix-jupyter-scroll-disabling-for-mkdocs.md @@ -9,6 +9,6 @@ breaks MkDocs builds. **TODOs:** -- [**init**.py](src/easydiffraction/display/__init__.py#L15) +- [**init**.py](../../../../src/easydiffraction/display/__init__.py#L15) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_fix-reversed-abstract-sync-result-to-parameters-signature.md b/docs/dev/issues/open/low_fix-reversed-abstract-sync-result-to-parameters-signature.md index 8d430104e..2d0fd10d1 100644 --- a/docs/dev/issues/open/low_fix-reversed-abstract-sync-result-to-parameters-signature.md +++ b/docs/dev/issues/open/low_fix-reversed-abstract-sync-result-to-parameters-signature.md @@ -16,6 +16,6 @@ up a new minimizer author. **TODOs / locations:** -- [base.py](src/easydiffraction/analysis/minimizers/base.py#L169) +- [base.py](../../../../src/easydiffraction/analysis/minimizers/base.py#L169) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_handle-zero-uncertainty-in-bragg-pd-data.md b/docs/dev/issues/open/low_handle-zero-uncertainty-in-bragg-pd-data.md index 417fa708e..cfe65eb52 100644 --- a/docs/dev/issues/open/low_handle-zero-uncertainty-in-bragg-pd-data.md +++ b/docs/dev/issues/open/low_handle-zero-uncertainty-in-bragg-pd-data.md @@ -14,6 +14,6 @@ as the original narrow note; act on it through issue 140. **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L442) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L442) **Depends on:** see issue 140. diff --git a/docs/dev/issues/open/low_help-mislabels-boolean-descriptors-as-numeric.md b/docs/dev/issues/open/low_help-mislabels-boolean-descriptors-as-numeric.md index dce0f0d3d..49a4d3408 100644 --- a/docs/dev/issues/open/low_help-mislabels-boolean-descriptors-as-numeric.md +++ b/docs/dev/issues/open/low_help-mislabels-boolean-descriptors-as-numeric.md @@ -15,6 +15,6 @@ explicitly. **TODOs / locations:** -- [category.py](src/easydiffraction/core/category.py#L108) +- [category.py](../../../../src/easydiffraction/core/category.py#L108) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_improve-error-handling-in-crystallography-utilities.md b/docs/dev/issues/open/low_improve-error-handling-in-crystallography-utilities.md index 6efbca278..5d2e872aa 100644 --- a/docs/dev/issues/open/low_improve-error-handling-in-crystallography-utilities.md +++ b/docs/dev/issues/open/low_improve-error-handling-in-crystallography-utilities.md @@ -9,9 +9,9 @@ raise `ValueError` or provide better diagnostics. **TODOs:** -- [crystallography.py](src/easydiffraction/crystallography/crystallography.py#L39) -- [crystallography.py](src/easydiffraction/crystallography/crystallography.py#L45) -- [crystallography.py](src/easydiffraction/crystallography/crystallography.py#L84) +- [crystallography.py](../../../../src/easydiffraction/crystallography/crystallography.py#L39) +- [crystallography.py](../../../../src/easydiffraction/crystallography/crystallography.py#L45) +- [crystallography.py](../../../../src/easydiffraction/crystallography/crystallography.py#L84) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_improve-jointfititem-descriptions.md b/docs/dev/issues/open/low_improve-jointfititem-descriptions.md index ba5eb5f54..b3c44aee5 100644 --- a/docs/dev/issues/open/low_improve-jointfititem-descriptions.md +++ b/docs/dev/issues/open/low_improve-jointfititem-descriptions.md @@ -9,8 +9,8 @@ are still incomplete. **TODOs:** -- [default.py](src/easydiffraction/analysis/categories/joint_fit/default.py#L31) -- [default.py](src/easydiffraction/analysis/categories/joint_fit/default.py#L32) -- [default.py](src/easydiffraction/analysis/categories/joint_fit/default.py#L41) +- [default.py](../../../../src/easydiffraction/analysis/categories/joint_fit/default.py#L31) +- [default.py](../../../../src/easydiffraction/analysis/categories/joint_fit/default.py#L32) +- [default.py](../../../../src/easydiffraction/analysis/categories/joint_fit/default.py#L41) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_improve-update-priority-handling-in-categories.md b/docs/dev/issues/open/low_improve-update-priority-handling-in-categories.md index 1248901c1..e4a73ef24 100644 --- a/docs/dev/issues/open/low_improve-update-priority-handling-in-categories.md +++ b/docs/dev/issues/open/low_improve-update-priority-handling-in-categories.md @@ -11,10 +11,10 @@ are also marked. **TODOs:** -- [category.py](src/easydiffraction/core/category.py#L21) -- [category.py](src/easydiffraction/core/category.py#L23) -- [category.py](src/easydiffraction/core/category.py#L32) -- [category.py](src/easydiffraction/core/category.py#L174) -- [category.py](src/easydiffraction/core/category.py#L199) +- [category.py](../../../../src/easydiffraction/core/category.py#L21) +- [category.py](../../../../src/easydiffraction/core/category.py#L23) +- [category.py](../../../../src/easydiffraction/core/category.py#L32) +- [category.py](../../../../src/easydiffraction/core/category.py#L174) +- [category.py](../../../../src/easydiffraction/core/category.py#L199) **Depends on:** related to issues 10, 11. diff --git a/docs/dev/issues/open/low_investigate-pycrysfml-pattern-length-discrepancy.md b/docs/dev/issues/open/low_investigate-pycrysfml-pattern-length-discrepancy.md index b340a9c70..4de9d16ce 100644 --- a/docs/dev/issues/open/low_investigate-pycrysfml-pattern-length-discrepancy.md +++ b/docs/dev/issues/open/low_investigate-pycrysfml-pattern-length-discrepancy.md @@ -10,7 +10,7 @@ epsilon workaround appears in the dict builder. **TODOs:** -- [crysfml.py](src/easydiffraction/analysis/calculators/crysfml.py#L124) -- [crysfml.py](src/easydiffraction/analysis/calculators/crysfml.py#L253) +- [crysfml.py](../../../../src/easydiffraction/analysis/calculators/crysfml.py#L124) +- [crysfml.py](../../../../src/easydiffraction/analysis/calculators/crysfml.py#L253) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_make-refinement-status-default-an-enum.md b/docs/dev/issues/open/low_make-refinement-status-default-an-enum.md index 2f68c9994..455db7255 100644 --- a/docs/dev/issues/open/low_make-refinement-status-default-an-enum.md +++ b/docs/dev/issues/open/low_make-refinement-status-default-an-enum.md @@ -17,7 +17,7 @@ families and the excluded-regions mask logic. See also issue 151 (a dead **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L156) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L116) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L156) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L116) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_merge-parameter-record-construction-in-analysis.md b/docs/dev/issues/open/low_merge-parameter-record-construction-in-analysis.md index 1175d45f5..c965e42d1 100644 --- a/docs/dev/issues/open/low_merge-parameter-record-construction-in-analysis.md +++ b/docs/dev/issues/open/low_merge-parameter-record-construction-in-analysis.md @@ -10,7 +10,7 @@ formatting for `StringDescriptor` values. **TODOs:** -- [analysis.py](src/easydiffraction/analysis/analysis.py#L461) -- [analysis.py](src/easydiffraction/analysis/analysis.py#L462) +- [analysis.py](../../../../src/easydiffraction/analysis/analysis.py#L461) +- [analysis.py](../../../../src/easydiffraction/analysis/analysis.py#L462) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_mkdocs-doesn-t-unpack-types-in-validation-module.md b/docs/dev/issues/open/low_mkdocs-doesn-t-unpack-types-in-validation-module.md index a7643adb6..e41fb705c 100644 --- a/docs/dev/issues/open/low_mkdocs-doesn-t-unpack-types-in-validation-module.md +++ b/docs/dev/issues/open/low_mkdocs-doesn-t-unpack-types-in-validation-module.md @@ -9,6 +9,6 @@ properly. **TODOs:** -- [validation.py](src/easydiffraction/core/validation.py#L25) +- [validation.py](../../../../src/easydiffraction/core/validation.py#L25) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_move-cif-v2-v1-conversion-out-of-calculator.md b/docs/dev/issues/open/low_move-cif-v2-v1-conversion-out-of-calculator.md index 03bbe152a..9361bf909 100644 --- a/docs/dev/issues/open/low_move-cif-v2-v1-conversion-out-of-calculator.md +++ b/docs/dev/issues/open/low_move-cif-v2-v1-conversion-out-of-calculator.md @@ -10,6 +10,6 @@ conversion (dot-to-underscore rewriting). This should live in a shared **TODOs:** -- [pdffit.py](src/easydiffraction/analysis/calculators/pdffit.py#L118) +- [pdffit.py](../../../../src/easydiffraction/analysis/calculators/pdffit.py#L118) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_move-show-to-categorycollection-base-class.md b/docs/dev/issues/open/low_move-show-to-categorycollection-base-class.md index 78a9cdcea..5144b1e4c 100644 --- a/docs/dev/issues/open/low_move-show-to-categorycollection-base-class.md +++ b/docs/dev/issues/open/low_move-show-to-categorycollection-base-class.md @@ -9,7 +9,7 @@ rendering logic. The TODO suggests moving it to the base class. **TODOs:** -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L166) -- [base.py](src/easydiffraction/datablocks/experiment/categories/background/base.py#L19) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L166) +- [base.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/base.py#L19) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_narrow-defensive-getattr-chain-in-aniso-adp-unit-resolution.md b/docs/dev/issues/open/low_narrow-defensive-getattr-chain-in-aniso-adp-unit-resolution.md index 0670e153f..fe0ea97e7 100644 --- a/docs/dev/issues/open/low_narrow-defensive-getattr-chain-in-aniso-adp-unit-resolution.md +++ b/docs/dev/issues/open/low_narrow-defensive-getattr-chain-in-aniso-adp-unit-resolution.md @@ -18,6 +18,6 @@ tolerated cases. **TODOs / locations:** -- [default.py](src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py#L62) +- [default.py](../../../../src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py#L62) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_remove-dead-auto-populate-branch-in-run-joint.md b/docs/dev/issues/open/low_remove-dead-auto-populate-branch-in-run-joint.md index 17e107bc5..d4d13cd2e 100644 --- a/docs/dev/issues/open/low_remove-dead-auto-populate-branch-in-run-joint.md +++ b/docs/dev/issues/open/low_remove-dead-auto-populate-branch-in-run-joint.md @@ -16,6 +16,6 @@ the default weight to 1.0). **TODOs / locations:** -- [analysis.py](src/easydiffraction/analysis/analysis.py#L2761) +- [analysis.py](../../../../src/easydiffraction/analysis/analysis.py#L2761) **Depends on:** related to issues 3, 15. diff --git a/docs/dev/issues/open/low_remove-stale-commented-out-dead-code-in-core-and-io.md b/docs/dev/issues/open/low_remove-stale-commented-out-dead-code-in-core-and-io.md index f757e2606..93f23c5f7 100644 --- a/docs/dev/issues/open/low_remove-stale-commented-out-dead-code-in-core-and-io.md +++ b/docs/dev/issues/open/low_remove-stale-commented-out-dead-code-in-core-and-io.md @@ -11,9 +11,9 @@ removable. **TODOs / locations:** -- [parse.py](src/easydiffraction/io/cif/parse.py#L65) -- [variable.py](src/easydiffraction/core/variable.py#L99) -- [variable.py](src/easydiffraction/core/variable.py#L167) +- [parse.py](../../../../src/easydiffraction/io/cif/parse.py#L65) +- [variable.py](../../../../src/easydiffraction/core/variable.py#L99) +- [variable.py](../../../../src/easydiffraction/core/variable.py#L167) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_rename-beammodeenum-members-to-cwl-tof.md b/docs/dev/issues/open/low_rename-beammodeenum-members-to-cwl-tof.md index 1902104cb..ab44030e9 100644 --- a/docs/dev/issues/open/low_rename-beammodeenum-members-to-cwl-tof.md +++ b/docs/dev/issues/open/low_rename-beammodeenum-members-to-cwl-tof.md @@ -9,6 +9,6 @@ be renamed to `CWL` and `TOF`. **TODOs:** -- [enums.py](src/easydiffraction/datablocks/experiment/item/enums.py#L113) +- [enums.py](../../../../src/easydiffraction/datablocks/experiment/item/enums.py#L113) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_rename-experiment-type-property.md b/docs/dev/issues/open/low_rename-experiment-type-property.md index 6a2a7e1c8..8edb553cf 100644 --- a/docs/dev/issues/open/low_rename-experiment-type-property.md +++ b/docs/dev/issues/open/low_rename-experiment-type-property.md @@ -9,6 +9,6 @@ the built-in `type`. A TODO suggests finding a better name. **TODOs:** -- [base.py](src/easydiffraction/datablocks/experiment/item/base.py#L75) +- [base.py](../../../../src/easydiffraction/datablocks/experiment/item/base.py#L75) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_rename-line-segment-background-y-to-intensity.md b/docs/dev/issues/open/low_rename-line-segment-background-y-to-intensity.md index 629e27f5a..72b3e6fe5 100644 --- a/docs/dev/issues/open/low_rename-line-segment-background-y-to-intensity.md +++ b/docs/dev/issues/open/low_rename-line-segment-background-y-to-intensity.md @@ -8,7 +8,7 @@ **TODOs:** -- [line_segment.py](src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L67) -- [line_segment.py](src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L72) +- [line_segment.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L67) +- [line_segment.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L72) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_rename-pd-data-point-mixins.md b/docs/dev/issues/open/low_rename-pd-data-point-mixins.md index d46850e37..e9f4c25fe 100644 --- a/docs/dev/issues/open/low_rename-pd-data-point-mixins.md +++ b/docs/dev/issues/open/low_rename-pd-data-point-mixins.md @@ -10,8 +10,8 @@ markers suggesting a rename to `BasePdDataPointMixin` and **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L268) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L269) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L271) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L268) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L269) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L271) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_replace-no-op-assert-true-in-test-logging-py.md b/docs/dev/issues/open/low_replace-no-op-assert-true-in-test-logging-py.md index 5cc5b4f92..b6e19e992 100644 --- a/docs/dev/issues/open/low_replace-no-op-assert-true-in-test-logging-py.md +++ b/docs/dev/issues/open/low_replace-no-op-assert-true-in-test-logging-py.md @@ -15,6 +15,6 @@ instead of `assert True`. **TODOs / locations:** -- [test_logging.py](tests/unit/easydiffraction/utils/test_logging.py#L13) +- [test_logging.py](../../../../tests/unit/easydiffraction/utils/test_logging.py#L13) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_revisit-powder-refln-phase-labels-and-row-ids.md b/docs/dev/issues/open/low_revisit-powder-refln-phase-labels-and-row-ids.md index 9d4a6c318..2bfe1207c 100644 --- a/docs/dev/issues/open/low_revisit-powder-refln-phase-labels-and-row-ids.md +++ b/docs/dev/issues/open/low_revisit-powder-refln-phase-labels-and-row-ids.md @@ -17,8 +17,8 @@ the archived planning notes left two follow-up questions open: **TODOs** (paths updated โ€” reflection categories moved from `categories/data/refln_pd.py` to `categories/refln/`): -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/refln/bragg_pd.py) -- [base.py](src/easydiffraction/display/plotters/base.py#L24) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/refln/bragg_pd.py) +- [base.py](../../../../src/easydiffraction/display/plotters/base.py#L24) **Note:** the Edi persistence ADR proposes renaming powder `refln.phase_id` โ†’ `structure_id` diff --git a/docs/dev/issues/open/low_size-chapter-divider-from-the-live-console-width.md b/docs/dev/issues/open/low_size-chapter-divider-from-the-live-console-width.md index ea9e335ce..5270da3d6 100644 --- a/docs/dev/issues/open/low_size-chapter-divider-from-the-live-console-width.md +++ b/docs/dev/issues/open/low_size-chapter-divider-from-the-live-console-width.md @@ -16,6 +16,6 @@ width, producing a mis-aligned or wrapped header rule. **TODOs / locations:** -- [logging.py](src/easydiffraction/utils/logging.py#L784) +- [logging.py](../../../../src/easydiffraction/utils/logging.py#L784) **Depends on:** related to issue 109 (table/terminal width policy). diff --git a/docs/dev/issues/open/low_unify-mkdir-usage-across-the-codebase.md b/docs/dev/issues/open/low_unify-mkdir-usage-across-the-codebase.md index 538c60433..5a311af58 100644 --- a/docs/dev/issues/open/low_unify-mkdir-usage-across-the-codebase.md +++ b/docs/dev/issues/open/low_unify-mkdir-usage-across-the-codebase.md @@ -8,6 +8,6 @@ **TODOs:** -- [ascii.py](src/easydiffraction/io/ascii.py#L118) +- [ascii.py](../../../../src/easydiffraction/io/ascii.py#L118) **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_use-pdf-specific-cif-names-for-total-scattering.md b/docs/dev/issues/open/low_use-pdf-specific-cif-names-for-total-scattering.md index 60dc3df73..fb4ed86f0 100644 --- a/docs/dev/issues/open/low_use-pdf-specific-cif-names-for-total-scattering.md +++ b/docs/dev/issues/open/low_use-pdf-specific-cif-names-for-total-scattering.md @@ -11,17 +11,17 @@ PDF-specific CIF names. **TODOs:** -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L48) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L48) โ€” `_pd_data.point_id` -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L62) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L62) โ€” `_pd_proc.r` -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L74) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L74) โ€” `_pd_meas.intensity_total` -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L87) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L87) โ€” `_pd_meas.intensity_total_su` -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L99) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L99) โ€” `_pd_calc.intensity_total` -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L112) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L112) โ€” `_pd_data.refinement_status` **Depends on:** nothing. diff --git a/docs/dev/issues/open/low_value-setter-re-validates-on-every-nan-assignment.md b/docs/dev/issues/open/low_value-setter-re-validates-on-every-nan-assignment.md index 56ac4f259..89ceedcde 100644 --- a/docs/dev/issues/open/low_value-setter-re-validates-on-every-nan-assignment.md +++ b/docs/dev/issues/open/low_value-setter-re-validates-on-every-nan-assignment.md @@ -16,7 +16,7 @@ re-validate. **TODOs / locations:** -- [variable.py](src/easydiffraction/core/variable.py#L152) +- [variable.py](../../../../src/easydiffraction/core/variable.py#L152) **Depends on:** related to issue 13 (suppress redundant dirty-flag sets). diff --git a/docs/dev/issues/open/lowest_live-notebook-plotly-delivery-loader-vs-native-mimetype.md b/docs/dev/issues/open/lowest_live-notebook-plotly-delivery-loader-vs-native-mimetype.md index 7841edf48..33d77078c 100644 --- a/docs/dev/issues/open/lowest_live-notebook-plotly-delivery-loader-vs-native-mimetype.md +++ b/docs/dev/issues/open/lowest_live-notebook-plotly-delivery-loader-vs-native-mimetype.md @@ -6,7 +6,7 @@ Records the two viable strategies for rendering interactive Plotly figures in live notebooks, so the trade-off is not re-litigated. See -[`plotting-docs-performance.md`](../adrs/accepted/plotting-docs-performance.md). +[`plotting-docs-performance.md`](../../adrs/accepted/plotting-docs-performance.md). **Background.** Live notebooks historically rendered via `display(HTML(pio.to_html(..., include_plotlyjs='cdn')))`, which caused diff --git a/docs/dev/issues/open/medium_atom-site-phase-id-label-regex-rejects-valid-cif-labels.md b/docs/dev/issues/open/medium_atom-site-phase-id-label-regex-rejects-valid-cif-labels.md index 5f6893932..5c6cf77de 100644 --- a/docs/dev/issues/open/medium_atom-site-phase-id-label-regex-rejects-valid-cif-labels.md +++ b/docs/dev/issues/open/medium_atom-site-phase-id-label-regex-rejects-valid-cif-labels.md @@ -18,9 +18,9 @@ pattern across categories. **TODOs / locations:** -- [default.py](src/easydiffraction/datablocks/structure/categories/atom_sites/default.py#L71) -- [default.py](src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py#L38) -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L45) +- [default.py](../../../../src/easydiffraction/datablocks/structure/categories/atom_sites/default.py#L71) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/linked_structure/default.py#L38) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L45) **Depends on:** subsumes part of issue 29 (standardise CIF ID validator pattern) with the concrete invalid-label consequence. diff --git a/docs/dev/issues/open/medium_bragg-powder-ascii-loader-returns-zero-points-instead-of-raising.md b/docs/dev/issues/open/medium_bragg-powder-ascii-loader-returns-zero-points-instead-of-raising.md index 4975e6035..3fec7d529 100644 --- a/docs/dev/issues/open/medium_bragg-powder-ascii-loader-returns-zero-points-instead-of-raising.md +++ b/docs/dev/issues/open/medium_bragg-powder-ascii-loader-returns-zero-points-instead-of-raising.md @@ -16,8 +16,8 @@ families. **TODOs / locations:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/item/bragg_pd.py#L138) -- [total_pd.py](src/easydiffraction/datablocks/experiment/item/total_pd.py#L85) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/item/bragg_pd.py#L138) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/item/total_pd.py#L85) โ€” the consistent (raising) reference **Depends on:** related to issue 66 (`log.error` vs `raise` strategy). diff --git a/docs/dev/issues/open/medium_bumps-drops-uncertainties-silently-on-singular-covariance.md b/docs/dev/issues/open/medium_bumps-drops-uncertainties-silently-on-singular-covariance.md index 235f02e70..71ab5f758 100644 --- a/docs/dev/issues/open/medium_bumps-drops-uncertainties-silently-on-singular-covariance.md +++ b/docs/dev/issues/open/medium_bumps-drops-uncertainties-silently-on-singular-covariance.md @@ -17,7 +17,7 @@ explained. **TODOs / locations:** -- [bumps.py](src/easydiffraction/analysis/minimizers/bumps.py#L433) -- [bumps.py](src/easydiffraction/analysis/minimizers/bumps.py#L466) +- [bumps.py](../../../../src/easydiffraction/analysis/minimizers/bumps.py#L433) +- [bumps.py](../../../../src/easydiffraction/analysis/minimizers/bumps.py#L466) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_clarify-cryspy-tof-background-cif-tag-names.md b/docs/dev/issues/open/medium_clarify-cryspy-tof-background-cif-tag-names.md index 1feda325e..8a33cd6ae 100644 --- a/docs/dev/issues/open/medium_clarify-cryspy-tof-background-cif-tag-names.md +++ b/docs/dev/issues/open/medium_clarify-cryspy-tof-background-cif-tag-names.md @@ -11,10 +11,10 @@ mapping and the hardcoded defaults need verification. **TODOs:** -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L734) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L735) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L738) -- [cryspy.py](src/easydiffraction/analysis/calculators/cryspy.py#L739) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L734) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L735) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L738) +- [cryspy.py](../../../../src/easydiffraction/analysis/calculators/cryspy.py#L739) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_cross-repository-validation-harness-nightly.md b/docs/dev/issues/open/medium_cross-repository-validation-harness-nightly.md index 4dc417263..3cb1ad9a6 100644 --- a/docs/dev/issues/open/medium_cross-repository-validation-harness-nightly.md +++ b/docs/dev/issues/open/medium_cross-repository-validation-harness-nightly.md @@ -5,7 +5,7 @@ **Type:** Test infrastructure Deferred cross-repository work for the -[Test Suite and Validation Strategy](../adrs/accepted/test-suite-and-validation.md) +[Test Suite and Validation Strategy](../../adrs/accepted/test-suite-and-validation.md) ADR (ยง7, ยง8). The harness code lives in `diffraction-lib`; the corpus, results database, and benchmark/reference history live in the `diffraction` data repository, fetched at runtime and written back by a diff --git a/docs/dev/issues/open/medium_don-t-report-a-pdf-report-as-written-when-no-tex-engine-exists.md b/docs/dev/issues/open/medium_don-t-report-a-pdf-report-as-written-when-no-tex-engine-exists.md index d45d86ffc..4282c9f14 100644 --- a/docs/dev/issues/open/medium_don-t-report-a-pdf-report-as-written-when-no-tex-engine-exists.md +++ b/docs/dev/issues/open/medium_don-t-report-a-pdf-report-as-written-when-no-tex-engine-exists.md @@ -16,8 +16,8 @@ or distinguish "skipped" from "written". **TODOs / locations:** -- [pdf_compiler.py](src/easydiffraction/report/pdf_compiler.py#L81) -- [default.py](src/easydiffraction/project/categories/report/default.py#L274) -- [project.py](src/easydiffraction/project/project.py#L556) +- [pdf_compiler.py](../../../../src/easydiffraction/report/pdf_compiler.py#L81) +- [default.py](../../../../src/easydiffraction/project/categories/report/default.py#L274) +- [project.py](../../../../src/easydiffraction/project/project.py#L556) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_escape-user-names-before-rich-markup-rendering.md b/docs/dev/issues/open/medium_escape-user-names-before-rich-markup-rendering.md index f83796177..ebb1a3db0 100644 --- a/docs/dev/issues/open/medium_escape-user-names-before-rich-markup-rendering.md +++ b/docs/dev/issues/open/medium_escape-user-names-before-rich-markup-rendering.md @@ -17,9 +17,9 @@ segment rather than round-tripping through `.markup`. **TODOs / locations:** -- [logging.py](src/easydiffraction/utils/logging.py#L710) -- [project.py](src/easydiffraction/project/project.py#L501) -- [default.py](src/easydiffraction/project/categories/info/default.py#L80) +- [logging.py](../../../../src/easydiffraction/utils/logging.py#L710) +- [project.py](../../../../src/easydiffraction/project/project.py#L501) +- [default.py](../../../../src/easydiffraction/project/categories/metadata/default.py#L80) โ€” `_validate_name` **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_find-loop-for-category-missing-none-guard.md b/docs/dev/issues/open/medium_find-loop-for-category-missing-none-guard.md index ba21b8e6c..29d81cb5b 100644 --- a/docs/dev/issues/open/medium_find-loop-for-category-missing-none-guard.md +++ b/docs/dev/issues/open/medium_find-loop-for-category-missing-none-guard.md @@ -17,8 +17,8 @@ this path raises `AttributeError` instead of returning `None`. **TODOs / locations:** -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L1160) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L991) โ€” - `_has_cif_loop` (the correct pattern) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L1160) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L991) + โ€” `_has_cif_loop` (the correct pattern) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_fix-typechecked-gemmi-interaction-in-factories.md b/docs/dev/issues/open/medium_fix-typechecked-gemmi-interaction-in-factories.md index 239639cf8..63c0ad8c1 100644 --- a/docs/dev/issues/open/medium_fix-typechecked-gemmi-interaction-in-factories.md +++ b/docs/dev/issues/open/medium_fix-typechecked-gemmi-interaction-in-factories.md @@ -11,13 +11,13 @@ for missing parameters and reading content from files. **TODOs:** -- [factory.py](src/easydiffraction/datablocks/structure/item/factory.py#L41) -- [factory.py](src/easydiffraction/datablocks/structure/item/factory.py#L91) -- [factory.py](src/easydiffraction/datablocks/structure/item/factory.py#L115) -- [factory.py](src/easydiffraction/datablocks/experiment/item/factory.py#L59) +- [factory.py](../../../../src/easydiffraction/datablocks/structure/item/factory.py#L41) +- [factory.py](../../../../src/easydiffraction/datablocks/structure/item/factory.py#L91) +- [factory.py](../../../../src/easydiffraction/datablocks/structure/item/factory.py#L115) +- [factory.py](../../../../src/easydiffraction/datablocks/experiment/item/factory.py#L59) โ€” `Add to core/factory.py?` -- [factory.py](src/easydiffraction/datablocks/experiment/item/factory.py#L108) -- [factory.py](src/easydiffraction/datablocks/experiment/item/factory.py#L177) -- [factory.py](src/easydiffraction/datablocks/experiment/item/factory.py#L201) +- [factory.py](../../../../src/easydiffraction/datablocks/experiment/item/factory.py#L108) +- [factory.py](../../../../src/easydiffraction/datablocks/experiment/item/factory.py#L177) +- [factory.py](../../../../src/easydiffraction/datablocks/experiment/item/factory.py#L201) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_guard-hand-edited-project-timestamps-on-restore.md b/docs/dev/issues/open/medium_guard-hand-edited-project-timestamps-on-restore.md index d01b1871d..1626154c8 100644 --- a/docs/dev/issues/open/medium_guard-hand-edited-project-timestamps-on-restore.md +++ b/docs/dev/issues/open/medium_guard-hand-edited-project-timestamps-on-restore.md @@ -16,9 +16,9 @@ string and parse lazily with a guarded message. **TODOs / locations:** -- [default.py](src/easydiffraction/project/categories/info/default.py#L89) +- [default.py](../../../../src/easydiffraction/project/categories/metadata/default.py#L89) โ€” `_parse_timestamp` -- [default.py](src/easydiffraction/project/categories/info/default.py#L152) +- [default.py](../../../../src/easydiffraction/project/categories/metadata/default.py#L152) โ€” `created` / `last_modified` getters **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_implement-resetting-user-constrained-to-false.md b/docs/dev/issues/open/medium_implement-resetting-user-constrained-to-false.md index c8e3d9d63..5a1ff0405 100644 --- a/docs/dev/issues/open/medium_implement-resetting-user-constrained-to-false.md +++ b/docs/dev/issues/open/medium_implement-resetting-user-constrained-to-false.md @@ -19,6 +19,6 @@ feature. **TODOs:** -- [singleton.py](src/easydiffraction/core/singleton.py#L37) +- [singleton.py](../../../../src/easydiffraction/core/singleton.py#L37) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_make-datablockitem-update-categories-abstract.md b/docs/dev/issues/open/medium_make-datablockitem-update-categories-abstract.md index cc55c3c37..91ffe2bef 100644 --- a/docs/dev/issues/open/medium_make-datablockitem-update-categories-abstract.md +++ b/docs/dev/issues/open/medium_make-datablockitem-update-categories-abstract.md @@ -10,7 +10,7 @@ experiments (calculation updates). Currently it is a concrete no-op. **TODOs:** -- [datablock.py](src/easydiffraction/core/datablock.py#L39) +- [datablock.py](../../../../src/easydiffraction/core/datablock.py#L39) **Depends on:** related to issue 11. diff --git a/docs/dev/issues/open/medium_more-intuitive-adp-creation-api-type-aware-kwargs.md b/docs/dev/issues/open/medium_more-intuitive-adp-creation-api-type-aware-kwargs.md index 801939901..187e0db44 100644 --- a/docs/dev/issues/open/medium_more-intuitive-adp-creation-api-type-aware-kwargs.md +++ b/docs/dev/issues/open/medium_more-intuitive-adp-creation-api-type-aware-kwargs.md @@ -12,7 +12,7 @@ to explore: a richer creation surface with type-aware convenience keywords (`b_iso=`/`u_iso=`/`beta=`) that set `adp_type` automatically, and/or CIF-style auto-attachment of the sibling isotropic/anisotropic values when `adp_type` is set. This revisits the accepted -[type-neutral-adp-parameters](docs/dev/adrs/accepted/type-neutral-adp-parameters.md) +[type-neutral-adp-parameters](../../../../docs/dev/adrs/accepted/type-neutral-adp-parameters.md) ADR โ€” which deliberately chose type-neutral storage to keep parameter identity stable across switches โ€” so it needs its own ADR + plan and is independent of the ฮฒ-tensor work that surfaced it. diff --git a/docs/dev/issues/open/medium_move-common-methods-to-datablockcollection-base-class.md b/docs/dev/issues/open/medium_move-common-methods-to-datablockcollection-base-class.md index 68204d680..dbad6c842 100644 --- a/docs/dev/issues/open/medium_move-common-methods-to-datablockcollection-base-class.md +++ b/docs/dev/issues/open/medium_move-common-methods-to-datablockcollection-base-class.md @@ -10,18 +10,18 @@ could live in the base `DatablockCollection`. **TODOs:** -- [collection.py](src/easydiffraction/datablocks/experiment/collection.py#L29) +- [collection.py](../../../../src/easydiffraction/datablocks/experiment/collection.py#L29) โ€” `Make abstract in DatablockCollection?` -- [collection.py](src/easydiffraction/datablocks/experiment/collection.py#L65) +- [collection.py](../../../../src/easydiffraction/datablocks/experiment/collection.py#L65) โ€” `Move to DatablockCollection?` -- [collection.py](src/easydiffraction/datablocks/experiment/collection.py#L82) -- [collection.py](src/easydiffraction/datablocks/experiment/collection.py#L145) -- [collection.py](src/easydiffraction/datablocks/experiment/collection.py#L151) -- [collection.py](src/easydiffraction/datablocks/structure/collection.py#L30) -- [collection.py](src/easydiffraction/datablocks/structure/collection.py#L48) -- [collection.py](src/easydiffraction/datablocks/structure/collection.py#L65) -- [collection.py](src/easydiffraction/datablocks/structure/collection.py#L82) -- [collection.py](src/easydiffraction/datablocks/structure/collection.py#L88) +- [collection.py](../../../../src/easydiffraction/datablocks/experiment/collection.py#L82) +- [collection.py](../../../../src/easydiffraction/datablocks/experiment/collection.py#L145) +- [collection.py](../../../../src/easydiffraction/datablocks/experiment/collection.py#L151) +- [collection.py](../../../../src/easydiffraction/datablocks/structure/collection.py#L30) +- [collection.py](../../../../src/easydiffraction/datablocks/structure/collection.py#L48) +- [collection.py](../../../../src/easydiffraction/datablocks/structure/collection.py#L65) +- [collection.py](../../../../src/easydiffraction/datablocks/structure/collection.py#L82) +- [collection.py](../../../../src/easydiffraction/datablocks/structure/collection.py#L88) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_numeric-cif-parse-failure-silently-stores-none.md b/docs/dev/issues/open/medium_numeric-cif-parse-failure-silently-stores-none.md index 1001c8ba4..3b0314b83 100644 --- a/docs/dev/issues/open/medium_numeric-cif-parse-failure-silently-stores-none.md +++ b/docs/dev/issues/open/medium_numeric-cif-parse-failure-silently-stores-none.md @@ -17,8 +17,8 @@ when numeric parsing fails, mirroring the INTEGER branch. **TODOs / locations:** -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L1121) -- [utils.py](src/easydiffraction/utils/utils.py#L1094) โ€” `str_to_ufloat` - fallback +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L1121) +- [utils.py](../../../../src/easydiffraction/utils/utils.py#L1094) โ€” + `str_to_ufloat` fallback **Depends on:** related to issue 59 (CIF parse validation). diff --git a/docs/dev/issues/open/medium_refactor-data-update-methods-split-and-unify.md b/docs/dev/issues/open/medium_refactor-data-update-methods-split-and-unify.md index da5f661d6..1f1e7cb4d 100644 --- a/docs/dev/issues/open/medium_refactor-data-update-methods-split-and-unify.md +++ b/docs/dev/issues/open/medium_refactor-data-update-methods-split-and-unify.md @@ -13,14 +13,14 @@ the pattern from `bragg_sc.py`. **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L386) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L389) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L506) -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L585) -- [bragg_sc.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py#L271) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L254) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L257) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L349) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L386) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L389) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L506) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L585) +- [bragg_sc.py](../../../../src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L271) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L254) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L257) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L349) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_replace-all-bare-print-calls-with-logging.md b/docs/dev/issues/open/medium_replace-all-bare-print-calls-with-logging.md index 76744ed6a..227faae7e 100644 --- a/docs/dev/issues/open/medium_replace-all-bare-print-calls-with-logging.md +++ b/docs/dev/issues/open/medium_replace-all-bare-print-calls-with-logging.md @@ -8,9 +8,9 @@ A few bare `print()` calls remain in `src/` (not `console.print()`, not commented out, excluding vendored code). All output should go through `log` or `console` so that verbosity is controllable. Current offenders: -- [ascii.py](src/easydiffraction/display/plotters/ascii.py#L211) -- [ascii.py](src/easydiffraction/display/plotters/ascii.py#L354) -- [display.py](src/easydiffraction/project/display.py#L687) +- [ascii.py](../../../../src/easydiffraction/display/plotters/ascii.py#L211) +- [ascii.py](../../../../src/easydiffraction/display/plotters/ascii.py#L354) +- [display.py](../../../../src/easydiffraction/project/display.py#L687) Most earlier offenders are already resolved; the remaining calculator import prints are commented out and tracked separately under issue 19. diff --git a/docs/dev/issues/open/medium_replace-dead-else-branch-in-set-calc-status-with-a-real-boolean-check.md b/docs/dev/issues/open/medium_replace-dead-else-branch-in-set-calc-status-with-a-real-boolean-check.md index 2471463c3..f836159e6 100644 --- a/docs/dev/issues/open/medium_replace-dead-else-branch-in-set-calc-status-with-a-real-boolean-check.md +++ b/docs/dev/issues/open/medium_replace-dead-else-branch-in-set-calc-status-with-a-real-boolean-check.md @@ -16,7 +16,7 @@ Duplicated verbatim in both data classes. **TODOs / locations:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L407) -- [total_pd.py](src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L224) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L407) +- [total_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/total_pd.py#L224) **Depends on:** related to issue 30 (make `calc_status` an enum). diff --git a/docs/dev/issues/open/medium_standardise-cif-id-validator-pattern-across-categories.md b/docs/dev/issues/open/medium_standardise-cif-id-validator-pattern-across-categories.md index 03952e7e8..483b17125 100644 --- a/docs/dev/issues/open/medium_standardise-cif-id-validator-pattern-across-categories.md +++ b/docs/dev/issues/open/medium_standardise-cif-id-validator-pattern-across-categories.md @@ -10,11 +10,11 @@ internal label conversion. **TODOs:** -- [bragg_pd.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L43) -- [bragg_sc.py](src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py#L39) -- [chebyshev.py](src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py#L52) -- [line_segment.py](src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L45) -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L39) -- [default.py](src/easydiffraction/datablocks/structure/categories/atom_sites/default.py#L45) +- [bragg_pd.py](../../../../src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py#L43) +- [bragg_sc.py](../../../../src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py#L39) +- [chebyshev.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py#L52) +- [line_segment.py](../../../../src/easydiffraction/datablocks/experiment/categories/background/line_segment.py#L45) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L39) +- [default.py](../../../../src/easydiffraction/datablocks/structure/categories/atom_sites/default.py#L45) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_validate-generated-cif-report-against-official-iucr-dictionaries.md b/docs/dev/issues/open/medium_validate-generated-cif-report-against-official-iucr-dictionaries.md index 7d9420fa1..98cdca837 100644 --- a/docs/dev/issues/open/medium_validate-generated-cif-report-against-official-iucr-dictionaries.md +++ b/docs/dev/issues/open/medium_validate-generated-cif-report-against-official-iucr-dictionaries.md @@ -7,7 +7,7 @@ The runtime gemmi self-check in the IUCr CIF writer was removed (it validated our own deterministic output at write time and depended on dictionaries under `tmp/iucr-dicts/`; see the ยง2.5 amendment in -[`iucr-cif-tag-alignment.md`](../adrs/accepted/iucr-cif-tag-alignment.md)). +[`iucr-cif-tag-alignment.md`](../../adrs/accepted/iucr-cif-tag-alignment.md)). That spec-compliance guarantee now needs to live in a dev-time test instead. diff --git a/docs/dev/issues/open/medium_validate-inverted-excluded-regions-start-end.md b/docs/dev/issues/open/medium_validate-inverted-excluded-regions-start-end.md index 6c8cb15c6..d699b03b1 100644 --- a/docs/dev/issues/open/medium_validate-inverted-excluded-regions-start-end.md +++ b/docs/dev/issues/open/medium_validate-inverted-excluded-regions-start-end.md @@ -15,7 +15,7 @@ no feedback. **TODOs / locations:** -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L52) -- [default.py](src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L163) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L52) +- [default.py](../../../../src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py#L163) **Depends on:** nothing. diff --git a/docs/dev/issues/open/medium_verify-string-field-cif-round-trip-strips-text-delimiters.md b/docs/dev/issues/open/medium_verify-string-field-cif-round-trip-strips-text-delimiters.md index 26935fb30..49579a1c1 100644 --- a/docs/dev/issues/open/medium_verify-string-field-cif-round-trip-strips-text-delimiters.md +++ b/docs/dev/issues/open/medium_verify-string-field-cif-round-trip-strips-text-delimiters.md @@ -18,8 +18,8 @@ text-field-aware reader (see issue 57). **TODOs / locations:** -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L1104) -- [serialize.py](src/easydiffraction/io/cif/serialize.py#L1131) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L1104) +- [serialize.py](../../../../src/easydiffraction/io/cif/serialize.py#L1131) **Depends on:** related to issue 57 (CIF deserialisation helper cleanup). diff --git a/docs/docs/tutorials/index.json b/docs/docs/tutorials/index.json index fd99b59ca..a585f2fd8 100644 --- a/docs/docs/tutorials/index.json +++ b/docs/docs/tutorials/index.json @@ -1,6 +1,6 @@ { "bayesian-dream-resume-lbco-hrpt": { - "order": 21, + "order": 25, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/bayesian-dream-resume-lbco-hrpt/bayesian-dream-resume-lbco-hrpt.ipynb", "original_name": "", "title": "Bayesian Analysis Resume (bumps-dream): LBCO, HRPT", @@ -8,7 +8,7 @@ "level": "advanced" }, "bayesian-dream-lbco-hrpt": { - "order": 20, + "order": 24, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/bayesian-dream-lbco-hrpt/bayesian-dream-lbco-hrpt.ipynb", "original_name": "", "title": "Bayesian Analysis (bumps-dream): LBCO, HRPT", @@ -16,7 +16,7 @@ "level": "advanced" }, "bayesian-emcee-lbco-hrpt": { - "order": 22, + "order": 26, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/bayesian-emcee-lbco-hrpt/bayesian-emcee-lbco-hrpt.ipynb", "original_name": "", "title": "Bayesian Analysis (emcee): LBCO, HRPT", @@ -24,7 +24,7 @@ "level": "advanced" }, "bayesian-emcee-resume-lbco-hrpt": { - "order": 23, + "order": 27, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/bayesian-emcee-resume-lbco-hrpt/bayesian-emcee-resume-lbco-hrpt.ipynb", "original_name": "", "title": "Bayesian Analysis Resume (emcee): LBCO, HRPT", @@ -32,7 +32,7 @@ "level": "advanced" }, "bayesian-emcee-tbti-heidi": { - "order": 24, + "order": 28, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/bayesian-emcee-tbti-heidi/bayesian-emcee-tbti-heidi.ipynb", "original_name": "", "title": "Bayesian Analysis (emcee): Tb2TiO7, HEiDi", @@ -40,7 +40,7 @@ "level": "advanced" }, "calibrate-beer-ess": { - "order": 19, + "order": 23, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/calibrate-beer-ess/calibrate-beer-ess.ipynb", "original_name": "", "title": "Instrument calibration: BEER at ESS", @@ -48,7 +48,7 @@ "level": "intermediate" }, "fitting-exercise-si-lbco": { - "order": 25, + "order": 29, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/fitting-exercise-si-lbco/fitting-exercise-si-lbco.ipynb", "original_name": "dmsc-summer-school-2025_analysis-powder-diffraction", "title": "DMSC Summer School: Powder Diffraction Analysis", @@ -56,7 +56,7 @@ "level": "workshop" }, "joint-si-bragg-pdf": { - "order": 16, + "order": 19, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/joint-si-bragg-pdf/joint-si-bragg-pdf.ipynb", "original_name": "advanced_joint-fit_bragg-pdf_pd-neut-tof_Si", "title": "Advanced: Si Joint Bragg+PDF Fit", @@ -64,15 +64,15 @@ "level": "advanced" }, "load-and-fit-lbco-hrpt": { - "order": 4, + "order": 3, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/load-and-fit-lbco-hrpt/load-and-fit-lbco-hrpt.ipynb", "original_name": "", - "title": "Quick Start: LBCO Load Project", - "description": "Most minimal example: load a saved project and run a Rietveld refinement of La0.5Ba0.5CoO3 using constant wavelength neutron powder diffraction data from HRPT at PSI", + "title": "LBCO Resume", + "description": "Most minimal example: load a saved La0.5Ba0.5CoO3 project and run a Rietveld refinement using constant wavelength neutron powder diffraction data from HRPT at PSI", "level": "quick" }, "pdf-nacl-xrd": { - "order": 13, + "order": 16, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/pdf-nacl-xrd/pdf-nacl-xrd.ipynb", "original_name": "pdf_pd-xray_NaCl", "title": "PDF Analysis: NaCl, XRD", @@ -80,7 +80,7 @@ "level": "intermediate" }, "pdf-ni-npd": { - "order": 11, + "order": 14, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/pdf-ni-npd/pdf-ni-npd.ipynb", "original_name": "pdf_pd-neut-cwl_Ni", "title": "PDF Analysis: Ni, NPD", @@ -88,7 +88,7 @@ "level": "intermediate" }, "pdf-si-nomad": { - "order": 12, + "order": 15, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/pdf-si-nomad/pdf-si-nomad.ipynb", "original_name": "pdf_pd-neut-tof_Si-NOMAD", "title": "PDF Analysis: Si, NOMAD (TOF)", @@ -96,7 +96,7 @@ "level": "intermediate" }, "refine-cosio-d20": { - "order": 6, + "order": 5, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-cosio-d20/refine-cosio-d20.ipynb", "original_name": "cryst-struct_pd-neut-cwl_CoSiO4-D20", "title": "Crystal Structure: Co2SiO4, D20", @@ -104,7 +104,7 @@ "level": "intermediate" }, "refine-cosio-d20-tscan": { - "order": 17, + "order": 20, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-cosio-d20-tscan/refine-cosio-d20-tscan.ipynb", "original_name": "", "title": "Structure Refinement: Co2SiO4, D20 (Temperature scan)", @@ -112,23 +112,15 @@ "level": "advanced" }, "refine-cosio-d20-tscan-resumed": { - "order": 5, + "order": 21, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-cosio-d20-tscan-resumed/refine-cosio-d20-tscan-resumed.ipynb", "original_name": "", - "title": "Structure Refinement: Co2SiO4, D20 (Resumed scan)", - "description": "Resume an interrupted sequential Rietveld refinement of Co2SiO4 by reloading a saved project; the remaining temperature-scan datasets are processed and appended to analysis/results.csv", - "level": "advanced" - }, - "refine-yap-tscan": { - "order": 26, - "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-yap-tscan/refine-yap-tscan.ipynb", - "original_name": "", - "title": "Structure Refinement: YAlO3 + Al2O3 (Temperature scan)", - "description": "Sequential two-phase Rietveld refinement of YAlO3 with an Al2O3 corundum impurity using constant wavelength neutron powder diffraction data across a temperature scan", + "title": "Co2SiO4 T-scan Resume", + "description": "Resume a 213-file sequential Rietveld refinement of Co2SiO4 by reloading a saved project with 210 completed rows; the remaining temperature-scan datasets are processed and appended to analysis/results.csv", "level": "advanced" }, "refine-hs-hrpt": { - "order": 7, + "order": 6, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-hs-hrpt/refine-hs-hrpt.ipynb", "original_name": "cryst-struct_pd-neut-cwl_HS-HRPT", "title": "Crystal Structure: HS, HRPT", @@ -152,7 +144,7 @@ "level": "quick" }, "refine-lbco-hrpt-report": { - "order": 3, + "order": 4, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-lbco-hrpt-report/refine-lbco-hrpt-report.ipynb", "original_name": "basic_single-fit_pd-neut-cwl_LBCO-HRPT", "title": "Complete Tutorial: LBCO, HRPT", @@ -160,7 +152,7 @@ "level": "basic" }, "refine-lbco-si-mcstas": { - "order": 18, + "order": 22, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-lbco-si-mcstas/refine-lbco-si-mcstas.ipynb", "original_name": "cryst-struct_pd-neut-tof_multiphase-LBCO-Si_McStas", "title": "Crystal Structure: LBCO+Si Multi-Phase (McStas)", @@ -168,7 +160,7 @@ "level": "intermediate" }, "refine-ncaf-wish": { - "order": 15, + "order": 18, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-ncaf-wish/refine-ncaf-wish.ipynb", "original_name": "cryst-struct_pd-neut-tof_multidata_NCAF-WISH", "title": "Crystal Structure: NCAF, WISH (Multi-Data)", @@ -176,7 +168,7 @@ "level": "intermediate" }, "refine-pbso4-joint": { - "order": 14, + "order": 17, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-pbso4-joint/refine-pbso4-joint.ipynb", "original_name": "advanced_joint-fit_pd-neut-xray-cwl_PbSO4", "title": "Advanced: PbSO4 Joint NPD+XRD Fit", @@ -184,7 +176,7 @@ "level": "advanced" }, "refine-pbso4-xray": { - "order": 27, + "order": 8, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-pbso4-xray/refine-pbso4-xray.ipynb", "original_name": "", "title": "Crystal Structure: PbSO4, XRD", @@ -192,7 +184,7 @@ "level": "intermediate" }, "refine-si-sepd": { - "order": 8, + "order": 7, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-si-sepd/refine-si-sepd.ipynb", "original_name": "cryst-struct_pd-neut-tof_Si-SEPD", "title": "Crystal Structure: Si, SEPD (TOF)", @@ -200,7 +192,7 @@ "level": "intermediate" }, "refine-taurine-senju": { - "order": 10, + "order": 13, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-taurine-senju/refine-taurine-senju.ipynb", "original_name": "", "title": "Crystal Structure: Taurine, SENJU (TOF)", @@ -208,11 +200,35 @@ "level": "intermediate" }, "refine-tbti-heidi": { - "order": 9, + "order": 12, "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/refine-tbti-heidi/refine-tbti-heidi.ipynb", "original_name": "", "title": "Crystal Structure: Tb2TiO7, HEiDi", "description": "Crystal structure refinement of Tb2TiO7 using constant wavelength single crystal neutron diffraction data from HEiDi at FRM II", "level": "intermediate" + }, + "simulate-lbco-cwl": { + "order": 9, + "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/simulate-lbco-cwl/simulate-lbco-cwl.ipynb", + "original_name": "calc-without-data_pd-neut-cwl_LBCO", + "title": "Calculation Without Data: LBCO, CWL", + "description": "Calculate and plot a constant wavelength neutron powder diffraction pattern for La0.5Ba0.5CoO3 without measured data", + "level": "basic" + }, + "simulate-si-tof": { + "order": 10, + "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/simulate-si-tof/simulate-si-tof.ipynb", + "original_name": "calc-without-data_pd-neut-tof_Si", + "title": "Calculation Without Data: Si, TOF", + "description": "Calculate and plot a time-of-flight neutron powder diffraction pattern for Si without measured data", + "level": "basic" + }, + "simulate-nacl-xray": { + "order": 11, + "url": "https://easyscience.github.io/diffraction-lib/{version}/tutorials/simulate-nacl-xray/simulate-nacl-xray.ipynb", + "original_name": "calc-without-data_pd-xray_NaCl", + "title": "Calculation Without Data: NaCl, X-ray", + "description": "Calculate and plot an X-ray powder diffraction pattern for NaCl without measured data", + "level": "quick" } } diff --git a/docs/docs/tutorials/index.md b/docs/docs/tutorials/index.md index 94754e18f..72a7d703a 100644 --- a/docs/docs/tutorials/index.md +++ b/docs/docs/tutorials/index.md @@ -31,6 +31,9 @@ The tutorials are organized into the following categories: the La0.5Ba0.5CoO3 crystal structure can be performed when both the structure and experiment are loaded from CIF files. Data collected from constant wavelength neutron powder diffraction at HRPT at PSI. +- [LBCO resume](load-and-fit-lbco-hrpt.ipynb) โ€“ The most minimal example + showing how to load a previously saved LBCO project from a directory + and continue working with it. - [LBCO `complete`](refine-lbco-hrpt-report.ipynb) โ€“ Demonstrates the use of the EasyDiffraction API in a simplified, user-friendly manner that closely follows the GUI workflow for a Rietveld refinement of the @@ -40,21 +43,6 @@ The tutorials are organized into the following categories: descriptions of every step, making it suitable for users who are new to EasyDiffraction or those who prefer a more guided approach. -## Load Project - -- [LBCO Single Fit](load-and-fit-lbco-hrpt.ipynb) โ€“ The most minimal - example showing how to load a previously saved project from a - directory and continue working with it. -- [Co2SiO4 Sequential Fit](refine-cosio-d20-tscan-resumed.ipynb) โ€“ - Resumes a sequential refinement from an existing - `analysis/results.csv` after an incomplete previous run. - -See also under [Bayesian Analysis](#bayesian-analysis): -[LBCO Bayesian Resume (`bumps-dream`)](bayesian-dream-resume-lbco-hrpt.ipynb) -and -[LBCO Bayesian Resume (`emcee`)](bayesian-emcee-resume-lbco-hrpt.ipynb) -โ€” both load saved projects containing Bayesian fit state. - ## Powder Diffraction - [Co2SiO4 `pd-neut-cwl`](refine-cosio-d20.ipynb) โ€“ Demonstrates a @@ -120,6 +108,9 @@ and - [Co2SiO4 Temperature scan](refine-cosio-d20-tscan.ipynb) โ€“ Sequential Rietveld refinement of Co2SiO4 using constant wavelength neutron powder diffraction data from D20 at ILL across a temperature scan. +- [Co2SiO4 T-scan Resume](refine-cosio-d20-tscan-resumed.ipynb) โ€“ + Resumes a 213-file Co2SiO4 sequential refinement from an existing + `analysis/results.csv` with 210 completed rows. ## Simulated Data diff --git a/docs/docs/tutorials/load-and-fit-lbco-hrpt.ipynb b/docs/docs/tutorials/load-and-fit-lbco-hrpt.ipynb index ade6960dd..7e65da9ed 100644 --- a/docs/docs/tutorials/load-and-fit-lbco-hrpt.ipynb +++ b/docs/docs/tutorials/load-and-fit-lbco-hrpt.ipynb @@ -24,7 +24,7 @@ "id": "1", "metadata": {}, "source": [ - "# Load Project and Fit: LBCO, HRPT\n", + "# LBCO Resume\n", "\n", "This is the most minimal example of using EasyDiffraction. It shows\n", "how to load a previously saved project from a directory and run\n", diff --git a/docs/docs/tutorials/load-and-fit-lbco-hrpt.py b/docs/docs/tutorials/load-and-fit-lbco-hrpt.py index d4d38d265..5b6395462 100644 --- a/docs/docs/tutorials/load-and-fit-lbco-hrpt.py +++ b/docs/docs/tutorials/load-and-fit-lbco-hrpt.py @@ -1,5 +1,5 @@ # %% [markdown] -# # Load Project and Fit: LBCO, HRPT +# # LBCO Resume # # This is the most minimal example of using EasyDiffraction. It shows # how to load a previously saved project from a directory and run diff --git a/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.ipynb b/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.ipynb index e41be994e..fad38c9c6 100644 --- a/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.ipynb +++ b/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.ipynb @@ -24,13 +24,14 @@ "id": "1", "metadata": {}, "source": [ - "# Structure Refinement: Co2SiO4, D20 (T-scan, resumed)\n", + "# Co2SiO4 T-scan Resume\n", "\n", "This example loads a previously saved Co2SiO4 project after a\n", "sequential refinement was stopped before all scan files were\n", - "processed. If `analysis/results.csv` already contains completed rows,\n", - "running `project.analysis.fit()` again resumes from the remaining\n", - "datasets and appends the missing results." + "processed. The saved project contains 213 scan files and a partial\n", + "`analysis/results.csv` with 210 completed rows. Running\n", + "`project.analysis.fit()` resumes from the remaining three datasets and\n", + "appends the missing results." ] }, { @@ -67,7 +68,8 @@ "### Locate Project\n", "\n", "Download and extract the saved Co2SiO4 scan project from the\n", - "EasyDiffraction data repository." + "EasyDiffraction data repository. The project contains the scan data and\n", + "the partial sequential-fit results needed for resuming." ] }, { diff --git a/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.py b/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.py index 5831bbe64..269bce1cc 100644 --- a/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.py +++ b/docs/docs/tutorials/refine-cosio-d20-tscan-resumed.py @@ -1,11 +1,12 @@ # %% [markdown] -# # Structure Refinement: Co2SiO4, D20 (T-scan, resumed) +# # Co2SiO4 T-scan Resume # # This example loads a previously saved Co2SiO4 project after a # sequential refinement was stopped before all scan files were -# processed. If `analysis/results.csv` already contains completed rows, -# running `project.analysis.fit()` again resumes from the remaining -# datasets and appends the missing results. +# processed. The saved project contains 213 scan files and a partial +# `analysis/results.csv` with 210 completed rows. Running +# `project.analysis.fit()` resumes from the remaining three datasets and +# appends the missing results. # %% [markdown] # ## ๐Ÿ› ๏ธ Import Library @@ -20,7 +21,8 @@ # ### Locate Project # # Download and extract the saved Co2SiO4 scan project from the -# EasyDiffraction data repository. +# EasyDiffraction data repository. The project contains the scan data and +# the partial sequential-fit results needed for resuming. # %% project_dir = edi.download_data('proj-cosio-d20-scan', destination='projects', overwrite=True) diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index fd8279ce2..7ffa0e52d 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -221,10 +221,8 @@ nav: - Getting Started: - LBCO quick code: tutorials/refine-lbco-hrpt-from-data.ipynb - LBCO basic load: tutorials/refine-lbco-hrpt-from-cif.ipynb + - LBCO resume: tutorials/load-and-fit-lbco-hrpt.ipynb - LBCO complete: tutorials/refine-lbco-hrpt-report.ipynb - - Load Project: - - LBCO Single: tutorials/load-and-fit-lbco-hrpt.ipynb - - Co2SiO4 Sequential: tutorials/refine-cosio-d20-tscan-resumed.ipynb - Powder Diffraction: - Co2SiO4 pd-neut-cwl: tutorials/refine-cosio-d20.ipynb - HS pd-neut-cwl: tutorials/refine-hs-hrpt.ipynb @@ -246,6 +244,7 @@ nav: - NCAF pd-neut-tof: tutorials/refine-ncaf-wish.ipynb - Si Bragg+PDF: tutorials/joint-si-bragg-pdf.ipynb - Co2SiO4 T-scan: tutorials/refine-cosio-d20-tscan.ipynb + - Co2SiO4 T-scan Resume: tutorials/refine-cosio-d20-tscan-resumed.ipynb - Simulated Data: - LBCO+Si McStas: tutorials/refine-lbco-si-mcstas.ipynb - BEER McStas: tutorials/calibrate-beer-ess.ipynb @@ -266,17 +265,22 @@ nav: - LaB6 FCJ asymmetry: verification/pd-neut-cwl_LaB6_fcj-asymmetry.ipynb - LaB6 absorption: verification/pd-neut-cwl_LaB6_absorption.ipynb - LBCO basic pseudo-Voigt: verification/pd-neut-cwl_LBCO_basic.ipynb - - LBCO preferred orientation: verification/pd-neut-cwl_LBCO_preferred-orientation.ipynb + - LBCO preferred orientation: + verification/pd-neut-cwl_LBCO_preferred-orientation.ipynb - PbSO4 basic pseudo-Voigt: verification/pd-neut-cwl_PbSO4_basic.ipynb - - PbSO4 Berar-Baldinozzi asymmetry: verification/pd-neut-cwl_PbSO4_beba-asymmetry.ipynb + - PbSO4 Berar-Baldinozzi asymmetry: + verification/pd-neut-cwl_PbSO4_beba-asymmetry.ipynb - Y2O3 isotropic ADPs: verification/pd-neut-cwl_Y2O3_isotropic-adp.ipynb - Y2O3 beta ADPs: verification/pd-neut-cwl_Y2O3_beta-adp.ipynb - Powder, neutron, time-of-flight: - Fe pseudo-Voigt profile: verification/pd-neut-tof_Fe_pseudo-voigt.ipynb - - NCAF Jorgensen-Von Dreele (Gaussian): verification/pd-neut-tof_NCAF_jorgensen-von-dreele.ipynb + - NCAF Jorgensen-Von Dreele (Gaussian): + verification/pd-neut-tof_NCAF_jorgensen-von-dreele.ipynb - Si Jorgensen profile: verification/pd-neut-tof_Si_jorgensen.ipynb - - Si Jorgensen-Von Dreele profile: verification/pd-neut-tof_Si_jorgensen-von-dreele.ipynb - - Si Jorgensen-Von Dreele + size/strain: verification/pd-neut-tof_Si_jorgensen-von-dreele-size-strain.ipynb + - Si Jorgensen-Von Dreele profile: + verification/pd-neut-tof_Si_jorgensen-von-dreele.ipynb + - Si Jorgensen-Von Dreele + size/strain: + verification/pd-neut-tof_Si_jorgensen-von-dreele-size-strain.ipynb - Diamond DREAM (ESS, McStas): verification/pd-neut-tof_diamond_dream.ipynb - Powder, X-ray, constant wavelength: - LiF single wavelength: verification/pd-xray-cwl_LiF_single.ipynb @@ -287,13 +291,18 @@ nav: - Single crystal: - Pr2NiO4 basic (CWL): verification/sc-neut-cwl_Pr2NiO4_basic.ipynb - Tb2Ti2O7 basic (CWL): verification/sc-neut-cwl_Tb2Ti2O7_basic.ipynb - - Tb2Ti2O7 isotropic extinction (CWL): verification/sc-neut-cwl_Tb2Ti2O7_isotropic-extinction.ipynb - - Tb2Ti2O7 anisotropic ADPs (CWL): verification/sc-neut-cwl_Tb2Ti2O7_anisotropic-adp.ipynb + - Tb2Ti2O7 isotropic extinction (CWL): + verification/sc-neut-cwl_Tb2Ti2O7_isotropic-extinction.ipynb + - Tb2Ti2O7 anisotropic ADPs (CWL): + verification/sc-neut-cwl_Tb2Ti2O7_anisotropic-adp.ipynb - Taurine basic (TOF): verification/sc-neut-tof_taurine_basic.ipynb - Total scattering: - - Ni gaussian-damped sinc: verification/total-neut-cwl_Ni_gaussian-damped-sinc.ipynb - - Si gaussian-damped sinc: verification/total-neut-tof_Si_gaussian-damped-sinc.ipynb - - NaCl gaussian-damped sinc: verification/total-xray_NaCl_gaussian-damped-sinc.ipynb + - Ni gaussian-damped sinc: + verification/total-neut-cwl_Ni_gaussian-damped-sinc.ipynb + - Si gaussian-damped sinc: + verification/total-neut-tof_Si_gaussian-damped-sinc.ipynb + - NaCl gaussian-damped sinc: + verification/total-xray_NaCl_gaussian-damped-sinc.ipynb - Command-Line: - Command-Line: cli/index.md - API Reference: diff --git a/src/easydiffraction/_data_index_ref.txt b/src/easydiffraction/_data_index_ref.txt index 1081a434b..f81bb5a2d 100644 --- a/src/easydiffraction/_data_index_ref.txt +++ b/src/easydiffraction/_data_index_ref.txt @@ -1 +1 @@ -6fbd6a6aabefebc6e515359d3267726b14ecb17d +35af7e9bf469a1ee4ecc889aff2279440b020c8a