Changeset 33415 for branches/meh_branches/ppstack_test/psvideophot/src
- Timestamp:
- Mar 5, 2012, 5:19:48 PM (14 years ago)
- Location:
- branches/meh_branches/ppstack_test
- Files:
-
- 7 edited
- 1 copied
-
. (modified) (1 prop)
-
psvideophot (modified) (1 prop)
-
psvideophot/src (modified) (1 prop)
-
psvideophot/src/Makefile.am (modified) (2 diffs)
-
psvideophot/src/dumpvideo.c (copied) (copied from trunk/psvideophot/src/dumpvideo.c )
-
psvideophot/src/psvideoLoop.c (modified) (10 diffs)
-
psvideophot/src/psvideophotArguments.c (modified) (4 diffs)
-
psvideophot/src/psvideophotParseCamera.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/meh_branches/ppstack_test
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/psvideophot
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20110710/psvideophot (added) merged: 32338 /branches/eam_branches/ipp-20110906/psvideophot (added) merged: 32630 /branches/eam_branches/ipp-20111110/psvideophot (added) merged: 32694
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/psvideophot/src
- Property svn:ignore
-
branches/meh_branches/ppstack_test/psvideophot/src/Makefile.am
r31713 r33415 1 bin_PROGRAMS = psvideophot 1 bin_PROGRAMS = psvideophot \ 2 dumpvideo 2 3 3 4 noinst_HEADERS = \ … … 40 41 psvideophotVersion.c 41 42 43 dumpvideo_CFLAGS = $(PSVIDEOPHOT_CFLAGS) $(PPSTATS_CFLAGS) $(PSASTRO_CFLAGS) $(PSPHOT_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) 44 dumpvideo_LDFLAGS = $(PSVIDEOPHOT_LIBS) $(PSASTRO_LIBS) $(PPSTATS_LIBS) $(PSPHOT_LIBS) $(PSMODULE_LIBS) $(PSLIB_LIBS) 45 dumpvideo_SOURCES = \ 46 dumpvideo.c 47 42 48 CLEANFILES = *~ 43 49 -
branches/meh_branches/ppstack_test/psvideophot/src/psvideoLoop.c
r31813 r33415 44 44 } 45 45 46 psString class_id = psMetadataLookupStr(&status, config->arguments, "CLASS_ID"); 47 psString cell_id = psMetadataLookupStr(&status, config->arguments, "CELL_ID"); 48 46 49 47 50 pmConfigCamerasCull(config, NULL); … … 56 59 } 57 60 61 psArray *output = NULL; 62 58 63 pmChip *chip; // Chip from FPA 59 64 while ((chip = pmFPAviewNextChip(view, input->fpa, 1)) != NULL) { 60 65 psLogMsg ("psvideophotLoop", 4, "Chip %d: %x %x\n", view->chip, chip->file_exists, chip->process); 66 psString chipName = psMetadataLookupStr(&status, chip->concepts, "CHIP.NAME"); 67 if (strcmp(chipName, class_id)) { 68 continue; 69 } 61 70 if (!chip->process || !chip->file_exists) { 62 continue;71 ESCAPE("target chip has no data"); 63 72 } 64 73 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 65 74 ESCAPE("load failure for Chip"); 66 75 } 76 (void) class_id; 67 77 68 78 double threshold = THRESHOLD; … … 72 82 while ((cell = pmFPAviewNextCell(view, input->fpa, 1)) != NULL) { 73 83 psLogMsg ("psvideophotLoop", 5, "Cell %d: %x %x\n", view->cell, cell->file_exists, cell->process); 84 psString cellName = psMetadataLookupStr(&status, cell->concepts, "CELL.NAME"); 85 if (strcmp(cellName, cell_id)) { 86 continue; 87 } 74 88 if (!cell->process || !cell->file_exists) { 75 continue;89 ESCAPE("target cell has no data"); 76 90 } 77 91 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 78 92 ESCAPE("load failure for Cell"); 79 93 } 94 95 psLogMsg("psvideophotLoop", 1, "Found target cell %s %d. %ld readouts\n", cellName, view->cell, cell->readouts->n); 80 96 81 97 // Put version information into the header … … 87 103 88 104 if (cell->readouts->n <2) { 89 continue; 105 psLogMsg("psvideophotLoop", 1, "cell %s has only %ld readouts\n", cellName, cell->readouts->n); 106 ESCAPE("invalid video Cell"); 90 107 } 91 92 psString cellName = psMetadataLookupStr(&status, cell->concepts, "CELL.NAME");93 psLogMsg("psvideophotLoop", 1, "Found video cell %s %d\n", cellName, view->cell);94 108 95 109 // get the position of this cell on the chip … … 114 128 115 129 // go find the video extension data 116 psString video_extension_name = NULL; 117 psStringAppend(&video_extension_name, "video_table_%s", cellName); 130 psString video_extension_name = psMetadataLookupStr(&status, config->arguments, "VIDEOEXTNAME"); 131 if (!video_extension_name) { 132 psStringAppend(&video_extension_name, "video_table_%s", cellName); 133 } 118 134 psArray *video_table = readVideoTable(input, video_extension_name); 119 135 if (!video_table) { … … 121 137 ESCAPE("invalid image file"); 122 138 } 123 psMetadataAddArray(cell->analysis, PS_LIST_TAIL, "VIDEO_DATA", 0, "", video_table); 139 psFree(video_extension_name); 140 // psMetadataAddArray(cell->analysis, PS_LIST_TAIL, "VIDEO_DATA", 0, "", video_table); 141 142 output = (psArray *) psMemIncrRefCounter(video_table); 124 143 125 144 if (cell->readouts->n != video_table->n) { … … 180 199 double cnpix2 = psMetadataLookupS32(&status, row, "cnpix2"); 181 200 201 // avoid errors from unused variables 182 202 (void) frame_start; (void) frame_complete; 183 203 (void) rowpre; (void) cnpix1; (void) cnpix2; (void) fwhm_x; (void) fwhm_y; (void) fwhm; … … 191 211 double star_readout_y = (centroid_y - cnpix2) / yBin; 192 212 213 #ifdef notdef 193 214 printf("%4d %9.2f %9.2f %9.2f %.1f %.1f %9.6f %6.3f %6.3f %6.3f\n", 194 215 frame, flux, snr, sky, star_readout_x, star_readout_y, frame_complete - frame_start, 195 216 fwhm, fwhm_x, fwhm_y); 196 217 #endif 197 218 psStatsInit(stats); 198 219 … … 206 227 double stddev = stats->sampleStdev; 207 228 double median = stats->sampleMedian; 229 double vpFlux = 0; 230 double vpSum = 0; 231 double xy[2] = {0, 0}; 208 232 if (stddev > threshold) { 209 233 210 double sum = 0; 211 // XXX: use a point data type 212 double xy[2]; 213 Centering(readout->image, EDGE, &sum, xy, median); 214 double ourFlux; 215 ourFlux = SubSum(readout->image, xy, median); 216 217 printf("%4d %9.2f %9.2f %9.2f %.1f %.1f %9.2f\n", 218 frame, ourFlux, ourFlux/stddev, median, xy[0], xy[1], stddev); 234 Centering(readout->image, EDGE, &vpSum, xy, median); 235 236 if (isfinite(xy[0]) && isfinite(xy[1])) { 237 vpFlux = SubSum(readout->image, xy, median); 238 } 239 240 // printf("%4d %9.2f %9.2f %9.2f %.1f %.1f %9.2f\n", 241 // frame, vpFlux, vpFlux/median, median, xy[0], xy[1], stddev); 219 242 } else { 220 printf("%4d %9.2f %9.2f %8.2f\n", 221 frame, 0.0, stddev, median); 222 } 243 // printf("%4d %9.2f %9.2f %8.2f\n", 244 // frame, 0.0, stddev, median); 245 } 246 if (frame % 60 == 0) { 247 printf("frame flux sky snr X Y dt fwhm fwhm_x fwhm_y vp_flux vp_median vp_sum vp_stddev vp_x vp_y\n"); 248 } 249 printf("%4d %9.2f %9.2f %9.2f %.1f %.1f %9.6f %6.3f %6.3f %6.3f %9.2f %9.2f %9.2f %9.2f %.1f %.1f\n", 250 frame, flux, sky, snr, star_readout_x, star_readout_y, frame_complete - frame_start, 251 fwhm, fwhm_x, fwhm_y, 252 vpFlux, median, vpSum, stddev, xy[0], xy[1]); 253 psMetadataAddF32(row, PS_LIST_TAIL, "vp_flux", 0, "vp flux", vpFlux); 254 psMetadataAddF32(row, PS_LIST_TAIL, "vp_median", 0, "vp meidan", median); 255 psMetadataAddF32(row, PS_LIST_TAIL, "vp_stddev", 0, "vp meidan", stddev); 256 psMetadataAddF32(row, PS_LIST_TAIL, "vp_sum", 0, "vp sum of source", vpSum); 257 psMetadataAddF32(row, PS_LIST_TAIL, "vp_x", 0, "centroid x from vp", xy[0]); 258 psMetadataAddF32(row, PS_LIST_TAIL, "vp_y", 0, "centroid y from vp", xy[1]); 223 259 } 224 260 psLogMsg ("psvideophotLoop", 5, "Done processing video cell"); … … 247 283 psFree(view); 248 284 249 // Dump configuration 250 psString dump_file = psMetadataLookupStr(&status, config->arguments, "DUMP_CONFIG"); 251 if (dump_file) { 252 if (!pmConfigDump(config, dump_file)) { 253 ESCAPE("Unable to dump configuration."); 254 } 255 } 285 psString outputName = psMetadataLookupStr(&status, config->arguments, "OUTPUT"); 286 psString realName = pmConfigConvertFilename(outputName, config, true, true); 287 if (!realName) { 288 psError(PS_ERR_UNKNOWN, false, "failed to convert filename for %s", outputName); 289 ESCAPE("cannot save output"); 290 } 291 psFits *outFits = psFitsOpen(realName, "w"); 292 if (!outFits) { 293 psError(PS_ERR_UNKNOWN, false, "failed to open output filename for %s", outputName); 294 ESCAPE(" "); 295 } 296 297 psMetadata *outputHeader = lastHDU ? lastHDU->header : NULL; 298 if (!psFitsWriteTable(outFits, outputHeader, output, "videophotemetry")) { 299 psError(PS_ERR_UNKNOWN, false, "failed to write videophotometry table"); 300 ESCAPE("cannot write output"); 301 } 302 psFitsClose(outFits); 256 303 257 304 return true; -
branches/meh_branches/ppstack_test/psvideophot/src/psvideophotArguments.c
r31290 r33415 6 6 7 7 static void usage (void) { 8 fprintf(stderr, "USAGE: psvideophot [-file INPUT.fits] [-list INPUT.txt] OUTPUT \n\n");8 fprintf(stderr, "USAGE: psvideophot [-file INPUT.fits] [-list INPUT.txt] OUTPUT -class_id CLASS_ID -cell_id CELL_ID\n\n"); 9 9 fprintf(stderr, "Optional arguments:\n"); 10 10 fprintf(stderr, "\t-stats STATS.mdc: Output statistics into STATS.mdc\n"); 11 fprintf(stderr, "\t-isfringe: The input image contains fringe data.\n"); 12 fprintf(stderr, "\t-isdark: The input image contains dark data.\n"); 13 fprintf(stderr, "\t-usemask MASKVAL: Use this mask value (override recipe).\n"); 14 fprintf(stderr, "\t-chip CHIPNUM: Only process this chip number.\n"); 15 fprintf(stderr, "\t-norm VALUE: Divide through by this value when done.\n"); 16 fprintf(stderr, "\t-normlist file.mdc: normalizations by class_id.\n"); 17 fprintf(stderr, "\t-video: process video cells\n"); 11 fprintf(stderr, "\t-video_extname VIDEOEXTNAME: EXTNAME for video table\n"); 18 12 fprintf(stderr, "\n"); 19 13 fprintf(stderr, "Input options (single file / file list):\n"); 20 fprintf(stderr, "\t-noisemap/-noisemaplist: Noise Map image.\n");21 fprintf(stderr, "\t-bias/-biaslist: Bias image.\n");22 fprintf(stderr, "\t-dark/-darklist: Dark image.\n");23 fprintf(stderr, "\t-shutter/-shutterlist: Shutter image.\n");24 fprintf(stderr, "\t-flat/-flatlist: Flat image.\n");25 fprintf(stderr, "\t-mask/-masklist: Mask image.\n");26 fprintf(stderr, "\t-fringe/-fringelist: Fringe image and data.\n");27 fprintf(stderr, "\t-linearity/-linearlist: linearity correction file.\n");28 14 fprintf(stderr, "\n"); 29 15 exit (2); … … 63 49 // psMetadata *options = psMetadataAlloc (); 64 50 // psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "PSVIDEOPHOT.OPTIONS", PS_DATA_METADATA, "", options); 51 52 if ((argnum = psArgumentGet(argc, argv, "-class_id"))) { 53 psArgumentRemove(argnum, &argc, argv); 54 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "CLASS_ID", PS_META_REPLACE, 55 "Chip to process", argv[argnum]); 56 psArgumentRemove(argnum, &argc, argv); 57 } else { 58 fprintf(stderr, "-class_id is required\n"); 59 usage(); 60 } 61 if ((argnum = psArgumentGet(argc, argv, "-cell_id"))) { 62 psArgumentRemove(argnum, &argc, argv); 63 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "CELL_ID", PS_META_REPLACE, 64 "Cell to process", argv[argnum]); 65 psArgumentRemove(argnum, &argc, argv); 66 } else { 67 fprintf(stderr, "-cell_id is required\n"); 68 usage(); 69 } 70 if ((argnum = psArgumentGet(argc, argv, "-video_extname"))) { 71 psArgumentRemove(argnum, &argc, argv); 72 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "VIDEOEXTNAME", PS_META_REPLACE, 73 "EXTNAME of video table", argv[argnum]); 74 psArgumentRemove(argnum, &argc, argv); 75 } 65 76 66 77 if ((argnum = psArgumentGet(argc, argv, "-stats"))) { … … 117 128 // the input file is a required argument; if not found, we will exit 118 129 pmConfigFileSetsMD (config->arguments, &argc, argv, "INPUT", "-file", "-list"); 130 pmConfigFileSetsMD (config->arguments, &argc, argv, "ASTROM", "-astrom", "-astromlist"); 119 131 120 132 // if these command-line options are supplied, load the file name lists into config->arguments … … 168 180 169 181 // Add the input and output images (which remain on the command-line) to the arguments list 170 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output image", argv[1]);182 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output table", argv[1]); 171 183 172 184 return config; -
branches/meh_branches/ppstack_test/psvideophot/src/psvideophotParseCamera.c
r31290 r33415 7 7 psvideophotOptions *psvideophotParseCamera(pmConfig *config) 8 8 { 9 bool status = false;10 11 9 if (!psvideophotDefineFile(config, NULL, "PSVIDEOPHOT.INPUT", "INPUT", PM_FPA_FILE_IMAGE, PM_DETREND_TYPE_NONE)) { 12 10 psError(PS_ERR_IO, false, "Can't find an input image source"); … … 16 14 psAssert(input, "We just put it there!"); 17 15 16 #ifdef notyet 18 17 // add recipe options supplied on command line 18 bool status = false; 19 19 psMetadata *recipe = psMetadataLookupPtr(&status, config->recipes, RECIPE_NAME); 20 #endif 20 21 21 22 // parse the options from the metadata format to the psvideophotOptions structure 22 23 psvideophotOptions *options = psvideophotOptionsParse(config); 23 24 24 // the following are defined from the argument list, if given,25 // otherwise they revert to the config information26 // not all input or output images are used in a given recipe27 28 int nThreads = psMetadataLookupS32(&status, config->arguments, "NTHREADS");29 if (nThreads > 0) {30 int nScanRows = psMetadataLookupS32(&status, recipe, "SCAN.ROWS");31 pmDetrendSetThreadTasks(nScanRows);32 }33 34 // the following files are output targets35 pmFPAfile *outImage = pmFPAfileDefineOutput(config, input->fpa, "PSVIDEOPHOT.OUTPUT");36 if (!outImage) {37 psError(PS_ERR_IO, false, _("Unable to generate output file from PSVIDEOPHOT.OUTPUT"));38 psFree(options);39 return NULL;40 }41 if (outImage->type != PM_FPA_FILE_OBJ) {42 psError(PS_ERR_IO, true, "PSVIDEOPHOT.OUTPUT is not of type OBJ");43 psFree(options);44 return NULL;45 }46 47 // XXX should these be bound explicitly to the outImage->fpa rather than the input->fpa?48 pmFPAfile *chipImage = pmFPAfileDefineChipMosaic(config, input->fpa, "PSVIDEOPHOT.CHIP");49 if (!chipImage) {50 psError(PS_ERR_IO, false, _("Unable to generate new file from PSVIDEOPHOT.CHIP"));51 psFree(options);52 return NULL;53 }54 if (chipImage->type != PM_FPA_FILE_OBJ) {55 psError(PS_ERR_IO, true, "PSVIDEOPHOT.CHIP is not of type OBJ");56 psFree(options);57 return NULL;58 }59 60 61 // chipImage -> psphotInput (pmFPAfileDefineFromFile) : fpa is constructed62 // psphotInput -> psphotOutput (pmFPAfileDefineOutputFromFile) : fpa is equated63 // psphotOutput -> psastroInput (pmFPAfileDefineInput) : fpa is ref-copied64 // psastroInput -> psastroModel (pmFPAfileDefineFromArgs : fpa is ref-copied65 // psastroInput -> psastroModel (pmFPAfileDefineFromConf : fpa is constructed66 // psastroInput -> psastroModel (pmFPAfileDefineFromDetDB : fpa is constructed (pmDetrendSelect uses input concepts )67 68 // For photometry, we operate on the chip-mosaicked image69 // we create a copy of the mosaicked image for psphot so we can write out a clean image70 71 72 // this file is just used as a carrier; output files (eg, PSPHOT.RESID) are defined by73 // psphotDefineFiles74 pmFPAfile *psphotInput = pmFPAfileDefineFromFile (config, chipImage, 1, 1, "PSPHOT.INPUT");75 PS_ASSERT (psphotInput, false);76 77 // specify the number of psphot input images78 psMetadataAddS32 (config->arguments, PS_LIST_TAIL, "PSPHOT.INPUT.NUM", PS_META_REPLACE, "number of inputs", 1);79 80 // define associated psphot input/output files81 if (!psphotDefineFiles (config, psphotInput)) {82 psError(PSPHOT_ERR_CONFIG, false,83 "Trouble defining the additional input/output files for psphot");84 return false;85 }86 87 88 // For photometry, we operate on the chip-mosaicked image89 90 91 // save any of these files?92 outImage->save = options->BaseFITS;93 94 95 chipImage->save = options->ChipFITS;96 97 98 99 // outImage is used as a carrier: input to chipImage -> require the data to remain at the CHIP level100 outImage->freeLevel = PS_MIN(outImage->freeLevel, PM_FPA_LEVEL_CHIP);101 outImage->dataLevel = outImage->freeLevel;102 outImage->fileLevel = PS_MIN(outImage->fileLevel, outImage->dataLevel);103 104 // outMask and outVariance must be freed at the same level as outImage (all freed by pmFPAFreeData)105 106 107 // the input data is the same as the outImage data : force the free levels to match108 input->freeLevel = PS_MIN(outImage->freeLevel, input->freeLevel);109 110 // define the binned target files (which may just be carriers for some camera configurations)111 112 // Chip selection: turn on only the chips specified (pass status to suppress missing-key log msg)113 char *chipLine = psMetadataLookupStr(&status, config->arguments, "CHIP_SELECTIONS");114 psArray *chips = psStringSplitArray(chipLine, ",", false);115 if (chips->n > 0) {116 pmFPASelectChip (input->fpa, -1, true); // deselect all chips117 for (int i = 0; i < chips->n; i++) {118 int chipNum = atoi(chips->data[i]);119 if (! pmFPASelectChip(input->fpa, chipNum, false)) {120 psError(PS_ERR_IO, false, "Chip number %d doesn't exist in camera.\n", chipNum);121 psFree(options);122 return false;123 }124 }125 }126 psFree (chips);127 128 if (psMetadataLookupBool(NULL, config->arguments, "INPUT_IS_FRINGE")) {129 // It's a fringe file, so change the file type130 input->type = PM_FPA_FILE_FRINGE;131 outImage->type = PM_FPA_FILE_FRINGE;132 }133 if (psMetadataLookupBool(NULL, config->arguments, "INPUT_IS_DARK")) {134 // It's a dark file, so change the file type135 input->type = PM_FPA_FILE_DARK;136 outImage->type = PM_FPA_FILE_DARK;137 // Turn off compression --- there are just too many nasties that can happen138 psFree(outImage->compression);139 outImage->compression = NULL;140 psFree(outImage->options);141 outImage->options = NULL;142 }143 144 // Turn off mask and variance output if we're not doing anything interesting145 146 if (psTraceGetLevel("psvideophot.config") > 0) {147 // Get a look inside all the files.148 psMetadataIterator *filesIter = psMetadataIteratorAlloc(config->files, PS_LIST_HEAD, NULL);149 psMetadataItem *item; // Item from iteration150 fprintf(stderr, "Files:\n");151 while ((item = psMetadataGetAndIncrement(filesIter))) {152 pmFPAfile *file = item->data.V; // File of interest153 fprintf(stderr, "%s: %p %p %p (%p) %p\n", file->name,154 file->src, file->fpa,155 file->camera, file->fpa->camera, file->format);156 }157 psFree(filesIter);158 }159 160 // Change the input dark type between the old (IMAGE) and new (multi-DARK).161 // Hopefully this is a temporary change until we all move over to using the new dark types162 bool mdok; // Status of MD lookup163 if (options->doDark && psMetadataLookupBool(&mdok, recipe, "OLDDARK")) {164 pmFPAfile *dark = psMetadataLookupPtr(NULL, config->files, "PSVIDEOPHOT.DARK");165 assert(dark);166 dark->type = PM_FPA_FILE_IMAGE;167 }168 169 25 return (options); 170 26 }
Note:
See TracChangeset
for help on using the changeset viewer.
