Description
The current implementation uses np.max() on a concatenated array of all detected star roundness values. This causes the final star_roundness metric to capture the single worst outlier or artifact (like a hot pixel or saturated star) in the entire frame, pinning the metric to an artificially high value regardless of actual tracking quality.
Required Changes
- Modify the roundness calculation block inside
calculate_metrics_from_data.
- Instead of concatenating
roundness1 and roundness2 globally, evaluate them side-by-side using np.maximum(abs_r1, abs_r2) to find the dominant asymmetry axis per individual star.
- Compute the
np.median() (or np.mean()) of these per-star maximums to represent the overall tracking health of the subframe without being corrupted by isolated pixel defects.
Description
The current implementation uses
np.max()on a concatenated array of all detected star roundness values. This causes the finalstar_roundnessmetric to capture the single worst outlier or artifact (like a hot pixel or saturated star) in the entire frame, pinning the metric to an artificially high value regardless of actual tracking quality.Required Changes
calculate_metrics_from_data.roundness1androundness2globally, evaluate them side-by-side usingnp.maximum(abs_r1, abs_r2)to find the dominant asymmetry axis per individual star.np.median()(ornp.mean()) of these per-star maximums to represent the overall tracking health of the subframe without being corrupted by isolated pixel defects.