IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 30315


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.

Location:
trunk/magic/remove/src
Files:
8 edited

Legend:

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

    r28043 r30315  
    5858    psString source = streaksSource();   // Software source
    5959
    60     psMetadataAddStr(header, PS_LIST_TAIL, "STREAK_V", 0, NULL, source);
     60    psMetadataAddStr(header, PS_LIST_TAIL, "STREAK_V", PS_META_REPLACE, NULL, source);
    6161   
    6262    psStringPrepend(&version, "%s version: ", streaksProgram);
  • trunk/magic/remove/src/streakscompare.c

    r26477 r30315  
    1818    ippStage stage = psMetadataLookupS32(&status, config->arguments, "STAGE");
    1919
    20     sFile *file1 = sFileOpen(config, stage, "INPUT1", NULL, true);
    21     sFile *file2 = sFileOpen(config, stage, "INPUT2", NULL, true);
     20    sFile *file1 = sFileOpen(config, stage, "INPUT1", NULL, true, false);
     21    sFile *file2 = sFileOpen(config, stage, "INPUT2", NULL, true, false);
    2222
    2323    int ncomponents;
  • 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);
  • trunk/magic/remove/src/streaksio.h

    r26408 r30315  
    55
    66sFile *sFileOpen(pmConfig *config, ippStage stage, psString fileSelect,
    7     psString outputFilename, bool required);
     7    psString outputFilename, bool required, bool checkIfDestreaked);
    88
    99void closeImages(streakFiles *sfiles);
     
    1212
    1313void readImage(sFile *sfile, int extnum, ippStage stage, bool isMask);
    14 void copyPHU(streakFiles *sfiles, bool remove);
     14void copyPHU(streakFiles *sfiles, bool remove, bool destreaked);
    1515void copyTable(sFile *out, sFile *in, int extnum);
    1616void copyFitsOptions(sFile *out, sFile *rec, sFile *in, psVector *tiles);
     
    2424void readImageFrom_pmFile(streakFiles *sf);
    2525
    26 void addDestreakKeyword(psMetadata *);
     26void addDestreakKeyword(psMetadata *, bool value);
    2727void addRecoveryKeyword(psMetadata *);
    2828
  • trunk/magic/remove/src/streaksrelease.c

    r27468 r30315  
    2424    if (sfiles->stage == IPP_STAGE_RAW) {
    2525        // copy PHU to output files
    26         copyPHU(sfiles, true);
     26        copyPHU(sfiles, false, true);
    2727
    2828        // advance to the first image extension
  • trunk/magic/remove/src/streaksremove.c

    r30263 r30315  
    9393        // Raw files have a phu and multiple extensions, one per chip
    9494        // Since this is a raw file, copy it's PHU to output files
    95         copyPHU(sfiles, true);
     95        copyPHU(sfiles, true, true);
    9696
    9797        // advance to the first image extension
     
    617617        addRecoveryKeyword(sf->recImage->header);
    618618    }
    619     addDestreakKeyword(sf->outImage->header);
     619    addDestreakKeyword(sf->outImage->header, true);
    620620
    621621    if (!SFILE_IS_IMAGE(sf->inImage)) {
     
    643643                addRecoveryKeyword(sf->recMask->header);
    644644            }
    645             addDestreakKeyword(sf->outMask->header);
     645            addDestreakKeyword(sf->outMask->header, true);
    646646            // Note: we don't excise the mask pixels even if exciseAll is true.
    647647            setupImageRefs(sf->outMask, sf->recMask, sf->inMask, sf->extnum, false);
     
    675675            addRecoveryKeyword(sf->recWeight->header);
    676676        }
    677         addDestreakKeyword(sf->outWeight->header);
     677        addDestreakKeyword(sf->outWeight->header, true);
    678678        setupImageRefs(sf->outWeight, sf->recWeight, sf->inWeight, sf->extnum, exciseAll);
    679679
     
    916916            streaksExit("", PS_EXIT_DATA_ERROR);
    917917        }
    918         addDestreakKeyword(header);
     918        addDestreakKeyword(header, true);
    919919
    920920        if (!psFitsWriteBlank(out->fits, header, extname)) {
     
    977977        psArrayRealloc(outTable, j);
    978978
    979         addDestreakKeyword(header);
     979        addDestreakKeyword(header, true);
    980980        if (psArrayLength(outTable) > 0) {
    981981            printf("Censored %d sources\n", numCensored);
  • trunk/magic/remove/src/streaksremove.h

    r27752 r30315  
    1818    psString    name;
    1919    bool        inNebulous;
     20    bool        write;
    2021    psFits      *fits;
    2122    int         nHDU;
  • trunk/magic/remove/src/streaksreplace.c

    r26477 r30315  
    3636    if (sfiles->stage == IPP_STAGE_RAW) {
    3737        // copy PHU to output files
    38         copyPHU(sfiles, false);
     38        copyPHU(sfiles, false, false);
    3939
    4040        // advance to the first image extension
     
    296296
    297297    sf->outImage->header = (psMetadata*) psMemIncrRefCounter(sf->inImage->header);
     298    addDestreakKeyword(sf->outImage->header, false);
    298299
    299300    if (!SFILE_IS_IMAGE(sf->inImage)) {
     
    317318        readImage(sf->recMask, sf->extnum, sf->stage, true);
    318319        sf->outMask->header = (psMetadata*) psMemIncrRefCounter(sf->inMask->header);
     320       
     321        addDestreakKeyword(sf->outMask->header, false);
    319322
    320323        // XXX: TODO
     
    329332
    330333        sf->outWeight->header = (psMetadata*) psMemIncrRefCounter(sf->inWeight->header);
     334        addDestreakKeyword(sf->outWeight->header, false);
    331335        setupImageRefs(sf->outMask, NULL, sf->inMask, sf->extnum, false);
    332336
Note: See TracChangeset for help on using the changeset viewer.