Changelog#
Upcoming: major features#
Features:
Energy ensemble support across the codebase (PlaneWave, Probe, SMatrix, Bloch) (PR #257)
Significant improvements on simulating large potentials on GPU, alongside minor performance improvements (PR #269)
In addition to the Gaussian (G) distribution, now also implemented Lorentzian (L), Voigtian (convolution L * G) and pseudo-Voigtian (L + G) source-size distributions and filters (PR #270)
Support for skewed pixels (non-orthogonal x,y,z cell axes) (PR #282)
Linear-scaling PRISM-EELS for core-loss simulations (PR #289)
Radially variable detector sensitivity (PR #283)
Plasmons: fast
PhaseScramblePlasmonsfor multislice and PRISM, andMonteCarloPlasmonsfor Bloch waveCBED patterns for Bloch waves (PR #254)
1.0.10#
Features:
Expanded real-space multislice with propagator- and fully-corrected algorithms, and backscattered waves (PR #236)
Related internal function name change: standard multislice is now properly called
FourierMultislice
Updated
BullseyeApertureto use smoothed aperture edges/corners (PR #266)Logarithmic scale display for
DiffractionPatternsand images (PR #303)Finite-projection integrals 7x faster on CPU (PR #309)
Documentation:
Expanded tutorial on real-space multislice
Depth-profile visualization of potentials in the walkthrough
Single-file Zarr zip storage, logarithmic display scaling, soft Bullseye apertures, anisotropic Debye-Waller factors and B-factor conversion helpers
All published notebooks verified to run with this release
Dependencies:
NumPy 2.0 or newer is now required (PR #245)
GitHub actions based on
uvand now cover more versions (including Python 3.14) (PR #308)New branching structure:
devfor development,mainfor releases (only via PRs fromdev)Support for Zarr 3
ZipStore(requiringzarr>=3.1)Added Zstandard compression of the arrays in the ZipStore at default level 4 (hat tip: quantEM) (PR #252)
Deprecated
[gpu]optional dependency (as just specifyingcupywill not install the correct CUDA version)Moved
testing,docs, anddevfrom optional dependencies to groupsNarrow Dask version exclusion to !=2025.12.*,!=2026.1.0,!=2026.1.1 (PR #285)
Declared
sympyas an optional dependency (core-lossextra), required for core-loss EELS form factors (PR #320)
Bugfixes:
Frozen-phonon ensemble handling (PR #267 & PR #292)
May also have resulted in incorrect behavior with
ensemble_mean = Falsefor e.g. defocus distributions
CrystalPotentialwith frozen phonons bugs (especially bad on – luckily rare – eager compute) (PR #306)Minor bugs, unsafe patterns, and dead code (PR #265)
Anistropic Debye-Waller factors for Bloch wave (PR #271)
Added helper functions to convert between crystallographic B-factors and thermal sigmas
Added missing
.calculate_exit_wavesforBlochwaveEnsamble(PR #294)Silent atom drop when
z-position lands in SliceIndexedAtoms blind spot (PR #273)Early-exit bug in orthogonalize_cell (PR #291)
Fixed broken tutorial workflow for core-loss filtered imaging (PR #284)
Minor performance improvements for
transition_potential_scan(PR #286)
Bullseyeaperture:ring_widthandspoke_widthare now validated, rejecting values that previously produced a silently wrong (solid disk) aperture; docstring corrected to describe the actual fractional units introduced by the soft-edge redesign (PR #319)Unified the task-level progress bar config key on
diagnostics.task_progress(Bloch-wave code paths previously read a different, non-functional key) (PR #321)
1.0.9#
Dependencies:
Support for
scipy>=1.7andcupy>=12.Restricted Dask versions (
>=2022.12.1,!=2025.12.*,!=2026.1.*") to avoid an issue with Numba in the latest ones
1.0.8#
Starting the changelog with version 1.0.8.
Features:
Fully featured Bloch-wave simulations
Simple real-space multislice algorithm
Core-loss filtered imaging
Structured illumination (custom apertures and phase plates)
Documentation:
Updated and fixed example gallery
Appendix on convergence
Expanded tutorial on orthogonal periodic supercells
Bugfixes:
Numerous small bugfixes and improvements