IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 39862 for trunk


Ignore:
Timestamp:
Dec 14, 2016, 5:04:00 PM (10 years ago)
Author:
watersc1
Message:

Removing unnecessary comments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/release.2015/ps1.detrend/detrend.tex

    r39860 r39862  
    1414%\usepackage{subcaption}
    1515%\usepackage{natbib}
    16 %\bibliographystyle{apj}
    17 %\bibliographystyle{plain}
    1816
    1917% online version may use color, but print version needs b/w
     
    123121\keywords{Surveys:\PSONE }
    124122
    125 %% http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2007ASPC..364..153M&data_type=PDF_HIGH&whole_paper=YES&type=PRINTER&filetype=.pdf
    126123\section{Introduction and Survey Description}
    127124
     
    192189Pan-STARRS 1 Science Consortium members.
    193190
    194 %% \czwdraft{Nigel: you mention calibrating to the reference catalog without telling us
    195 %% what this is composed of (maybe this is in a different section, but would be
    196 %% nice to have some idea here).}
    197 
    198 %% \czwdraft{Can we get around this point by simply adding a reference to
    199 %%   the paper describing the reference catalog?  It's not really part of
    200 %%   the detrending process, and is discussed here mostly to give an
    201 %%   overview of the stages, and later to find sources of ghosts for
    202 %%   masking.}
    203 
    204191The Pan-STARRS image processing pipeline (IPP) is described elsewhere
    205192\citep{magnier2017a}, but a short summary follows.  The
     
    290277% Discuss 2-phase/3-phase device differnces
    291278
    292 %\section{General Detrend Discussion}
    293 %\label{sec:detrending}
    294 
    295279
    296280\section{GPC1 Detrend Details}
    297281\label{sec:detrending}
    298 
    299 %% \czwdraft{Nigel: I forgot: when we are talking about the various bias corrections it might be
    300 %% worth pointing out that we expect these to be more of an issue in the g-band
    301 %% (and maybe r?) where read noise is a significant contributor.
    302 %% }
    303282
    304283Ensuring a consistent and uniform detector response across the
     
    472451\subsection{Non-linearity Correction}
    473452\label{sec:nonlinearity}
    474 % check notebook, 2010-07/08
    475453
    476454The pixels of GPC1 are not uniformly linear at all flux levels.  In
     
    518496rejected.
    519497
    520 %% exptime n_included/det_id = 372
    521 %% clearly this isn't the one used, as 3-12 spans three data points, poorly.x
    522 %% 0.01 2
    523 %% 0.14 2
    524 %% 0.27 2
    525 %% 0.49 2
    526 %% 0.72 2
    527 %% 1.06 2
    528 %% 1.41 2
    529 %% 2.02 2
    530 %% 2.63 2
    531 %% 3.94 2
    532 %% 5.25 2
    533 %% 8.74 2
    534 %% 13.09 2
    535 %% 17.4 2
    536 %% 20.86 2
    537 %% 24.3 2
    538 %% 27.78 2
    539 %% 31.24 2
    540 %% 34.65 2
    541 %% 38.12 2
    542 %% 42.41 2
    543 %% 46.69 2
    544 %% 51.89 2
    545 %% 57.04 2
    546 
    547 
    548 %http://svn.pan-starrs.ifa.hawaii.edu/trac/ipp/wiki/DetectorLinearity_AllEdges
    549 %http://svn.pan-starrs.ifa.hawaii.edu/trac/ipp/wiki/DetectorLinearityArchive
    550 
    551498\begin{figure}
    552499  \centering
     
    557504\subsection{Dark/Bias Subtraction}
    558505\label{sec:dark}
    559 % http://svn.pan-starrs.ifa.hawaii.edu/trac/ipp/wiki/Background_Dark_Model
    560506
    561507The dark model we make for GPC1 considers each pixel individually,
     
    796742reduces the amplitude of these errors produces a flat field model that
    797743better represents the true detector response.
    798 
    799 %% \czwdraft{EAM: the flat-field construction part needs to make a clearer discussion of
    800 %% the skyflat vs the photometric correction (photflat) built initially for
    801 %% the survey vs the flat-field corrections determined in the database as part
    802 %% of ubercal (for the latter, you should just mention the concept -- it will
    803 %% also be mentioned in the calibration paper).  The statement that the
    804 %% flat-field response was stable is not true since we did need 5 'seasons'.}
    805744
    806745In addition to this flat field applied to the individual images, the
     
    887826size of the cell (598 pixels = 150").
    888827
    889 %% \czwdraft{keep this?}  This row-by-row offset is visible in similar
    890 %% camera designs, and has been removed by identifying the noise signal
    891 %% in the pixel data stream.  By taking the FFT of the pixels and a
    892 %% reference signal, the frequency of this noise can be isolated and
    893 %% removed, resulting in a much cleaner image.  However, GPC1 does not
    894 %% record the value of the reference signal, instead automatically
    895 %% subtracting it from the data values.  Without this comparison signal,
    896 %% we have been unable to reproduce this method, as there is no obvious
    897 %% FFT component visible.
    898 
    899828\begin{deluxetable}{lcccc}
    900829  \tablecolumns{3}
     
    976905this correction on an image profile is shown in Figure \ref{fig:dark switching}.
    977906
    978 %% \begin{figure}
    979 %%   \centering
    980 %%   \caption{Continuity example, with background issue.}
    981 %%   \label{fig: continuity example}
    982 %% \end{figure}
    983907
    984908\subsection{Fringe correction}
     
    1026950  \end{minipage}
    1027951  \caption{Example of the \yps{} filter fringe pattern on exposure o5220g0025o OTA53 (\yps{} filter 30s).  The left panel shows the OTA mosaic with all detrending except the fringe correction, while the right shows the same including the fringe correction.  Both images have been smoothed with a Gaussian with $\sigma = 3$ pixels to highlight the faint and large scale fringe patterns.
    1028 %\czwdraft{See if there's a way to have mana produce images larger than the screen size.}
    1029952}
    1030953  \label{fig: fringe example}
     
    12051128\end{deluxetable}
    12061129 
    1207 %% \begin{figure}
    1208 %%   \centering
    1209 %%   \caption{Figure of crosstalk ghost and bright star source.  Plot of cut across ghost to illustrate the flat-top shape.}
    1210 %% \end{figure}
    12111130
    12121131\subsubsubsection{Optical ghosts}
    12131132\label{sec:optical_ghosts}
    1214 % http://arxiv.org/pdf/1207.2513v1.pdf
    12151133
    12161134Due to imperfections in the anti-reflective coating on the optical
     
    12941212\label{sec:glints}
    12951213
    1296 % I finally tracked it down:
    1297 %% > On 8/26/2010 9:24 AM, John Tonry wrote:
    1298 %% >
    1299 %% > Gene,
    1300 %% >
    1301 %% > This is a bit of a case of the dog that didn't bark, but the shutter mask
    1302 %% > went in on Tuesday.
    1303 %% >
    1304 %% > Can you can tell us whether
    1305 %% >
    1306 %% >  a) it's helped the shutter glint problem and
    1307 %% >  b) whether there's any discernable vignetting anywhere?
    1308 %% >
    1309 %% > - John
    1310 
    1311 %% On Thu, Aug 26, 2010 at 4:00 PM, Chris Waters <watersc1@ifa.hawaii.edu>wrote:
    1312 
    1313 %% > I'm not entirely sure why I'm not on the ps-ipp mailing list, but
    1314 %% > Heather forwarded this to me.  I compared 240 exposures from
    1315 %% > 2010-08-22/ThreePi/y.00000 and 2010-08-25/ThreePi/y.00000.
    1316 %% >
    1317 %% > a) For the 22nd, I counted 28 star glints visible.  For the 25th, I
    1318 %% > counted maybe 0-2 (I think the first is a conveniently placed satellite,
    1319 %% > and the other has a companion, so I think it's actually a moon glint).
    1320 %% >
    1321 %% > b) I was going to compare flat field images, but we don't have any
    1322 %% > from after the mask was applied.  Blinking between a few pairs of the
    1323 %% > 240x2 exposures does not show any vignetting that I can detect from
    1324 %% > the IPP jpeg mosaics.
    1325 
    13261214Prior to 2010-08-24, a reflective surface at the edge of the camera
    13271215aperture was incompletely screened to light passing through the
     
    13391227by 17 arcminutes, and extend outwards an additional degree.
    13401228
    1341 %%
    1342 %% GLINT_MAX_MAG                   F32 -21.0
    1343 %% GLINT.REGION                    MULTI
    1344 
    1345 %% GLINT.REGION                    METADATA
    1346 %%   REGION                        STR  [-38000:-24000,-20000:+20000]
    1347 %%   GLINT.TYPE                    STR  LEFT
    1348 %% END
    1349 
    1350 %% GLINT.REGION                    METADATA
    1351 %%   REGION                        STR  [+24000:+38000,-20000:+20000]
    1352 %%   GLINT.TYPE                    STR  RIGHT
    1353 %% END
    1354 
    1355 %% GLINT.REGION                    METADATA
    1356 %%   REGION                        STR  [-20000:+20000,+24000:+38000:]
    1357 %%   GLINT.TYPE                    STR  TOP
    1358 %% END
    1359 
    1360 %% GLINT.REGION                    METADATA
    1361 %%   REGION                        STR  [-20000:+20000,-38000:-24000]
    1362 %%   GLINT.TYPE                    STR  BOTTOM
    1363 %% END
    1364 
    13651229\begin{figure}
    13661230  \centering
     
    13801244oriented at $\theta = n * \frac{\pi}{2} - \mathrm{ROTANGLE} + 0.798$,
    13811245based on the header keyword.
    1382 
    1383 %\subsubsection{Saturated stars}
    1384 %\label{sec:saturated_stars}
    13851246
    13861247The cores of stars that are saturated are masked as well, with a
     
    14421303\end{deluxetable}
    14431304
    1444 
    1445 
    1446 
    1447 %% mysql> select filter,AVG(camProcessedExp.maskfrac_ref_static), AVG(camProcessedExp.maskfrac_ref_dynamic), AVG(camProcessedExp.maskfrac_ref_advisory), AVG(camProcessedExp.maskfrac_max_static),AVG(camProcessedExp.maskfrac_max_dynamic),AVG(camProcessedExp.maskfrac_max_advisory) from camRun join camProcessedExp USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) WHERE camRun.label = 'LAP.PV3.20140730.final' GROUP BY filter;
    1448 %% +---------+------------------------------------------+-------------------------------------------+--------------------------------------------+------------------------------------------+-------------------------------------------+--------------------------------------------+
    1449 %% | filter  | AVG(camProcessedExp.maskfrac_ref_static) | AVG(camProcessedExp.maskfrac_ref_dynamic) | AVG(camProcessedExp.maskfrac_ref_advisory) | AVG(camProcessedExp.maskfrac_max_static) | AVG(camProcessedExp.maskfrac_max_dynamic) | AVG(camProcessedExp.maskfrac_max_advisory) |
    1450 %% +---------+------------------------------------------+-------------------------------------------+--------------------------------------------+------------------------------------------+-------------------------------------------+--------------------------------------------+
    1451 %%             static              dynamic                advisory
    1452 %% | g.00000 |   0.19642137972007 | 0.00010322263512709 |    0.026838445469766
    1453 %%           |   0.20949461794863 |   9.89200027293e-05 |    0.026431927734548 |
    1454 %% | r.00000 |   0.19675996201399 | 0.00025214447869606 |    0.032641054600788
    1455 %%           |   0.20989768279138 | 0.00023994155711801 |    0.032178525485201 |
    1456 %% | i.00000 |   0.19677587604327 | 0.00057470697316504 |    0.038096251937072
    1457 %%           |   0.21003570722292 | 0.00053987093278142 |    0.037471018638997 |
    1458 %% | z.00000 |    0.1974290315691 | 0.00024758901226967 |     0.03064123748973
    1459 %%           |   0.21055007930696 | 0.00023452690039757 |    0.030144453360769 |
    1460 %% | y.00000 |   0.19828990634315 | 0.00014523787521897 |    0.021984846417987
    1461 %%           |   0.21130344126869 | 0.00013634812877977 |     0.02163070300815 |
    1462 
    1463 
    14641305\subsection{Background subtraction}
    14651306\label{sec:background}
    1466 
    1467 %% \czwdraft{Nigel: 2.10 The background section is rather short, given all the fuss DRAVG made
    1468 %% about it. What is done to eliminate contamination by bright objects - isn't
    1469 %% there some sort of clipping? We also have a confusing number of ``bins'' in the
    1470 %% text (``These bins have 10000 .... a binned cumulative distribution is
    1471 %% generated. These bins are interpolated ... levels. Repeating this across all
    1472 %% bins ...''). There is no mention of the fact that this will subtract real
    1473 %% astrophysics backgrounds if they are on a suitably large scale, or of the fact
    1474 %% that the subtraction is not perfect (don't I remember that the stacks end up
    1475 %% with a non-zero background which scales with the number of input warps?).
    1476 %% }
    1477 
    1478 %% \czwdraft{Based on the wiki page on 2014-05-21 the stack background issue should be resolved.}
    14791307
    14801308Once all other detrending is done, the pixels from each cell are
     
    15881416stage images, but this special processing was not used for the large
    15891417scale $3\Pi$ PV3 reduction.
    1590 
    1591 %% * Magic
    1592 %% * Warping
    1593 %%   * warping kernel
    1594 %%   * linear-by-pieces
    1595 %%   * Covariance
    1596 %%   * def of skycells?
    1597 %% * Stacking
    1598 %%   * pixel combination rules
    1599 %%   * pixel rejections
    1600 %%   * convolution for matching (success and failure)
    1601 %% * Difference Image analysis
    16021418
    16031419\section{GPC1 Detrend Construction}
     
    18351651\end{figure}
    18361652
    1837 
    1838 % Read all images and astrometry
    1839 % Check which input images overlap with output image. => 8007 when the inputs don't overlap.
    1840 % Loop over each image.
    1841 % Append detections from input into output detection list.
    1842 % Determine transform back from warp pixels to source image.
    1843 %% 2nd order polynomial in both x and y for this transformation. and save to header
    1844 % Break warp image into 128x128pixel locally linear areas
    1845 % Mask non finite pixels as saturated.
    1846 % Define Lanczos-3 interpolation over the input image.
    1847 % Iterate over warp pixel space (on each locally linear grid) and map interpolated input pixel positions onto warp.
    1848 % Warp pixel space is defined as center based, so that's where the intpolation point comes from.
    1849 % Covariance calculated based on the interpolation kernel at the center of the ll grid.
    1850 % image = interp_image * jacobian
    1851 % var   = interp_var * jacobian**2
    1852 % mask  = interp_mask
    1853 % jacobian = abs(mapXx * mapYy - mapYx * mapXy)
    1854 % I don't understand that jacobian.
    1855 %
    1856 
    1857 
    18581653\section{Stacking}
    18591654\label{sec:stacking}
     
    19151710in the transparency values as a result of this \citet{magnier2017c}.
    19161711
    1917 %% \czwdraft{Nigel: 5. ``The ouput exposure time is set to the sum of the input exposure times.''
    1918 %% True, but we should note that as warps can be rejected later on in the
    1919 %% stacking process this output time is notional in some sense.
    1920 %% Calibration - for PV3 what photometric calibration has been used at this stage
    1921 %% for the input warps? Should we make it clear here that pixels are not subject
    1922 %% to the final (any?) ubercal?
    1923 %% }
    1924 
    1925 % PREPARE
    1926 % load sources
    1927 % load psfs
    1928 % determine target as envelope of input psfs
    1929 % FWHM clipping at 10
    1930 % measure seeing
    1931 % -         // M_app = m_inst + zp + c1 * airmass + 2.5log(t) - transparency
    1932 %         // EAM : the discussion here was not quite right (or at least sloppy).  Here is a replacement explanation:
    1933 %        // For any star, the observed instrumental magnitude on an image and the apparent magnitude are related by:
    1934 %        // M_app = m_inst + zp + c1 * airmass + 2.5log(t) - transparency
    1935 %        // NOTE the sign of 'transparency'  this must agree with the definition in pmSourceMatch.c. see, eg, line 457 where
    1936 %        // transparency = m_inst + zp + c1 * airmass + 2.5log(t) - M_app
    1937 %        // we want to adjust the input images to be in a consistent flux system so that the
    1938 %        // final stack can be generated with a specific target zero point.  Any adjustment to
    1939 %        // the flux scale of the image must be made in coordination with the resulting
    1940 %        // zeropoint, exposure time, and airmass such that the above relationship yields the
    1941 %        // same apparent magnitude for a given star:
    1942 %        // m_inst_i : instrumental mags on input image (in)
    1943 %        // m_inst_o : instrumental mags on re-normalized image (out)
    1944 %        // m_inst_o + zp_o + c1 * airmass_o + 2.5log(t_o) - trans_o = m_inst_i + zp_i + c1 * airmass_i + 2.5log(t_i) - trans_i
    1945 %        // m_inst_o = m_inst_i + (zp_i - zp_o) + c1 * (airmass_i - airmass_o) + 2.5log(t_i) - 2.5log(t_o) - trans_i + trans_o
    1946 %        // zp_i, airmass_i, t_i, trans_i : reported or measured for input image
    1947 %        // zp_o      = zpTarget      (from recipe)
    1948 %        // airmass_o = airmassTarget (from recipe)
    1949 %        // t_o       = sumExpTime    [sum of input exposure times: once images are scale to this time, they can be avereaged]
    1950 %        // trans_o   = 0.0           [obviously!]
    1951 %        // we have 2 cases: (a) all reported ZPs are good or (b) some are bad:
    1952 %        // (a) FPA.ZP = zp_i + c1 * airmass_i
    1953 %        //  --> zp[i] = zp_i + c1 * airmass_i + 2.5log(exptime_i)
    1954 %        // (b)  zp[i] = c1 * airmass_i + 2.5log(exptime_i)
    1955 %        // NOTE: in case (b), the current code is equating the TARGET zp with the NOMINAL zp, which is wrong.
    1956 %        // m_inst_o - m_inst_i = zp[i] - zpTarget - c1 * airmassTarget - 2.5log(sumExpTime) - trans_i
    1957 
    19581712With the flux normalization factors and target PSF chosen, the
    19591713convolution kernels can be calculated for each image.  ISIS kernels
     
    19771731the square of it, scaling all inputs to the common zeropoint.
    19781732
    1979 % MATCH
    1980 % match to target PSF.
    1981 % use ISIS kernels to do matching/convolution
    1982 % Input sources used for psf matching.
    1983 % @ISIS.WIDTHS    F32     1.5  3.0  6.0   # Gaussian kernel FWHM values
    1984 % @ISIS.ORDERS    S32     6    4    2     # Polynomial orders for ISIS kernels
    1985 
    19861733Once the convolution kernels are defined for each image, they are used
    19871734to convolve the image to match the target PSF.  Any input image that
     
    19941741warping process).
    19951742
    1996 % CONVOLVE
    1997 % Normalization to match target zeropoint/exptime
    1998 % Reject images with bad match chi^2 values.  MATCH.REJ * rms + median threshold.
    1999 % Additional variance from the convolution chi^2
    2000 % Calculate image weights based on variance: W_i = 1 / (ROBUST_MEDIAN(variance_image_i) * CovarianceFactor)
    2001 % CovarianceFactor = covariance->kernel[0][0]
    2002 
    20031743Following the convolution, an initial stack is constructed.  For a
    20041744given pixel coordinate, the values at that coordinate are extracted
     
    20321772The output mask value is taken to be zero (no masked bits), unless
    20331773there were no valid inputs, in which case the BLANK mask bit is set.
    2034 
    2035 % INITIAL COMBINE
    2036 % Calculate weighted mean of input images
    2037 % mu = sum_i(f_i * W_i) / sum_i(W_i)
    2038 % sigma = 1 / sum_i(1 / W_i)
    2039 % nu = sum_i(m_i)
    2040 %     // We're not using the input pixel variances to generate a weighted average for the pixel flux (because
    2041 %    // that introduces systematic biases), so the variance of the output pixel value should simply be:
    2042 %    //     simga^2 = sum(weight_i^2 * sigma_i^2) / (sum(weight_i))^2
    2043 %    // This reduces, when the weights are all identically unity, to:
    2044 %    //     variance_combination = sum(variance_i) / N^2
    2045 %    // and if the variances are all equal:
    2046 %    //     variance_combination = variance_individual / N
    2047 %    // which makes sense --- the standard deviation of the combination is reduced by a factor of sqrt(N).
    2048 % sumValueWeight = sum_i(values * weights)
    2049 % sumWeight = sum_i(weights)
    2050 % sumVarianceWeight == sum( 1 / variances)
    2051 % sumExp  = sum_i(exptimes)
    2052 % sumExpWeight = sum_i(exptims * weights)
    2053 % mean = sumValueWeight / sumWeight
    2054 % var  = 1 / sumVarianceWeight
    2055 % exp = sumExp
    2056 % expWeight = sumExpWeight
    2057 
    2058 % EXCEPT: if N = 1, accept it.  if N = 2, take average.
    2059 
    2060 %     if (!pmStackCombine(outRO, NULL, stack, maskBad, maskSuspect, maskBlank, kernelSize, iter,
    2061 %                        combineRej, combineSys, combineDiscard, useVariance, safe, nminpix, false)) {
    2062 %bool pmStackCombine(
    2063 %    pmReadout *combined,                // output stacked readout
    2064 %    pmReadout *expmaps,                 // output exposure map information
    2065 %    psArray *input,                     // input exposures
    2066 %    psImageMaskType badMaskBits,        // treat these bits as 'bad'
    2067 %    psImageMaskType suspectMaskBits,    // treat these bits as 'suspect'
    2068 %    psImageMaskType blankMaskBits,      // use this mask value for pixels missing input data (distinguish between Ninput = 0 and Ngood = 0?)
    2069 %    int kernelSize,
    2070 %    float iter,             0.5
    2071 %    float rej,              4.0
    2072 %    float sys,              0.1
    2073 %    float olympic,          0.2
    2074 %    bool useVariance,
    2075 %    bool safe,
    2076 %    int nminpix,
    2077 %    bool rejection)
    2078 %{
    2079 
    2080 % combineExtract
    2081 %% pixels with mask values as suspect are appended to suspect pixel list.
    2082 % combinePixels
    2083 %% As described above.
    20841774
    20851775Due to the various non-astronomical ghosts that can occur on GPC1, and
     
    21551845number of inputs.
    21561846
    2157 % combineTest
    2158 %% if (Ninput > 6) { use KMM }
    2159 %% KMM:
    2160 %% Calculate KMMmu KMMsigma KMMpi KMMPunimodal
    2161 %% SumWeights = sum(pixelWeights)
    2162 %% SysVar = KMMSigma**2 OR (sys * pixelData[i])**2
    2163 %% pixelLimts[i] = rej**2 * (pixelVariances[i] + sysVar)
    2164 % Iterate 0.5 * Ninput times (at least once)
    2165 %% Ninput = 1 => accept
    2166 %% Ninput = 2 => if (0.5 * (A - B))**2 > rej**2 * (pixelVariance[A] + pixelVariance[B] + (sys * A)**2 + (sys * B)**2)
    2167 %%               then if (suspect) mark reject else mark inspect
    2168 %% Else       => if (useKMM and Punimodal < 0.05) median = KMMmean
    2169 %%            => else median = combinationWeightedOlympic{}
    2170 %%            => if (pixelData - median)**2 > pixelLimits[i] then find single worst deviant pixel value
    2171 %% then       => if suspect (mark reject) else (mark reject worst deviant pixel value)
    2172 
    2173 
    2174 %% combinationWeightedOlympic =>
    2175 %% numBad = frac * Ninput + 0.5
    2176 %% low = numBad / 2, high = low + numGood - numBad
    2177 %% sort(values) =>
    2178 %% if (i > low && i <= high) { sumValues = sum_i(values * weights); sumWeight = sum_i(weights)
    2179 %% return (sumValues / sumWeight)
    2180 
    2181 % obtain lists of inspect and reject pixels.
    2182 
    2183 % normalize:?
    2184 %            float normalise = powf(10.0, -0.4 * norm->data.F32[i]); // Normalisation
    2185 %            psBinaryOp(ro->image, ro->image, ``*'', psScalarAlloc(normalise, PS_TYPE_F32));
    2186 %            psBinaryOp(ro->variance, ro->variance, ``*'', psScalarAlloc(PS_SQR(normalise), PS_TYPE_F32));
    2187 
    21881847With the initial list of rejected pixels generated, a rejection mask
    21891848is made for the input warp by constructing an empty image that has the
     
    21941853more than 10\% of all pixels from an input image are rejected, then
    21951854the entire image is rejected as it likely has some systematic issue.
    2196 
    2197 % PIXEL REJECTION
    2198 % Construct 15-pixel wide ISIS kernel with 5 pixel FWHM 0-order.
    2199 % Construct image of pixels to inspect and convolve with kernel (normalize out kernel power)
    2200 % Determine pixels are bad if they're larger than THRESHOLD.MASK = 0.5.
    2201 % If more than IMAGE.REJ = 0.1 fraction of pixels are rejected, the entire image is rejected.
    2202 
    22031855
    22041856Finally, a second pass at rejecting pixels is conducted, by growing the
     
    22151867a map of the number of inputs per pixel.
    22161868
    2217 % FINAL COMBINE
    2218 % Grow rejected pixels
    2219 %% set threshold of (POOR.FRACTION = 0.25) * sum(kernel)**2
    2220 %% Choose the largest square box that contains just under that threshold.
    2221 %% Convolve that box with the rejected pixels to grow them.
    2222 % Run combination pass again, but without doing rejection, simply applying the rejection lists already calculated.
    2223 % ::
    2224 %      if (!ppStackCombineFinal(stack, options->convCovars, options, config, false, true, true, true)) {
    2225 % iter = 0
    2226 % combineRej = NAN
    2227 % combineSys = NAN
    2228 % combineDiscard = NAN
    2229 %    if (!pmStackCombine(outRO, expRO, stack, maskBad, maskSuspect, maskBlank, 0, iter, combineRej,
    2230 %                        combineSys, combineDiscard, useVariance, safe, nminpix, rejected)) {
    2231 
    22321869These convolved stack products are not retained, as the convolution
    22331870reduces the resolution of the final image.  Instead, we apply the
     
    22381875across the image, as the different PSF widths of the input images
    22391876print through in the different regions to which they have contributed.
    2240 
    2241 % UNCONVOLVED IMAGE
    2242 %         if (!ppStackCombineFinal(stack, options->origCovars, options, config, false, true, false, true)) {
    2243 % no grow
    2244 
    2245 % only retain unconvolved products.
    22461877
    22471878%% Asinh compression
     
    24502081There is some evidence that we have not fully identified all of these
    24512082crosstalk rules, based on a study of PV3 images.  For example,
    2452 extremely bright stars %\czwdraft{exp o5677g0123o has this rule, find a
    2453 %  magnitude}
    2454 may be able to create crosstalk ghosts between the second
     2083extremely bright stars may be able to create crosstalk ghosts between the second
    24552084cell column of OTA01 and OTA21, with possibly fainter ghosts appearing
    24562085on OTA11.  Despite the symmetry observed in the main ghost rules,
     
    24832112stacks if fewer pixels need to be rejected.
    24842113
    2485 % \czwdraft{one, I believe}
    24862114The fringe model used currently is based on only a limited number of
    24872115days of data.  This means that the model calculated may not be fully
     
    24912119others, and so improving this by expanding the number of input
    24922120exposures may improve a wider range of dates.
    2493 % o5818g0349o is a good example of bad fringe correction.
    24942121
    24952122Finally, a large number of issues arise due to the row-to-row bias
     
    25052132
    25062133\section{Conclusion}
    2507 
    2508 %\czwdraft{Not happy with this.}
    25092134
    25102135The Pan-STARRS1 PV3 processing has reduced an unprecedented volume of
Note: See TracChangeset for help on using the changeset viewer.