LSST Applications g063fba187b+cac8b7c890,g0f08755f38+6aee506743,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+b4475c5878,g1dcb35cd9c+8f9bc1652e,g20f6ffc8e0+6aee506743,g217e2c1bcf+73dee94bd0,g28da252d5a+1f19c529b9,g2bbee38e9b+3f2625acfc,g2bc492864f+3f2625acfc,g3156d2b45e+6e55a43351,g32e5bea42b+1bb94961c2,g347aa1857d+3f2625acfc,g35bb328faa+a8ce1bb630,g3a166c0a6a+3f2625acfc,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+8a9e676b2a,g7af13505b9+809c143d88,g80478fca09+6ef8b1810f,g82479be7b0+f568feb641,g858d7b2824+6aee506743,g89c8672015+f4add4ffd5,g9125e01d80+a8ce1bb630,ga5288a1d22+2903d499ea,gb58c049af0+d64f4d3760,gc28159a63d+3f2625acfc,gcab2d0539d+b12535109e,gcf0d15dbbd+46a3f46ba9,gda6a2b7d83+46a3f46ba9,gdaeeff99f8+1711a396fd,ge79ae78c31+3f2625acfc,gef2f8181fd+0a71e47438,gf0baf85859+c1f95f4921,gfa517265be+6aee506743,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
Loading...
Searching...
No Matches
Namespaces | Classes | Functions
lsst::ip::isr Namespace Reference

Namespaces

namespace  ampOffset
 
namespace  assembleCcdTask
 
namespace  binExposureTask
 
namespace  brighterFatterKernel
 
namespace  calibType
 
namespace  crosstalk
 
namespace  defects
 
namespace  deferredCharge
 
namespace  fringe
 
namespace  isrFunctions
 
namespace  isrMock
 
namespace  isrMockLSST
 
namespace  isrQa
 
namespace  isrStatistics
 
namespace  isrTask
 
namespace  isrTaskLSST
 
namespace  linearize
 
namespace  masking
 
namespace  overscan
 
namespace  overscanAmpConfig
 
namespace  photodiode
 
namespace  photodiodeCorrection
 
namespace  ptcDataset
 
namespace  straylight
 
namespace  transmissionCurve
 
namespace  version
 
namespace  vignette
 

Classes

class  CountMaskedPixels
 Remove all non-astronomical counts from the Chunk Exposure's pixels. More...
 

Functions

template<typename PixelT >
int applyLookupTable (afw::image::Image< PixelT > &image, ndarray::Array< PixelT, 1, 1 > const &table, PixelT indOffset)
 Add the values in a lookup table to an image, e.g.
 
template<typename PixelT >
size_t maskNans (afw::image::MaskedImage< PixelT > const &mi, afw::image::MaskPixel maskVal, afw::image::MaskPixel allow=0)
 Mask NANs in an image.
 
template<typename ImagePixelT >
std::vector< double > fitOverscanImage (lsst::afw::image::MaskedImage< ImagePixelT > const &overscan, std::vector< std::string > badPixelMask, bool isTransposed)
 
template<typename ImagePixelT >
std::vector< double > fitOverscanImageMean (lsst::afw::image::MaskedImage< ImagePixelT > const &overscan, std::vector< std::string > badPixelMask, bool isTransposed)
 
 PYBIND11_MODULE (applyLookupTable, mod)
 
 PYBIND11_MODULE (isr, mod)
 
template int applyLookupTable< float > (afw::image::Image< float > &, ndarray::Array< float, 1, 1 > const &, float)
 
template int applyLookupTable< double > (afw::image::Image< double > &, ndarray::Array< double, 1, 1 > const &, double)
 
std::string between (std::string &s, char ldelim, char rdelim)
 
template std::vector< double > fitOverscanImage< int > (afw::image::MaskedImage< int > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template std::vector< double > fitOverscanImage< float > (afw::image::MaskedImage< float > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template std::vector< double > fitOverscanImage< double > (afw::image::MaskedImage< double > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template std::vector< double > fitOverscanImageMean< int > (afw::image::MaskedImage< int > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template std::vector< double > fitOverscanImageMean< float > (afw::image::MaskedImage< float > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template std::vector< double > fitOverscanImageMean< double > (afw::image::MaskedImage< double > const &, std::vector< std::string > badPixelMask, bool isTransposed)
 
template size_t maskNans< float > (afw::image::MaskedImage< float > const &, afw::image::MaskPixel, afw::image::MaskPixel)
 
template size_t maskNans< double > (afw::image::MaskedImage< double > const &, afw::image::MaskPixel, afw::image::MaskPixel)
 
template size_t maskNans< int > (afw::image::MaskedImage< int > const &, afw::image::MaskPixel, afw::image::MaskPixel)
 

Function Documentation

◆ applyLookupTable()

template<typename PixelT >
int lsst::ip::isr::applyLookupTable ( afw::image::Image< PixelT > & image,
ndarray::Array< PixelT, 1, 1 > const & table,
PixelT indOffset )

Add the values in a lookup table to an image, e.g.

for non-linearity correction

The algorithm is as follows: numOutOfRange = 0 For each i,j of the image: lookupInd = int(indOffset + image[i,j]) if lookupInd not in range [0, table.size() - 1]: set lookupInd to nearest edge and increment numOutOfRange image[i,j] += table[lookupInd] return numOutOfRange

Parameters
[in,out]imageimage to which to add the values; modified in place
[in]tablelookup table
[in]indOffsetscalar added to image value before truncating to lookup column
Returns
the number of pixels whose values were out of range

Definition at line 35 of file applyLookupTable.cc.

39 {
40 if (table.size() == 0u) {
41 throw LSST_EXCEPT(
43 "Lookup table has zero size."
44 );
45 }
46 int numOutOfRange = 0;
47 int const maxLookupCol = table.size() - 1;
48 for (int col = 0, imHeight = image.getHeight(); col < imHeight; ++col) {
49 for (auto imPtr = image.row_begin(col), end = image.row_end(col); imPtr != end; ++imPtr) {
50 int lookupCol = indOffset + *imPtr;
51 if (lookupCol < 0) {
52 lookupCol = 0;
53 ++numOutOfRange;
54 } else if (lookupCol > maxLookupCol) {
55 lookupCol = maxLookupCol;
56 ++numOutOfRange;
57 }
58 *imPtr += table[lookupCol];
59 }
60 }
61 return numOutOfRange;
62}
int end
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
Reports attempts to exceed implementation-defined length limits for some classes.
Definition Runtime.h:76
int col
Definition CR.cc:144

◆ applyLookupTable< double >()

template int lsst::ip::isr::applyLookupTable< double > ( afw::image::Image< double > & ,
ndarray::Array< double, 1, 1 > const & ,
double  )

◆ applyLookupTable< float >()

template int lsst::ip::isr::applyLookupTable< float > ( afw::image::Image< float > & ,
ndarray::Array< float, 1, 1 > const & ,
float  )

◆ between()

std::string lsst::ip::isr::between ( std::string & s,
char ldelim,
char rdelim )

Definition at line 144 of file Isr.cc.

144 {
145 std::string::iterator b(s.begin());
146 std::string::iterator e(s.end());
147 std::string::iterator lp;
148 std::string::iterator rp;
149
151
152 if((lp = std::find(b, e, ldelim)) != e)
153 if((rp = std::find(++lp, e, rdelim)) != e)
154 result = std::string(lp, rp);
155
156 return result;
157}
py::object result
Definition _schema.cc:429
table::Key< int > b
T find(T... args)

◆ fitOverscanImage()

template<typename ImagePixelT >
std::vector< double > lsst::ip::isr::fitOverscanImage ( lsst::afw::image::MaskedImage< ImagePixelT > const & overscan,
std::vector< std::string > badPixelMask,
bool isTransposed )

This is transposed here to match the existing numpy-array ordering. This effectively transposes the image for us.

This is transposed here to match the existing numpy-array ordering. This effectively transposes the image for us.

Definition at line 53 of file Isr.cc.

57 {
58 typedef afw::image::MaskedImage<ImagePixelT> MaskedImage;
59
64 const int height = overscan.getHeight();
65 const int width = overscan.getWidth();
66
67 int length = height;
68 if (isTransposed) {
69 length = width;
70 }
71
72 std::vector<double> values(length);
73
75 statControl.setAndMask(overscan.getMask()->getPlaneBitMask(badPixelMask));
76
77 const int x0 = overscan.getX0();
78 const int y0 = overscan.getY0();
79 auto origin = geom::Point2I(x0, y0);
80 geom::Extent2I shifter;
81 geom::Extent2I extents;
82 if (isTransposed) {
83 shifter = geom::Extent2I(1, 0);
84 extents = geom::Extent2I(1, height);
85 } else {
86 shifter = geom::Extent2I(0, 1);
87 extents = geom::Extent2I(width, 1);
88 }
89
90 for (int x = 0; x < length; ++x) {
91 MaskedImage mi = MaskedImage(overscan, geom::Box2I(origin, extents));
92 values[x] = afw::math::makeStatistics(mi, afw::math::MEDIAN, statControl).getValue();
93 origin.shift(shifter);
94 }
95 return values;
96}
A class to manipulate images, masks, and variance as a single object.
Definition MaskedImage.h:74
int getX0() const
Return the image's column-origin.
int getHeight() const
Return the number of rows in the image.
int getY0() const
Return the image's row-origin.
int getWidth() const
Return the number of columns in the image.
MaskPtr getMask() const
Return a (shared_ptr to) the MaskedImage's mask.
Pass parameters to a Statistics object.
Definition Statistics.h:83
An integer coordinate rectangle.
Definition Box.h:55
Extent< int, 2 > Extent2I
Definition Extent.h:397
Point< int, 2 > Point2I
Definition Point.h:321

◆ fitOverscanImage< double >()

template std::vector< double > lsst::ip::isr::fitOverscanImage< double > ( afw::image::MaskedImage< double > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ fitOverscanImage< float >()

template std::vector< double > lsst::ip::isr::fitOverscanImage< float > ( afw::image::MaskedImage< float > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ fitOverscanImage< int >()

template std::vector< double > lsst::ip::isr::fitOverscanImage< int > ( afw::image::MaskedImage< int > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ fitOverscanImageMean()

template<typename ImagePixelT >
std::vector< double > lsst::ip::isr::fitOverscanImageMean ( lsst::afw::image::MaskedImage< ImagePixelT > const & overscan,
std::vector< std::string > badPixelMask,
bool isTransposed )

This is transposed here to match the existing numpy-array ordering. This effectively transposes the image for us.

This is transposed here to match the existing numpy-array ordering. This effectively transposes the image for us.

Definition at line 99 of file Isr.cc.

103 {
104 typedef afw::image::MaskedImage<ImagePixelT> MaskedImage;
105
110 const int height = overscan.getHeight();
111 const int width = overscan.getWidth();
112
113 int length = height;
114 if (isTransposed) {
115 length = width;
116 }
117
118 std::vector<double> values(length);
119
121 statControl.setAndMask(overscan.getMask()->getPlaneBitMask(badPixelMask));
122
123 const int x0 = overscan.getX0();
124 const int y0 = overscan.getY0();
125 auto origin = geom::Point2I(x0, y0);
126 geom::Extent2I shifter;
127 geom::Extent2I extents;
128 if (isTransposed) {
129 shifter = geom::Extent2I(1, 0);
130 extents = geom::Extent2I(1, height);
131 } else {
132 shifter = geom::Extent2I(0, 1);
133 extents = geom::Extent2I(width, 1);
134 }
135
136 for (int x = 0; x < length; ++x) {
137 MaskedImage mi = MaskedImage(overscan, geom::Box2I(origin, extents));
138 values[x] = afw::math::makeStatistics(mi, afw::math::MEAN, statControl).getValue();
139 origin.shift(shifter);
140 }
141 return values;
142}

◆ fitOverscanImageMean< double >()

template std::vector< double > lsst::ip::isr::fitOverscanImageMean< double > ( afw::image::MaskedImage< double > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ fitOverscanImageMean< float >()

template std::vector< double > lsst::ip::isr::fitOverscanImageMean< float > ( afw::image::MaskedImage< float > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ fitOverscanImageMean< int >()

template std::vector< double > lsst::ip::isr::fitOverscanImageMean< int > ( afw::image::MaskedImage< int > const & ,
std::vector< std::string > badPixelMask,
bool isTransposed )

◆ maskNans()

template<typename PixelT >
size_t lsst::ip::isr::maskNans ( afw::image::MaskedImage< PixelT > const & mi,
afw::image::MaskPixel maskVal,
afw::image::MaskPixel allow = 0 )

Mask NANs in an image.

NANs in the image or variance that are not already masked by the 'allow' value are masked with the 'maskVal'.

Returns
Number of pixels masked
Parameters
miInput image
maskValBit mask value to give a NaN
allowRetain NANs with this bit mask (0 to mask all NANs)

Definition at line 35 of file Isr.cc.

37{
38 typedef typename afw::image::MaskedImage<PixelT>::x_iterator x_iterator;
39 size_t nPix = 0;
40 for (int y = 0; y != mi.getHeight(); ++y) {
41 for (x_iterator ptr = mi.row_begin(y), end = mi.row_end(y); ptr != end; ++ptr) {
42 if (!(ptr.mask() & allow) && (!std::isfinite(ptr.image()) ||
43 !std::isfinite(ptr.variance()))) {
44 nPix += 1;
45 ptr.mask() |= maskVal;
46 }
47 }
48 }
49 return nPix;
50}
std::uint64_t * ptr
Definition RangeSet.cc:95
int y
Definition SpanSet.cc:48
x_iterator row_end(int y) const
Return an x_iterator to the end of the image.
x_iterator row_begin(int y) const
Return an x_iterator to the start of the image.
T isfinite(T... args)

◆ maskNans< double >()

template size_t lsst::ip::isr::maskNans< double > ( afw::image::MaskedImage< double > const & ,
afw::image::MaskPixel ,
afw::image::MaskPixel  )

◆ maskNans< float >()

template size_t lsst::ip::isr::maskNans< float > ( afw::image::MaskedImage< float > const & ,
afw::image::MaskPixel ,
afw::image::MaskPixel  )

◆ maskNans< int >()

template size_t lsst::ip::isr::maskNans< int > ( afw::image::MaskedImage< int > const & ,
afw::image::MaskPixel ,
afw::image::MaskPixel  )

◆ PYBIND11_MODULE() [1/2]

lsst::ip::isr::PYBIND11_MODULE ( applyLookupTable ,
mod  )

Definition at line 45 of file applyLookupTable.cc.

45 {
46 declareApplyLookupTable<float>(mod);
47 declareApplyLookupTable<double>(mod);
48}

◆ PYBIND11_MODULE() [2/2]

lsst::ip::isr::PYBIND11_MODULE ( isr ,
mod  )

Definition at line 71 of file isr.cc.

71 {
72 declareAll<float>(mod, "F");
73 declareAll<double>(mod, "D");
74 declareAll<int>(mod, "I");
75}