IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9907


Ignore:
Timestamp:
Nov 7, 2006, 5:34:39 PM (20 years ago)
Author:
Paul Price
Message:

Pulling out function that got implemented in psLib

Location:
trunk/ppMerge/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppMerge/src/ppMergeCombine.c

    r9832 r9907  
    7878#endif
    7979
     80// Write fringe extensions
     81static void writeFringes(psMetadata *fringes, // Table of extensions with fringe statistics to write
     82                         psFits *fits   // FITS file to which to write
     83                         )
     84{
     85    assert(fringes);
     86
     87    // Write the fringe extensions
     88    psMetadataIterator *fringesIter = psMetadataIteratorAlloc(fringes, PS_LIST_HEAD, false); // Iterator
     89    psMetadataItem *fringeItem;         // Item from iteration
     90    while ((fringeItem = psMetadataGetAndIncrement(fringesIter))) {
     91        const char *extname = fringeItem->name; // Extension name
     92        psArray *fringe = fringeItem->data.V; // Fringe data (array of fringe components)
     93        if (!pmFringesWriteFits(fits, NULL, fringe, extname)) {
     94            psWarning("Unable to write fringe data to extension %s\n", extname);
     95        }
     96    }
     97
     98    // Clear the list
     99    while (psListLength(fringes->list) > 0) {
     100        psMetadataRemoveIndex(fringes, PS_LIST_TAIL);
     101    }
     102
     103    return;
     104}
     105
     106
    80107// Combine the inputs
    81108bool ppMergeCombine(psImage *scales,    // Scales for each cell of each integration, or NULL
     
    101128    // Iterate over the FPA
    102129    pmFPA *fpa = data->out;             // Output FPA
     130    psMetadata *fringeExtns = psMetadataAlloc(); // List of fringe extensions to write
    103131    pmFPAview *view = pmFPAviewAlloc(0);// View of FPA, for iteration
    104132    int cellNum = -1;                   // Cell number in the whole FPA
     
    296324                psStringAppend(&extname, "FRINGE_%s_%s", chipName, cellName);
    297325
    298                 if (!pmFringesWriteFits(data->outFile, NULL, fringes, extname)) {
    299                     psWarning("Unable to write fringe data to extension %s\n", extname);
    300                 }
    301 
     326                psMetadataAdd(fringeExtns, PS_LIST_TAIL, extname, PS_DATA_UNKNOWN,
     327                              "Fringe data to write", fringes);
    302328                psFree(fringes);
    303329                psFree(extname);
     
    329355                pmCellWrite(cell, data->outFile, config->database, false);
    330356                pmCellFreeData(cell);
     357
     358                if (options->fringe) {
     359                    writeFringes(fringeExtns, data->outFile);
     360                }
    331361            }
    332362        }
     
    344374            pmChipWrite(chip, data->outFile, config->database, false, false);
    345375            pmChipFreeData(chip);
     376
     377            if (options->fringe) {
     378                writeFringes(fringeExtns, data->outFile);
     379            }
    346380        }
    347381    }
     
    357391        pmFPA *fpaIn = data->in->data[i]; // Input FPA
    358392        pmFPAFreeData(fpaIn);
     393
     394        if (options->fringe) {
     395            writeFringes(fringeExtns, data->outFile);
     396        }
    359397    }
    360398    pmFPAFreeData(data->out);
  • trunk/ppMerge/src/ppMergeScaleZero.c

    r9824 r9907  
    1111#include "ppMerge.h"
    1212#include "ppMergeScaleZero.h"
    13 
    14 // Extract a particular statistic from the stats
    15 static inline double getStat(const psStats *stats, // Statistics structure
    16                              psStatsOptions option // Statistic option to return
    17     )
    18 {
    19     switch (option) {
    20       case PS_STAT_SAMPLE_MEAN:
    21         return stats->sampleMean;
    22       case PS_STAT_SAMPLE_MEDIAN:
    23         return stats->sampleMedian;
    24       case PS_STAT_ROBUST_MEDIAN:
    25         return stats->robustMedian;
    26       case PS_STAT_FITTED_MEAN:
    27         return stats->fittedMean;
    28       case PS_STAT_CLIPPED_MEAN:
    29         return stats->clippedMean;
    30       default:
    31         psAbort(__func__, "Invalid statistics option: %x\n", option);
    32     }
    33     return NAN;                         // Token return
    34 }
    35 
    3613
    3714// Get the scale and zero for each chip of each input
     
    262239                    psFree(sample);
    263240                    psFree(sampleMask);
    264                     background->data.F32[i][cellNum] = getStat(bgStats, options->mean);
     241                    background->data.F32[i][cellNum] = psStatsGetValue(bgStats, options->mean);
    265242                    psTrace("ppMerge", 3, "Background for %s, cell %d is %f\n", name, cellNum,
    266243                            background->data.F32[i][cellNum]);
Note: See TracChangeset for help on using the changeset viewer.