# Page History

## Key

• This line was removed.
• Formatting was changed.

...

## Major Functionality and Interface Changes

### Improved semantics for loading Exposures and MaskedImages from arbitrary FITS files

...

The following fixes resolve problems visible to end users.

...

### Doxygen documentation now correctly includes LaTeX formatting

Correctly referring to MathJax means that LaTeX markup in documentation is nicely formatted.

(DM-2545)

### Performance regression in Footprint dilation resolved

The previous release included improved algorithms for dilating Footprints. Unfortunately, in some circumstances (notably when dealing with particularly large Footprints) this code could actually perform more slowly than the previous implementation. This could have significant performance implications for many image processing operations. This regression has now been rectified, and the new dilation operations are significantly faster than the old ones in all circumstances tested.

(DM-2787)

### Footprint fixes

• The default 32-bit heap space used to store FITS variable-length arrays isn't large enough to store some of our extremely large HeavyFootprints. This persistence issue has been fixed the by switching to 64-bit heap descriptors, which is now supported by FITS.
• Footprint::transform is now properly copying peaks over to the new footprint.
• Footprint::clipTo is now properly removing those peaks lying outside the desired region.
• Several parts of the pipeline assume peaks are sorted from most positive to most negative. We now ensure the cross-band merge code maintains this ordering as much as possible (even though the sorting may not be consistent across different bands).
• The merging of a parent and its children’s Footprints was failing in cases where one or more child Footprints were themselves noncontiguous. This has been fixed by adapting the mergeFootprints code in afw such that it combines all the Footprints in the FootprintSet it uses in its implementation (instead of requiring that the FootprintSet have only one Footprint).

(DM-2606)

### Fixed error in memory access in interpolation

An off-by-one error resulted in an attempt to read beyond the allocated memory.

(DM-3112)

(DM-2931)

### Use the correct weighting in photometric calibration

Previously, we were incorrectly weighting by errors, rather than inverse errors.

(DM-2423)

### Remove non-positive variance pixels in coadd creation

When interpolating variance maps we can produce negative values. These then cause failures when we try to take the square root. Ultimately, the means of creating variance maps needs to be fixed (which is DM-3201); as a temporary workaround, we replace negative variance values with infinity.

(DM-2980)

### Task defaults are set correctly for difference imaging

The DipoleMeasurementConfig.setDefaults() method incorrectly contained a return that was executed before the defaults were actually applied. This has been corrected, and a number of tests updated to rely on those defaults.

(DM-3159)

## Build and code improvements

These improvements should not usually be visible to end users. They may be important for developers, however.

### Backend-agnostic interface to displays

The image display code no longer makes the assumption that display is carried out using ds9. Rather, an API is available which is independent of the the particular image viewer is in use. A backwards compatibility layer ensures that display through ds9 is still supported, while other backends will be added in future.

(RFC-42, DM-2709, DM-2849, DM-2940, DM-3203, DM-3468)

### Measurement framework compiler warnings resolved

The measurement framework was refactored to avoid a series of warnings produced by the clang compiler.

(DM-2131)

Some unit tests were attempting to write to a display, even when no display was available. On some systems, this directly caused test failures; on others, it could obscure the true cause of failures when a test did fail.

(DM-2492, DM-2494)

### Unused & obsolete code has been removed from the datarel package

This package is effectively obsolete, but is still used in documentation generation which makes removing it entirely complex. For now, therefore, it has simply been trimmed of all unused functionality; it may be removed entirely following DM-2948.

(DM-2949)

### Reduced verbosity of astrometry.net solver

A correction to the way that astrometry.net logging was propagated to the LSST logging system, together with reducing the priority of some messages, leads to a substantial reduction in chatter from astrometry.

(DM-3141)

### Ensure that slots are present before initializing algorithms that depend upon them

When initializing an algorithm that refers to a particular slot, we resolve the target of the slot and refer to that instead. That means that if the slot definition is changed after measurement has been performed, we are still pointing to the correct information. However, if the algorithm is initialized before the slot it depends on, this resolution could not take place and "circular" aliases could result. We now explicitly check for and throw an error in this case.

(DM-3400)

### Visualizations for astrometry.net solver

It is now possible to display the source positions, distorted source positions and reference positions to assist with debugging.

(DM-3209)

### Subaru support reinstated

The obs_subaru package, which provides packages and tasks specific to the Subaru telescope, has been brought up to date with recent changes to the LSST stack and improvements made during Hyper Suprime Cam development.

(DM-1794, DM-3403)

### Refactor & document coadd construction

A number of minor changes and documentation improvements were made to the CoaddBase, AssembleCoadd, CoaddInputRecorder and MakeCoaddTempExp tasks. These brought the structure of the code better into line with the state-of-the-art development on Hyper Suprime Cam.

(DM-2980)

### Properly handle masking NaN or saturated values in overscans

Resolved an issue where, in certain circumstances, flags in the mask plane for saturated and nan values in overscans were being improperly propagated to all amplifiers in an image. These flags are now applied to the amplifier where the bad values are seen.

(DM-2923)

### Deblender optimization

Several performance optimizations to the (C++) algorithms used in the deblender have been implemented, in particular those which identify objects with significant amounts of their flux attributed to edge pixels. In addition, memory usage was reduced by removing unused mask planes left over from debugging, not storing masks for deblending templates, and by clipping template images when their associated Footprints are clipped.

(DM-2914)

## Build and Code Improvements

These improvements should not usually be visible to end users. They may be important for developers, however.

...