Skip to content

Releases: borgi-s/Geometrical_Optics_master

v2.4.0 — identify fan-out + colleague example notebooks

09 Jun 08:58

Choose a tag to compare

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 per LSB_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.md cross-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)

26 May 09:33
2153f5b

Choose a tag to compare

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_postprocess now reads the χ center-of-mass straight off the nominal rocking grid. The old runtime χ-shift calibration carried an abs() 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-init scaffolds the bundled config templates, so clone-free users can go pip install dfxm-geodfxm-initdfxm-bootstrapdfxm-forward.
  • Seedable MC kernel (dfxm-bootstrap --seed), DarlingReader (darling external-link workaround), z-scan render_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

26 May 09:35

Choose a tag to compare

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

26 May 09:35

Choose a tag to compare

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

26 May 09:35

Choose a tag to compare

χ-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

26 May 09:35

Choose a tag to compare

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)

26 May 09:35

Choose a tag to compare

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

26 May 09:35

Choose a tag to compare

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

26 May 09:35

Choose a tag to compare

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)

26 May 09:35

Choose a tag to compare

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).