IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18591


Ignore:
Timestamp:
Jul 16, 2008, 5:36:56 PM (18 years ago)
Author:
Paul Price
Message:

First attempt to switch over to new mask setup.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackLoop.c

    r18508 r18591  
    204204
    205205    bool mdok;                          // Status of MD lookup
    206     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
    207206    bool tempDelete = psMetadataLookupBool(&mdok, config->arguments, "TEMP.DELETE"); // Delete temporary files?
    208207    const char *tempImage = psMetadataLookupStr(NULL, config->arguments, "TEMP.IMAGE"); // Suffix for temporary images
     
    242241    psMetadata *ppsub = psMetadataLookupMetadata(NULL, config->recipes, "PPSUB"); // PPSUB recipe
    243242    int overlap = 2 * psMetadataLookupS32(NULL, ppsub, "KERNEL.SIZE"); // Overlap by kernel size between consecutive scans
     243
     244    if (!pmConfigMaskSetBits(NULL, NULL, config)) {
     245        psError(PS_ERR_UNKNOWN, false, "Unable to determine mask value.");
     246        return false;
     247    }
    244248
    245249    memDump("start");
     
    790794        if (stats) {
    791795            psTrace("ppStack", 1, "Gathering statistics on stacked image....\n");
    792             ppStatsFPA(stats, outCell->parent->parent, view, maskBlank, config);
     796            ppStatsFPA(stats, outCell->parent->parent, view, pmConfigMaskGet("BLANK", config), config);
    793797        }
    794798
  • trunk/ppStack/src/ppStackMatch.c

    r18559 r18591  
    3030    psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, "PPSUB"); // PPSUB recipe
    3131    int size = psMetadataLookupS32(NULL, recipe, "KERNEL.SIZE"); // Kernel half-size
    32     psMaskType maskBad = pmConfigMaskGet(psMetadataLookupStr(NULL, recipe, "MASK.BAD"), config); // Value to mask
     32
     33    psMaskType maskIn = pmConfigMaskGet("MASK.VALUE", config); // Bits to mask going in to pmSubtractionMatch
     34    psMaskType maskOut = pmConfigMaskGet("BLANK", config); // Bits to mask after pmSubtractionMatch
     35
    3336    bool mdok;                          // Status of MD lookup
    3437    bool renorm = psMetadataLookupBool(&mdok, config->arguments, "RENORM"); // Renormalise variances?
     
    4144    float penalty = psMetadataLookupF32(NULL, config->arguments, "PENALTY"); // Penalty for wideness
    4245
    43     if (!pmReadoutMaskNonfinite(readout, maskBad)) {
     46    if (!pmReadoutMaskNonfinite(readout, maskIn)) {
    4447        psError(PS_ERR_UNKNOWN, false, "Unable to mask non-finite pixels in readout.");
    4548        return false;
     
    6467        int ringsOrder = psMetadataLookupS32(NULL, recipe, "RINGS.ORDER"); // RINGS polynomial order
    6568        int binning = psMetadataLookupS32(NULL, recipe, "SPAM.BINNING"); // Binning for SPAM kernel
    66         psMaskType maskBlank = pmConfigMaskGet(psMetadataLookupStr(NULL, recipe, "MASK.BLANK"),
    67                                             config); // Mask for blank reg.
    6869        float badFrac = psMetadataLookupF32(NULL, recipe, "BADFRAC"); // Maximum bad fraction
    6970        bool optimum = psMetadataLookupBool(&mdok, recipe, "OPTIMUM"); // Derive optimum parameters?
     
    114115                                sources, stampsName, type, size, order, widths, orders, inner, ringsOrder,
    115116                                binning, penalty, optimum, optWidths, optOrder, optThresh, iter, rej,
    116                                 maskBad, maskBlank, badFrac, PM_SUBTRACTION_MODE_1)) {
     117                                maskIn, maskOut, badFrac, PM_SUBTRACTION_MODE_1)) {
    117118            psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
    118119            psFree(fake);
     
    200201    if (renorm) {
    201202        psLogMsg("ppStack", PS_LOG_INFO, "Renormalising variance map.");
    202         if (!pmReadoutWeightRenorm(readout, maskBad, renormMean, renormStdev, renormWidth, rng)) {
     203        if (!pmReadoutWeightRenorm(readout, maskOut, renormMean, renormStdev, renormWidth, rng)) {
    203204            psError(PS_ERR_UNKNOWN, false, "Unable to renormalise variances.");
    204205            psFree(output);
     
    209210    // Ensure the background value is zero
    210211    psStats *bg = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); // Statistics for background
    211     if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskBad, rng)) {
     212    if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskOut, rng)) {
    212213        psWarning("Can't measure background for image.");
    213214        psErrorClear();
  • trunk/ppStack/src/ppStackReadout.c

    r18435 r18591  
    3232    int iter = psMetadataLookupS32(NULL, config->arguments, "ITER"); // Rejection iterations
    3333    float combineRej = psMetadataLookupF32(NULL, config->arguments, "COMBINE.REJ"); // Combination threshold
    34     psMaskType maskBad = psMetadataLookupU8(NULL, config->arguments, "MASK.BAD"); // Value to mask
    35     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
    36 //    float threshold = psMetadataLookupF32(NULL, config->arguments, "THRESHOLD.MASK"); // Threshold for mask deconvolution
     34    psMaskType maskVal = pmConfigMaskGet("BLANK", config); // Value to mask
    3735    bool useVariance = psMetadataLookupBool(&mdok, config->arguments, "VARIANCE"); // Use variance for rejection?
    3836    bool safe = psMetadataLookupBool(&mdok, config->arguments, "SAFE"); // Play safe when combining small numbers of pixels?
     
    6765    }
    6866
    69     if (!pmStackCombine(outRO, stack, maskBad, maskBlank, kernelSize, iter, combineRej, true,
     67    if (!pmStackCombine(outRO, stack, maskVal, maskVal, kernelSize, iter, combineRej, true,
    7068                        useVariance, safe)) {
    7169        psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts with rejection.");
     
    9391                                            psRegionSet(0, outRO->image->numCols - 1,
    9492                                                        0, outRO->image->numRows - 1),
    95                                             maskBlank);
     93                                            maskVal);
    9694        psString name = NULL;           // Name of image
    9795        psStringAppend(&name, "inspect_%03d_%03d.fits", sectionNum, i);
     
    140138    // Get the recipe values
    141139    bool mdok;                          // Status of MD lookup
    142     psMaskType maskBad = psMetadataLookupU8(NULL, config->arguments, "MASK.BAD"); // Value to mask
    143     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
     140    psMaskType maskVal = pmConfigMaskGet("BLANK", config); // Value to mask
    144141    bool useVariance = psMetadataLookupBool(&mdok, config->arguments, "VARIANCE"); // Use variance for rejection?
    145142
     
    208205                                             psRegionSet(0, outRO->image->numCols - 1,
    209206                                                         0, outRO->image->numRows - 1),
    210                                              maskBlank);
     207                                             maskVal);
    211208            psString name = NULL;           // Name of image
    212209            psStringAppend(&name, "reject_%03d.fits", i);
     
    220217#endif
    221218
    222     if (!pmStackCombine(outRO, stack, maskBad, maskBlank, 0, 0, NAN, numGood != num, useVariance, false)) {
     219    if (!pmStackCombine(outRO, stack, maskVal, maskVal, 0, 0, NAN, numGood != num, useVariance, false)) {
    223220        psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts.");
    224221        psFree(fpaList);
  • trunk/ppSub/src/ppSubLoop.c

    r18559 r18591  
    1414bool ppSubLoop(pmConfig *config)
    1515{
    16     // Value to mask
    17     psMaskType maskBlank = pmConfigMaskGet(psMetadataLookupStr(NULL, config->arguments, "MASK.BLANK"), config) |
    18         pmConfigMaskGet(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"),
    19                      config); // Mask for subtracted image
    20 
    2116    bool mdok;                          // Status of MD lookup
    2217    const char *statsName = psMetadataLookupStr(&mdok, config->arguments, "STATS"); // Filename for statistics
     
    3429        }
    3530        psFree(resolved);
     31    }
     32
     33    if (!pmConfigMaskSetBits(NULL, NULL, config)) {
     34        psError(PS_ERR_UNKNOWN, false, "Unable to determine mask value.");
     35        return false;
    3636    }
    3737
     
    147147                    return false;
    148148                }
    149                 ppStatsFPA(stats, output->fpa, view, maskBlank, config);
     149                ppStatsFPA(stats, output->fpa, view, pmConfigMaskGet("BLANK", config), config);
    150150            }
    151151
  • trunk/ppSub/src/ppSubReadout.c

    r18559 r18591  
    7777    int binning = psMetadataLookupS32(NULL, config->arguments, "SPAM.BINNING"); // Binning for SPAM kernel
    7878    float penalty = psMetadataLookupF32(NULL, config->arguments, "PENALTY"); // Penalty for wideness
    79     psMaskType maskBad = pmConfigMaskGet(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"),
    80                                     config); // Value to mask
    81     psMaskType maskBlank = pmConfigMaskGet(psMetadataLookupStr(NULL, config->arguments, "MASK.BLANK"),
    82                                         config); // Mask for blank reg.
     79    psMaskType maskIn = pmConfigMaskGet("MASK.VALUE", config); // Bits to mask going in to pmSubtractionMatch
     80    psMaskType maskOut = pmConfigMaskGet("BLANK", config); // Bits to mask after pmSubtractionMatch
    8381    float badFrac = psMetadataLookupF32(NULL, config->arguments, "BADFRAC"); // Maximum bad fraction
    8482    const char *stampsName = psMetadataLookupStr(&mdok, config->arguments, "STAMPS"); // Filename for stamps
     
    115113    }
    116114
    117     if (!pmReadoutMaskNonfinite(inRO, maskBad)) {
     115    if (!pmReadoutMaskNonfinite(inRO, maskIn)) {
    118116        psError(PS_ERR_UNKNOWN, false, "Unable to mask non-finite pixels in input.");
    119117        return false;
    120118    }
    121     if (!pmReadoutMaskNonfinite(refRO, maskBad)) {
     119    if (!pmReadoutMaskNonfinite(refRO, maskIn)) {
    122120        psError(PS_ERR_UNKNOWN, false, "Unable to mask non-finite pixels in reference.");
    123121        return false;
     
    136134    if (!pmSubtractionMatch(inConv, refConv, inRO, refRO, footprint, regionSize, spacing, threshold, sources,
    137135                            stampsName, type, size, order, widths, orders, inner, ringsOrder, binning,
    138                             penalty, optimum, optWidths, optOrder, optThresh, iter, rej, maskBad,
    139                             maskBlank, badFrac, mode)) {
     136                            penalty, optimum, optWidths, optOrder, optThresh, iter, rej, maskIn,
     137                            maskOut, badFrac, mode)) {
    140138        psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
    141139        psFree(inConv);
     
    200198#ifdef TESTING
    201199    {
    202         pmReadoutMaskApply(minuend, maskBlank);
     200        pmReadoutMaskApply(minuend, maskOut);
    203201        psFits *fits = psFitsOpen("minuend.fits", "w");
    204202        psFitsWriteImage(fits, NULL, minuend->image, 0, NULL);
     
    206204    }
    207205    {
    208         pmReadoutMaskApply(subtrahend, maskBlank);
     206        pmReadoutMaskApply(subtrahend, maskOut);
    209207        psFits *fits = psFitsOpen("subtrahend.fits", "w");
    210208        psFitsWriteImage(fits, NULL, subtrahend->image, 0, NULL);
     
    278276    outRO->data_exists = outCell->data_exists = outCell->parent->data_exists = true;
    279277
    280     pmReadoutMaskApply(outRO, maskBlank);
     278    pmReadoutMaskApply(outRO, maskOut);
    281279
    282280    psFree(inConv);
     
    286284    for (int y = 0; y < outRO->image->numRows; y++) {
    287285        for (int x = 0; x < outRO->image->numCols; x++) {
    288             if (isnan(outRO->image->data.F32[y][x]) && !(outRO->mask->data.U8[y][x] & maskBlank)) {
     286            if (isnan(outRO->image->data.F32[y][x]) && !(outRO->mask->data.U8[y][x] & maskOut)) {
    289287                printf("Unmasked NAN at %d %d --> %d\n", x, y, outRO->mask->data.U8[y][x]);
    290288            }
     
    301299    if (renorm) {
    302300        psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); // Random number generator
    303         if (!pmReadoutWeightRenorm(outRO, maskBlank, PS_STAT_ROBUST_MEDIAN, PS_STAT_ROBUST_STDEV,
     301        if (!pmReadoutWeightRenorm(outRO, maskOut, PS_STAT_ROBUST_MEDIAN, PS_STAT_ROBUST_STDEV,
    304302                                   renormWidth, rng)) {
    305303            psError(PS_ERR_UNKNOWN, false, "Unable to renormalise weights for photometry.");
  • trunk/ppSub/test/fake.c

    r18289 r18591  
    77
    88// PSF for images
    9 #define X_AXIS_1 2.0                    // Length of x axis (FWHM) for image 1
     9#define X_AXIS_1 5.0                    // Length of x axis (FWHM) for image 1
    1010#define Y_AXIS_1 3.0                    // Length of y axis (FWHM) for image 1
    11 #define X_AXIS_2 3.0                    // Length of x axis (FWHM) for image 1
    12 #define Y_AXIS_2 2.0                    // Length of y axis (FWHM) for image 1
     11#define X_AXIS_2 5.0                    // Length of x axis (FWHM) for image 1
     12#define Y_AXIS_2 5.0                    // Length of y axis (FWHM) for image 1
    1313
    1414// Image parameters
Note: See TracChangeset for help on using the changeset viewer.