IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29935


Ignore:
Timestamp:
Dec 5, 2010, 9:33:17 PM (15 years ago)
Author:
eugene
Message:

support for compressed metadata config files; removed commented-out code in pmNonLinear.c; add functions to set file and data status in pmFPAfiles; do not fail in pmFPAfileIO on inactive internal files; S/N for low-sig sources is always positive; do not copy NULL pixels in pmSourceCopy

Location:
trunk/psModules/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/camera/pmFPAFlags.c

    r15477 r29935  
    4949}
    5050
     51bool pmReadoutSetFileStatus(pmReadout *readout, bool status)
     52{
     53    PS_ASSERT_PTR_NON_NULL(readout, false);
     54
     55    readout->file_exists = status;
     56    return true;
     57}
     58
     59bool pmFPAviewSetFileStatus (pmFPA *fpa, const pmFPAview *view, bool status) {
     60
     61    PS_ASSERT_PTR_NON_NULL(fpa, false);
     62    PS_ASSERT_PTR_NON_NULL(view, false);
     63
     64    if (view->chip == -1) {
     65        bool set = pmFPASetFileStatus (fpa, status);
     66        return set;
     67    }
     68
     69    if (view->chip >= fpa->chips->n) {
     70        psError(PS_ERR_IO, true, "Requested chip == %d >= fpa->chips->n == %ld", view->chip, fpa->chips->n);
     71        return false;
     72    }
     73    pmChip *chip = fpa->chips->data[view->chip];
     74
     75    if (view->cell == -1) {
     76        bool set = pmChipSetFileStatus (chip, status);
     77        return set;
     78    }
     79
     80    if (view->cell >= chip->cells->n) {
     81        psError(PS_ERR_IO, true, "Requested cell == %d >= chip->cells->n == %ld", view->cell, chip->cells->n);
     82        return false;
     83    }
     84    pmCell *cell = chip->cells->data[view->cell];
     85
     86    if (view->readout == -1) {
     87        bool set = pmCellSetFileStatus (cell, status);
     88        return set;
     89    }
     90
     91    if (view->readout >= cell->readouts->n) {
     92        psError(PS_ERR_IO, true, "Requested readout == %d >= cell->readouds->n == %ld", view->readout, cell->readouts->n);
     93        return false;
     94    }
     95    pmReadout *readout = cell->readouts->data[view->readout];
     96
     97    bool set = pmReadoutSetFileStatus (readout, status);
     98    return set;
     99}
     100
    51101bool pmFPACheckFileStatus(const pmFPA *fpa)
    52102{
     
    125175    for (int i = 0; i < cell->readouts->n; i++) {
    126176        pmReadout *readout = cell->readouts->data[i];
    127         readout->data_exists = status;
    128     }
    129     return true;
     177        pmReadoutSetDataStatus(readout, status);
     178    }
     179    return true;
     180}
     181
     182bool pmReadoutSetDataStatus (pmReadout *readout, bool status)
     183{
     184    PS_ASSERT_PTR_NON_NULL(readout, false);
     185
     186    readout->data_exists = status;
     187    return true;
     188}
     189
     190bool pmFPAviewSetDataStatus (pmFPA *fpa, const pmFPAview *view, bool status) {
     191
     192    PS_ASSERT_PTR_NON_NULL(fpa, false);
     193    PS_ASSERT_PTR_NON_NULL(view, false);
     194
     195    if (view->chip == -1) {
     196        bool set = pmFPASetDataStatus (fpa, status);
     197        return set;
     198    }
     199
     200    if (view->chip >= fpa->chips->n) {
     201        psError(PS_ERR_IO, true, "Requested chip == %d >= fpa->chips->n == %ld", view->chip, fpa->chips->n);
     202        return false;
     203    }
     204    pmChip *chip = fpa->chips->data[view->chip];
     205
     206    if (view->cell == -1) {
     207        bool set = pmChipSetDataStatus (chip, status);
     208        return set;
     209    }
     210
     211    if (view->cell >= chip->cells->n) {
     212        psError(PS_ERR_IO, true, "Requested cell == %d >= chip->cells->n == %ld", view->cell, chip->cells->n);
     213        return false;
     214    }
     215    pmCell *cell = chip->cells->data[view->cell];
     216
     217    if (view->readout == -1) {
     218        bool set = pmCellSetDataStatus (cell, status);
     219        return set;
     220    }
     221
     222    if (view->readout >= cell->readouts->n) {
     223        psError(PS_ERR_IO, true, "Requested readout == %d >= cell->readouds->n == %ld", view->readout, cell->readouts->n);
     224        return false;
     225    }
     226    pmReadout *readout = cell->readouts->data[view->readout];
     227
     228    bool set = pmReadoutSetDataStatus (readout, status);
     229    return set;
    130230}
    131231
  • trunk/psModules/src/camera/pmFPAFlags.h

    r13190 r29935  
    3434                        );
    3535
     36bool pmReadoutSetFileStatus(pmReadout *readout, bool status);
     37
     38bool pmFPAviewSetFileStatus (pmFPA *fpa, const pmFPAview *view, bool status);
     39
    3640// Functions to check the file_exists flags
    3741
     
    6569                        );
    6670
     71bool pmReadoutSetDataStatus (pmReadout *readout, bool status);
     72
     73bool pmFPAviewSetDataStatus (pmFPA *fpa, const pmFPAview *view, bool status);
    6774
    6875// Functions the check the data_exists flags
  • trunk/psModules/src/camera/pmFPAfileIO.c

    r29833 r29935  
    135135    PS_ASSERT_PTR_NON_NULL(view, false);
    136136
    137     // an internal file should not be sent here (should not be left on config->files)
    138     PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    139 
    140137    // skip the following states
    141138    if (file->state & PM_FPA_STATE_INACTIVE) {
     
    143140        return true;
    144141    }
     142
     143    // an active internal file should not be sent here (should not be left on config->files)
     144    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
     145
    145146    if (file->mode != PM_FPA_MODE_READ) {
    146147        psTrace("psModules.camera", 6, "skip read for %s, mode is not READ", file->name);
     
    258259        return true;
    259260    }
     261
     262    // an active internal file should not be returned to here
     263    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
     264
    260265    if (file->mode != PM_FPA_MODE_WRITE) {
    261266        psTrace("psModules.camera", 6, "skip create for non-write file %s", file->name);
    262267        return true;
    263268    }
    264 
    265     // an internal file should not be returned to here
    266     PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    267269
    268270    // get the current level
     
    335337    }
    336338
     339    // an ACTIVE internal file should not be sent here
     340    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
     341
    337342    if (file->mode != PM_FPA_MODE_WRITE) {
    338343        psTrace("psModules.camera", 6, "skip write for %s, mode is not WRITE", file->name);
    339344        return true;
    340     }
    341 
    342     // an internal file should not be returned to here
    343     if (file->mode == PM_FPA_MODE_INTERNAL) {
    344         psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
    345         return false;
    346345    }
    347346
     
    523522    PS_ASSERT_PTR_NON_NULL(view, false);
    524523
    525     // an internal file should not be sent here (should not be left on config->files)
    526     PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    527 
    528524    // skip the following states
    529525    if (file->state & PM_FPA_STATE_INACTIVE) {
     
    531527        return true;
    532528    }
     529
    533530    if (file->state == PM_FPA_STATE_CLOSED) {
    534531        psTrace("psModules.camera", 6, "skip close for %s, files is closed", file->name);
    535532        return true;
    536533    }
     534
     535    // an active internal file should not be sent here (should not be left on config->files)
     536    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    537537
    538538    // is current level == open level?
     
    596596    PS_ASSERT_PTR_NON_NULL(view, false);
    597597
    598     // an internal file should not be sent here (should not be left on config->files)
    599     PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    600 
    601598    if (file->state & PM_FPA_STATE_INACTIVE) {
    602599        psTrace("psModules.camera", 6, "skip free for %s, files is inactive", file->name);
    603600        return true;
    604601    }
     602
     603    // an active internal file should not be sent here (should not be left on config->files)
     604    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
    605605
    606606    // get the current level
     
    746746    }
    747747
    748     // these are programming errors
     748    // an ACTIVE internal file should not be sent here
    749749    PS_ASSERT(file->mode != PM_FPA_MODE_NONE, false);
    750750    PS_ASSERT(file->mode != PM_FPA_MODE_INTERNAL, false);
  • trunk/psModules/src/config/pmConfigDump.c

    r27147 r29935  
    150150    }
    151151
    152     if (!psMetadataConfigWrite(config->user, resolved)) {
     152    // check for Metadata compression options:
     153    char *compressMode;
     154    bool status = false;
     155    if (config->camera) {
     156        compressMode = psMetadataLookupStr(&status, config->camera, "METADATA.COMPRESSION");
     157    }
     158
     159    if (!psMetadataConfigWrite(config->user, resolved, compressMode)) {
    153160        psError(psErrorCodeLast(), false, "Unable to dump configuration to %s", filename);
    154161        psFree(resolved);
  • trunk/psModules/src/detrend/pmNonLinear.c

    r29833 r29935  
    332332        return(0.0);
    333333    }
    334 /*     if (flux > correction_fluxes->data.F32[bin]) { */
    335 /*      return(0.0); */
    336 /*     } */
    337334 
    338335    for (int i = 0; i < correction_fluxes->n - 1; i++) {
     
    347344    }
    348345
    349 /*   PS_BIN_FOR_VALUE(bin,correction_fluxes,flux); */
    350 /*   if ((bin < 0)||(bin > correction_fluxes->n)) { */
    351 /*     return(1.0); */
    352 /*   } */
    353  
    354 /*   PS_BIN_INTERPOLATE(result,correction_fluxes,correction_factors,bin,flux); */
    355346    if (!isfinite(result)) {
    356347        result = 0.0;
    357348    }
    358 /*     if (result <= 0) { */
    359 /*      result = 1.0; */
    360 /*     } */
    361349    return(result);
    362350}
     
    372360        return(0.0);
    373361    }
    374 /*     if (flux > correction_fluxes->data.F32[bin]) { */
    375 /*      return(0.0); */
    376 /*     } */
    377362
    378363    for (int i = 0; i < correction_fluxes->n - 1; i++) {
     
    389374    }
    390375
    391 /*   PS_BIN_FOR_VALUE(bin,correction_fluxes,flux); */
    392 /*   if ((bin < 0)||(bin > correction_fluxes->n)) { */
    393 /*     return(1.0); */
    394 /*   } */
    395  
    396 /*   PS_BIN_INTERPOLATE(result,correction_fluxes,correction_factors,bin,flux); */
    397376    if (!isfinite(result)) {
    398377        result = 0.0;
    399378    }
    400 /*     if (result <= 0) { */
    401 /*      result = 1.0; */
    402 /*     } */
    403379    return(result);
    404380}
    405 
    406  
    407  
  • trunk/psModules/src/objects/pmSource.c

    r29546 r29935  
    189189    // pixels.  Modifying these pixels (ie, subtracting the model) will affect the pixels seen
    190190    // by all copies.
    191     source->pixels   = psImageCopyView(NULL, in->pixels);
    192     source->variance   = psImageCopyView(NULL, in->variance);
     191    source->pixels   = in->pixels   ? psImageCopyView(NULL, in->pixels)   : NULL;
     192    source->variance = in->variance ? psImageCopyView(NULL, in->variance) : NULL;
    193193    source->maskView = in->maskView ? psImageCopyView(NULL, in->maskView) : NULL;
    194194
  • trunk/psModules/src/objects/pmSourcePhotometry.c

    r29546 r29935  
    107107    // XXX handle negative flux, low-significance
    108108    if (model->dparams->data.F32[PM_PAR_I0] > 0) {
    109         SN = model->params->data.F32[PM_PAR_I0] / model->dparams->data.F32[PM_PAR_I0];
     109        SN = fabs(model->params->data.F32[PM_PAR_I0] / model->dparams->data.F32[PM_PAR_I0]);
    110110        source->errMag = 1.0 / SN;
    111111    } else {
     
    331331    }
    332332    if (apFluxOut) *apFluxOut = apFlux;
    333     if (apFluxErr) *apFluxErr = sqrt(apFluxVar);
     333    if (apFluxErr) *apFluxErr = sqrt(fabs(apFluxVar));
    334334
    335335    if (apFlux <= 0) {
Note: See TracChangeset for help on using the changeset viewer.