IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 31, 2011, 2:52:18 PM (15 years ago)
Author:
eugene
Message:

merging changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20101205/magic/remove/src/streaksio.c

    r29392 r30447  
    4242    sf->class_id = psMetadataLookupStr(&status, config->arguments, "CLASS_ID");
    4343
    44     sf->inImage = sFileOpen(config, stage, "INPUT", NULL, true);
     44    sf->inImage = sFileOpen(config, stage, "INPUT", NULL, true, false);
    4545    sf->nHDU = sf->inImage->nHDU;
    4646
     
    4848    // The names of the temporary and recovery files are taken from the input
    4949    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);
    5151
    5252    if (remove) {
    5353        // XXX: the recovery file should be required if stage is raw and the replace flag is set
    5454        // 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);
    6161    if (sf->inMask && (sf->stage != IPP_STAGE_RAW)) {
    6262        inputBasename = basename(sf->inMask->name);
    63         sf->outMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true);
     63        sf->outMask = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true);
    6464        if (remove) {
    65             sf->recMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false);
     65            sf->recMask = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false);
    6666        } else {
    67             sf->recMask = sFileOpen(config, stage, "RECOVERY.MASK", NULL, true);
     67            sf->recMask = sFileOpen(config, stage, "RECOVERY.MASK", NULL, true, false);
    6868        }
    6969    }
     
    7373    // If it doesn't exist, we didn't have a camera mask
    7474    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);
    7676        if (sf->inChMask) {
    7777            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);
    8484    if (sf->inWeight) {
    8585        inputBasename = basename(sf->inWeight->name);
    86         sf->outWeight = sFileOpen(config, stage, "OUTPUT", inputBasename, true);
     86        sf->outWeight = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true);
    8787        if (remove) {
    88             sf->recWeight = sFileOpen(config, stage, "RECOVERY", inputBasename, false);
     88            sf->recWeight = sFileOpen(config, stage, "RECOVERY", inputBasename, false, false);
    8989        } else {
    90             sf->recWeight = sFileOpen(config, stage, "RECOVERY.WEIGHT", NULL, true);
     90            sf->recWeight = sFileOpen(config, stage, "RECOVERY.WEIGHT", NULL, true, false);
    9191        }
    9292    }
    9393    if (remove) {
    94         sf->inSources = sFileOpen(config, stage, "SOURCES", NULL, false);
     94        sf->inSources = sFileOpen(config, stage, "SOURCES", NULL, false, false);
    9595        if (sf->inSources) {
    9696            inputBasename = basename(sf->inSources->name);
    97             sf->outSources = sFileOpen(config, stage, "OUTPUT", inputBasename, true);
     97            sf->outSources = sFileOpen(config, stage, "OUTPUT", inputBasename, true, true);
    9898        }
    9999    }
     
    121121    sf->transparentStreaks = psMetadataLookupF64(&status, config->arguments, "TRANSPARENT_STREAKS");
    122122
    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 
    133123    return sf;
    134124}
     
    138128{
    139129    freeImages(sf);
     130    psFree(sf->stats);
    140131    psFree(sf->diffedPixels);
    141132    psFree(sf->tiles);
     
    221212
    222213static psString
    223 resolveFilename(pmConfig *config, sFile *sfile, bool create)
     214resolveFilename(pmConfig *config, sFile *sfile, bool create, bool checkIfDestreaked)
    224215{
    225216    sfile->inNebulous = IN_NEBULOUS(sfile->name);
     
    232223            // instance. It will get created below in pmConfigConvertFilename
    233224            if ((sfile->resolved_name = nebFind(server, sfile->name)) != NULL) {
    234                 if (!nebFileIsDestreaked(sfile)) {
     225                if (checkIfDestreaked && !nebFileIsDestreaked(sfile)) {
    235226                    psError(PS_ERR_IO, false, "attempting to delete file that has not been destreaked %s", sfile->name);
    236227                    return NULL;
     
    247238
    248239sFile *sFileOpen(pmConfig *config, ippStage stage, psString fileSelect,
    249     psString outputFilename, bool required)
     240    psString outputFilename, bool required, bool checkIfDestreaked)
    250241{
    251242    bool status;
     
    322313    // and the file is to be opened for writing
    323314    if (outputFilename) {
     315        sfile->write = true;
    324316        psStringAppend(&sfile->name, "%s%s", name, outputFilename);
    325         sfile->resolved_name = resolveFilename(config, sfile, true);
     317        sfile->resolved_name = resolveFilename(config, sfile, true, checkIfDestreaked);
    326318        if (!sfile->resolved_name) {
    327319            psError(PS_ERR_IO, false, "Failed to resolve filename for %s", sfile->name);
     
    335327    } else {
    336328        sfile->name = psStringCopy(name);
    337         sfile->resolved_name = resolveFilename(config, sfile, false);
     329        sfile->resolved_name = resolveFilename(config, sfile, false, false);
    338330        if (!sfile->resolved_name) {
    339331            psError(PS_ERR_IO, false, "Failed to resolve name for %s", sfile->name);
     
    402394
    403395void
    404 addDestreakKeyword(psMetadata *header)
     396addDestreakKeyword(psMetadata *header, bool value)
    405397{
    406398    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);
    408400}
    409401
     
    416408
    417409void
    418 copyPHU(streakFiles *sfiles, bool remove)
     410copyPHU(streakFiles *sfiles, bool remove, bool destreak)
    419411{
    420412    psAssert(sfiles->stage == IPP_STAGE_RAW, "copyPHU should only be used for raw stage");
     
    433425
    434426    // add keyword indicating that streaks have been removed
    435     addDestreakKeyword(imageHeader);
     427    addDestreakKeyword(imageHeader, destreak);
    436428
    437429    if (!psFitsWriteBlank(sfiles->outImage->fits, imageHeader, NULL)) {
     
    463455        }
    464456        // add keyword indicating that streaks have been removed
    465         addDestreakKeyword(maskHeader);
     457        addDestreakKeyword(maskHeader, destreak);
    466458        if (!psFitsWriteBlank(sfiles->outMask->fits, maskHeader, NULL)) {
    467459            psError(PS_ERR_IO, false, "failed to write primary header to %s",
     
    493485
    494486        // add keyword indicating that streaks have been removed
    495         addDestreakKeyword(weightHeader);
     487        addDestreakKeyword(weightHeader, destreak);
    496488        if (!psFitsWriteBlank(sfiles->outWeight->fits, weightHeader, NULL)) {
    497489            psError(PS_ERR_IO, false, "failed to write primary header to %s",
     
    683675    psVector *tiles)
    684676{
    685     if (!sfile) {
     677    if (!sfile || !sfile->write) {
    686678        return;
    687679    }
     
    861853        streaksExit("", PS_EXIT_DATA_ERROR);
    862854    }
     855    sfile->fits = NULL;
    863856    psFree(sfile->header);
    864857    sfile->header = NULL;
     
    11981191                                weight->data.F32[y][x] = NAN;
    11991192                            }
     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                            }
    12001199                        } else if(weightType == PS_TYPE_S16) {
    12011200                            double weightVal = weight->data.S16[y][x];
     
    12491248        psMetadataAddU16(in->header, PS_LIST_TAIL, "ZBLANK", 0, "", 32767);
    12501249    } else if (in->image->type.type == PS_TYPE_F32) {
     1250        in->exciseValue = NAN;
     1251    } else if (in->image->type.type == PS_TYPE_F64) {
    12511252        in->exciseValue = NAN;
    12521253    } else {
Note: See TracChangeset for help on using the changeset viewer.