IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 17, 2009, 12:08:50 PM (17 years ago)
Author:
beaumont
Message:

merged with head

Location:
branches/cnb_branches/cnb_branch_20090301
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branches/cnb_branch_20090301

  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/Makefile.am

    r19586 r23352  
    11bin_PROGRAMS = ppMerge
    22
    3 ppMerge_CFLAGS = $(PPMERGE_CFLAGS) $(PPSTATS_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS)
     3# PPMERGE_VERSION=`if [ -e ../../VERSION ]; then cat ../../VERSION; else svnversion; fi`
     4# PPMERGE_BRANCH=`if [ -e ../../BRANCH ]; then cat ../../BRANCH; else svn info | sed -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'; fi`
     5# PPMERGE_SOURCE=`if [ -e ../../SOURCE ]; then cat ../../SOURCE; else svn info | sed -n -e 's/Repository UUID: // p'; fi`
     6#
     7# # Force recompilation of ppMergeVersion.c, since it gets the version information
     8# ppMergeVersion.c: FORCE
     9#       touch ppMergeVersion.c
     10# FORCE: ;
     11
     12ppMerge_CFLAGS = $(PPMERGE_CFLAGS) $(PPSTATS_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) -DPPMERGE_VERSION=$(SVN_VERSION) -DPPMERGE_BRANCH=$(SVN_BRANCH) -DPPMERGE_SOURCE=$(SVN_SOURCE)
    413ppMerge_LDFLAGS = $(PPMERGE_LIBS) $(PPSTATS_LIBS) $(PSMODULE_LIBS) $(PSLIB_LIBS)
    514
     
    1423        ppMergeLoop_Threaded.c  \
    1524        ppMergeSetThreads.c     \
    16         ppMergeMask.c
     25        ppMergeMask.c           \
     26        ppMergeVersion.c
    1727
    1828#       ppMergeLoop.c           
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMerge.c

    r21244 r23352  
    3838        goto die;
    3939    }
     40
     41    ppMergeVersionPrint();
    4042
    4143    ppMergeType type = psMetadataLookupS32(NULL, config->arguments, "TYPE"); ///< Type of frame
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMerge.h

    r21244 r23352  
    2828/// @{
    2929
    30 #define TIMERNAME "ppMerge"             ///< Name for timer 
    31 #define PPMERGE_RECIPE "PPMERGE"        ///< Recipe name 
    32 #define THREADED 1                      ///< Compile with threads? 
     30#define TIMERNAME "ppMerge"             ///< Name for timer
     31#define PPMERGE_RECIPE "PPMERGE"        ///< Recipe name
     32#define THREADED 1                      ///< Compile with threads?
    3333
    3434/**
     
    3636 */
    3737typedef enum {
    38     PPMERGE_TYPE_UNKNOWN,               ///< Unknown type 
    39     PPMERGE_TYPE_BIAS,                  ///< Bias frame 
    40     PPMERGE_TYPE_DARK,                  ///< (Multi-)Dark frame 
    41     PPMERGE_TYPE_MASK,                  ///< Mask frame 
    42     PPMERGE_TYPE_SHUTTER,               ///< Shutter frame 
     38    PPMERGE_TYPE_UNKNOWN,               ///< Unknown type
     39    PPMERGE_TYPE_BIAS,                  ///< Bias frame
     40    PPMERGE_TYPE_DARK,                  ///< (Multi-)Dark frame
     41    PPMERGE_TYPE_MASK,                  ///< Mask frame
     42    PPMERGE_TYPE_SHUTTER,               ///< Shutter frame
    4343    PPMERGE_TYPE_FLAT,                  ///< Flat-field frame (dome or sky)
    44     PPMERGE_TYPE_FRINGE,                ///< Fringe frame 
     44    PPMERGE_TYPE_FRINGE,                ///< Fringe frame
    4545} ppMergeType;
    4646
     
    4949 */
    5050typedef enum {
    51     PPMERGE_FILES_ALL,                  ///< All files 
    52     PPMERGE_FILES_INPUT,                ///< Input files 
    53     PPMERGE_FILES_OUTPUT                ///< Output files 
     51    PPMERGE_FILES_ALL,                  ///< All files
     52    PPMERGE_FILES_INPUT,                ///< Input files
     53    PPMERGE_FILES_OUTPUT                ///< Output files
    5454} ppMergeFiles;
    5555
     
    6060 */
    6161typedef struct {
    62     psArray *readouts;                  ///< Input readouts 
    63     bool read;                          ///< Has the scan been read? 
    64     bool busy;                          ///< Is the scan being processed? 
    65     int firstScan;                      ///< First row of the chunk to be read for this group 
    66     int lastScan;                       ///< Last row of the chunk to be read for this group 
     62    psArray *readouts;                  ///< Input readouts
     63    bool read;                          ///< Has the scan been read?
     64    bool busy;                          ///< Is the scan being processed?
     65    int firstScan;                      ///< First row of the chunk to be read for this group
     66    int lastScan;                       ///< Last row of the chunk to be read for this group
    6767} ppMergeFileGroup;
    6868
     
    7171 */
    7272bool ppMergeArguments(int argc, char *argv[], ///< Command-line arguments
    73                       pmConfig *config  ///< Configuration 
     73                      pmConfig *config  ///< Configuration
    7474    );
    7575
     
    7777 * Set up camera files
    7878 */
    79 bool ppMergeCamera(pmConfig *config     ///< Configuration 
     79bool ppMergeCamera(pmConfig *config     ///< Configuration
    8080    );
    8181
     
    8383 * Measure scale and zero-points
    8484 */
    85 bool ppMergeScaleZero(pmConfig *config  ///< Configuration 
     85bool ppMergeScaleZero(pmConfig *config  ///< Configuration
    8686    );
    8787
     
    8989 * Main loop to do the merging
    9090 */
    91 bool ppMergeLoop(pmConfig *config       ///< Configuration 
     91bool ppMergeLoop(pmConfig *config       ///< Configuration
    9292    );
    9393
     
    9595 * Main loop for masks
    9696 */
    97 bool ppMergeMask(pmConfig *config       ///< Configuration 
     97bool ppMergeMask(pmConfig *config       ///< Configuration
    9898    );
    9999
     
    101101 * Read nominated input file
    102102 */
    103 bool ppMergeFileReadInput(pmConfig *config, ///< Configuration 
    104                           pmReadout *readout, ///< Readout into which to read 
    105                           int num,      ///< Number of file in sequence 
    106                           int rows      ///< Number of rows to read at once 
     103bool ppMergeFileReadInput(pmConfig *config, ///< Configuration
     104                          pmReadout *readout, ///< Readout into which to read
     105                          int num,      ///< Number of file in sequence
     106                          int rows      ///< Number of rows to read at once
    107107    );
    108108
     
    110110 * Open nominated input file
    111111 */
    112 bool ppMergeFileOpenInput(pmConfig *config, ///< Configuration 
    113                           const pmFPAview *view, ///< View to open 
    114                           int num       ///< Number of file in sequence 
     112bool ppMergeFileOpenInput(pmConfig *config, ///< Configuration
     113                          const pmFPAview *view, ///< View to open
     114                          int num       ///< Number of file in sequence
    115115    );
    116116
     
    166166bool ppMergeSetThreads(void);
    167167
     168
     169/// Return software version
     170psString ppMergeVersion(void);
     171
     172/// Return software source
     173psString ppMergeSource(void);
     174
     175/// Return detailed software version information
     176psString ppMergeVersionLong(void);
     177
     178/// Populate a FITS header with version information
     179bool ppMergeVersionHeader(
     180    psMetadata *header                  ///< Header to populate
     181    );
     182
     183/// Print version information
     184void ppMergeVersionPrint(void);
     185
     186
    168187///@}
    169188#endif
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeLoop_Threaded.c

    r21365 r23352  
    137137    assert(output && output->fpa);
    138138    pmFPA *outFPA = output->fpa;        ///< Output FPA
     139    pmHDU *lastHDU = NULL;              // Last HDU that was updated
    139140    int cellNum = 0;                    ///< Index of cell
    140141    if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
     
    156157                // No data here
    157158                continue;
     159            }
     160
     161            // Update the header
     162            {
     163                pmHDU *hdu = pmHDUGetHighest(outFPA, outChip, outCell); // HDU for file
     164                if (hdu && hdu != lastHDU) {
     165                    ppMergeVersionHeader(hdu->header);
     166                    lastHDU = hdu;
     167                }
    158168            }
    159169
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeMask.c

    r21365 r23352  
    1616                      const pmFPAview *view, ///< View to chip
    1717                      bool writeOut,     ///< Write output?
     18                      pmHDU **lastHDU,   ///< HDU last updated
    1819                      psRandom *rng,    ///< Random number generator
    1920                      psMetadata *stats ///< Statistics output
     
    9697                    i, inView->chip, inView->cell);
    9798
     99            // Update the header
     100            {
     101                pmHDU *hdu = pmHDUGetHighest(outCell->parent->parent, outCell->parent, outCell); // File HDU
     102                if (hdu && hdu != *lastHDU) {
     103                    ppMergeVersionHeader(hdu->header);
     104                    *lastHDU = hdu;
     105                }
     106            }
     107
    98108            if (!pmFPAfileIOChecks(config, inView, PM_FPA_BEFORE)) {
    99109                psFree(inView);
     
    359369
    360370    pmFPAview *view = pmFPAviewAlloc(0); ///< View to component of interest
    361     psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); ///< Random number generator
     371    psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); ///< Random number generator
    362372
    363373    psMetadata *stats = NULL;           ///< Statistics for output
     
    395405    assert(output && output->fpa);
    396406    pmFPA *outFPA = output->fpa;        ///< Output FPA
     407    pmHDU *lastHDU = NULL;              // Last HDU updated
    397408
    398409    if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
     
    409420
    410421        for (int i = 0; i < iter; i++) {
    411             if (!mergeMask(config, view, (i == iter - 1), rng, stats)) {
     422            if (!mergeMask(config, view, (i == iter - 1), &lastHDU, rng, stats)) {
    412423                psError(PS_ERR_UNKNOWN, false, "Unable to merge chip %d", view->chip);
    413424                goto PPMERGE_MASK_ERROR;
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeScaleZero.c

    r21365 r23352  
    5151        break;
    5252    }
    53     psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); ///< Random number generator
     53    psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); ///< Random number generator
    5454    pmFPAview *view = NULL;             ///< View into FPA
    5555
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeVersion.c

    r21244 r23352  
    2222#include "ppMergeVersion.h"
    2323
    24 static const char *cvsTag = "$Name: not supported by cvs2svn $";///< CVS tag name
     24#ifndef PPMERGE_VERSION
     25#error "PPMERGE_VERSION is not set"
     26#endif
     27#ifndef PPMERGE_BRANCH
     28#error "PPMERGE_BRANCH is not set"
     29#endif
     30#ifndef PPMERGE_SOURCE
     31#error "PPMERGE_SOURCE is not set"
     32#endif
     33
     34#define xstr(s) str(s)
     35#define str(s) #s
    2536
    2637psString ppMergeVersion(void)
    2738{
    28     psString version = NULL;            ///< Version, to return
    29     psStringAppend(&version, "%s-%s",PACKAGE_NAME,PACKAGE_VERSION);
    30     return version;
     39    char *value = NULL;
     40    psStringAppend(&value, "%s@%s", xstr(PPMERGE_BRANCH), xstr(PPMERGE_VERSION));
     41    return value;
     42}
     43
     44psString ppMergeSource(void)
     45{
     46    return psStringCopy(xstr(PPMERGE_SOURCE));
    3147}
    3248
    3349psString ppMergeVersionLong(void)
    3450{
    35     psString version = ppMergeVersion(); ///< Version, to return
    36     psString tag = psStringStripCVS(cvsTag, "Name"); ///< CVS tag
    37     psStringAppend(&version, " (cvs tag %s) %s, %s", tag, __DATE__, __TIME__);
    38     psFree(tag);
     51    psString version = ppMergeVersion();  // Version, to return
     52    psString source = ppMergeSource();    // Source
     53
     54    psStringPrepend(&version, "ppMerge ");
     55    psStringAppend(&version, " from %s, built %s, %s", source, __DATE__, __TIME__);
     56    psFree(source);
     57
     58#ifdef __OPTIMIZE__
     59    psStringAppend(&version, " optimised");
     60#else
     61    psStringAppend(&version, " unoptimised");
     62#endif
     63
    3964    return version;
     65};
     66
     67bool ppMergeVersionHeader(psMetadata *header)
     68{
     69    PS_ASSERT_METADATA_NON_NULL(header, false);
     70
     71    psTime *time = psTimeGetNow(PS_TIME_TAI); // The time now
     72    psString timeString = psTimeToISO(time); // The time in an ISO string
     73    psFree(time);
     74    psString history = NULL;               // History string
     75    psStringAppend(&history, "ppMerge at %s", timeString);
     76    psFree(timeString);
     77    psMetadataAddStr(header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, NULL, history);
     78    psFree(history);
     79
     80    psLibVersionHeader(header);
     81    psModulesVersionHeader(header);
     82    ppStatsVersionHeader(header);
     83
     84    psString version = ppMergeVersion(); // Software version
     85    psString source  = ppMergeSource();  // Software source
     86
     87    psStringPrepend(&version, "ppMerge version: ");
     88    psStringPrepend(&source, "ppMerge source: ");
     89
     90    psMetadataAddStr(header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, NULL, version);
     91    psMetadataAddStr(header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, NULL, source);
     92
     93    psFree(version);
     94    psFree(source);
     95
     96    return true;
    4097}
    4198
    42 
    43 void ppMergeVersionMetadata(psMetadata *metadata)
     99void ppMergeVersionPrint(void)
    44100{
    45     PS_ASSERT_METADATA_NON_NULL(metadata,);
    46 
    47     psString pslib = psLibVersionLong();///< psLib version
    48     psString psmodules = psModulesVersionLong(); ///< psModules version
    49     psString ppStats = ppStatsVersionLong(); ///< ppStats version
    50     psString ppMerge = ppMergeVersionLong(); ///< ppMerge version
    51 
    52     psTime *time = psTimeGetNow(PS_TIME_TAI); ///< The time now
    53     psString timeString = psTimeToISO(time); ///< The time in an ISO string
     101    psTime *time = psTimeGetNow(PS_TIME_TAI); // The time now
     102    psString timeString = psTimeToISO(time); // The time in an ISO string
    54103    psFree(time);
    55     psString head = NULL;               ///< Head string
    56     psStringAppend(&head, "ppMerge processing at %s. Component information:", timeString);
     104    psLogMsg("ppMerge", PS_LOG_INFO, "ppMerge at %s", timeString);
    57105    psFree(timeString);
    58106
    59     psMetadataAddStr(metadata, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, head, "");
    60     psMetadataAddStr(metadata, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, pslib, "");
    61     psMetadataAddStr(metadata, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, psmodules, "");
    62     psMetadataAddStr(metadata, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, ppStats, "");
    63     psMetadataAddStr(metadata, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, ppMerge, "");
     107    psString pslib = psLibVersionLong();// psLib version
     108    psString psmodules = psModulesVersionLong(); // psModules version
     109    psString ppStats = ppStatsVersionLong(); // ppStats version
     110    psString ppMerge = ppMergeVersionLong(); // ppMerge version
    64111
    65     psFree(head);
     112    psLogMsg("ppImage", PS_LOG_INFO, "%s", pslib);
     113    psLogMsg("ppImage", PS_LOG_INFO, "%s", psmodules);
     114    psLogMsg("ppImage", PS_LOG_INFO, "%s", ppStats);
     115    psLogMsg("ppImage", PS_LOG_INFO, "%s", ppMerge);
     116
    66117    psFree(pslib);
    67118    psFree(psmodules);
  • branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeVersion.h

    r21244 r23352  
    2020
    2121/**
     22 * Return software source
     23 */
     24psString ppMergeSource(void);
     25
     26/**
    2227 * Return long version information
    2328 */
Note: See TracChangeset for help on using the changeset viewer.