Changeset 30466
- Timestamp:
- Feb 2, 2011, 4:20:38 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
-
ippTools/src/dqstatstool.c (modified) (6 diffs)
-
ippconfig/recipes/dqStatsTool.config (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/dqstatstool.c
r28427 r30466 92 92 } 93 93 else { 94 psStringAppend(&query, " AND ( invalid IS NULL OR invalid = 1) ");94 psStringAppend(&query, " AND (warp_id IS NOT NULL AND invalid IS NULL) "); 95 95 } 96 96 … … 402 402 403 403 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")))) { 406 407 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) { 407 417 } 408 418 else { … … 637 647 // Calculate if this exposure was "good" or not. 638 648 bool accept = true; 649 psF32 quality = 1.0; 639 650 for (long j = 0; j < decisionRules->n; j++) { 640 651 psMetadata *rule = decisionRules->data[j]; … … 644 655 psError(PS_EXIT_CONFIG_ERROR, false, "Unable to find column name"); 645 656 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 }666 657 } 667 658 // Not happy with this being set to a F32. Can this ever be something else? 668 659 psF32 value = psMetadataLookupF32(&status,tableRow,colname); 669 660 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); 671 663 psFree(colNames); 672 664 psFree(colTypes); … … 677 669 return(false); 678 670 } 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 682 759 } 683 760 bool success; … … 695 772 return(false); 696 773 } 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 } 697 787 698 788 // Add the row to the table array. -
trunk/ippconfig/recipes/dqStatsTool.config
r28427 r30466 5 5 RULE MULTI 6 6 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 7 178 COLNAME STR FWHM_MAJOR 179 RULETYPE STR UNUSED 8 180 MINIMUM F32 0.0 9 181 MAXIMUM F32 9.3 # 90-percentile 2010-02-14 through 2010-06-20 = 2.4" … … 11 183 RULE METADATA 12 184 COLNAME STR FWHM_MINOR 185 RULETYPE STR UNUSED 13 186 MINIMUM F32 0.0 14 187 MAXIMUM F32 8.44 # 90-percentile 2010-02-14 through 2010-06-20 = 2.18" … … 16 189 RULE METADATA 17 190 COLNAME STR ZEROPOINT 191 RULETYPE STR UNUSED 18 192 FILTER STR g.00000 19 193 MINIMUM F32 24.3051 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes … … 22 196 RULE METADATA 23 197 COLNAME STR ZEROPOINT 198 RULETYPE STR UNUSED 24 199 FILTER STR r.00000 25 200 MINIMUM F32 24.5294 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes … … 28 203 RULE METADATA 29 204 COLNAME STR ZEROPOINT 205 RULETYPE STR UNUSED 30 206 FILTER STR i.00000 31 207 MINIMUM F32 24.4641 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes … … 34 210 RULE METADATA 35 211 COLNAME STR ZEROPOINT 212 RULETYPE STR UNUSED 36 213 FILTER STR z.00000 37 214 MINIMUM F32 24.1128 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes … … 40 217 RULE METADATA 41 218 COLNAME STR ZEROPOINT 219 RULETYPE STR UNUSED 42 220 FILTER STR y.00000 43 221 MINIMUM F32 23.1503 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes … … 46 224 RULE METADATA 47 225 COLNAME STR ZEROPOINT 226 RULETYPE STR UNUSED 48 227 FILTER STR w.00000 49 228 MINIMUM F32 25.8944 # (median 2010-02-14 through 2010-06-20) - 0.25 magnitudes 50 229 MAXIMUM F32 99.9999 # We refuse to believe in negative clouds. 51 230 END 52 # TYPE VAL COLNAME MINIMUM MAXIMUM53 # RULE VAL FWHM_MAJOR 0.0 5.054 # RULE VAL FWHM_MINOR 0.0 5.055 231 END 56 232 … … 107 283 COLUMN VAL camProcessedExp iq_m4_lq PS_DATA_F32 IQ_M4_LQ 108 284 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 109 287 END 110 288
Note:
See TracChangeset
for help on using the changeset viewer.
