Changeset 41510 for trunk/pswarp/src/pswarpUpdateMetadata.c
- Timestamp:
- Mar 3, 2021, 3:05:40 PM (5 years ago)
- File:
-
- 1 edited
-
trunk/pswarp/src/pswarpUpdateMetadata.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pswarp/src/pswarpUpdateMetadata.c
r40354 r41510 23 23 24 24 if ((output)&&(output->analysis)) { 25 psMetadataItem *refItem = psMetadataLookup(output->analysis, "REFERENCE_CATALOG");26 if (refItem) {27 refcat = psMetadataLookupStr (NULL, output->analysis, "REFERENCE_CATALOG");28 }25 psMetadataItem *refItem = psMetadataLookup(output->analysis, "REFERENCE_CATALOG"); 26 if (refItem) { 27 refcat = psMetadataLookupStr (NULL, output->analysis, "REFERENCE_CATALOG"); 28 } 29 29 } 30 30 pmChip *chip; … … 47 47 pmReadout *readout; 48 48 while ((readout = pmFPAviewNextReadout(view, output, 1)) != NULL) { 49 // skip empty output readouts49 // skip empty output readouts 50 50 if (!readout->data_exists) continue; 51 51 … … 57 57 psArray *covars = psListToArray(covariances); // Array of covariance matrices 58 58 if (covars->n) { 59 psKernel *covar = psImageCovarianceAverage(covars);60 psMetadataRemoveKey(readout->analysis, PSWARP_ANALYSIS_COVARIANCES);59 psKernel *covar = psImageCovarianceAverage(covars); 60 psMetadataRemoveKey(readout->analysis, PSWARP_ANALYSIS_COVARIANCES); 61 61 62 // Correct covariance matrix scale for the mean (square root of the) Jacobian63 double jacobian = psMetadataLookupF64(NULL, readout->analysis, PSWARP_ANALYSIS_JACOBIAN); // Jacobian64 int goodPixels = psMetadataLookupS32(NULL, readout->analysis, PSWARP_ANALYSIS_GOODPIX); // Good pixels65 jacobian /= goodPixels;66 readout->covariance = psImageCovarianceScale(covar, jacobian);67 psFree(covar);62 // Correct covariance matrix scale for the mean (square root of the) Jacobian 63 double jacobian = psMetadataLookupF64(NULL, readout->analysis, PSWARP_ANALYSIS_JACOBIAN); // Jacobian 64 int goodPixels = psMetadataLookupS32(NULL, readout->analysis, PSWARP_ANALYSIS_GOODPIX); // Good pixels 65 jacobian /= goodPixels; 66 readout->covariance = psImageCovarianceScale(covar, jacobian); 67 psFree(covar); 68 68 69 if (readout->variance) {70 psImageCovarianceTransfer(readout->variance, readout->covariance);71 }69 if (readout->variance) { 70 psImageCovarianceTransfer(readout->variance, readout->covariance); 71 } 72 72 73 psFree(covars);73 psFree(covars); 74 74 } 75 75 } … … 94 94 psArray *chipnames = psMetadataLookupPtr(&status, readout->analysis, PSWARP_ANALYSIS_CHIPNAMES); 95 95 for (int i = 0; chipnames && (i < chipnames->n); i++) { 96 psStringAppend (&keyword, "SRC_%04d", i);97 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "input image", chipnames->data[i]);98 psFree (keyword);96 psStringAppend (&keyword, "SRC_%04d", i); 97 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "input image", chipnames->data[i]); 98 psFree (keyword); 99 99 } 100 100 … … 102 102 psArray *chipRegions = psMetadataLookupPtr(&status, readout->analysis, PSWARP_ANALYSIS_CHIPREGIONS); 103 103 for (int i = 0; chipRegions && (i < chipRegions->n); i++) { 104 psStringAppend (&keyword, "SEC_%04d", i);105 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "input image", chipRegions->data[i]);106 psFree (keyword);104 psStringAppend (&keyword, "SEC_%04d", i); 105 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "input image", chipRegions->data[i]); 106 psFree (keyword); 107 107 } 108 108 … … 110 110 psArray *backmaps = psMetadataLookupPtr(&status, readout->analysis, PSWARP_ANALYSIS_BACKMAPS); // 111 111 for (int i = 0; backmaps && (i < backmaps->n); i++) { 112 psPlaneTransform *map = backmaps->data[i];113 psStringAppend (&keyword, "MPX_%04d", i);114 psStringAppend (&mapstring, "[%8.2f,%8.4f,%8.4f]", map->x->coeff[0][0], map->x->coeff[1][0], map->x->coeff[0][1]);115 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "warp to image map", mapstring);116 psFree (keyword);117 psFree (mapstring);118 psStringAppend (&keyword, "MPY_%04d", i);119 psStringAppend (&mapstring, "[%8.2f,%8.4f,%8.4f]", map->y->coeff[0][0], map->y->coeff[1][0], map->y->coeff[0][1]);120 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "warp to image map", mapstring);121 psFree (keyword);122 psFree (mapstring);112 psPlaneTransform *map = backmaps->data[i]; 113 psStringAppend (&keyword, "MPX_%04d", i); 114 psStringAppend (&mapstring, "[%8.2f,%8.4f,%8.4f]", map->x->coeff[0][0], map->x->coeff[1][0], map->x->coeff[0][1]); 115 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "warp to image map", mapstring); 116 psFree (keyword); 117 psFree (mapstring); 118 psStringAppend (&keyword, "MPY_%04d", i); 119 psStringAppend (&mapstring, "[%8.2f,%8.4f,%8.4f]", map->y->coeff[0][0], map->y->coeff[1][0], map->y->coeff[0][1]); 120 psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, "warp to image map", mapstring); 121 psFree (keyword); 122 psFree (mapstring); 123 123 } 124 124 } … … 164 164 if (!psMetadataCopy(output->concepts, input->concepts)) { 165 165 psError(psErrorCodeLast(), false, "Unable to copy FPA concepts from input to output."); 166 psFree(view); 166 167 return false; 167 168 } … … 174 175 175 176 if (refcat) { 176 if ((output)&&(output->hdu)&&(output->hdu->header)) {177 psMetadataAddStr(output->hdu->header, PS_LIST_TAIL, "PSREFCAT", PS_META_REPLACE,178 "Reference catalog used for calibration", refcat);179 }177 if ((output)&&(output->hdu)&&(output->hdu->header)) { 178 psMetadataAddStr(output->hdu->header, PS_LIST_TAIL, "PSREFCAT", PS_META_REPLACE, 179 "Reference catalog used for calibration", refcat); 180 } 180 181 } 181 182 … … 193 194 } 194 195 196 psFree(view); 195 197 return true; 196 198 }
Note:
See TracChangeset
for help on using the changeset viewer.
