Releases: borgi-s/Geometrical_Optics_master
v2.4.0 — identify fan-out + colleague example notebooks
Install
pip install dfxm-geo==2.4.0
(conda-forge follows once the autotick-bot feedstock PR merges.)
What's new
Identification fan-out
dfxm-identify --seed INT— reproducible / shardable identification runs.scripts/fanout.py --mode {forward,identify}— in-node launcher now drives
identification as well as forward.- Fixed
lsf/identify_array.bsub: it claimed a per-task seed offset but passed
none, so all array tasks drew identical samples. Now seeds perLSB_JOBINDEX. __version__now derives from installed package metadata (was a stale
hardcoded string).
Colleague-ready examples (examples/)
identification_ml_tutorial/— self-contained tutorial: build kernel →
dfxm-identify→ HDF5 layout → per-image labels → images → scaling to 100k+.
Regenerates its own inputs; runs end to end from a fresh clone.cluster_showcase/— visualizes a real cluster identify sweep.examples/README.mdcross-links both and documents run requirements.
No dependency / entry-point / requires-python changes from 2.3.x.
v2.1.2 — COM↔qi figure, chi-shift fix (first PyPI release since v2.1.0)
pip install dfxm-geo==2.1.2 (now live on PyPI).
This is the first PyPI release since v2.1.0 — the v2.1.1 tag was built but never published, so 2.1.2 also carries that work.
New in v2.1.2
- Postprocessing χ axis fix.
run_postprocessnow reads the χ center-of-mass straight off the nominal rocking grid. The old runtime χ-shift calibration carried anabs()sign-loss that pushed the χ-COM map off the article axis — harmless before the v2.0.2 de-quantized weighted-mean COM, wrong after. - README: COM↔qi comparison figure. The rocking GIF is replaced by a 4-panel figure comparing the φ/χ center-of-mass (COM) maps against the geometric-optics qi₁/qi₂ fields (analytic backend), reproducing the correspondence of Borgi et al. (2024).
- CI fixes. mypy
darling.*import override; kernel-dependent integration tests now skip cleanly on bare checkouts instead of failing.
Also included (was in the unpublished v2.1.1 line)
- Self-sufficient pip install:
dfxm-initscaffolds the bundled config templates, so clone-free users can gopip install dfxm-geo→dfxm-init→dfxm-bootstrap→dfxm-forward. - Seedable MC kernel (
dfxm-bootstrap --seed),DarlingReader(darling external-link workaround), z-scanrender_per_dislocation.
Full tag history: v1.1.0 (last GitHub Release) → v1.2.0 → v1.3.0 → v1.3.1 → v2.0.0 → v2.0.1 → v2.0.2 → v2.1.0 → v2.1.1 → v2.1.2.
v2.1.1 — follow-ups batch
Seedable MC kernel (dfxm-bootstrap --seed), DarlingReader (darling external-link workaround), and z-scan render_per_dislocation. Note: this tag was never published to PyPI — its content shipped to PyPI as part of v2.1.2.
v2.1.0 — analytic (closed-form) resolution backend
Adds a grid-free closed-form (erf-difference) resolution backend; auto selects analytic when the beamstop is off, else the MC kernel. First version published to production PyPI.
v2.0.2 — exact (de-quantized) COM maps
χ-COM "banding" was np.rint-onto-oversampled-grid quantization in compute_com_maps; replaced by an exact intensity-weighted-mean COM. Matches Henningsson JMPS 2025 Eq. 38.
v2.0.1 — population rl-units fix
Fixes rl passed in metres (not µm) in Find_Hg_from_population — the field was 1e6× too large, collapsing weak-beam contrast to the dislocation core for centered/random/multi modes (wall mode unaffected). Validated bit-identical vs the reference.
v2.0.0 — default config flip to "simple" (breaking)
Breaking change. Empty TOML now produces a valid run: a single detector image of one canonical FCC dislocation at the origin (Al 111 @ 17 keV), for both forward and identify. WallCrystalConfig defaults stripped; dataclasses made kw_only.
v1.3.1 — two_dtheta in identification
Lifts [scan.two_dtheta] into identification single/multi/zscan as a within-scan frame axis (matches forward semantics). Bundles a latent z-positioner shape fix (all-identical z collapses to scalar).
v1.3.0 — 4-axis scan trajectory
Wires [scan.two_dtheta] / [scan.z] into forward + identification (single/multi), plus a z-positioner unit fix. The rocking grid is now a full 4-axis (ϕ, χ, 2θ, z) trajectory.
v1.2.0 — Identification → HDF5 (BLISS layout)
Sub-project E: identification mode writes BLISS-schema HDF5 (master + per-scan layout); forward mode retrofitted to the same layout. Adds dfxm-migrate-output (npy → new layout) and dfxm-migrate-h5 (v1.1.0 → v1.2.0 layout).