Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
df095e0
Add IUCr CIF tag alignment plan
AndrewSazonov May 26, 2026
a9e28c4
Add iucr_name to CifHandler
AndrewSazonov May 26, 2026
53ab347
Adopt IUCr casing for atom_site and space_group CIF tags
AndrewSazonov May 26, 2026
bb3e54b
Emit one ADP family per atom_site row on save
AndrewSazonov May 26, 2026
b6fa152
Add IUCr-canonical fit_result fields to LeastSquaresFitResult
AndrewSazonov May 26, 2026
c79bfe6
Amend analysis-cif-fit-state ADR for new fit_result fields
AndrewSazonov May 26, 2026
4471bf7
Amend minimizer-input-output-split ADR examples
AndrewSazonov May 26, 2026
b328562
Set iucr_name on project-extension descriptors
AndrewSazonov May 26, 2026
c07975a
Replace project.summary with project.report facade
AndrewSazonov May 26, 2026
78a3a15
Amend project-facade-and-persistence ADR for project.report
AndrewSazonov May 26, 2026
c9c00c3
Amend help-discoverability ADR for project.report
AndrewSazonov May 26, 2026
47ce3a9
Add IUCr CIF writer with data_global block
AndrewSazonov May 26, 2026
fb06606
Emit single-crystal blocks in IUCr CIF writer
AndrewSazonov May 26, 2026
bd7f6c0
Emit powder Rietveld blocks in IUCr CIF writer
AndrewSazonov May 26, 2026
eb861ca
Add IUCr category transformers for restructured emissions
AndrewSazonov May 26, 2026
29d18bf
Wire report=True kwarg on Project.save
AndrewSazonov May 26, 2026
6f1480e
Add Report.check() validation via gemmi
AndrewSazonov May 26, 2026
4ba92e4
Update docs and tutorials for project.report rename
AndrewSazonov May 26, 2026
d16f1fb
Promote IUCr CIF tag alignment ADR to accepted
AndrewSazonov May 26, 2026
a5ac0b1
Reach Phase 1 review gate
AndrewSazonov May 26, 2026
e8fe470
Use iucr_name metadata in IUCr export
AndrewSazonov May 26, 2026
f80f859
Implement IUCr extinction mapping
AndrewSazonov May 26, 2026
ef3562b
Document mixed ADP CIF loop emission
AndrewSazonov May 26, 2026
06dfee7
Emit monochromatic wavelength as IUCr items
AndrewSazonov May 26, 2026
d83c235
Serialize only applicable LSQ fit-result fields
AndrewSazonov May 26, 2026
260bdbe
Save project in tutorial example
AndrewSazonov May 26, 2026
7b32db1
Document applicable LSQ fit-result serialization
AndrewSazonov May 26, 2026
9e0ddb3
Add Phase 2 coverage for IUCr report export
AndrewSazonov May 26, 2026
946012a
Apply Phase 2 docstring formatting
AndrewSazonov May 26, 2026
d1f5093
Fix Phase 2 formatting and lint issues
AndrewSazonov May 26, 2026
43a8de0
Update ADP and report tests for IUCr checks
AndrewSazonov May 26, 2026
cf1e435
Fix Report check docstring
AndrewSazonov May 26, 2026
6ef1bd9
Fix IUCr writer switchable descriptor export
AndrewSazonov May 26, 2026
312b9f7
Mark IUCr tutorial verification complete
AndrewSazonov May 26, 2026
66eb3b9
Regenerate tutorial notebook for saved project
AndrewSazonov May 26, 2026
3320d33
Update IUCr plan ADR references
AndrewSazonov May 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 44 additions & 1 deletion docs/dev/adrs/accepted/analysis-cif-fit-state.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,13 @@ posterior summaries:
- `posterior_effective_sample_size_bulk`

`_fit_result` stores the latest saved fit header and scalar
family-specific fit outputs:
family-specific fit outputs. In the default project save this category
is topology-neutral: single-crystal and powder fits both persist under
`_fit_result.*`. The IUCr submission export may remap these same values
to topology-specific dictionary categories (`_refine_ls.*`,
`_pd_proc_ls.*`, `_reflns.*`) as described by
[`iucr-cif-tag-alignment.md`](iucr-cif-tag-alignment.md), but the
round-trip project schema remains common.

- `result_kind`
- `success`
Expand Down Expand Up @@ -113,6 +119,43 @@ Deterministic fit-result classes add compact fit output counts:
- `covariance_available`
- `correlation_available`

These deterministic fields are always written once a deterministic
fit-result projection exists.

Reflection-result fields are written only when a fitted experiment has
persisted reflection rows:

- `R_factor_all`
- `wR_factor_all`
- `R_factor_gt`
- `wR_factor_gt`
- `threshold_expression`
- `number_reflns_total`
- `number_reflns_gt`

Powder-profile fields are written only when the result contains powder
profile diagnostics:

- `prof_R_factor`
- `prof_wR_factor`
- `prof_wR_expected`
- `profile_function`
- `background_function`

Restraint and constraint counts are written only when positive:

- `number_restraints`
- `number_constraints`

The deterministic R-factor, profile, restraint / constraint, and
reflection-aggregate fields use dictionary-canonical item names where
those exist, including uppercase `R` / `wR`, while retaining the
project-side `_fit_result` category prefix in the default save. Live
deterministic fit results may also carry transient diagnostics such as
`shift_over_su_max` and `shift_over_su_mean`; those are not written to
`analysis/analysis.cif` until a topology-specific persistence contract
needs them.

When the LSQ backend provides a termination reason that differs from the
common `_fit_result.message`, deterministic fit results also store:

Expand Down
10 changes: 5 additions & 5 deletions docs/dev/adrs/accepted/fit-results-display-naming.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ Both converge on `s.u.` as the appropriate cross-method label.

[`display-ux.md`](display-ux.md) defines facade method names but not
column headers or footnotes;
[`iucr-cif-tag-alignment.md`](../suggestions/iucr-cif-tag-alignment.md)
defines persisted CIF tag names but not display labels;
[`iucr-cif-tag-alignment.md`](iucr-cif-tag-alignment.md) defines
persisted CIF tag names but not display labels;
[`analysis-cif-fit-state.md`](analysis-cif-fit-state.md) defines Python
and CIF attribute names but not user-visible labels. Display naming for
fit-results tables is a real gap.
Expand Down Expand Up @@ -281,9 +281,9 @@ None directly amended. This ADR complements:

- [`display-ux.md`](display-ux.md) — defines facade method names; this
ADR fills in the column-header layer underneath.
- [`iucr-cif-tag-alignment.md`](../suggestions/iucr-cif-tag-alignment.md)
— defines persisted CIF tag names; this ADR is the matching
display-time label layer.
- [`iucr-cif-tag-alignment.md`](iucr-cif-tag-alignment.md) — defines
persisted CIF tag names; this ADR is the matching display-time label
layer.
- [`analysis-cif-fit-state.md`](analysis-cif-fit-state.md) — defines
Python / CIF attribute names (e.g. `Parameter.uncertainty`,
`posterior_uncertainty`); display headers map to those without
Expand Down
10 changes: 5 additions & 5 deletions docs/dev/adrs/accepted/help-discoverability.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ Accepted and implemented.
EasyDiffraction is used by scientists who often explore the API in
notebooks. The main object graph already exposes many focused objects:
projects, project metadata, structures, experiments, categories,
parameters, analysis helpers, summaries, and display facades. Users need
a consistent way to discover the next useful operation from any of these
parameters, analysis helpers, reports, and display facades. Users need a
consistent way to discover the next useful operation from any of these
objects without reading source code.

Most model objects inherit `GuardedBase`, `CategoryItem`,
`CategoryCollection`, `DatablockItem`, or `DatablockCollection`, which
already provide `help()` output. Plain facade classes such as display
namespaces and summaries do not inherit those base classes, so they need
namespaces and reports do not inherit those base classes, so they need
the same discovery behavior explicitly.

## Decision
Expand All @@ -28,7 +28,7 @@ includes:
- category items and category collections
- datablock items and datablock collections
- project-level objects such as `Project`, `ProjectInfo`, `Analysis`,
`Summary`, and `Rendering`
`Report`, and `Rendering`
- display facades such as `project.display`,
`project.display.parameters`, `project.display.fit`,
`project.display.posterior`, and `analysis.display`
Expand All @@ -52,7 +52,7 @@ project.help()
project.display.help()
project.display.parameters.help()
project.analysis.display.help()
project.summary.help()
project.report.help()
project.experiments.help()
project.experiments['hrpt'].help()
project.experiments['hrpt'].background.help()
Expand Down
Loading
Loading