Changeset 23352 for branches/cnb_branches/cnb_branch_20090301/ppMerge/src
- Timestamp:
- Mar 17, 2009, 12:08:50 PM (17 years ago)
- Location:
- branches/cnb_branches/cnb_branch_20090301
- Files:
-
- 9 edited
-
. (modified) (1 prop)
-
ppMerge/src/Makefile.am (modified) (2 diffs)
-
ppMerge/src/ppMerge.c (modified) (1 diff)
-
ppMerge/src/ppMerge.h (modified) (12 diffs)
-
ppMerge/src/ppMergeLoop_Threaded.c (modified) (2 diffs)
-
ppMerge/src/ppMergeMask.c (modified) (5 diffs)
-
ppMerge/src/ppMergeScaleZero.c (modified) (1 diff)
-
ppMerge/src/ppMergeVersion.c (modified) (1 diff)
-
ppMerge/src/ppMergeVersion.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branches/cnb_branch_20090301
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk merged eligible /branches/eam_branches/eam_branch_20090303 23158-23228
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/Makefile.am
r19586 r23352 1 1 bin_PROGRAMS = ppMerge 2 2 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 12 ppMerge_CFLAGS = $(PPMERGE_CFLAGS) $(PPSTATS_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) -DPPMERGE_VERSION=$(SVN_VERSION) -DPPMERGE_BRANCH=$(SVN_BRANCH) -DPPMERGE_SOURCE=$(SVN_SOURCE) 4 13 ppMerge_LDFLAGS = $(PPMERGE_LIBS) $(PPSTATS_LIBS) $(PSMODULE_LIBS) $(PSLIB_LIBS) 5 14 … … 14 23 ppMergeLoop_Threaded.c \ 15 24 ppMergeSetThreads.c \ 16 ppMergeMask.c 25 ppMergeMask.c \ 26 ppMergeVersion.c 17 27 18 28 # ppMergeLoop.c -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMerge.c
r21244 r23352 38 38 goto die; 39 39 } 40 41 ppMergeVersionPrint(); 40 42 41 43 ppMergeType type = psMetadataLookupS32(NULL, config->arguments, "TYPE"); ///< Type of frame -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMerge.h
r21244 r23352 28 28 /// @{ 29 29 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? 33 33 34 34 /** … … 36 36 */ 37 37 typedef 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 43 43 PPMERGE_TYPE_FLAT, ///< Flat-field frame (dome or sky) 44 PPMERGE_TYPE_FRINGE, ///< Fringe frame 44 PPMERGE_TYPE_FRINGE, ///< Fringe frame 45 45 } ppMergeType; 46 46 … … 49 49 */ 50 50 typedef 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 54 54 } ppMergeFiles; 55 55 … … 60 60 */ 61 61 typedef 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 67 67 } ppMergeFileGroup; 68 68 … … 71 71 */ 72 72 bool ppMergeArguments(int argc, char *argv[], ///< Command-line arguments 73 pmConfig *config ///< Configuration 73 pmConfig *config ///< Configuration 74 74 ); 75 75 … … 77 77 * Set up camera files 78 78 */ 79 bool ppMergeCamera(pmConfig *config ///< Configuration 79 bool ppMergeCamera(pmConfig *config ///< Configuration 80 80 ); 81 81 … … 83 83 * Measure scale and zero-points 84 84 */ 85 bool ppMergeScaleZero(pmConfig *config ///< Configuration 85 bool ppMergeScaleZero(pmConfig *config ///< Configuration 86 86 ); 87 87 … … 89 89 * Main loop to do the merging 90 90 */ 91 bool ppMergeLoop(pmConfig *config ///< Configuration 91 bool ppMergeLoop(pmConfig *config ///< Configuration 92 92 ); 93 93 … … 95 95 * Main loop for masks 96 96 */ 97 bool ppMergeMask(pmConfig *config ///< Configuration 97 bool ppMergeMask(pmConfig *config ///< Configuration 98 98 ); 99 99 … … 101 101 * Read nominated input file 102 102 */ 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 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 107 107 ); 108 108 … … 110 110 * Open nominated input file 111 111 */ 112 bool ppMergeFileOpenInput(pmConfig *config, ///< Configuration 113 const pmFPAview *view, ///< View to open 114 int num ///< Number of file in sequence 112 bool ppMergeFileOpenInput(pmConfig *config, ///< Configuration 113 const pmFPAview *view, ///< View to open 114 int num ///< Number of file in sequence 115 115 ); 116 116 … … 166 166 bool ppMergeSetThreads(void); 167 167 168 169 /// Return software version 170 psString ppMergeVersion(void); 171 172 /// Return software source 173 psString ppMergeSource(void); 174 175 /// Return detailed software version information 176 psString ppMergeVersionLong(void); 177 178 /// Populate a FITS header with version information 179 bool ppMergeVersionHeader( 180 psMetadata *header ///< Header to populate 181 ); 182 183 /// Print version information 184 void ppMergeVersionPrint(void); 185 186 168 187 ///@} 169 188 #endif -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeLoop_Threaded.c
r21365 r23352 137 137 assert(output && output->fpa); 138 138 pmFPA *outFPA = output->fpa; ///< Output FPA 139 pmHDU *lastHDU = NULL; // Last HDU that was updated 139 140 int cellNum = 0; ///< Index of cell 140 141 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { … … 156 157 // No data here 157 158 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 } 158 168 } 159 169 -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeMask.c
r21365 r23352 16 16 const pmFPAview *view, ///< View to chip 17 17 bool writeOut, ///< Write output? 18 pmHDU **lastHDU, ///< HDU last updated 18 19 psRandom *rng, ///< Random number generator 19 20 psMetadata *stats ///< Statistics output … … 96 97 i, inView->chip, inView->cell); 97 98 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 98 108 if (!pmFPAfileIOChecks(config, inView, PM_FPA_BEFORE)) { 99 109 psFree(inView); … … 359 369 360 370 pmFPAview *view = pmFPAviewAlloc(0); ///< View to component of interest 361 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS , 0); ///< Random number generator371 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); ///< Random number generator 362 372 363 373 psMetadata *stats = NULL; ///< Statistics for output … … 395 405 assert(output && output->fpa); 396 406 pmFPA *outFPA = output->fpa; ///< Output FPA 407 pmHDU *lastHDU = NULL; // Last HDU updated 397 408 398 409 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { … … 409 420 410 421 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)) { 412 423 psError(PS_ERR_UNKNOWN, false, "Unable to merge chip %d", view->chip); 413 424 goto PPMERGE_MASK_ERROR; -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeScaleZero.c
r21365 r23352 51 51 break; 52 52 } 53 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS , 0); ///< Random number generator53 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); ///< Random number generator 54 54 pmFPAview *view = NULL; ///< View into FPA 55 55 -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeVersion.c
r21244 r23352 22 22 #include "ppMergeVersion.h" 23 23 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 25 36 26 37 psString ppMergeVersion(void) 27 38 { 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 44 psString ppMergeSource(void) 45 { 46 return psStringCopy(xstr(PPMERGE_SOURCE)); 31 47 } 32 48 33 49 psString ppMergeVersionLong(void) 34 50 { 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 39 64 return version; 65 }; 66 67 bool 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; 40 97 } 41 98 42 43 void ppMergeVersionMetadata(psMetadata *metadata) 99 void ppMergeVersionPrint(void) 44 100 { 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 54 103 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); 57 105 psFree(timeString); 58 106 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 64 111 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 66 117 psFree(pslib); 67 118 psFree(psmodules); -
branches/cnb_branches/cnb_branch_20090301/ppMerge/src/ppMergeVersion.h
r21244 r23352 20 20 21 21 /** 22 * Return software source 23 */ 24 psString ppMergeSource(void); 25 26 /** 22 27 * Return long version information 23 28 */
Note:
See TracChangeset
for help on using the changeset viewer.
