Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ include RELEASE_NOTES*.md

recursive-include docs/joss *.md *.json
include scripts/check_joss_artifacts.py

recursive-include assets/readme *.svg *.png *.json

recursive-include paper *.pdf *.json
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="assets/readme/hero.svg" width="100%" alt="StrainTrace: virtual extensometer and in-plane full-field 2D DIC for image sequences.">
<img src="assets/readme/hero.png" width="100%" alt="StrainTrace: Image-based displacement and strain. AI-generated conceptual illustration.">
</p>

# StrainTrace
Expand Down Expand Up @@ -66,6 +66,8 @@ Full-field 2D DIC: Load images → draw field ROI → IC-GN/IC-LM → dic/

## Full-field output contract

<p align="center"><img src="paper/figures/workflow.png" width="100%" alt="Virtual-extensometer and fixed-reference 2D DIC workflows and output records."></p>

Full-field analysis uses the first frame in the selected analysis range as one fixed reference. Each later frame is correlated to that same reference; the workflow does not silently switch to a frame-to-frame reference. The rectangular ROI is sampled at points of interest (POIs), so the result is a POI grid rather than a value at every image pixel. It is not a 3D measurement.

All images in the selected full-field range must have the same dimensions; a mismatch is a validation failure.
Expand Down
12 changes: 12 additions & 0 deletions assets/readme/hero-generation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "StrainTrace",
"subtitle": "Image-based displacement and strain",
"palette": "Deep forest navy, jade, pale mint and restrained orange",
"motif": "A clear speckled reference specimen plane next to a slightly deformed plane, linked by fine tracking guides. A few tasteful displacement arrows and a sparse deformation grid communicate digital image correlation. No machinery, no human hands, no invented colorbar or numerical measurement.",
"tool": "image_gen built-in; model identifier not exposed",
"revision": null,
"prompt": "Create one exceptionally polished scientific software README cover banner, wide landscape approximately 2.4:1 aspect ratio, premium editorial art direction, high resolution. Project: StrainTrace. Palette: Deep forest navy, jade, pale mint and restrained orange. Concept: A clear speckled reference specimen plane next to a slightly deformed plane, linked by fine tracking guides. A few tasteful displacement arrows and a sparse deformation grid communicate digital image correlation. No machinery, no human hands, no invented colorbar or numerical measurement. Compose generous negative space and sharply legible refined sans-serif typography integrated with the scientific motif. Exact text, no other copy: \"StrainTrace\" large, \"Image-based displacement and strain\" smaller, and a discreet \"Conceptual illustration\". Make name/subtitle read immediately at GitHub width. Restrained three-dimensional material, carefully controlled highlights, precise linework, sophisticated hierarchy and balanced composition. No generic AI neon clouds, no random particles, no badges, no claims, no photoreal experimental data, no fake application screenshot, no watermarks or publisher branding. This is an editorial cover, not a quantitative paper figure.",
"created_on": "2026-09-27",
"purpose": "README conceptual cover only, not experimental data or software output",
"sha256": "65a5cbe82226578358162b5ce0c6bc65174593761a9e4f80622c70c8f713b8b5"
}
Binary file added assets/readme/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 7 additions & 9 deletions assets/readme/section-01-why.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 7 additions & 9 deletions assets/readme/section-02-science.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion docs/joss/submission-record.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
},
"ai_assistance": {
"current_round": "OpenAI Codex, GPT-6, 2026-09-27: repository audit, packaging, tests, documentation, manuscript and bibliography preparation, validation and Git integration.",
"historical_disclosure": "Retain project-specific disclosures; AbsSAXS AI history is not copied to these projects."
"historical_disclosure": "Retain project-specific disclosures; AbsSAXS AI history is not copied to these projects.",
"visual_revision": "2026-09-27: Codex revised reproducible manuscript figure scripts, captured real application widgets and prepared conceptual README covers using the built-in image-generation tool (model identifier not exposed). Prompt and image provenance are retained in the repository. Final author review remains pending."
},
"submission_date": null,
"related_publications": [
Expand Down
16 changes: 16 additions & 0 deletions docs/joss/visual-provenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Visual sources and reproduction

The September 2026 visual revision separates editorial illustrations from research-software evidence.

- `assets/readme/hero.png` is an AI-generated **conceptual illustration** for the README. It is not detector data, a calculated result, or an application screenshot. The prompt, tool description and file hash are in `hero-generation.json` beside it. The built-in image tool did not expose a model identifier; no specific model-version claim is made.
- The editable section headers use repository-owned SVG. The previous SVG cover remains as an alternative source asset.
- Manuscript diagrams and numerical plots are generated by the repository scripts below, with SVG and PDF vector exports and 450 dpi PNGs. Scientific arrays, reflection positions, and solver observations are not modified by an image-generation model.
- Numerical demonstrations use only the bundled synthetic fixtures and actual software calculations. AnisoScope's interface figure, where applicable, is captured from real Qt widgets; the capture JSON records its inputs and hash.

From the repository root, with the project's dependencies and Matplotlib installed:

```bash
python paper/make_figures.py
```

Inspect the generated images and recompile `paper/paper.md` using the official draft-PDF workflow after any figure change. The README cover is not included as a scientific manuscript figure. Synthetic verification is not independent reproduction of the Acta Materialia experimental study.
4 changes: 4 additions & 0 deletions paper/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ The source date is a preparation date. Before submission, complete the author re
and research-use mapping in [the submission guide](../docs/joss/README.md), use the
actual submission date, rebuild and inspect the PDF. The synthetic verification
suite is documented in [validation](../docs/joss/validation.md).

## Reproduce the figures

Run `python paper/make_figures.py` from the repository root. It regenerates the workflow and reruns the locked synthetic benchmark before plotting the clean small-translation case. Vector SVG/PDF and 450 dpi PNG exports are saved under `paper/figures`, together with plotted observations and the full benchmark JSON. This is not experimental-data validation.
Loading
Loading