IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 18, 2005, 9:36:26 AM (22 years ago)
Author:
desonia
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/fileUtils/tst_psFits.c

    r3036 r3037  
    66*  @author Robert DeSonia, MHPCC
    77*
    8 *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    9 *  @date $Date: 2005-01-18 19:14:04 $
     8*  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     9*  @date $Date: 2005-01-18 19:35:24 $
    1010*
    1111*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    7474{
    7575
    76     if (access(multiFilename, F_OK) != 0) {
    77         psFits* fitsFile = psFitsAlloc(multiFilename);
    78 
    79         if (fitsFile == NULL) {
    80             psError(PS_ERR_UNKNOWN, false,
    81                     "Could not create 'multi' FITS file.");
     76    remove
     77        (multiFilename);
     78
     79    psFits* fitsFile = psFitsAlloc(multiFilename);
     80
     81    if (fitsFile == NULL) {
     82        psError(PS_ERR_UNKNOWN, false,
     83                "Could not create 'multi' FITS file.");
     84        return false;
     85    }
     86
     87    psImage* image = psImageAlloc(16,16,PS_TYPE_F32);
     88
     89    char extname[80];
     90    for (int lcv = 0; lcv < 8; lcv++) {
     91        snprintf(extname,80,"ext-%d", lcv);
     92
     93        psMetadata* header = psMetadataAlloc();
     94
     95        psMetadataAdd(header,PS_LIST_TAIL, "MYINT",
     96                      PS_TYPE_S32, PS_META_PRIMITIVE,
     97                      "psS32 Item", (psS32)lcv);
     98
     99        psMetadataAdd(header,PS_LIST_TAIL, "MYFLT",
     100                      PS_TYPE_F32, PS_META_PRIMITIVE,
     101                      "psF32 Item", (float)(1.0f/(float)(1+lcv)));
     102
     103        psMetadataAdd(header,PS_LIST_TAIL, "MYDBL",
     104                      PS_TYPE_F64, PS_META_PRIMITIVE,
     105                      "psF64 Item", (double)(1.0/(double)(1+lcv)));
     106
     107        psMetadataAdd(header,PS_LIST_TAIL, "MYBOOL",
     108                      PS_TYPE_BOOL, PS_META_PRIMITIVE,
     109                      "psBool Item",
     110                      (lcv%2 == 0));
     111
     112        psMetadataAdd(header,PS_LIST_TAIL, "MYSTR",
     113                      PS_TYPE_PTR, PS_META_STR,
     114                      "String Item",
     115                      extname);
     116
     117        // set the pixels in the image
     118        psBinaryOp(image,image,"=",psScalarAlloc(lcv,PS_TYPE_F32));
     119        if (! psFitsWriteImage(fitsFile,header,image,1, extname) ) {
     120            psError(PS_ERR_UNKNOWN, false,
     121                    "Could not write image.");
    82122            return false;
    83123        }
    84124
    85         psImage* image = psImageAlloc(16,16,PS_TYPE_F32);
    86 
    87         char extname[80];
    88         for (int lcv = 0; lcv < 8; lcv++) {
    89             snprintf(extname,80,"ext-%d", lcv);
    90 
    91             psMetadata* header = psMetadataAlloc();
    92 
    93             psMetadataAdd(header,PS_LIST_TAIL, "MYINT",
    94                           PS_TYPE_S32, PS_META_PRIMITIVE,
    95                           "psS32 Item", (psS32)lcv);
    96 
    97             psMetadataAdd(header,PS_LIST_TAIL, "MYFLT",
    98                           PS_TYPE_F32, PS_META_PRIMITIVE,
    99                           "psF32 Item", (float)(1.0f/(float)(1+lcv)));
    100 
    101             psMetadataAdd(header,PS_LIST_TAIL, "MYDBL",
    102                           PS_TYPE_F64, PS_META_PRIMITIVE,
    103                           "psF64 Item", (double)(1.0/(double)(1+lcv)));
    104 
    105             psMetadataAdd(header,PS_LIST_TAIL, "MYBOOL",
    106                           PS_TYPE_BOOL, PS_META_PRIMITIVE,
    107                           "psBool Item",
    108                           (lcv%2 == 0));
    109 
    110             psMetadataAdd(header,PS_LIST_TAIL, "MYSTR",
    111                           PS_TYPE_PTR, PS_META_STR,
    112                           "String Item",
    113                           extname);
    114 
    115             // set the pixels in the image
    116             psBinaryOp(image,image,"=",psScalarAlloc(lcv,PS_TYPE_F32));
    117             if (! psFitsWriteImage(fitsFile,header,image,1, extname) ) {
    118                 psError(PS_ERR_UNKNOWN, false,
    119                         "Could not write image.");
    120                 return false;
    121             }
    122 
    123             psFree(header);
    124         }
    125         psFree(image);
    126         psFree(fitsFile);
    127     }
     125        psFree(header);
     126    }
     127    psFree(image);
     128    psFree(fitsFile);
    128129
    129130    return true;
     
    133134{
    134135
    135     if (access(tableFilename, F_OK) != 0) {
    136         psFits* fitsFile = psFitsAlloc(tableFilename);
    137 
    138         if (fitsFile == NULL) {
    139             psError(PS_ERR_UNKNOWN, false,
    140                     "Could not create 'table' FITS file.");
    141             return false;
    142         }
    143 
    144         // make the PHU an image (per FITS standard, it must be)
    145         psImage* image = psImageAlloc(16,16,PS_TYPE_F32);
    146 
    147         if (! psFitsWriteImage(fitsFile,NULL,image,1,"primary") ) {
    148             psError(PS_ERR_UNKNOWN, false,
    149                     "Could not write PHU image.");
    150             return false;
    151         }
    152 
    153         psFree(image);
    154 
    155         // build a table structure
    156         psArray* table = psArrayAlloc(tableNumRows);
    157         table->n = 0;
    158         for (int row = 0; row < tableNumRows; row++) {
    159             psMetadata* header = psMetadataAlloc();
    160 
    161             psMetadataAdd(header,PS_LIST_TAIL, "MYINT",
    162                           PS_TYPE_S32, PS_META_PRIMITIVE,
    163                           "psS32 Item", (psS32)row);
    164 
    165             psMetadataAdd(header,PS_LIST_TAIL, "MYFLT",
    166                           PS_TYPE_F32, PS_META_PRIMITIVE,
    167                           "psF32 Item", (float)(1.0f/(float)(1+row)));
    168 
    169             psMetadataAdd(header,PS_LIST_TAIL, "MYDBL",
    170                           PS_TYPE_F64, PS_META_PRIMITIVE,
    171                           "psF64 Item", (double)(1.0/(double)(1+row)));
    172 
    173             psMetadataAdd(header,PS_LIST_TAIL, "MYBOOL",
    174                           PS_TYPE_BOOL, PS_META_PRIMITIVE,
    175                           "psBool Item",
    176                           (row%2 == 0));
    177 
    178             psArrayAdd(table,0,header);
    179         }
    180 
    181         psFitsWriteTable(fitsFile, NULL, table, "table-1");
    182 
    183         psFree(table);
    184         psFree(fitsFile);
    185     }
     136    remove
     137        (tableFilename);
     138
     139    psFits* fitsFile = psFitsAlloc(tableFilename);
     140
     141    if (fitsFile == NULL) {
     142        psError(PS_ERR_UNKNOWN, false,
     143                "Could not create 'table' FITS file.");
     144        return false;
     145    }
     146
     147    // make the PHU an image (per FITS standard, it must be)
     148    psImage* image = psImageAlloc(16,16,PS_TYPE_F32);
     149
     150    if (! psFitsWriteImage(fitsFile,NULL,image,1,"primary") ) {
     151        psError(PS_ERR_UNKNOWN, false,
     152                "Could not write PHU image.");
     153        return false;
     154    }
     155
     156    psFree(image);
     157
     158    // build a table structure
     159    psArray* table = psArrayAlloc(tableNumRows);
     160    table->n = 0;
     161    for (int row = 0; row < tableNumRows; row++) {
     162        psMetadata* header = psMetadataAlloc();
     163
     164        psMetadataAdd(header,PS_LIST_TAIL, "MYINT",
     165                      PS_TYPE_S32, PS_META_PRIMITIVE,
     166                      "psS32 Item", (psS32)row);
     167
     168        psMetadataAdd(header,PS_LIST_TAIL, "MYFLT",
     169                      PS_TYPE_F32, PS_META_PRIMITIVE,
     170                      "psF32 Item", (float)(1.0f/(float)(1+row)));
     171
     172        psMetadataAdd(header,PS_LIST_TAIL, "MYDBL",
     173                      PS_TYPE_F64, PS_META_PRIMITIVE,
     174                      "psF64 Item", (double)(1.0/(double)(1+row)));
     175
     176        psMetadataAdd(header,PS_LIST_TAIL, "MYBOOL",
     177                      PS_TYPE_BOOL, PS_META_PRIMITIVE,
     178                      "psBool Item",
     179                      (row%2 == 0));
     180
     181        psArrayAdd(table,0,header);
     182    }
     183
     184    psFitsWriteTable(fitsFile, NULL, table, "table-1");
     185
     186    psFree(table);
     187    psFree(fitsFile);
    186188
    187189    return true;
     
    867869        }
    868870
    869         if ( (boolItem && !((row&0x01) == 0)) ||
    870                 (!boolItem && ((row&0x01) == 0))) {
     871        if ( boolItem != ((row&0x01) == 0)) {
    871872            psError(PS_ERR_UNKNOWN, true,
    872873                    "Failed to retrieve psBool metadata item from file (row=%d). Got %d vs %d",
Note: See TracChangeset for help on using the changeset viewer.