Changeset 7910 for trunk/ppStats
- Timestamp:
- Jul 14, 2006, 3:58:46 PM (20 years ago)
- Location:
- trunk/ppStats/src
- Files:
-
- 4 edited
-
ppStatsData.c (modified) (2 diffs)
-
ppStatsData.h (modified) (1 diff)
-
ppStatsLoop.c (modified) (6 diffs)
-
ppStatsSetup.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppStats/src/ppStatsData.c
r7902 r7910 18 18 } 19 19 psFree(data->headers); 20 psFree(data->concepts); 21 psFree(data->stats); 22 20 23 psFree(data->chips); 21 24 psFree(data->cells); 22 psFree(data->stats);23 25 24 26 return; … … 36 38 data->outFile = NULL; 37 39 data->inFPA = NULL; 40 41 data->headers = psListAlloc(NULL); 42 data->concepts = psListAlloc(NULL); 43 data->stats = psStatsAlloc(0); 44 data->doStats = false; 45 38 46 data->sample = 0; 39 47 data->maskVal = 0; 40 data->headers = psListAlloc(NULL);41 48 data->chips = psListAlloc(NULL); 42 49 data->cells = psListAlloc(NULL); 43 data->stats = psStatsAlloc(0);44 data->doStats = false;45 50 46 51 return data; -
trunk/ppStats/src/ppStatsData.h
r7902 r7910 12 12 FILE *outFile; // Output file handle 13 13 pmFPA *inFPA; // Input FPA 14 // Options 14 // Stuff to output 15 psStats *stats; // Statistics to calculate 16 bool doStats; // Do statistics? 17 psList *headers; // Headers to read 18 psList *concepts; // Concepts to read 19 // Options for input data 15 20 float sample; // Fraction of cell to sample for statistics 16 21 psMaskType maskVal; // Mask value for images 17 psList *headers; // Headers to read18 22 psList *chips; // Chips to look at 19 23 psList *cells; // Cells to look at 20 psStats *stats; // Statistics to calculate21 bool doStats; // Do statistics?22 24 } ppStatsData; 23 25 -
trunk/ppStats/src/ppStatsLoop.c
r7903 r7910 6 6 7 7 8 static void get Headers(psMetadata *target, // Target for headers9 psMetadata *source, // Source header10 psListIterator *keywordsIter // Iterator for header keywords8 static void getMetadata(psMetadata *target, // Target for metadata 9 psMetadata *source, // Source for metadata 10 psListIterator *iterator // Iterator for keywords 11 11 ) 12 12 { 13 psListIteratorSet(keywordsIter, PS_LIST_HEAD); 14 psString keyword; // Header from iteration 15 while ((keyword = psListGetAndIncrement(keywordsIter))) { 16 psMetadataAddItem(target, psMetadataLookup(source, keyword), PS_LIST_TAIL, 0); 13 psListIteratorSet(iterator, PS_LIST_HEAD); 14 psString name; // Name from iteration 15 while ((name = psListGetAndIncrement(iterator))) { 16 psMetadataItem *item = psMetadataLookup(source, name); // Item of interest, or NULL 17 if (item) { 18 psMetadataAddItem(target, item, PS_LIST_TAIL, 0); 19 } 17 20 } 18 21 return; … … 26 29 psMetadata *fpaResults = psMetadataAlloc(); // Metadata to hold the FPA results 27 30 28 psListIterator *headersIter = psListIteratorAlloc(data->headers, PS_LIST_HEAD, false); // Headers iterator 29 31 // Iterators for the headers and concepts 32 psListIterator *headersIter = psListIteratorAlloc(data->headers, PS_LIST_HEAD, false); // Headers 33 psListIterator *conceptsIter = psListIteratorAlloc(data->concepts, PS_LIST_HEAD, false); // Concepts 30 34 31 35 // Iterate through the FPA … … 33 37 if (psListLength(data->headers) > 0 && fpa->hdu && pmFPAReadHeader(fpa, data->inFile)) { 34 38 pmHDU *hdu = fpa->hdu; // HDU for headers 35 getHeaders(fpaResults, hdu->header, headersIter); 39 getMetadata(fpaResults, hdu->header, headersIter); 40 } 41 if (psListLength(data->concepts) > 0 && 42 pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_ALL, false, config->database)) { 43 getMetadata(fpaResults, fpa->concepts, conceptsIter); 36 44 } 37 45 … … 47 55 if (psListLength(data->headers) > 0 && chip->hdu && pmChipReadHeader(chip, data->inFile)) { 48 56 pmHDU *hdu = chip->hdu; // HDU for headers 49 getHeaders(chipResults, hdu->header, headersIter); 57 getMetadata(chipResults, hdu->header, headersIter); 58 } 59 if (psListLength(data->concepts) > 0 && 60 pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_ALL, false, false, config->database)) { 61 getMetadata(chipResults, chip->concepts, conceptsIter); 50 62 } 51 63 … … 61 73 if (psListLength(data->headers) > 0 && cell->hdu && pmCellReadHeader(cell, data->inFile)) { 62 74 pmHDU *hdu = cell->hdu; // HDU for headers 63 get Headers(cellResults, hdu->header, headersIter);75 getMetadata(cellResults, hdu->header, headersIter); 64 76 psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA, 65 77 "Results for cell", cellResults); 78 } 79 if (psListLength(data->concepts) > 0 && 80 pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_ALL, false, config->database)) { 81 getMetadata(cellResults, cell->concepts, conceptsIter); 66 82 } 67 83 … … 174 190 pmFPAFreeData(fpa); 175 191 psFree(headersIter); 192 psFree(conceptsIter); 176 193 177 194 psString output = psMetadataConfigFormat(fpaResults); -
trunk/ppStats/src/ppStatsSetup.c
r7903 r7910 30 30 psMetadataAddStr(arguments, PS_LIST_TAIL, "-cell", PS_META_DUPLICATE_OK, "Cell to inspect", NULL); 31 31 psMetadataAddStr(arguments, PS_LIST_TAIL, "-header", PS_META_DUPLICATE_OK, "Header to look up", NULL); 32 psMetadataAddStr(arguments, PS_LIST_TAIL, "-concept", PS_META_DUPLICATE_OK, "Concept to look up", NULL); 32 33 psMetadataAddBool(arguments, PS_LIST_TAIL, "-mean", 0, "Calculate sample mean", false); 33 34 psMetadataAddBool(arguments, PS_LIST_TAIL, "-stdev", 0, "Calculate sample standard deviation", false); … … 77 78 GET_LIST_FROM_ARGUMENTS("Cell", "-cell", data->cells); 78 79 GET_LIST_FROM_ARGUMENTS("Header", "-header", data->headers); 80 GET_LIST_FROM_ARGUMENTS("Concept", "-concept", data->concepts); 79 81 80 82 // Set the statistics options … … 102 104 103 105 // Open the input file, determine the camera 104 data->inFile = psFitsOpen(data->inName, "r"); 105 if (!data->inFile) { 106 psError(PS_ERR_IO, false, "Unable to open input file %s\n", data->inName); 107 goto die; 108 } 109 psMetadata *header = psFitsReadHeader(NULL, data->inFile); // The FITS (primary) header 110 psMetadata *format = pmConfigCameraFormatFromHeader(config, header); 111 if (!format) { 112 psError(PS_ERR_UNKNOWN, false, "Unable to determine camera format for %s\n", data->inName); 113 psFree(header); 114 goto die; 115 } 116 data->inFPA = pmFPAConstruct(config->camera); 117 if (!data->inFPA) { 118 psError(PS_ERR_UNKNOWN, false, "Unable to construct FPA for %s\n", data->inName); 106 { 107 data->inFile = psFitsOpen(data->inName, "r"); 108 if (!data->inFile) { 109 psError(PS_ERR_IO, false, "Unable to open input file %s\n", data->inName); 110 goto die; 111 } 112 psMetadata *header = psFitsReadHeader(NULL, data->inFile); // The FITS (primary) header 113 psMetadata *format = pmConfigCameraFormatFromHeader(config, header); 114 if (!format) { 115 psError(PS_ERR_UNKNOWN, false, "Unable to determine camera format for %s\n", data->inName); 116 psFree(header); 117 goto die; 118 } 119 data->inFPA = pmFPAConstruct(config->camera); 120 if (!data->inFPA) { 121 psError(PS_ERR_UNKNOWN, false, "Unable to construct FPA for %s\n", data->inName); 122 psFree(header); 123 psFree(format); 124 goto die; 125 } 126 pmFPAview *view = pmFPAAddSourceFromHeader(data->inFPA, header, format); 119 127 psFree(header); 120 128 psFree(format); 121 goto die; 122 } 123 pmFPAview *view = pmFPAAddSourceFromHeader(data->inFPA, header, format); 124 psFree(header); 125 psFree(format); 126 if (!view) { 127 psError(PS_ERR_UNKNOWN, false, "Unable to add input file %s to FPA.\n", data->inName); 128 goto die; 129 } 130 psFree(view); 129 if (!view) { 130 psError(PS_ERR_UNKNOWN, false, "Unable to add input file %s to FPA.\n", data->inName); 131 goto die; 132 } 133 psFree(view); 134 } 131 135 132 136 // Open the output file … … 174 178 175 179 GET_LIST_FROM_RECIPE("CHIPS", data->chips); 176 GET_LIST_FROM_RECIPE("CELLS", data->chips); 177 GET_LIST_FROM_RECIPE("HEADER", data->chips); 180 GET_LIST_FROM_RECIPE("CELLS", data->cells); 181 GET_LIST_FROM_RECIPE("HEADER", data->headers); 182 GET_LIST_FROM_RECIPE("CONCEPT", data->concepts); 178 183 179 184 // Parse the statistics options
Note:
See TracChangeset
for help on using the changeset viewer.
