- Timestamp:
- Jan 31, 2011, 2:52:18 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20101205/magic/remove/src/streaksio.c
r29392 r30447 42 42 sf->class_id = psMetadataLookupStr(&status, config->arguments, "CLASS_ID"); 43 43 44 sf->inImage = sFileOpen(config, stage, "INPUT", NULL, true );44 sf->inImage = sFileOpen(config, stage, "INPUT", NULL, true, false); 45 45 sf->nHDU = sf->inImage->nHDU; 46 46 … … 48 48 // The names of the temporary and recovery files are taken from the input 49 49 char *inputBasename = basename(sf->inImage->name); 50 sf->outImage = sFileOpen(config, stage, "OUTPUT", inputBasename, true );50 sf->outImage = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true); 51 51 52 52 if (remove) { 53 53 // XXX: the recovery file should be required if stage is raw and the replace flag is set 54 54 // that is if the input raw image is to be destroyed 55 sf->recImage = sFileOpen(config, stage, "RECOVERY", inputBasename, false );56 } else { 57 sf->recImage = sFileOpen(config, stage, "RECOVERY.IMAGE", NULL, true );58 } 59 60 sf->inMask = sFileOpen(config, stage, "INPUT.MASK", NULL, false );55 sf->recImage = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false); 56 } else { 57 sf->recImage = sFileOpen(config, stage, "RECOVERY.IMAGE", NULL, true, false); 58 } 59 60 sf->inMask = sFileOpen(config, stage, "INPUT.MASK", NULL, false, false); 61 61 if (sf->inMask && (sf->stage != IPP_STAGE_RAW)) { 62 62 inputBasename = basename(sf->inMask->name); 63 sf->outMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true );63 sf->outMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true); 64 64 if (remove) { 65 sf->recMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false );65 sf->recMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false); 66 66 } else { 67 sf->recMask = sFileOpen(config, stage, "RECOVERY.MASK", NULL, true );67 sf->recMask = sFileOpen(config, stage, "RECOVERY.MASK", NULL, true, false); 68 68 } 69 69 } … … 73 73 // If it doesn't exist, we didn't have a camera mask 74 74 if (remove && sf->inMask && (stage == IPP_STAGE_CHIP)) { 75 sf->inChMask = sFileOpen(config, stage, "INPUT.CHMASK", NULL, false );75 sf->inChMask = sFileOpen(config, stage, "INPUT.CHMASK", NULL, false, false); 76 76 if (sf->inChMask) { 77 77 inputBasename = basename(sf->inChMask->name); 78 sf->outChMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true );79 sf->recChMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false );80 } 81 } 82 83 sf->inWeight = sFileOpen(config, stage, "INPUT.WEIGHT", NULL, false );78 sf->outChMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true); 79 sf->recChMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false); 80 } 81 } 82 83 sf->inWeight = sFileOpen(config, stage, "INPUT.WEIGHT", NULL, false, false); 84 84 if (sf->inWeight) { 85 85 inputBasename = basename(sf->inWeight->name); 86 sf->outWeight = sFileOpen(config, stage, "OUTPUT", inputBasename, true );86 sf->outWeight = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true); 87 87 if (remove) { 88 sf->recWeight = sFileOpen(config, stage, "RECOVERY", inputBasename, false );88 sf->recWeight = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false); 89 89 } else { 90 sf->recWeight = sFileOpen(config, stage, "RECOVERY.WEIGHT", NULL, true );90 sf->recWeight = sFileOpen(config, stage, "RECOVERY.WEIGHT", NULL, true, false); 91 91 } 92 92 } 93 93 if (remove) { 94 sf->inSources = sFileOpen(config, stage, "SOURCES", NULL, false );94 sf->inSources = sFileOpen(config, stage, "SOURCES", NULL, false, false); 95 95 if (sf->inSources) { 96 96 inputBasename = basename(sf->inSources->name); 97 sf->outSources = sFileOpen(config, stage, "OUTPUT", inputBasename, true );97 sf->outSources = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true); 98 98 } 99 99 } … … 121 121 sf->transparentStreaks = psMetadataLookupF64(&status, config->arguments, "TRANSPARENT_STREAKS"); 122 122 123 sf->stats = psMetadataAlloc();124 psString statsFileName= psMetadataLookupStr(&status, config->arguments, "STATS");125 if (statsFileName) {126 sf->statsFile = fopen(statsFileName, "w");127 if (!sf->statsFile) {128 psError(PS_ERR_IO, true, "failed to open stats file %s", statsFileName);129 streaksExit("", PS_EXIT_CONFIG_ERROR);130 }131 }132 133 123 return sf; 134 124 } … … 138 128 { 139 129 freeImages(sf); 130 psFree(sf->stats); 140 131 psFree(sf->diffedPixels); 141 132 psFree(sf->tiles); … … 221 212 222 213 static psString 223 resolveFilename(pmConfig *config, sFile *sfile, bool create )214 resolveFilename(pmConfig *config, sFile *sfile, bool create, bool checkIfDestreaked) 224 215 { 225 216 sfile->inNebulous = IN_NEBULOUS(sfile->name); … … 232 223 // instance. It will get created below in pmConfigConvertFilename 233 224 if ((sfile->resolved_name = nebFind(server, sfile->name)) != NULL) { 234 if ( !nebFileIsDestreaked(sfile)) {225 if (checkIfDestreaked && !nebFileIsDestreaked(sfile)) { 235 226 psError(PS_ERR_IO, false, "attempting to delete file that has not been destreaked %s", sfile->name); 236 227 return NULL; … … 247 238 248 239 sFile *sFileOpen(pmConfig *config, ippStage stage, psString fileSelect, 249 psString outputFilename, bool required )240 psString outputFilename, bool required, bool checkIfDestreaked) 250 241 { 251 242 bool status; … … 322 313 // and the file is to be opened for writing 323 314 if (outputFilename) { 315 sfile->write = true; 324 316 psStringAppend(&sfile->name, "%s%s", name, outputFilename); 325 sfile->resolved_name = resolveFilename(config, sfile, true );317 sfile->resolved_name = resolveFilename(config, sfile, true, checkIfDestreaked); 326 318 if (!sfile->resolved_name) { 327 319 psError(PS_ERR_IO, false, "Failed to resolve filename for %s", sfile->name); … … 335 327 } else { 336 328 sfile->name = psStringCopy(name); 337 sfile->resolved_name = resolveFilename(config, sfile, false );329 sfile->resolved_name = resolveFilename(config, sfile, false, false); 338 330 if (!sfile->resolved_name) { 339 331 psError(PS_ERR_IO, false, "Failed to resolve name for %s", sfile->name); … … 402 394 403 395 void 404 addDestreakKeyword(psMetadata *header )396 addDestreakKeyword(psMetadata *header, bool value) 405 397 { 406 398 psMetadataAddBool(header, PS_LIST_TAIL, "PSDESTRK", PS_META_REPLACE, 407 "Have streaks been removed from image?", true);399 "Have streaks been removed from image?", value); 408 400 } 409 401 … … 416 408 417 409 void 418 copyPHU(streakFiles *sfiles, bool remove )410 copyPHU(streakFiles *sfiles, bool remove, bool destreak) 419 411 { 420 412 psAssert(sfiles->stage == IPP_STAGE_RAW, "copyPHU should only be used for raw stage"); … … 433 425 434 426 // add keyword indicating that streaks have been removed 435 addDestreakKeyword(imageHeader );427 addDestreakKeyword(imageHeader, destreak); 436 428 437 429 if (!psFitsWriteBlank(sfiles->outImage->fits, imageHeader, NULL)) { … … 463 455 } 464 456 // add keyword indicating that streaks have been removed 465 addDestreakKeyword(maskHeader );457 addDestreakKeyword(maskHeader, destreak); 466 458 if (!psFitsWriteBlank(sfiles->outMask->fits, maskHeader, NULL)) { 467 459 psError(PS_ERR_IO, false, "failed to write primary header to %s", … … 493 485 494 486 // add keyword indicating that streaks have been removed 495 addDestreakKeyword(weightHeader );487 addDestreakKeyword(weightHeader, destreak); 496 488 if (!psFitsWriteBlank(sfiles->outWeight->fits, weightHeader, NULL)) { 497 489 psError(PS_ERR_IO, false, "failed to write primary header to %s", … … 683 675 psVector *tiles) 684 676 { 685 if (!sfile ) {677 if (!sfile || !sfile->write) { 686 678 return; 687 679 } … … 861 853 streaksExit("", PS_EXIT_DATA_ERROR); 862 854 } 855 sfile->fits = NULL; 863 856 psFree(sfile->header); 864 857 sfile->header = NULL; … … 1198 1191 weight->data.F32[y][x] = NAN; 1199 1192 } 1193 } else if (weightType == PS_TYPE_F64) { 1194 double weightVal = weight->data.F64[y][x]; 1195 if (!isnan(weightVal)) { 1196 ++nandWeights; 1197 weight->data.F64[y][x] = NAN; 1198 } 1200 1199 } else if(weightType == PS_TYPE_S16) { 1201 1200 double weightVal = weight->data.S16[y][x]; … … 1249 1248 psMetadataAddU16(in->header, PS_LIST_TAIL, "ZBLANK", 0, "", 32767); 1250 1249 } else if (in->image->type.type == PS_TYPE_F32) { 1250 in->exciseValue = NAN; 1251 } else if (in->image->type.type == PS_TYPE_F64) { 1251 1252 in->exciseValue = NAN; 1252 1253 } else {
Note:
See TracChangeset
for help on using the changeset viewer.
