IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 31069


Ignore:
Timestamp:
Mar 28, 2011, 12:56:50 PM (15 years ago)
Author:
watersc1
Message:

Use more robust bin rejection code. Now, each bin must have at least 10 samples, and no more than 50% of the samples can be rejected by the outlier clipping phase. Tested on two chips, decreasing the fringe_0 value from 95 and 60 to 6 and 5.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmFringeStats.c

    r30550 r31069  
    10291029    psVector *science_values   = psVectorAllocEmpty(4000,PS_TYPE_F32);
    10301030    psVector *science_errors   = psVectorAllocEmpty(4000,PS_TYPE_F32);
    1031 
    1032     psStats *binStats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
     1031    psVector *science_counts   = psVectorAllocEmpty(4000,PS_TYPE_S32);
     1032
     1033    psStats *binStats = psStatsAlloc(PS_STAT_CLIPPED_MEAN | PS_STAT_CLIPPED_STDEV);
    10331034    for (int i = 0; i < 4000; i++) {
    10341035      psVector *bin = bins->data[i];
    1035       if (bin->n > 2) {
     1036      if (bin->n > 10) {
    10361037        psStatsInit(binStats);
    10371038
    10381039        psVectorStats(binStats,bin,NULL,NULL,1);
    10391040       
    1040         if (isfinite(binStats->robustStdev) &&
    1041             isfinite(binStats->robustMedian) &&
    1042             binStats->robustStdev > 0) {
     1041        if (isfinite(binStats->clippedStdev) &&
     1042            isfinite(binStats->clippedMean) &&
     1043            (binStats->clippedStdev > 0) &&
     1044            (binStats->clippedNvalues > 10) &&
     1045            (binStats->clippedNvalues > 0.5 * bin->n)
     1046            ) {
    10431047          psVectorAppend(fringe_positions,-0.1 + i * 5e-5);
    1044           psVectorAppend(science_values, binStats->robustMedian);
    1045           psVectorAppend(science_errors, binStats->robustStdev);
     1048          psVectorAppend(science_values, binStats->clippedMean);
     1049          psVectorAppend(science_errors, binStats->clippedStdev);
     1050          psVectorAppend(science_counts, bin->n);
    10461051        }
    10471052      }
     
    10521057
    10531058    for (int i = 0; i < fringe_positions->n; i++) {
    1054       psTrace("psModules.detrend",7,"FITDATA: %f %f %f\n",
     1059      psTrace("psModules.detrend",7,"FITDATA: %f %f %f %d\n",
    10551060              fringe_positions->data.F32[i],
    10561061              science_values->data.F32[i],
    1057               science_errors->data.F32[i]);
     1062              science_errors->data.F32[i],
     1063              science_counts->data.S32[i]);
    10581064    }
    10591065/*     // Begin switch from old outlier removal and fitting code. */
     
    10711077    psFree(science_values);
    10721078    psFree(science_errors);
     1079    psFree(science_counts);
    10731080   
    10741081    for (int i = 0; i <= poly->nX; i++) {
Note: See TracChangeset for help on using the changeset viewer.