Skip to content

docs: 0.3.0 release plan (tracker #48) - #81

Open
CSSFrancis wants to merge 1 commit into
mainfrom
docs/release-0-3-0-plan
Open

docs: 0.3.0 release plan (tracker #48)#81
CSSFrancis wants to merge 1 commit into
mainfrom
docs/release-0-3-0-plan

Conversation

@CSSFrancis

Copy link
Copy Markdown
Owner

The plan behind the 0.3.0 tracker and its 32 sub-issues, which all link here.

Five waves, each independently shippable behind its own optional extra:

Wave Depends on Extra
0 Cross-cutting foundations
1 Model fitting, 1D + 2D 0
2 EELS + EDS 1 eels
3 EBSD 0 ebsd
4 Atom position mapping 1 atoms
5 Data module

Docs only — no code changes.

Decisions worth a look before the waves start

  • spyde/models/ is already taken by the neural disk detector, so the HyperSpy model port lives in spyde/fitting/.
  • Optional extras (exspy, kikuchipy, atomap — none installed today) gated by a new requires_package key mirroring requires_vectors.
  • Fitting engine: batched GPU Levenberg–Marquardt + seeded propagation. SAMFire's insight is kept as the seed source, not the scheduler.
  • EBSD indexing/refinement is written in torch on purpose; kikuchipy supplies signals, IO, geometry and master patterns.

The number that motivates Wave 1

multifit on 1024 spectra × 1024 channels: 10.83 s = 95 spectra/s, single-threaded → 11.6 min for a 256×256 SI. Parity with multifit is the acceptance test, not convergence.

Also found while measuring: numexpr is not installed, so every hyperspy Expression component silently falls back to numpy. Fixed in Wave 0.

Five waves, each independently shippable behind its own optional extra.
Tracked in #48 with a sub-issue per task.

Decisions recorded up front, because each one shapes the code:

- spyde/models/ is already the neural disk detector, so the HyperSpy model
  port lives in spyde/fitting/. Unrelated meanings of "model".
- exspy/kikuchipy/atomap ship as optional extras gated by a new
  requires_package key, mirroring requires_vectors.
- The fitting engine is a batched GPU Levenberg-Marquardt over the whole nav
  grid (the vector_orientation_gpu.py playbook), with SAMFire's
  neighbour-seeding kept as the seed source rather than the scheduler.

Measured baseline that motivates it: multifit on 1024 spectra x 1024 channels
runs 10.83 s = 95 spectra/s single-threaded, which extrapolates to 11.6 min
for a 256x256 SI. Parity with multifit is the acceptance test, not
convergence.

Also found while measuring: numexpr is not installed, so every hyperspy
Expression component silently falls back to numpy.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant