IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 20, 2011, 10:25:37 AM (15 years ago)
Author:
bills
Message:

Various changes to make the handling of recovery images (saved exised pixels) work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/magic/remove/src/streaksio.c

    r30263 r30315  
    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    }
     
    212212
    213213static psString
    214 resolveFilename(pmConfig *config, sFile *sfile, bool create)
     214resolveFilename(pmConfig *config, sFile *sfile, bool create, bool checkIfDestreaked)
    215215{
    216216    sfile->inNebulous = IN_NEBULOUS(sfile->name);
     
    223223            // instance. It will get created below in pmConfigConvertFilename
    224224            if ((sfile->resolved_name = nebFind(server, sfile->name)) != NULL) {
    225                 if (!nebFileIsDestreaked(sfile)) {
     225                if (checkIfDestreaked && !nebFileIsDestreaked(sfile)) {
    226226                    psError(PS_ERR_IO, false, "attempting to delete file that has not been destreaked %s", sfile->name);
    227227                    return NULL;
     
    238238
    239239sFile *sFileOpen(pmConfig *config, ippStage stage, psString fileSelect,
    240     psString outputFilename, bool required)
     240    psString outputFilename, bool required, bool checkIfDestreaked)
    241241{
    242242    bool status;
     
    313313    // and the file is to be opened for writing
    314314    if (outputFilename) {
     315        sfile->write = true;
    315316        psStringAppend(&sfile->name, "%s%s", name, outputFilename);
    316         sfile->resolved_name = resolveFilename(config, sfile, true);
     317        sfile->resolved_name = resolveFilename(config, sfile, true, checkIfDestreaked);
    317318        if (!sfile->resolved_name) {
    318319            psError(PS_ERR_IO, false, "Failed to resolve filename for %s", sfile->name);
     
    326327    } else {
    327328        sfile->name = psStringCopy(name);
    328         sfile->resolved_name = resolveFilename(config, sfile, false);
     329        sfile->resolved_name = resolveFilename(config, sfile, false, false);
    329330        if (!sfile->resolved_name) {
    330331            psError(PS_ERR_IO, false, "Failed to resolve name for %s", sfile->name);
     
    393394
    394395void
    395 addDestreakKeyword(psMetadata *header)
     396addDestreakKeyword(psMetadata *header, bool value)
    396397{
    397398    psMetadataAddBool(header, PS_LIST_TAIL, "PSDESTRK", PS_META_REPLACE,
    398         "Have streaks been removed from image?", true);
     399        "Have streaks been removed from image?", value);
    399400}
    400401
     
    407408
    408409void
    409 copyPHU(streakFiles *sfiles, bool remove)
     410copyPHU(streakFiles *sfiles, bool remove, bool destreak)
    410411{
    411412    psAssert(sfiles->stage == IPP_STAGE_RAW, "copyPHU should only be used for raw stage");
     
    424425
    425426    // add keyword indicating that streaks have been removed
    426     addDestreakKeyword(imageHeader);
     427    addDestreakKeyword(imageHeader, destreak);
    427428
    428429    if (!psFitsWriteBlank(sfiles->outImage->fits, imageHeader, NULL)) {
     
    454455        }
    455456        // add keyword indicating that streaks have been removed
    456         addDestreakKeyword(maskHeader);
     457        addDestreakKeyword(maskHeader, destreak);
    457458        if (!psFitsWriteBlank(sfiles->outMask->fits, maskHeader, NULL)) {
    458459            psError(PS_ERR_IO, false, "failed to write primary header to %s",
     
    484485
    485486        // add keyword indicating that streaks have been removed
    486         addDestreakKeyword(weightHeader);
     487        addDestreakKeyword(weightHeader, destreak);
    487488        if (!psFitsWriteBlank(sfiles->outWeight->fits, weightHeader, NULL)) {
    488489            psError(PS_ERR_IO, false, "failed to write primary header to %s",
     
    674675    psVector *tiles)
    675676{
    676     if (!sfile) {
     677    if (!sfile || !sfile->write) {
    677678        return;
    678679    }
     
    12421243    } else if (in->image->type.type == PS_TYPE_F32) {
    12431244        in->exciseValue = NAN;
     1245    } else if (in->image->type.type == PS_TYPE_F64) {
     1246        in->exciseValue = NAN;
    12441247    } else {
    12451248        psError(PS_ERR_PROGRAMMING, true, "unexpected image type found: %d\n", in->image->type.type);
Note: See TracChangeset for help on using the changeset viewer.