Release Notes#

Unreleased#

Timestamp correction and compatibility

  • Butler timestamps now use the native VisitInfo exposure midpoint converted to UTC MJD. The previous extra exposureTime / 2 + 0.5 seconds is removed; mjd_start is now the nominal midpoint minus half the exposure duration.

  • ImageCollection.toWorkUnit() now rejects image/metadata epoch disagreement greater than 1 ms, invalid epochs, and image-count mismatches. This applies to all standardizers, including FITS collections with manually edited timestamps. Historical files remain readable, but loading does not migrate their epochs.

  • Rebuild affected collections, injection catalogs, dependent WorkUnits and reprojections, and time-dependent matches together. Preserve original artifacts and audit downstream manual offsets to avoid applying a correction twice. See Module: butler_standardizer for the time-scale contract and migration details.

Version 1.1.0 (2023-04-20)#

New Features

  • Create extensible framework for post-search filtering, including enabling user-created filters (265, 283, 304)

  • Provide ability to track results filtered at different stages (263)

  • Improve determination of visit ID (260)

  • Create stamp plotting class (259)

  • Provide ability to load from saved results (256)

  • Removed hardcoded stamp size (255)

  • Allow trajectories that start off the chip (245)

Testing Improvements

  • Added new end-to-end unit tests (298)

  • Improved CI tests (244)

Bug Fixes

  • Fix stamp filtering incompatibility on some GPUs (291)

  • Allow stamp filters to handle square or flat stamps (293)

  • Update trajectory data during filtering (284)

  • Fix a bug when FileUtils tries to load a single trajectory (258)

  • Improve checks on image size (277)

Version 1.0.0 (2023-02-23)#

Version 1.0.0 represents a full refactoring and redesign of KBMOD, including major changes to the features, functionality, and performance. Significant testing and documentation have also been added to facilitate future maintenance and collaboration. Below we detail many of the individual changes included since the v0.5.0 release.

New Features

  • Add ability to compare results to known objects looked up from SkyBoT or JPL (133, 198)

  • Add JointFit functions (135)

  • Add the ability to load per-image PSFs from an auxiliary file (139, 161)

  • Add ability to pass 8-bit or 16-bit images to GPU functions to save memory (152)

  • Make external time file optional (165)

  • Rework build system to make package pip installable (169)

  • Add Sphinx documentation (184)

  • Remove unused filtering options to simplify configuration (197)

Testing Improvements

  • Many unit tests added (Various PRs)

  • Add a diff test (124)

  • Add a regression test (144)

  • Add continuous integration tests (201)

Efficiency Improvements

  • Reduce internal copies (115, 119)

  • Speed up grow_mask function (129)

  • Move grow_mask to GPU (153)

  • Improve handling of single/multi-threading in post processing filtering (155)

  • Skip masking functions if there are no masking keys (164)

  • Move coadded stamp generation to GPU (179, 189)

Bug Fixes

  • Update DBSCAN parameters (116)

  • Fix initial value bug in GPU Max Pooling (120)

  • Correctly account for number of good images in median stamp creation (123)

  • Fix unwanted append when saving layered images (136)

  • Fix median computation with masked images (137)

  • Drop masked pixels before conducting sigmaG filtering on GPU (142, 180, 181)

  • Reset global mask when create_global_mask is created ((164)

  • Correctly apply mask_threshold (164)

  • Account for masked pixels in createAveTemplate and simpleDifference (164)

  • Fix bugs in on-GPU stamp generation (182)

  • Add bounds checking in get_results (192)

  • Check for divide by zero in clustering function (215)

  • Update pybind version (217)

  • Ignore invalidly named files during file loading (233)