IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 21022


Ignore:
Timestamp:
Dec 16, 2008, 4:37:03 PM (17 years ago)
Author:
Paul Price
Message:

Attempting to get image and source identifiers into headers.

Location:
branches/pap_branch_20081216/psModules/src/camera
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_branch_20081216/psModules/src/camera/pmFPARead.h

    r18163 r21022  
    44 * @author Paul Price, IfA
    55 *
    6  * @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
    7  * @date $Date: 2008-06-17 22:16:38 $
     6 * @version $Revision: 1.15.36.1 $ $Name: not supported by cvs2svn $
     7 * @date $Date: 2008-12-17 02:37:03 $
    88 * Copyright 2005-2006 Institute for Astronomy, University of Hawaii
    99 */
     
    245245                   const char *name     ///< Specifies the extension name, and target in the analysis metadata
    246246                  );
     247
    247248/// @}
    248249#endif
  • branches/pap_branch_20081216/psModules/src/camera/pmFPAWrite.c

    r19385 r21022  
    107107    if (writeBlank || writeImage) {
    108108
    109         pmFPAUpdateNames(cell->parent->parent, cell->parent, cell);
    110109        pmConceptSource source = PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CELLS |
    111110                                 PM_CONCEPT_SOURCE_DEFAULTS | PM_CONCEPT_SOURCE_DATABASE;
     
    157156
    158157        if (writeBlank || writeImage) {
    159             pmFPAUpdateNames(chip->parent, chip, NULL);
    160158            pmConceptSource source = PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CELLS |
    161159                                     PM_CONCEPT_SOURCE_DEFAULTS | PM_CONCEPT_SOURCE_DATABASE;
     
    221219
    222220        if (writeBlank || writeImage) {
    223             pmFPAUpdateNames(fpa, NULL, NULL);
    224221            pmConceptSource source = PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CELLS |
    225222                                     PM_CONCEPT_SOURCE_DEFAULTS | PM_CONCEPT_SOURCE_DATABASE;
     
    255252
    256253// Update the FPA.OBS, CHIP.NAME and CELL.NAME in the FITS header, if required
    257 bool pmFPAUpdateNames(pmFPA *fpa, pmChip *chip, pmCell *cell)
    258 {
    259     pmHDU *hdu = pmHDUGetHighest(fpa, chip, cell); // Highest HDU, i.e., the PHU
    260     if (!hdu) {
     254bool pmFPAUpdateNames(pmFPA *fpa, pmChip *chip, pmCell *cell, psU64 imageId, psU64 sourceId)
     255{
     256    pmHDU *hduHigh = pmHDUGetHighest(fpa, chip, cell); // Highest HDU, i.e., the PHU
     257    if (!hduHigh) {
     258        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find PHU.\n");
     259        return false;
     260    }
     261    if (!hduHigh->header) {
     262        hduHigh->header = psMetadataAlloc();
     263    }
     264    if (!pmHDUWriteIdentifiers(hduHigh, imageId, sourceId)) {
     265        psError(PS_ERR_UNKNOWN, false, "Unable to write identifiers to header.");
     266        return false;
     267    }
     268
     269    pmHDU *hduLow = pmHDUGetLowest(fpa, chip, cell); // Lowest HDU, i.e., the extension
     270    if (!hduLow) {
    261271        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find HDU.\n");
    262272        return false;
    263273    }
    264     if (!hdu->header) {
    265         hdu->header = psMetadataAlloc();
    266     }
     274    if (!hduLow->header) {
     275        hduLow->header = psMetadataAlloc();
     276    }
     277    if (hduLow != hduHigh && !pmHDUWriteIdentifiers(hduLow, imageId, sourceId)) {
     278        psError(PS_ERR_UNKNOWN, false, "Unable to write identifiers to header.");
     279        return false;
     280    }
     281
    267282    bool mdok;                          // Status of MD lookup
    268     psMetadata *fileData = psMetadataLookupMetadata(&mdok, hdu->format, "FILE"); // File information
     283    psMetadata *fileData = psMetadataLookupMetadata(&mdok, hduHigh->format, "FILE"); // File information
    269284    if (!mdok || !fileData) {
    270285        psError(PS_ERR_UNKNOWN, true, "Unable to find FILE information in camera format.\n");
     
    275290        if (mdok && fpaObsHdr && strlen(fpaObsHdr) > 0) {
    276291            const char *fpaObs = psMetadataLookupStr(NULL, fpa->concepts, "FPA.OBS");
    277             psMetadataAddStr(hdu->header, PS_LIST_TAIL, fpaObsHdr, PS_META_REPLACE,
     292            psMetadataAddStr(hduHigh->header, PS_LIST_TAIL, fpaObsHdr, PS_META_REPLACE,
    278293                             "Observation identifier", fpaObs);
    279294        }
     
    298313        }
    299314
    300         psMetadataAddStr(hdu->header, PS_LIST_TAIL, contentKey, PS_META_REPLACE, "Content of file", content);
     315        psMetadataAddStr(hduHigh->header, PS_LIST_TAIL, contentKey, PS_META_REPLACE,
     316                         "Content of file", content);
    301317        psFree(content);                // Drop reference
    302318    }
  • branches/pap_branch_20081216/psModules/src/camera/pmFPAWrite.h

    r18163 r21022  
    44 * @author Paul Price, IfA
    55 *
    6  * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
    7  * @date $Date: 2008-06-17 22:16:38 $
     6 * @version $Revision: 1.11.36.1 $ $Name: not supported by cvs2svn $
     7 * @date $Date: 2008-12-17 02:37:03 $
    88 * Copyright 2005-2006 Institute for Astronomy, University of Hawaii
    99 */
     
    165165                   );
    166166
    167 // XXX better name, please
    168 bool pmFPAUpdateNames(pmFPA *fpa, pmChip *chip, pmCell *cell);
     167// Update the header before writing to be consistent
     168//
     169// XXX Would like a better name
     170bool pmFPAUpdateNames(pmFPA *fpa,       ///< FPA
     171                      pmChip *chip,     ///< Chip, or NULL
     172                      pmCell *cell,     ///< Cell, or NULL
     173                      psU64 imageId,    ///< Image identifier
     174                      psU64 sourceId    ///< Source identifier
     175    );
    169176
    170177/// @}
  • branches/pap_branch_20081216/psModules/src/camera/pmFPAfile.c

    r19307 r21022  
    9898
    9999    file->save = false;
     100
     101    file->imageId = 0;
     102    file->sourceId = 0;
    100103
    101104    return file;
  • branches/pap_branch_20081216/psModules/src/camera/pmFPAfile.h

    r19307 r21022  
    44 * @author EAM, IfA
    55 *
    6  * @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
    7  * @date $Date: 2008-09-02 19:06:16 $
     6 * @version $Revision: 1.33.14.1 $ $Name: not supported by cvs2svn $
     7 * @date $Date: 2008-12-17 02:37:03 $
    88 * Copyright 2004-2005 Institute for Astronomy, University of Hawaii
    99 */
     
    106106    psMetadata *format;                 // Camera format
    107107    psString formatName;                // name of the camera format
     108
     109    psU64 imageId, sourceId;            // Image and source identifiers
    108110} pmFPAfile;
    109111
  • branches/pap_branch_20081216/psModules/src/camera/pmFPAfileFitsIO.c

    r18601 r21022  
    178178          pmChip *chip = pmFPAviewThisChip(view, fpa); // Chip of interest, or NULL
    179179          pmCell *cell = pmFPAviewThisCell(view, fpa); // Cell of interest, or NULL
    180           if (!pmFPAUpdateNames(fpa, chip, cell)) {
     180          if (!pmFPAUpdateNames(fpa, chip, cell, file->imageId, file->sourceId)) {
    181181              psError(PS_ERR_UNKNOWN, false, "Unable to update names in header.");
    182182              return false;
  • branches/pap_branch_20081216/psModules/src/camera/pmHDU.c

    r19385 r21022  
    243243    return hduWrite(hdu, hdu->weights, hdu->masks, maskVal, fits);
    244244}
     245
     246
     247bool pmHDUWriteIdentifiers(pmHDU *hdu, psU64 imageId, psU64 sourceId)
     248{
     249    PS_ASSERT_PTR_NON_NULL(hdu, false);
     250
     251    // XXX Get header keyword name from camera configuration
     252
     253    psMetadataAddU64(hdu->header, PS_LIST_TAIL, "IMAGEID", PS_META_REPLACE, "Image identifier", imageId);
     254    psMetadataAddU64(hdu->header, PS_LIST_TAIL, "SOURCEID", PS_META_REPLACE, "Source identifier", sourceId);
     255    return true;
     256}
     257
     258bool pmHDUReadIdentifiers(psU64 *imageId, psU64 *sourceId, const pmHDU *hdu)
     259{
     260    PS_ASSERT_PTR_NON_NULL(hdu, false);
     261
     262    // XXX Get header keyword name from camera configuration
     263
     264    bool imageOK, sourceOK;             // Status of MD lookups
     265    *imageId = psMetadataLookupU64(&imageOK, hdu->header, "IMAGEID");
     266    *sourceId = psMetadataLookupU64(&sourceOK, hdu->header, "SOURCEID");
     267
     268    return imageOK && sourceOK;
     269}
  • branches/pap_branch_20081216/psModules/src/camera/pmHDU.h

    r19385 r21022  
    44 * @author Paul Price, IfA
    55 *
    6  * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
    7  * @date $Date: 2008-09-05 08:21:35 $
     6 * @version $Revision: 1.9.14.1 $ $Name: not supported by cvs2svn $
     7 * @date $Date: 2008-12-17 02:37:03 $
    88 * Copyright 2005-2006 Institute for Astronomy, University of Hawaii
    99 */
     
    3131    psArray *weights;                   ///< The pixel data
    3232    psArray *masks;                     ///< The pixel data
    33 }
    34 pmHDU;
     33} pmHDU;
    3534
    3635
     
    8584    );
    8685
     86
     87
     88/// Read identifiers from FITS header
     89bool pmHDUReadIdentifiers(psU64 *imageId, ///< Image identifer, returned
     90                          psU64 *sourceId, ///< Source identifier, returned
     91                          const pmHDU *hdu ///< HDU from which to read
     92    );
     93
     94/// Write identifiers to FITS header
     95bool pmHDUWriteIdentifiers(pmHDU *hdu, ///< HDU to which to write
     96                           psU64 imageId, ///< Image identifer
     97                           psU64 sourceId ///< Source identifier
     98                           );
     99
     100
    87101/// @}
    88102#endif
Note: See TracChangeset for help on using the changeset viewer.