IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 28, 2009, 11:21:56 AM (17 years ago)
Author:
eugene
Message:

always handle psVectorStats false return status (is an error); check for NAN results and handle as possible

Location:
trunk/psModules/src/objects
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/models/pmModel_SGAUSS.c

    r15834 r23989  
    325325
    326326    psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEDIAN);
    327     psVectorStats (stats, contour, NULL, NULL, 0);
     327    if (!psVectorStats (stats, contour, NULL, NULL, 0)) {
     328        psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     329        return false;
     330    }
    328331    value = stats->sampleMedian;
    329332
  • trunk/psModules/src/objects/pmGrowthCurveGenerate.c

    r21183 r23989  
    8989        psVectorAppend (values, growth->fitMag);
    9090    }
    91     psVectorStats (stats, values, NULL, NULL, 0);
     91    if (!psVectorStats (stats, values, NULL, NULL, 0)) {
     92        psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     93        return false;
     94    }
    9295    psf->growth->fitMag = stats->sampleMedian;
    9396
     
    104107            psVectorAppend (values, growth->apMag->data.F32[i]);
    105108        }
    106         psVectorStats (stats, values, NULL, NULL, 0);
     109        if (!psVectorStats (stats, values, NULL, NULL, 0)) {
     110            psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     111            return false;
     112        }
    107113        psf->growth->apMag->data.F32[i] = stats->sampleMedian;
    108114    }
  • trunk/psModules/src/objects/pmPSFtry.c

    r21183 r23989  
    211211
    212212    if (Next == 0) {
    213         psError(PS_ERR_UNKNOWN, true, "No sources with good extended fits from which to determine PSF.");
     213        psError(PS_ERR_UNKNOWN, false, "No sources with good extended fits from which to determine PSF.");
    214214        psFree(psfTry);
    215215        return NULL;
     
    282282
    283283    if (Npsf == 0) {
    284         psError(PS_ERR_UNKNOWN, true, "No sources with good PSF fits after model is built.");
     284        psError(PS_ERR_UNKNOWN, false, "No sources with good PSF fits after model is built.");
    285285        psFree(psfTry);
    286286        return NULL;
     
    643643        }
    644644        if (entryMin == -1) {
    645             psError (PS_ERR_UNKNOWN, true, "failed to find image map for shape params");
     645            psError (PS_ERR_UNKNOWN, false, "failed to find image map for shape params");
    646646            return false;
    647647        }
     
    958958    float dEsquare = 0.0;
    959959    psStatsInit (stats);
    960     psVectorStats (stats, e0res, NULL, mask, maskValue);
     960    if (!psVectorStats (stats, e0res, NULL, mask, maskValue)) {
     961        psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     962        return false;
     963    }
    961964    dEsquare += PS_SQR(psStatsGetValue(stats, stdevOpt));
    962965
    963966    psStatsInit (stats);
    964     psVectorStats (stats, e1res, NULL, mask, maskValue);
     967    if (!psVectorStats (stats, e1res, NULL, mask, maskValue)) {
     968        psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     969        return false;
     970    }
    965971    dEsquare += PS_SQR(psStatsGetValue(stats, stdevOpt));
    966972
    967973    psStatsInit (stats);
    968     psVectorStats (stats, e2res, NULL, mask, maskValue);
     974    if (!psVectorStats (stats, e2res, NULL, mask, maskValue)) {
     975        psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     976        return false;
     977    }
    969978    dEsquare += PS_SQR(psStatsGetValue(stats, stdevOpt));
    970979
     
    10181027        float dEsquare = 0.0;
    10191028        psStatsInit (statsS);
    1020         psVectorStats (statsS, dE0subset, NULL, mkSubset, 0xff);
     1029        if (!psVectorStats (statsS, dE0subset, NULL, mkSubset, 0xff)) {
     1030        }
    10211031        dEsquare += PS_SQR(psStatsGetValue(statsS, stdevOpt));
    10221032
    10231033        psStatsInit (statsS);
    1024         psVectorStats (statsS, dE1subset, NULL, mkSubset, 0xff);
    1025         dEsquare += PS_SQR(psStatsGetValue(statsS, stdevOpt));
     1034        if (!psVectorStats (statsS, dE1subset, NULL, mkSubset, 0xff)) {
     1035            psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     1036            return false;
     1037        }       
     1038        dEsquare += PS_SQR(psStatsGetValue(statsS, stdevOpt));
    10261039
    10271040        psStatsInit (statsS);
    1028         psVectorStats (statsS, dE2subset, NULL, mkSubset, 0xff);
     1041        if (!psVectorStats (statsS, dE2subset, NULL, mkSubset, 0xff)) {
     1042            psError(PS_ERR_UNKNOWN, false, "failure to measure stats");
     1043            return false;
     1044        }
    10291045        dEsquare += PS_SQR(psStatsGetValue(statsS, stdevOpt));
    10301046
  • trunk/psModules/src/objects/pmSource.c

    r23187 r23989  
    479479        stats = psStatsAlloc (PS_STAT_CLIPPED_MEAN | PS_STAT_CLIPPED_STDEV);
    480480
    481         psVectorStats (stats, tmpSx, NULL, NULL, 0);
     481        if (!psVectorStats (stats, tmpSx, NULL, NULL, 0)) {
     482            psError(PS_ERR_UNKNOWN, false, "failed to measure Sx stats");
     483            return (emptyClump);
     484        }
    482485        psfClump.X  = stats->clippedMean;
    483486        psfClump.dX = stats->clippedStdev;
    484487
    485         psVectorStats (stats, tmpSy, NULL, NULL, 0);
     488        if (!psVectorStats (stats, tmpSy, NULL, NULL, 0)) {
     489            psError(PS_ERR_UNKNOWN, false, "failed to measure Sy stats");
     490            return (emptyClump);
     491        }
    486492        psfClump.Y  = stats->clippedMean;
    487493        psfClump.dY = stats->clippedStdev;
     
    636642
    637643        if (!psVectorStats (stats, starsn_moments, NULL, NULL, 0)) {
    638             // Don't care about this error
    639             psErrorClear();
     644            psError(PS_ERR_UNKNOWN, false, "failed to measure SN / moments stats");
     645            psFree (stats);
     646            psFree (starsn_peaks);
     647            return false;
    640648        }
    641649        psLogMsg ("pmObjects", 3, "SN range (moments): %f - %f\n", stats->min, stats->max);
     
    648656        stats = psStatsAlloc (PS_STAT_MIN | PS_STAT_MAX);
    649657        if (!psVectorStats (stats, starsn_peaks, NULL, NULL, 0)) {
    650             // Don't care about this error
    651             psErrorClear();
     658            psError(PS_ERR_UNKNOWN, false, "failed to measure SN / moments stats");
     659            psFree (stats);
     660            psFree (starsn_peaks);
     661            return false;
    652662        }
    653663        psLogMsg ("psModules.objects", 3, "SN range (peaks)  : %f - %f (%ld)\n",
  • trunk/psModules/src/objects/pmSourceFitModel.c

    r23187 r23989  
    172172    fitStatus = psMinimizeLMChi2(myMin, covar, params, constraint, x, y, yErr, model->modelFunc);
    173173    for (int i = 0; i < dparams->n; i++) {
    174         if (psTraceGetLevel("psModules.objects") >= 4) {
    175             fprintf (stderr, "%f ", params->data.F32[i]);
    176         }
    177174        if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
    178175            continue;
    179176        dparams->data.F32[i] = sqrt(covar->data.F32[i][i]);
     177        if (psTraceGetLevel("psModules.objects") >= 4) {
     178            fprintf (stderr, "%f +/- %f\n", params->data.F32[i], dparams->data.F32[i]);
     179        }
    180180    }
    181181    psTrace ("psModules.objects", 4, "niter: %d, chisq: %f", myMin->iter, myMin->value);
  • trunk/psModules/src/objects/pmSourceMatch.c

    r23241 r23989  
    473473        return -1;
    474474    }
     475    // XXX handle this case better:
     476    if (isnan(stats->clippedMean))  {
     477        psError(PS_ERR_UNKNOWN, false, "Unable to perform statistics on transparencies.");
     478        psFree(stats);
     479        return -1;
     480    }
    475481
    476482    float thresh = stats->clippedMean + photoLevel * stats->clippedStdev; // Threshold for clouds
Note: See TracChangeset for help on using the changeset viewer.