IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 9, 2010, 3:08:33 PM (16 years ago)
Author:
eugene
Message:

update output headers with WCS; add mean PSF parameters 7 & 8 (if used) and model names to headers

Location:
branches/eam_branches/ipp-20101205/psphot/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20101205/psphot/src/psphotChoosePSF.c

    r29936 r30006  
    434434    psVector *fwhmMajor = psVectorAllocEmpty (100, PS_DATA_F32);
    435435    psVector *fwhmMinor = psVectorAllocEmpty (100, PS_DATA_F32);
     436    psVector *psfExtra1 = psVectorAllocEmpty (100, PS_DATA_F32);
     437    psVector *psfExtra2 = psVectorAllocEmpty (100, PS_DATA_F32);
    436438
    437439    for (float ix = -0.4; ix <= +0.4; ix += 0.1) {
     
    466468            psVectorAppend (fwhmMajor, FWHM_MAJOR);
    467469            psVectorAppend (fwhmMinor, FWHM_MINOR);
     470
     471            if (modelPSF->params->n >= 7) {
     472              psVectorAppend (psfExtra1, modelPSF->params->data.F32[7]);
     473            }
     474            if (modelPSF->params->n >= 8) {
     475              psVectorAppend (psfExtra2, modelPSF->params->data.F32[8]);
     476            }
    468477        }
    469478    }
     
    499508    }
    500509
     510    if (!psVectorStats (stats, psfExtra1, NULL, NULL, 0)) {
     511        psError(PS_ERR_UNKNOWN, false, "failure to measure stats for PSF EXTRA 1");
     512        return false;
     513    }
     514    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "PSF_EXT1", PS_META_REPLACE, "PSF extra param 1", stats->sampleMean);
     515
     516    if (!psVectorStats (stats, psfExtra2, NULL, NULL, 0)) {
     517        psError(PS_ERR_UNKNOWN, false, "failure to measure stats for PSF EXTRA 2");
     518        return false;
     519    }
     520    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "PSF_EXT2", PS_META_REPLACE, "PSF extra param 2", stats->sampleMean);
     521
    501522    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "ANGLE",    PS_META_REPLACE, "PSF angle",           axes.theta);
    502523    psMetadataAddS32 (readout->analysis, PS_LIST_TAIL, "NPSFSTAR", PS_META_REPLACE, "Number of stars used to make PSF", psf->nPSFstars);
    503     psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSFMODEL", PS_META_REPLACE, "Valid PSF Model?", true);
     524
     525    char *psfModelName = pmModelClassGetName(psf->type);
     526    psMetadataAddStr(readout->analysis,  PS_LIST_TAIL, "PSFMODEL", PS_META_REPLACE, "PSF Model Name", psfModelName);
     527    psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSF_OK",   PS_META_REPLACE, "Valid PSF Model?", true);
    504528
    505529    psFree (fwhmMajor);
     
    566590    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "FW_MN_LQ",   PS_META_REPLACE, "PSF FWHM Minor axis (lower quartile)", 0);
    567591    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "FW_MN_UQ",   PS_META_REPLACE, "PSF FWHM Minor axis (upper quartile)", 0);
    568     psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "ANGLE",    PS_META_REPLACE, "PSF angle",           FWHM_T);
    569     psMetadataAddS32 (readout->analysis, PS_LIST_TAIL, "NPSFSTAR", PS_META_REPLACE, "Number of stars used to make PSF", 0);
    570     psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSFMODEL", PS_META_REPLACE, "Valid PSF Model?", false);
     592    psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "ANGLE",      PS_META_REPLACE, "PSF angle",           FWHM_T);
     593    psMetadataAddS32 (readout->analysis, PS_LIST_TAIL, "NPSFSTAR",   PS_META_REPLACE, "Number of stars used to make PSF", 0);
     594    psMetadataAddStr(readout->analysis,  PS_LIST_TAIL, "PSFMODEL",   PS_META_REPLACE, "PSF Model Name", "NONE");
     595    psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSF_OK",     PS_META_REPLACE, "Valid PSF Model?", false);
    571596
    572597    return true;
  • branches/eam_branches/ipp-20101205/psphot/src/psphotOutput.c

    r29936 r30006  
    261261    psMetadataItemSupplement (&status, header, analysis, "ANGLE");
    262262
     263    psMetadataItemSupplement (&status, header, analysis, "PSFMODEL");
     264    psMetadataItemSupplement (&status, header, analysis, "PSF_OK");
     265
    263266    // Image Quality measurements
    264267    psMetadataItemSupplement (&status, header, analysis, "IQ_NSTAR");
  • branches/eam_branches/ipp-20101205/psphot/src/psphotStackArguments.c

    r28013 r30006  
    4141    if ((N = psArgumentGet (argc, argv, "-break"))) {
    4242        if (argc <= N+1) {
    43           psErrorStackPrint(stderr, "Expected to see 1 more argument; saw %d", argc - 1);
     43          psErrorStackPrint(stderr, "Expected to see an argument for -break");
    4444          exit(PS_EXIT_CONFIG_ERROR);
    4545        }
  • branches/eam_branches/ipp-20101205/psphot/src/psphotStackImageLoop.c

    r29936 r30006  
    101101*/
    102102
    103 # define UPDATE_HEADER 0
     103# define UPDATE_HEADER 1
    104104
    105105bool GetAstrometryFPA (pmConfig *config, pmFPAview *view) {
     
    174174        pmChip *outChip = pmFPAviewThisChip(view, output->fpa); ///< Chip in the output
    175175
    176 # if (UPDATE_HEADER)
    177176        pmHDU *outHDU = pmFPAviewThisHDU (view, output->fpa);
    178177        if (!outHDU) {
    179             pmFPAAddSourceFromView(output->fpa, "name", view, output->format);
     178            pmFPAAddSourceFromView(output->fpa, view, output->format);
    180179            outHDU = pmFPAviewThisHDU (view, output->fpa);
    181180            psAssert (outHDU, "failed to make HDU");
    182181        }
    183 # endif
     182        if (!outHDU->header) {
     183          outHDU->header = psMetadataAlloc();
     184        }
    184185
    185186        if (bilevelAstrometry) {
     
    188189                continue;
    189190            }
    190 # if (UPDATE_HEADER)
    191191            if (!pmAstromWriteBilevelChip(outHDU->header, outChip, WCS_NONLIN_TOL)) {
    192192                psWarning("Unable to generate WCS header.");
    193193                continue;
    194194            }
    195 # endif
    196195        } else {
    197196            // we use a default FPA pixel scale of 1.0
     
    200199                continue;
    201200            }
    202 # if (UPDATE_HEADER)
    203             if (UPDATE_HEADER && !pmAstromWriteWCS(outHDU->header, output->fpa, outChip, WCS_NONLIN_TOL)) {
     201            if (!pmAstromWriteWCS(outHDU->header, output->fpa, outChip, WCS_NONLIN_TOL)) {
    204202                psWarning("Unable to generate WCS header.");
    205203                continue;
    206204            }
    207 # endif
    208205        }
    209206    }
     
    225222        psAssert (output, "missing file?");
    226223
    227 # if (UPDATE_HEADER)
    228224        pmHDU *PHU = pmFPAviewThisPHU(view, output->fpa);
    229225        if (!PHU) {
    230             pmFPAAddSourceFromView(output->fpa, "name", view, output->format);
     226            pmFPAAddSourceFromView(output->fpa, view, output->format);
    231227            PHU = pmFPAviewThisPHU (view, output->fpa);
    232228            psAssert (PHU, "failed to make PHU");
    233229        }
     230        if (!PHU->header) {
     231          PHU->header = psMetadataAlloc();
     232        }
    234233
    235234        if (!pmAstromWriteBilevelMosaic(PHU->header, output->fpa, WCS_NONLIN_TOL)) {
    236235            psWarning("Unable to generate WCS header.");
    237236        }
    238 # endif
    239237    }
    240238
  • branches/eam_branches/ipp-20101205/psphot/src/psphotStackMatchPSFs.c

    r29936 r30006  
    6565bool psphotStackMatchPSFsReadout (pmConfig *config, const pmFPAview *view, psphotStackOptions *options, int index) {
    6666
     67    psImageMaskType maskValue;
     68    psImageMaskType markValue;
     69
     70    // get the PSPHOT.MASK value from the config
     71    if (!pmConfigMaskSetBits (&maskValue, &markValue, config)) {
     72        psError (PS_ERR_UNKNOWN, true, "Unable to define the mask bit values");
     73        return false;
     74    }
     75
    6776    pmFPAfile *fileSrc = psphotStackGetConvolveSource(config, options, index);
    6877    if (!fileSrc) {
     
    8493
    8594    // set NAN pixels to 'SAT'
    86     // XXX replace this is pmReadoutMaskInvalid?
    87     psImageMaskType maskVal = pmConfigMaskGet("SAT", config);
    88     if (!pmReadoutMaskNonfinite(readoutSrc, maskVal)) {
     95    psImageMaskType maskSat = pmConfigMaskGet("SAT", config);
     96    if (!pmReadoutMaskInvalid(readoutSrc, maskValue, maskSat)) {
    8997        psError(psErrorCodeLast(), false, "Unable to mask non-finite pixels in readout.");
    9098        return false;
     
    95103        matchKernel(config, readoutOut, readoutSrc, options, index);
    96104        saveMatchData(readoutOut, options, index);
    97         // renormKernel(readoutCnv, options, index);
    98     } else {
    99         // only match the flux (NO! not for multi-filter, at least!)
    100         // XXX do not generate readoutCnv in this case?
    101         // float norm = powf(10.0, -0.4 * options->norm->data.F32[index]); // Normalisation
    102         // psBinaryOp(readoutRaw->image, readoutRaw->image, "*", psScalarAlloc(norm, PS_TYPE_F32));
    103         // psBinaryOp(readoutRaw->variance, readoutRaw->variance, "*", psScalarAlloc(PS_SQR(norm), PS_TYPE_F32));
    104105    }
    105 
    106106    rescaleData(readoutOut, config, options, index);
    107107
     
    110110    return true;
    111111}
    112 
    113 
    114 # if (0)
    115 // Read previously produced kernel
    116 if (psMetadataLookupBool(NULL, config->arguments, "PPSTACK.DEBUG.STACK")) {
    117     loadKernel(config, readoutCnv, options, index);
    118 } else {
    119     matchKernel(config, readoutCnv, readoutRaw, options, index);
    120 }
    121 # endif
Note: See TracChangeset for help on using the changeset viewer.