Changeset 29565
- Timestamp:
- Oct 26, 2010, 12:30:29 PM (16 years ago)
- Location:
- trunk/ppTranslate/src
- Files:
-
- 1 added
- 6 edited
-
Makefile.am (modified) (1 diff)
-
ppMops.c (modified) (1 diff)
-
ppMops.h (modified) (3 diffs)
-
ppMopsArguments.c (modified) (1 diff)
-
ppMopsGetSkyChipPsfVersion.c (added)
-
ppMopsRead.c (modified) (4 diffs)
-
ppMopsWrite.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppTranslate/src/Makefile.am
r25923 r29565 32 32 ppMopsRead.c \ 33 33 ppMopsWrite.c \ 34 ppMopsMerge.c 34 ppMopsMerge.c \ 35 ppMopsGetSkyChipPsfVersion.c 35 36 36 37 ppMonet_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(PPMONET_CFLAGS) -
trunk/ppTranslate/src/ppMops.c
r28623 r29565 3 3 4 4 #include "ppMops.h" 5 6 /* 7 Behavior: 8 9 If the CMF input files have different versions, merging cannot be 10 performed. 11 12 If -version option is not given: 13 the output version is the version of the input file(s) 14 otherwise 15 the output version is (possibly forced to) the version option 16 17 If the input file(s) version is equals to the version option: 18 no change in version (neither data creation nor data loss) 19 If the input file(s) version is strictly less than the version option: 20 Data for version option are set tp default values: 0, NaN, NULL 21 If the input file(s) version is strictly greater than the version option: 22 Data are those of the lower version 23 24 Example: 25 -> ppMops dv1_input_files_list output -version 1 26 is the same as 'ppMops dv1_input_files_list output' 27 -> ppMops dv1_input_files_list output -version 1 28 is the same as 'ppMops dv1_input_files_list output' 29 -> ppMops dv1_input_files_list output -version 2 30 Aggregate DV1 values and add default DV2 values 31 Saved as DV2 file 32 -> ppMops dv2_input_files_list output -version 1 33 Aggregate DV1 values and truncate DV2 values 34 Saved as DV1 file 35 */ 5 36 6 37 int main(int argc, char *argv[]) -
trunk/ppTranslate/src/ppMops.h
r29560 r29565 25 25 float rmsAstrom; // Astrometric solution RMS 26 26 psString output; // Output filename 27 psU16 version; // Version (for parameters)27 psU16 version; // Version (for parameters) 28 28 } ppMopsArguments; 29 29 … … 125 125 126 126 /// Read detections 127 psArray *ppMopsRead( constppMopsArguments *args);127 psArray *ppMopsRead(ppMopsArguments *args); 128 128 129 129 /// Merge detections … … 133 133 bool ppMopsWrite(const ppMopsDetections *detections, const ppMopsArguments *args); 134 134 135 /// Get the version contained in EXTTYPE of the "SkyChip.psf" table: 136 /// @returns 1 if EXTTYPE of "SkyChip.psf" is PS1_DV1 137 /// @returns 2 if EXTTYPE of "SkyChip.psf" is PS1_DV2 138 /// @returns 0 otherwise 139 int ppMopsGetSkyChipPsfVersion(const psFits* fits); 140 135 141 #endif -
trunk/ppTranslate/src/ppMopsArguments.c
r29560 r29565 74 74 psMetadataAddF32(arguments, PS_LIST_TAIL, "-zp_error", 0, "Error in magnitude zero point", NAN); 75 75 psMetadataAddF32(arguments, PS_LIST_TAIL, "-astrom_rms", 0, "Astrometric solution RMS", NAN); 76 psMetadataAddU16(arguments, PS_LIST_TAIL, "-version", 0, "Parameters version (see ICD)", 1);76 psMetadataAddU16(arguments, PS_LIST_TAIL, "-version", 0, "Parameters version (see ICD)", 0); 77 77 78 78 if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 3) { -
trunk/ppTranslate/src/ppMopsRead.c
r29560 r29565 8 8 #include "ppMops.h" 9 9 10 psArray *ppMopsRead(const ppMopsArguments *args) 10 /* 11 ppMopsRead possibly modifies the args->version if the user did not 12 set it explicitely. 13 */ 14 psArray *ppMopsRead(ppMopsArguments *args) 11 15 { 12 16 psTrace("ppMops.read", 1, "Reading input detections\n"); … … 17 21 for (int i = 0; i < num; i++) { 18 22 psFits *fits = psFitsOpen(inNames->data[i], "r"); // FITS file 23 19 24 if (!fits) { 20 25 psError(PS_ERR_IO, false, "Unable to open input %d", i); … … 37 42 return false; 38 43 } 44 int skyChipPsfVersion = ppMopsGetSkyChipPsfVersion(fits); 45 if (args->version == 0) { 46 psTrace("ppMops.read", 1, "Changing args->version to %d\n", skyChipPsfVersion); 47 args->version = skyChipPsfVersion; 48 } 49 if (skyChipPsfVersion == 0) { 50 // Try to read with the user specified version? 51 skyChipPsfVersion = args->version; 52 } 53 /* Display a warning message if there are version 54 inconsistencies between the file and the flag (note that 55 those inconsistencies might be wanted) */ 56 if (skyChipPsfVersion != args->version) { 57 if (skyChipPsfVersion > args->version) { 58 psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n", 59 skyChipPsfVersion, args->version); 60 } else { // Necessarily: skyChipPsfVersion > args->version 61 psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n", 62 skyChipPsfVersion, args->version); 63 } 64 } 39 65 40 66 long size = psFitsTableSize(fits); // Size of table … … 117 143 //Additions of 2010-10-25 118 144 if (args->version == 2) { 119 det->psfInstFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX"); 120 det->psfInstFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX_SIG"); 121 det->apMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG"); 122 det->apMagRaw->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RAW"); 123 det->apMagRadius->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RADIUS"); 124 det->apFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX"); 125 det->apFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX_SIG"); 126 det->peakFluxAsMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PEAK_FLUX_AS_MAG"); 127 det->calPsfMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG"); 128 det->calPsfMagSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG_SIG"); 129 det->sky->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY"); 130 det->skySig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY_SIGMA"); 131 det->qualityPerfect->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF_PERFECT"); 132 det->momentsR1->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_R1"); 133 det->momentsRH->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_RH"); 134 det->kronFlux->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX"); 135 det->kronFluxErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_ERR"); 136 det->kronFluxInner->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_INNER"); 137 det->kronFluxOuter->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_OUTER"); 138 det->diffRP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_P"); 139 det->diffSnP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_P"); 140 det->diffRM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_M"); 141 det->diffSnM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_M"); 142 det->flags2->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS2"); 143 det->ippIdet->data.U32[numGood] = psMetadataLookupU32(NULL, row, "IPP_IDET"); 144 det->nFrames->data.U16[numGood] = psMetadataLookupU16(NULL, row, "N_FRAMES"); 145 det->padding->data.S16[numGood] = psMetadataLookupS16(NULL, row, "PADDING"); 146 } else { 147 det->psfInstFlux->data.F32[numGood] = NAN; 148 det->psfInstFluxSig->data.F32[numGood] = NAN; 149 det->apMag->data.F32[numGood] = NAN; 150 det->apMagRaw->data.F32[numGood] = NAN; 151 det->apMagRadius->data.F32[numGood] = NAN; 152 det->apFlux->data.F32[numGood] = NAN; 153 det->apFluxSig->data.F32[numGood] = NAN; 154 det->peakFluxAsMag->data.F32[numGood] = NAN; 155 det->calPsfMag->data.F32[numGood] = NAN; 156 det->calPsfMagSig->data.F32[numGood] = NAN; 157 det->sky->data.F32[numGood] = NAN; 158 det->skySig->data.F32[numGood] = NAN; 159 det->qualityPerfect->data.F32[numGood] = NAN; 160 det->momentsR1->data.F32[numGood] = NAN; 161 det->momentsRH->data.F32[numGood] = NAN; 162 det->kronFlux->data.F32[numGood] = NAN; 163 det->kronFluxErr->data.F32[numGood] = NAN; 164 det->kronFluxInner->data.F32[numGood] = NAN; 165 det->kronFluxOuter->data.F32[numGood] = NAN; 166 det->diffRP->data.F32[numGood] = NAN; 167 det->diffSnP->data.F32[numGood] = NAN; 168 det->diffRM->data.F32[numGood] = NAN; 169 det->diffSnM->data.F32[numGood] = NAN; 170 det->flags2->data.U32[numGood] = 0; 171 det->ippIdet->data.U32[numGood] = 0; 172 det->nFrames->data.U16[numGood] = 0; 173 det->padding->data.S16[numGood] = 0; 145 //Values are set only if the version is 2 146 if (skyChipPsfVersion == 2) { 147 det->psfInstFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX"); 148 det->psfInstFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX_SIG"); 149 det->apMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG"); 150 det->apMagRaw->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RAW"); 151 det->apMagRadius->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RADIUS"); 152 det->apFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX"); 153 det->apFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX_SIG"); 154 det->peakFluxAsMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PEAK_FLUX_AS_MAG"); 155 det->calPsfMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG"); 156 det->calPsfMagSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG_SIG"); 157 det->sky->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY"); 158 det->skySig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY_SIGMA"); 159 det->qualityPerfect->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF_PERFECT"); 160 det->momentsR1->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_R1"); 161 det->momentsRH->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_RH"); 162 det->kronFlux->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX"); 163 det->kronFluxErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_ERR"); 164 det->kronFluxInner->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_INNER"); 165 det->kronFluxOuter->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_OUTER"); 166 det->diffRP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_P"); 167 det->diffSnP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_P"); 168 det->diffRM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_M"); 169 det->diffSnM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_M"); 170 det->flags2->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS2"); 171 det->ippIdet->data.U32[numGood] = psMetadataLookupU32(NULL, row, "IPP_IDET"); 172 det->nFrames->data.U16[numGood] = psMetadataLookupU16(NULL, row, "N_FRAMES"); 173 det->padding->data.S16[numGood] = psMetadataLookupS16(NULL, row, "PADDING"); 174 } else { 175 det->psfInstFlux->data.F32[numGood] = NAN; 176 det->psfInstFluxSig->data.F32[numGood] = NAN; 177 det->apMag->data.F32[numGood] = NAN; 178 det->apMagRaw->data.F32[numGood] = NAN; 179 det->apMagRadius->data.F32[numGood] = NAN; 180 det->apFlux->data.F32[numGood] = NAN; 181 det->apFluxSig->data.F32[numGood] = NAN; 182 det->peakFluxAsMag->data.F32[numGood] = NAN; 183 det->calPsfMag->data.F32[numGood] = NAN; 184 det->calPsfMagSig->data.F32[numGood] = NAN; 185 det->sky->data.F32[numGood] = NAN; 186 det->skySig->data.F32[numGood] = NAN; 187 det->qualityPerfect->data.F32[numGood] = NAN; 188 det->momentsR1->data.F32[numGood] = NAN; 189 det->momentsRH->data.F32[numGood] = NAN; 190 det->kronFlux->data.F32[numGood] = NAN; 191 det->kronFluxErr->data.F32[numGood] = NAN; 192 det->kronFluxInner->data.F32[numGood] = NAN; 193 det->kronFluxOuter->data.F32[numGood] = NAN; 194 det->diffRP->data.F32[numGood] = NAN; 195 det->diffSnP->data.F32[numGood] = NAN; 196 det->diffRM->data.F32[numGood] = NAN; 197 det->diffSnM->data.F32[numGood] = NAN; 198 det->flags2->data.U32[numGood] = 0; 199 det->ippIdet->data.U32[numGood] = 0; 200 det->nFrames->data.U16[numGood] = 0; 201 det->padding->data.S16[numGood] = 0; 202 } 174 203 } 175 204 -
trunk/ppTranslate/src/ppMopsWrite.c
r29560 r29565 50 50 psMetadataAddF32(header, PS_LIST_TAIL, "MAGZPERR", 0, "Error in magnitude zero point", args->zpErr); 51 51 psMetadataAddF32(header, PS_LIST_TAIL, "ASTRORMS", 0, "RMS of astrometric fit", args->rmsAstrom); 52 //New field in header that tells about the CMF version 53 char cmfVersion[8]; 54 sprintf(cmfVersion, "PS1_DV%d", args->version); 55 psMetadataAddStr(header, PS_LIST_TAIL, "CMFVERSION", 0, "CMF version", cmfVersion); 52 56 53 57 if (det->num == 0) {
Note:
See TracChangeset
for help on using the changeset viewer.
