Repository navigation
v0.1.1
Pre-release
Pre-release
Fixed
- HEDM stitching noise model is now physically consistent. Synthetic
measurement error was previously injected as a single fractionalnoise_level
applied multiplicatively to all of X, Y, Z, GrainRadius, and the three Euler
angles. For centroids this made the absolute error scale with distance from
the origin (zero at the origin, large far away) and put it in different units
than the stitcher's absoluteposition_tolerance. Noise is now split into
three independent, physically meaningful channels. - Fixed a latent cost-normalization bug in
ScanStitchingComparison: the-1
"disable" sentinel was used as a divisor, which could invert the sign of a
weighted cost term. Normalizers now guard on> 0, matching
RegionBaseStitching.
Changed
CrystalGenerator.write_to_csv and hedm_zscan no longer accept
apply_noise, apply_noise_method, or noise_level. Use instead:
| Old | New |
|---|---|
noise_level (fractional, all columns) |
position_noise_std (absolute, length units, additive on X/Y/Z) |
orientation_noise_std (degrees, proper misorientation) |
|
radius_noise (relative fraction of GrainRadius) |
|
apply_noise=True/False |
set any std > 0 to enable; all-zero = noiseless |
| (none) | noise_seed for reproducible noise |
Each channel is applied only when its value is > 0, so the default is
noiseless (equivalent to the old apply_noise=False).
Added
orientation_helper.perturb_orientation(euler, sigma_deg, ...): applies a
proper random misorientation of a given angular std about a uniformly random
axis (gimbal-free), replacing the old per-Euler fractional perturbation.
Migration
# before
cg.hedm_zscan(..., apply_noise=True, noise_level=0.01)
# after (physical units; tune to your experiment)
cg.hedm_zscan(
...,
position_noise_std=3.0, # micrometers
orientation_noise_std=0.5, # degrees
radius_noise=0.05, # 5% relative
noise_seed=42,
)