IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 30466


Ignore:
Timestamp:
Feb 2, 2011, 4:20:38 PM (15 years ago)
Author:
watersc1
Message:

updates to use deteff based cdf for acceptance. Also fixes warp_id=NULL bug that was adding bad rows to the dqstats tables.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/dqstatstool.c

    r28427 r30466  
    9292  }
    9393  else {
    94     psStringAppend(&query, " AND (invalid IS NULL OR invalid = 1) ");
     94    psStringAppend(&query, " AND (warp_id IS NOT NULL AND invalid IS NULL) ");
    9595  }
    9696
     
    402402
    403403    if (psMetadataLookupStr(&status,enginedef,"COLNAME")&&
    404         isfinite(psMetadataLookupF32(&status,enginedef,"MINIMUM"))&&
    405         isfinite(psMetadataLookupF32(&status,enginedef,"MAXIMUM"))) {
     404        (strcmp(psMetadataLookupStr(&status,enginedef,"RULETYPE"),"STRICT") == 0)&&
     405        (isfinite(psMetadataLookupF32(&status,enginedef,"MINIMUM"))&&
     406         isfinite(psMetadataLookupF32(&status,enginedef,"MAXIMUM")))) {
    406407      psArrayAdd(decisionRules,decisionRules->n,enginedef);
     408    }
     409    else if (psMetadataLookupStr(&status,enginedef,"COLNAME")&&
     410             (strcmp(psMetadataLookupStr(&status,enginedef,"RULETYPE"),"CDF") == 0)&&
     411             (isfinite(psMetadataLookupF32(&status,enginedef,"CDF00"))&&
     412              isfinite(psMetadataLookupF32(&status,enginedef,"CDF50"))&&
     413              isfinite(psMetadataLookupF32(&status,enginedef,"CDF100")))) {
     414      psArrayAdd(decisionRules,decisionRules->n, enginedef);
     415    }
     416    else if (strcmp(psMetadataLookupStr(&status,enginedef,"RULETYPE"),"UNUSED") == 0) {
    407417    }
    408418    else {
     
    637647    // Calculate if this exposure was "good" or not.
    638648    bool accept = true;
     649    psF32 quality = 1.0;
    639650    for (long j = 0; j < decisionRules->n; j++) {
    640651      psMetadata *rule = decisionRules->data[j];
     
    644655        psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find column name");
    645656        return(false);
    646       }     
    647       psF32 min_value  = psMetadataLookupF32(&status,rule,"MINIMUM");
    648       if (!status) {
    649         psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find min value for %s",colname);
    650         return(false);
    651       }     
    652       psF32 max_value  = psMetadataLookupF32(&status,rule,"MAXIMUM");
    653       if (!status) {
    654         psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find max value for %s",colname);
    655         return(false);
    656       }
    657       psString filter = psMetadataLookupStr(&status,rule,"FILTER");
    658       if (!status) {
    659         status = true;
    660       }
    661       if (filter) {
    662         psString imfilter = psMetadataLookupStr(&status,tableRow,"FILTER");
    663         if (strcmp(filter,imfilter) != 0) {
    664           continue;
    665         }
    666657      }
    667658      // Not happy with this being set to a F32. Can this ever be something else?
    668659      psF32 value      = psMetadataLookupF32(&status,tableRow,colname);
    669660      if (!status) {
    670         psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find column %s (%f %f %f) in compare with rule.",colname,min_value,max_value,value);
     661        psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find column %s (%f) in compare with rule.",
     662                colname,value);
    671663        psFree(colNames);
    672664        psFree(colTypes);
     
    677669        return(false);
    678670      }
    679       if ((value > max_value)||(value < min_value)) {
    680         accept = false;
    681       }     
     671      psString filter = psMetadataLookupStr(&status,rule,"FILTER");
     672      if (!status) {
     673        status = true;
     674      }
     675      if (filter) {
     676        psString imfilter = psMetadataLookupStr(&status,tableRow,"FILTER");
     677        if (strcmp(filter,imfilter) != 0) {
     678          continue;
     679        }
     680      }
     681     
     682      if (strcmp(psMetadataLookupStr(&status,rule,"RULETYPE"),"STRICT") == 0) {
     683        psF32 min_value  = psMetadataLookupF32(&status,rule,"MINIMUM");
     684        if (!status) {
     685          psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find min value for %s",colname);
     686          return(false);
     687        }     
     688        psF32 max_value  = psMetadataLookupF32(&status,rule,"MAXIMUM");
     689        if (!status) {
     690          psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find max value for %s",colname);
     691          return(false);
     692        }
     693
     694        if ((value > max_value)||(value < min_value)) {
     695          accept = false;
     696        }
     697      } // End STRICT min/max rule parsing
     698      else if (strcmp(psMetadataLookupStr(&status,rule,"RULETYPE"),"CDF") == 0) {
     699        // I'm just going to implement a quick linear interpolation over the points that exist.
     700        psF32 min_value,max_value = 99;
     701        psF32 min_cdf = 0.0,max_cdf = 1.0;
     702        psF32 cdf;
     703        psF32 try[22] = {0.00,0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,
     704                         0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,0.99,1.00};
     705        int i;
     706        int done = 0;
     707        status = true;
     708        min_value = psMetadataLookupF32(&status,rule,"CDF00");
     709        min_cdf   = 0.0;
     710        if (!isfinite(value)) {
     711          quality = 0.0;
     712          continue;
     713        }
     714        if (!status) {
     715          status = true;
     716          psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find CDF00 value for %s",colname);
     717        }
     718        if (value < min_value) {
     719          if (quality > min_cdf) {
     720            quality = 0.0;
     721            continue;
     722          }
     723        }
     724
     725        for (i = 1; i < 22; i++) {
     726          psString label = psStringCopy("");
     727          psStringAppend(&label,"CDF%02d",(int) (100 * try[i]));
     728         
     729          max_value = psMetadataLookupF32(&status,rule,label);
     730          max_cdf   = try[i];
     731          if (!status) {
     732            status = true;
     733            psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find %s value for %s",label,colname);
     734          }
     735          if ((value < max_value)&&(value > min_value)) {
     736            cdf = ((value - min_value) * max_cdf + (max_value - value) * min_cdf) / (max_value - min_value);
     737            //      fprintf(stderr,"value: %f %f %f %f %f %f %d %d %f\n",value,quality,min_cdf,min_value,max_cdf,max_value, value < max_value, value > min_value,cdf);
     738            if (quality > cdf) {
     739              quality = cdf;
     740              done = 1;
     741              i = 25;
     742            }
     743          }
     744          min_value = max_value;
     745          min_cdf = max_cdf;
     746        }
     747        if (done) {
     748          continue;
     749        }
     750        // Reached end of array without finding the value;
     751        if (value > min_value) {
     752          if (quality > min_cdf) {
     753            quality = 1.0;
     754          }
     755        }
     756
     757
     758      } // End CDF rule parsing
    682759    }
    683760    bool success;
     
    695772      return(false);
    696773    }
     774    success = psMetadataAddF32(tableRow,PS_LIST_TAIL,"QUALITY",0,"",quality);
     775    if (!success) {
     776      psError(PS_ERR_UNKNOWN,false, "Error adding exposure quality to fits table row.");
     777      psFree(colNames);
     778      psFree(colTypes);
     779      psFree(contents);
     780      psFree(query);
     781      psFree(outTable);
     782      psFree(statsoutput);
     783      psFree(statIter);
     784      psFree(tableRow);
     785      return(false);
     786    }
    697787
    698788    // Add the row to the table array.
  • trunk/ippconfig/recipes/dqStatsTool.config

    r28427 r30466  
    55    RULE MULTI
    66    RULE METADATA
     7        COLNAME STR CAMRUN_QUALITY
     8        MINIMUM S32 0
     9        MAXIMUM S32 0
     10        RULETYPE STR STRICT
     11   END
     12# CDF data generated from the data in camRun with non-NULL deteff values.
     13# CZW: How I did this so I can remember next time.
     14# echo "select zpt_obs,fwhm_major,deteff from camProcessedExp JOIN camRun USING (cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) WHERE camRun.label LIKE '%.nightlyscience' AND quality = 0 AND filter = 'FILTER';" | sed 's/FILTER/g.00000/' | mysql -h ippdb01 -u ipp -pipp gpc1 | awk '{print($3)}' | grep -v deteff | grep -v NULL | mk_cdf.pl | awk '{print($2,$1)}' | spline - `echo 0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 0.99 1.0`
     15    RULE METADATA
     16        COLNAME STR DETEFF
     17        RULETYPE STR CDF
     18        FILTER  STR g.00000
     19        CDF00   F32 13.0214
     20        CDF05   F32 18.4582
     21        CDF10   F32 18.8631
     22        CDF15   F32 19.1020
     23        CDF20   F32 19.3304
     24        CDF25   F32 19.4613
     25        CDF30   F32 19.5324
     26        CDF35   F32 19.6094
     27        CDF40   F32 19.6878
     28        CDF45   F32 19.7477
     29        CDF50   F32 19.8058
     30        CDF55   F32 19.8737
     31        CDF60   F32 19.9409
     32        CDF65   F32 20.0108
     33        CDF70   F32 20.0860
     34        CDF75   F32 20.1694
     35        CDF80   F32 20.2681
     36        CDF85   F32 20.3974
     37        CDF90   F32 20.5609
     38        CDF95   F32 20.7193
     39        CDF99   F32 20.9785
     40        CDF100  F32 21.6135
     41    END
     42    RULE METADATA
     43        COLNAME STR DETEFF
     44        RULETYPE STR CDF
     45        FILTER  STR r.00000
     46        CDF00   F32 13.0000
     47        CDF05   F32 17.9079
     48        CDF10   F32 18.4030
     49        CDF15   F32 18.7973
     50        CDF20   F32 19.0507
     51        CDF25   F32 19.2644
     52        CDF30   F32 19.4433
     53        CDF35   F32 19.5680
     54        CDF40   F32 19.6728
     55        CDF45   F32 19.7609
     56        CDF50   F32 19.8393
     57        CDF55   F32 19.9125
     58        CDF60   F32 19.9751
     59        CDF65   F32 20.0395
     60        CDF70   F32 20.0926
     61        CDF75   F32 20.1673
     62        CDF80   F32 20.2457
     63        CDF85   F32 20.3496
     64        CDF90   F32 20.4967
     65        CDF95   F32 20.7552
     66        CDF99   F32 21.2945
     67        CDF100  F32 21.6046
     68    END
     69    RULE METADATA
     70        COLNAME STR DETEFF
     71        RULETYPE STR CDF
     72        FILTER  STR i.00000
     73        CDF00   F32 16.4751
     74        CDF05   F32 18.3041
     75        CDF10   F32 18.5018
     76        CDF15   F32 18.6497
     77        CDF20   F32 18.7602
     78        CDF25   F32 18.8521
     79        CDF30   F32 18.9267
     80        CDF35   F32 19.0105
     81        CDF40   F32 19.0948
     82        CDF45   F32 19.1563
     83        CDF50   F32 19.2215
     84        CDF55   F32 19.296
     85        CDF60   F32 19.3689
     86        CDF65   F32 19.4438
     87        CDF70   F32 19.5261
     88        CDF75   F32 19.6127
     89        CDF80   F32 19.7071
     90        CDF85   F32 19.8518
     91        CDF90   F32 20.0447
     92        CDF95   F32 20.5386
     93        CDF99   F32 21.1344
     94        CDF100  F32 21.5592
     95    END
     96    RULE METADATA
     97        COLNAME STR DETEFF
     98        RULETYPE STR CDF
     99        FILTER  STR z.00000
     100        CDF00   F32 12.1771
     101        CDF05   F32 17.5262
     102        CDF10   F32 17.7958
     103        CDF15   F32 17.9979
     104        CDF20   F32 18.1753
     105        CDF25   F32 18.3201
     106        CDF30   F32 18.4335
     107        CDF35   F32 18.5478
     108        CDF40   F32 18.6470
     109        CDF45   F32 18.7494
     110        CDF50   F32 18.8370
     111        CDF55   F32 18.9166
     112        CDF60   F32 19.0028
     113        CDF65   F32 19.0912
     114        CDF70   F32 19.1886
     115        CDF75   F32 19.2912
     116        CDF80   F32 19.4137
     117        CDF85   F32 19.5244
     118        CDF90   F32 19.6437
     119        CDF95   F32 19.9135
     120        CDF99   F32 20.6482
     121        CDF100  F32 21.0925
     122    END
     123    RULE METADATA
     124        COLNAME STR DETEFF
     125        RULETYPE STR CDF
     126        FILTER  STR y.00000
     127        CDF00   F32 11.6109
     128        CDF05   F32 16.7278
     129        CDF10   F32 17.0561
     130        CDF15   F32 17.2778
     131        CDF20   F32 17.4367
     132        CDF25   F32 17.5495
     133        CDF30   F32 17.6469
     134        CDF35   F32 17.7392
     135        CDF40   F32 17.8160
     136        CDF45   F32 17.8927
     137        CDF50   F32 17.9779
     138        CDF55   F32 18.0514
     139        CDF60   F32 18.1292
     140        CDF65   F32 18.2153
     141        CDF70   F32 19.2903
     142        CDF75   F32 18.3627
     143        CDF80   F32 18.4325
     144        CDF85   F32 18.5321
     145        CDF90   F32 18.6403
     146        CDF95   F32 18.7523
     147        CDF99   F32 18.8892
     148        CDF100  F32 19.064
     149    END
     150    RULE METADATA
     151        COLNAME STR DETEFF
     152        RULETYPE STR CDF
     153        FILTER  STR w.00000
     154        CDF00   F32 17.4082
     155        CDF05   F32 19.4333
     156        CDF10   F32 19.9698
     157        CDF15   F32 20.2711
     158        CDF20   F32 20.3919
     159        CDF25   F32 20.5038
     160        CDF30   F32 20.6192
     161        CDF35   F32 20.7273
     162        CDF40   F32 20.8184
     163        CDF45   F32 20.9186
     164        CDF50   F32 21.0151
     165        CDF55   F32 21.1326
     166        CDF60   F32 21.2442
     167        CDF65   F32 21.3412
     168        CDF70   F32 21.4394
     169        CDF75   F32 21.5105
     170        CDF80   F32 21.5567
     171        CDF85   F32 21.6281
     172        CDF90   F32 21.6908
     173        CDF95   F32 21.7566
     174        CDF99   F32 21.8907
     175        CDF100  F32 23.6312
     176    END
     177    RULE METADATA
    7178        COLNAME STR FWHM_MAJOR
     179        RULETYPE STR UNUSED
    8180        MINIMUM F32 0.0
    9181        MAXIMUM F32 9.3            # 90-percentile 2010-02-14 through 2010-06-20 = 2.4"
     
    11183    RULE METADATA
    12184        COLNAME STR FWHM_MINOR
     185        RULETYPE STR UNUSED
    13186        MINIMUM F32 0.0
    14187        MAXIMUM F32 8.44           # 90-percentile 2010-02-14 through 2010-06-20 = 2.18"
     
    16189    RULE METADATA
    17190         COLNAME STR ZEROPOINT
     191        RULETYPE STR UNUSED
    18192         FILTER  STR g.00000
    19193         MINIMUM F32 24.3051           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
     
    22196    RULE METADATA
    23197         COLNAME STR ZEROPOINT
     198        RULETYPE STR UNUSED
    24199         FILTER  STR r.00000
    25200         MINIMUM F32 24.5294           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
     
    28203    RULE METADATA
    29204         COLNAME STR ZEROPOINT
     205        RULETYPE STR UNUSED
    30206         FILTER  STR i.00000
    31207         MINIMUM F32 24.4641           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
     
    34210    RULE METADATA
    35211         COLNAME STR ZEROPOINT
     212        RULETYPE STR UNUSED
    36213         FILTER  STR z.00000
    37214         MINIMUM F32 24.1128           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
     
    40217    RULE METADATA
    41218         COLNAME STR ZEROPOINT
     219        RULETYPE STR UNUSED
    42220         FILTER  STR y.00000
    43221         MINIMUM F32 23.1503           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
     
    46224    RULE METADATA
    47225         COLNAME STR ZEROPOINT
     226        RULETYPE STR UNUSED
    48227         FILTER  STR w.00000
    49228         MINIMUM F32 25.8944           # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes
    50229         MAXIMUM F32 99.9999           # We refuse to believe in negative clouds.
    51230    END
    52 #    TYPE VAL COLNAME      MINIMUM        MAXIMUM
    53 #    RULE VAL FWHM_MAJOR   0.0            5.0
    54 #    RULE VAL FWHM_MINOR   0.0            5.0
    55231END
    56232
     
    107283    COLUMN VAL camProcessedExp  iq_m4_lq          PS_DATA_F32    IQ_M4_LQ           
    108284    COLUMN VAL camProcessedExp  iq_m4_uq          PS_DATA_F32    IQ_M4_UQ           
     285    COLUMN VAL camProcessedExp  deteff            PS_DATA_F32    DETEFF
     286    COLUMN VAL camProcessedExp  quality           PS_DATA_S32    CAMRUN_QUALITY
    109287END
    110288
Note: See TracChangeset for help on using the changeset viewer.