Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
4749775
Add project-summary-rendering ADR suggestion
AndrewSazonov May 26, 2026
dc64630
Add project-summary-rendering implementation plan
AndrewSazonov May 26, 2026
523f5e5
Add ReportFormatEnum and ReportStyleEnum
AndrewSazonov May 26, 2026
0fb7189
Refactor Report into a ProjectConfig CategoryItem
AndrewSazonov May 26, 2026
cbbba92
Load _report.* from project.cif with legacy defaults
AndrewSazonov May 26, 2026
dd6810c
Move IUCr CIF validation inside the writer
AndrewSazonov May 26, 2026
946063c
Remove public Report.check() and check=True flag
AndrewSazonov May 26, 2026
bfda9ea
Add per-format save methods and Report.save dispatch
AndrewSazonov May 26, 2026
3aa949b
Lock empty-config behaviour in Report API
AndrewSazonov May 26, 2026
4b3bf06
Add analysis.software category and engine URL constants
AndrewSazonov May 26, 2026
cf198b8
Populate analysis.software at fit time and emit fit_datetime
AndrewSazonov May 26, 2026
8424777
Amend analysis-cif-fit-state for analysis.software
AndrewSazonov May 26, 2026
1abc9be
Amend iucr-cif-tag-alignment for project.report
AndrewSazonov May 26, 2026
6e29305
Add project.publication facade and sub-categories
AndrewSazonov May 26, 2026
0db4dc6
Persist project.publication to project.cif
AndrewSazonov May 26, 2026
6f82337
Add Publication.load TOML JSON entry point
AndrewSazonov May 26, 2026
c83b4b4
Read publication metadata in IUCr writer
AndrewSazonov May 26, 2026
1dad994
Add ReportDataContext builder and Jinja base macros
AndrewSazonov May 26, 2026
89d6721
Add HTML renderer with CDN and offline Plotly modes
AndrewSazonov May 26, 2026
bc6eae3
Vendor LaTeX styles with licenses and add report deps
AndrewSazonov May 26, 2026
efa3704
Add LaTeX renderer and save_tex with vendored styles
AndrewSazonov May 26, 2026
27c948a
Add opportunistic PDF compilation via TeX subprocess
AndrewSazonov May 26, 2026
0ed6e66
Add crystal_system and measured_range properties for reports
AndrewSazonov May 26, 2026
51e0108
Add ed save-report CLI subcommand
AndrewSazonov May 26, 2026
17fb00d
Update tutorials and user-guide docs for project.report
AndrewSazonov May 26, 2026
79a898d
Promote project-summary-rendering ADR to accepted
AndrewSazonov May 26, 2026
f354fa4
Reach Phase 1 review gate
AndrewSazonov May 26, 2026
3b96933
Document Kaleido browser bootstrap option
AndrewSazonov May 26, 2026
0cf72a5
Make dictionary validation optional and fix TeX braces
AndrewSazonov May 26, 2026
3d41b61
Preserve report uncertainties in exported formats
AndrewSazonov May 26, 2026
4cd6804
Reuse TeX bundle for PDF generation
AndrewSazonov May 27, 2026
129ba00
Replace report formats list with booleans
AndrewSazonov May 27, 2026
23327ed
Accept project summary rendering migration plan
AndrewSazonov May 27, 2026
44d2f15
Drop ReportStyleEnum and _report.style field
AndrewSazonov May 27, 2026
823f862
Drop style parameter from report save commands
AndrewSazonov May 27, 2026
2e5b299
Drop REVTeX style files from vendored bundle
AndrewSazonov May 27, 2026
916ff8e
Rename TeX template to canonical report name
AndrewSazonov May 27, 2026
46def5f
Drop kaleido runtime dependency
AndrewSazonov May 27, 2026
1c48aeb
Add DisplayHandler value object
AndrewSazonov May 27, 2026
7f77899
Wire display metadata into descriptors
AndrewSazonov May 27, 2026
4d79868
Add units vocabulary validation
AndrewSazonov May 27, 2026
cd8b015
Migrate descriptor units to display handlers
AndrewSazonov May 27, 2026
4dd7eb5
Read report labels through display handlers
AndrewSazonov May 27, 2026
6f8a80f
Vendor MathJax bundle for offline reports
AndrewSazonov May 28, 2026
ebac322
Inline MathJax for offline HTML reports
AndrewSazonov May 28, 2026
4c70fff
Add x_descriptor and fit_data_arrays on ExperimentBase
AndrewSazonov May 28, 2026
f1f59eb
Replace fit_data payload with descriptor-driven shape
AndrewSazonov May 28, 2026
b6e1bd5
Emit pgfplots CSV and replace includegraphics with pgfplots blocks
AndrewSazonov May 28, 2026
a558157
Build Plotly fit figures from fit_data context
AndrewSazonov May 28, 2026
5aad96f
Replace stale figures references with data
AndrewSazonov May 28, 2026
8558eef
Update report tutorials for single-style output
AndrewSazonov May 28, 2026
d528158
Reach Phase 1 review gate
AndrewSazonov May 28, 2026
cddff54
Fix TeX report axis label template syntax
AndrewSazonov May 28, 2026
7a56c3f
Keep fit running when PDF reporting fails
AndrewSazonov May 28, 2026
86c4b19
Escape plain labels in TeX reports
AndrewSazonov May 28, 2026
5a770f0
Update report templates with composite fit plots
AndrewSazonov May 28, 2026
bed21df
Fix TeX report ytick brace escaping
AndrewSazonov May 28, 2026
4fcce30
Promote project-summary-rendering ADR to accepted
AndrewSazonov May 28, 2026
ab7659e
Add project-summary-rendering implementation plan
AndrewSazonov May 28, 2026
4f28bb4
Emit standalone pgfplots figures included as PDF
AndrewSazonov May 28, 2026
a454de1
Serialize report Plotly figures via shared notebook path
AndrewSazonov May 28, 2026
8175f60
Match pgfplots figure geometry to Plotly layout
AndrewSazonov May 28, 2026
0738371
Reach Phase 1 review gate
AndrewSazonov May 28, 2026
058e240
Scale pgfplots axes to Plotly panel ratios
AndrewSazonov May 28, 2026
beb6114
Align report plot styling with Plotly output
AndrewSazonov May 28, 2026
e9447f6
Keep all points in pgfplots figures
AndrewSazonov May 28, 2026
49ab34b
Align numeric report table columns
AndrewSazonov May 28, 2026
318d202
Restore pgfplots report line widths
AndrewSazonov May 28, 2026
fdf17ec
Render category-driven reports with aligned tables
AndrewSazonov May 28, 2026
3450eb8
Harmonize report styling
AndrewSazonov May 29, 2026
f0a854d
Tighten section number spacing
AndrewSazonov May 29, 2026
2a26701
Replace report format list with boolean flags
AndrewSazonov May 29, 2026
3d7ce4e
Fix console report lattice rows
AndrewSazonov May 29, 2026
7168a30
Remove orphaned report module tests
AndrewSazonov May 29, 2026
300145e
Return intended PDF report path
AndrewSazonov May 29, 2026
3cbeb6c
Load IUCr dictionaries lazily
AndrewSazonov May 29, 2026
b6211de
Warn on skipped IUCr dictionary loads
AndrewSazonov May 29, 2026
cd39f39
Use powder phase id tag in IUCr refln loop
AndrewSazonov May 29, 2026
a9691a0
Remove dead PDF compiler helpers
AndrewSazonov May 29, 2026
a928f11
Apply pixi run fix auto-fixes
AndrewSazonov May 29, 2026
963d894
Apply ruff format auto-fixes
AndrewSazonov May 29, 2026
89712f8
Fix Phase 2 lint failures
AndrewSazonov May 29, 2026
45f5aa4
Restore lazy report import
AndrewSazonov May 29, 2026
99d470b
Align Phase 2 tests with report configuration
AndrewSazonov May 29, 2026
696f2a3
Handle nonnumeric descriptors without units
AndrewSazonov May 29, 2026
3a8a546
Apply Phase 2 formatting fixes
AndrewSazonov May 29, 2026
f2bd614
Add Phase 2 structure coverage tests
AndrewSazonov May 29, 2026
7fa0af9
Apply docstring formatting cleanup
AndrewSazonov May 29, 2026
9d065b1
Apply final Phase 2 formatting
AndrewSazonov May 29, 2026
742be18
Update report integration save test
AndrewSazonov May 29, 2026
5cf5d24
Exclude vendored files from project checks
AndrewSazonov May 29, 2026
5982e05
Remove standalone report CLI commands
AndrewSazonov May 29, 2026
24495ce
Document PDF compiler exception handling
AndrewSazonov May 29, 2026
f71f9b4
Clarify report display mixin responsibility
AndrewSazonov May 29, 2026
57f189c
Explain TeX subprocess lint suppressions
AndrewSazonov May 29, 2026
8830613
Complete PDF compiler helper docstring
AndrewSazonov May 29, 2026
212d001
Use active ADP labels in reports
AndrewSazonov May 29, 2026
7c00635
Record software package name without minimizer method
AndrewSazonov May 29, 2026
d4d2194
Remove console report display from Report category
AndrewSazonov May 29, 2026
e5f7477
Show report timestamp in human-readable format
AndrewSazonov May 29, 2026
b3233c1
Add display labels to analysis result descriptors
AndrewSazonov May 29, 2026
51c9459
Add project metadata to tutorial
AndrewSazonov May 29, 2026
f8f9ac8
Render analysis section from categories
AndrewSazonov May 29, 2026
22442f7
Use lowercase software analysis subsection title
AndrewSazonov May 29, 2026
c221470
Center and brace string columns in TeX tables
AndrewSazonov May 29, 2026
a22ccb4
Use longtable macro and drop CIF validation
AndrewSazonov May 29, 2026
187b357
Update ADRs to reflect removed gemmi validation
AndrewSazonov May 29, 2026
9ede5f8
Remove commented-out show_report line
AndrewSazonov May 29, 2026
6b4c1c2
Clean up docs after validation removal
AndrewSazonov May 29, 2026
0e4ffbf
Add open issue for CIF report dictionary-validation test
AndrewSazonov May 29, 2026
7aa446b
Split single-crystal refln into CWL and TOF variants
AndrewSazonov May 29, 2026
f9c8bce
Left-align loop tables and center item strings in TeX report
AndrewSazonov May 29, 2026
88b591b
Style PDF report links to match HTML
AndrewSazonov May 29, 2026
1d1ffb4
Remove TeX intermediate after PDF-only report build
AndrewSazonov May 29, 2026
a6c0f5d
Enable HTML report output by default
AndrewSazonov May 29, 2026
912070b
Add single-crystal agreement chart to HTML report
AndrewSazonov May 29, 2026
5f7c75b
Add single-crystal agreement scatter to PDF report
AndrewSazonov May 29, 2026
275bffc
Apply pixi run fix auto-fixes
AndrewSazonov May 29, 2026
1a3e6c3
Update refln tests for CWL/TOF split
AndrewSazonov May 29, 2026
01213d6
Update report renderer tests for analysis section and longtable
AndrewSazonov May 29, 2026
64d5183
Update save tests for default HTML report output
AndrewSazonov May 29, 2026
8467d6f
Update data_context tests for analysis split and centered columns
AndrewSazonov May 29, 2026
7b026ab
Assert absent refln wavelength via class, not guarded instance
AndrewSazonov May 29, 2026
295fa49
Disable HTML default in CIF report integration test
AndrewSazonov May 29, 2026
836c2a1
Drop removed show_report call from tutorials
AndrewSazonov May 30, 2026
0fb056c
Document default HTML report and TeX-bundle cleanup
AndrewSazonov May 30, 2026
bfecc2f
Regenerate tutorial notebooks without show_report
AndrewSazonov May 30, 2026
4b5ae70
Regenerate ed-3 notebook without show_report
AndrewSazonov May 30, 2026
c861f1a
Fix mangled mkdocstrings directive on report API page
AndrewSazonov May 30, 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
5 changes: 5 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
github_checks:
annotations: true

ignore:
- 'src/easydiffraction/report/templates/html/vendor/**'
- 'src/easydiffraction/report/templates/tex/styles/**'
- 'src/easydiffraction/utils/_vendored/jupyter_dark_detect/**'

comment:
layout: 'reach, diff, flags, files'
behavior: default
Expand Down
4 changes: 3 additions & 1 deletion .codefactorignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# CodeFactor exclude patterns configuration must be done online:
# https://www.codefactor.io/repository/github/easyscience/diffraction-lib/ignore
#
# Last updated: 2026-01-05
# Last updated: 2026-05-29
#
# Exclude patterns:
# deps/**
# docs/**
# src/easydiffraction/report/templates/html/vendor/**
# src/easydiffraction/report/templates/tex/styles/**
# src/easydiffraction/utils/_vendored/jupyter_dark_detect/**
# tests/**
# tmp/**
Expand Down
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ docs/docs/assets/
# Node
node_modules

# Vendored snapshots
src/easydiffraction/report/templates/html/vendor/
src/easydiffraction/report/templates/tex/styles/
src/easydiffraction/utils/_vendored/jupyter_dark_detect/

# Misc
.benchmarks
.cache
Expand Down
13 changes: 13 additions & 0 deletions THIRD_PARTY_LICENSES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Third-Party Licenses

This file indexes third-party assets vendored in this repository.

## Report LaTeX Styles

The vendored report LaTeX style files are documented in
`src/easydiffraction/report/templates/tex/styles/LICENSES.md`.

## Report HTML Assets

The vendored report HTML assets are documented in
`src/easydiffraction/report/templates/html/vendor/LICENSES.md`.
36 changes: 33 additions & 3 deletions docs/dev/adrs/accepted/analysis-cif-fit-state.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Analysis-owned fit state needs to persist:
- fit bounds and bound provenance
- pre-fit scalar snapshots for recovery workflows
- compact status metadata for the latest saved fit projection
- software-provenance snapshot for the latest successful fit
- deterministic correlation summaries
- minimizer-specific fit outputs on the paired `_fit_result.*` category
- per-parameter posterior summaries on `_fit_parameter`
Expand Down Expand Up @@ -104,6 +105,34 @@ round-trip project schema remains common.
correlation summaries keyed by a persisted `id`. Only unique parameter
pairs are stored.

### Software provenance

`_software` stores the runtime software snapshot recorded after a
successful fit. It is part of the project save / load contract and feeds
report rendering plus the IUCr export software labels. It is not a user
configuration category.

The category stores name, version, and URL triples for:

- `framework`
- `calculator`
- `minimizer`

Each role is persisted as scalar items on the same category:

- `<role>_name`
- `<role>_version`
- `<role>_url`

The category also stores:

- `timestamp`

`timestamp` is an ISO-8601 UTC string for the fit that produced the
snapshot. Projects saved before this category existed load with all
software fields unset and `timestamp` set to `None`; rerunning a fit
populates the snapshot.

### Minimizer fit projection

The active `_minimizer.*` category stores user-selected solver inputs
Expand Down Expand Up @@ -230,9 +259,10 @@ Load order is:

1. standard analysis configuration
2. `_minimizer.*` settings according to the active `_minimizer.type`
3. common and family-specific `_fit_result.*` fields on the paired class
4. `_fit_parameter` and `_fit_parameter_correlation`
5. posterior sidecar arrays when a Bayesian result is expected
3. `_software.*` provenance fields when present
4. common and family-specific `_fit_result.*` fields on the paired class
5. `_fit_parameter` and `_fit_parameter_correlation`
6. posterior sidecar arrays when a Bayesian result is expected

Persist backend runtime objects, optimizer instances, and raw driver
payloads nowhere in this design.
Expand Down
262 changes: 141 additions & 121 deletions docs/dev/adrs/accepted/iucr-cif-tag-alignment.md

Large diffs are not rendered by default.

23 changes: 19 additions & 4 deletions docs/dev/adrs/accepted/project-facade-and-persistence.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ Persistence.

`Project` is the top-level user facade. It owns project metadata,
structures, experiments, rendering preferences, display helpers,
analysis, report helpers, verbosity, and save/load behavior.
analysis, report helpers, publication metadata, verbosity, and save/load
behavior.

A later proposal considered renaming this facade to `Workspace` so that
`project` could be reserved for the scientific project information
Expand Down Expand Up @@ -50,9 +51,18 @@ through `project.report` and written only when requested, using
`reports/<project>.cif`; default project saves do not write
`summary.cif`.

Expose submission-report helpers as `project.report`. The previous
`project.summary` placeholder and its `summary.cif` output are not part
of the persistence layout.
Expose submission-report helpers as `project.report`. This facade is a
hybrid surface: its scalar output configuration persists to
`project.cif` as `_report.*`, while its methods render report artifacts
under `reports/`. The previous `project.summary` placeholder and its
`summary.cif` output are not part of the persistence layout.

Expose journal-submission metadata as `project.publication`. It is a
top-level owner with CIF-aligned sibling categories for `_journal.*`,
`_journal_date.*`, `_journal_coeditor.*`, `_publ_contact_author.*`,
`_publ_body.*`, and the `_publ_author.*` loop. These singleton
publication categories persist in `project.cif` and feed report exports;
`reports/<project>.cif` remains export-only.

Keep project information available as `project.info`. The Python name
avoids a confusing `project.project` access path, while the persisted
Expand All @@ -79,6 +89,11 @@ The saved project directory path is runtime file-I/O state, not a
serialized project-information field. If the path is exposed in Python,
it must not emit a `_project.path` CIF item.

The project-level singleton categories currently persisted in
`project.cif` are `_project.*`, `_chart.*`, `_report.*`, `_table.*`,
`_verbosity.*`, `_journal.*`, `_journal_date.*`, `_journal_coeditor.*`,
`_publ_contact_author.*`, `_publ_body.*`, and the `_publ_author.*` loop.

## Consequences

The saved layout mirrors the current object graph while preserving the
Expand Down
Loading
Loading