IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6712


Ignore:
Timestamp:
Mar 27, 2006, 4:14:56 PM (20 years ago)
Author:
magnier
Message:

substantial work on the pmFPAfile I/O concepts

Location:
branches/rel10_ifa/psModules/src/objects
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/rel10_ifa/psModules/src/objects/Makefile.am

    r6568 r6712  
    1919     pmSourceIO_OBJ.c \
    2020     pmSourceIO_SX.c \
     21     pmSourceIO_RAW.c \
    2122     pmPSF.c \
    2223     pmPSFtry.c \
     
    4647     pmPSF.h \
    4748     pmPSFtry.h \
    48      pmGrowthCurve.h
     49     pmGrowthCurve.h \
     50     pmFPAviewObjectsIO.h
  • branches/rel10_ifa/psModules/src/objects/models/pmModel_QGAUSS.c

    r6493 r6712  
    105105    params[6] = 0.0;
    106106    params[7] = 1.0;
     107
    107108    return(true);
    108109}
  • branches/rel10_ifa/psModules/src/objects/pmFPAviewReadObjects.c

    r6573 r6712  
    33 *  @author EAM, IfA; GLG, MHPCC
    44 *
    5  *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-14 02:21:07 $
     5 *  @version $Revision: 1.1.2.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    125125        hdu = pmFPAviewThisHDU (view, file->fpa);
    126126
    127         char *filename = pmFPAviewNameFromRule (file->filerule, view, file->fpa);
     127        char *filename = pmFPAfileNameFromRule (file->filerule, file, view);
    128128        file->fits = psFitsOpen (filename, "r");
    129129        hdu->header = psFitsReadHeader (NULL, file->fits);
    130130        psFitsClose (file->fits);
    131131        sources  = pmSourcesReadCMP (filename, hdu->header);
     132        psFree (filename);
    132133        break;
    133134
     
    136137        hdu = pmFPAviewThisHDU (view, file->fpa);
    137138        if (hdu->header == NULL) {
    138             char *headname = pmFPAviewNameFromRule (file->extxtra, view, file->fpa);
     139            char *headname = pmFPAfileNameFromRule (file->extxtra, file, view);
    139140            psFitsMoveExtName (file->fits, headname);
    140141            hdu->header = psFitsReadHeader (NULL, file->fits);
     142            psFree (headname);
    141143        }
    142144
    143         char *dataname = pmFPAviewNameFromRule (file->extrule, view, file->fpa);
     145        char *dataname = pmFPAfileNameFromRule (file->extrule, file, view);
    144146        psFitsMoveExtName (file->fits, dataname);
    145147        sources  = pmSourcesReadCMF (file->fits, hdu->header);
     148        psFree (dataname);
    146149        break;
    147150
  • branches/rel10_ifa/psModules/src/objects/pmFPAviewWriteObjects.c

    r6573 r6712  
    33 *  @author EAM, IfA; GLG, MHPCC
    44 *
    5  *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-14 02:21:07 $
     5 *  @version $Revision: 1.1.2.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    2727#include "pmFPAviewObjectsIO.h"
    2828
     29bool psFitsWriteHeaderNotImage (psFits *fits, psMetadata *header)
     30{
     31
     32    int status = 0;
     33    char fitsErr[1024];
     34
     35    psMetadataItem *mdi = NULL;
     36    mdi = psMetadataLookup (header, "NAXIS");
     37    if (mdi != NULL) {
     38        mdi->data.S32 = 0;
     39        mdi->type = PS_DATA_S32;
     40    }
     41
     42    fits_create_img (fits->fd, SHORT_IMG, 0, NULL, &status);
     43
     44    if (status != 0) {
     45        fits_get_errstatus (status, fitsErr);
     46        psError (PS_ERR_IO, true, PS_ERRORTEXT_psFits_WRITE_FAILED, fitsErr);
     47        exit (2);
     48    }
     49
     50    psFitsWriteHeader (header, fits);
     51
     52    return true;
     53}
     54
    2955// Given a FITS file pointer, read the table of object data
    3056bool pmFPAviewWriteObjects (pmFPAview *view, pmFPAfile *file)
    3157{
    3258
    33     pmFPA *fpa = view->fpa;
     59    pmFPA *fpa = file->fpa;
    3460
    3561    if (view->chip == -1) {
     
    112138    char *headname;
    113139    pmHDU *hdu;
     140    pmHDU *phu;
    114141
    115142    psArray *sources = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.SOURCES");
     143    return true;
    116144
    117145    switch (file->type) {
     146    case PM_FPA_FILE_RAW:
     147        filename = pmFPAfileNameFromRule (file->filerule, file, view);
     148        pmSourcesWriteRAW (sources, filename);
     149        psFree (filename);
     150        break;
     151
    118152    case PM_FPA_FILE_OBJ:
    119         filename = pmFPAviewNameFromRule (file->filerule, view, file->fpa);
     153        filename = pmFPAfileNameFromRule (file->filerule, file, view);
    120154        pmSourcesWriteOBJ (sources, filename);
     155        psFree (filename);
    121156        break;
    122157
    123158    case PM_FPA_FILE_SX:
    124         filename = pmFPAviewNameFromRule (file->filerule, view, file->fpa);
     159        filename = pmFPAfileNameFromRule (file->filerule, file, view);
    125160        pmSourcesWriteSX (sources, filename);
     161        psFree (filename);
    126162        break;
    127163
     
    129165        // a SPLIT format : only one header and object table per file
    130166        hdu = pmFPAviewThisHDU (view, file->fpa);
    131         filename = pmFPAviewNameFromRule (file->filerule, view, file->fpa);
     167        filename = pmFPAfileNameFromRule (file->filerule, file, view);
    132168        pmSourcesWriteCMP (sources, filename, hdu->header);
     169        psFree (filename);
    133170        break;
    134171
    135172    case PM_FPA_FILE_CMF:
    136         // write header, if not yet written?
     173        // write a PHU?
     174        // write a header?
     175        // write the data
     176
     177        // get the current header
    137178        hdu = pmFPAviewThisHDU (view, file->fpa);
    138179
    139         // XXX is this needed? is it automatically added?
    140         // psMetadataAdd (header, PS_LIST_TAIL, "EXTEND", PS_DATA_BOOL | PS_META_REPLACE, "this file has extensions", true);
    141 
    142         // I need a test to see if the Cell header has been written out
    143         if (hdu->header) {
    144             psMetadataItem *mdi = NULL;
    145             headname = pmFPAviewNameFromRule (file->extxtra, view, file->fpa);
    146 
    147             // set NAXIS to 0 (we don't write out the data array)
    148             // XXX part of the header cleanup?
    149             mdi = psMetadataLookup (hdu->header, "NAXIS");
    150             mdi->data.S32 = 0;
    151             mdi->type = PS_DATA_S32;
    152 
    153             if (strcasecmp (headname, "PHU")) {
    154                 psMetadataAdd (hdu->header, PS_LIST_HEAD, "EXTNAME", PS_DATA_STRING, "extension name", headname);
    155             }
    156             psFitsWriteHeader (hdu->header, file->fits);
     180        // if file does not yet have a PHU, write it to disk
     181        if (file->phu == NULL) {
     182            // get the corresponding phu
     183            phu = pmFPAviewThisPHU (view, file->fpa);
     184
     185            // CMF always has extensions
     186            psMetadataAdd (phu->header, PS_LIST_TAIL, "EXTEND", PS_DATA_BOOL | PS_META_REPLACE, "this file has extensions", true);
     187            psFitsWriteHeaderNotImage (file->fits, phu->header);
     188            file->phu = phu->header;
     189            psTrace ("pmFPAfile", 5, "wrote phu %s (type: %d)\n", file->filename, file->type);
     190
     191            file->phu = phu->header;
    157192        }
    158         dataname = pmFPAviewNameFromRule (file->extrule, view, file->fpa);
     193
     194        // this this header block is new, write it to disk,
     195        if (hdu->header != file->header) {
     196            // determine name for header extension
     197            headname = pmFPAfileNameFromRule (file->extxtra, file, view);
     198            psMetadataAddStr (hdu->header, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "extension name", headname);
     199            psFitsWriteHeaderNotImage (file->fits, hdu->header);
     200            psTrace ("pmFPAfile", 5, "wrote ext head %s (type: %d)\n", file->filename, file->type);
     201            file->header = hdu->header;
     202            psFree (headname);
     203        }
     204
     205        // write this table to disk
     206        dataname = pmFPAfileNameFromRule (file->extrule, file, view);
    159207        pmSourcesWriteCMF (file->fits, sources, hdu->header, dataname);
     208        psFree (dataname);
    160209        break;
    161210
  • branches/rel10_ifa/psModules/src/objects/pmSourceIO.c

    r6556 r6712  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-09 03:14:23 $
     5 *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    5353}
    5454
    55 /***** Text Output Methods *****/
    56 # if (0)
    57     bool pmSourcesWriteText (psArray *sources, char *filename)
    58 {
    59 
    60     char *name = (char *) psAlloc (strlen(filename) + 10);
    61 
    62     sprintf (name, "%s.psf.dat", filename);
    63     pmModelWritePSFs (sources, name);
    64 
    65     sprintf (name, "%s.ext.dat", filename);
    66     pmModelWriteEXTs (sources, name);
    67 
    68     sprintf (name, "%s.nul.dat", filename);
    69     pmModelWriteNULLs (sources, name);
    70 
    71     sprintf (name, "%s.mnt.dat", filename);
    72     pmMomentsWriteText (sources, name);
    73 
    74     psFree (name);
    75     return true;
    76 }
    77 # endif
  • branches/rel10_ifa/psModules/src/objects/pmSourceIO.h

    r6556 r6712  
    33 *  @author EAM, IfA; GLG, MHPCC
    44 *
    5  *  @version $Revision: 1.1.2.1 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-09 03:14:23 $
     5 *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    1414
    1515int pmSourceDophotType (pmSource *source);
    16 bool pmSourcesWriteText (psArray *sources, char *filename);
    1716
     17bool pmSourcesWriteRAW (psArray *sources, char *filename);
    1818bool pmSourcesWriteOBJ (psArray *sources, char *filename);
    1919bool pmSourcesWriteSX (psArray *sources, char *filename);
     
    2424psArray *pmSourcesReadCMF (psFits *fits, psMetadata *header);
    2525
     26bool pmSourcesWritePSFs (psArray *sources, char *filename);
     27bool pmSourcesWriteEXTs (psArray *sources, char *filename);
     28bool pmSourcesWriteNULLs (psArray *sources, char *filename);
     29bool pmMomentsWriteText (psArray *sources, char *filename);
     30bool pmPeaksWriteText (psArray *peaks, char *filename);
     31
    2632# endif /* PM_SOURCE_IO_H */
  • branches/rel10_ifa/psModules/src/objects/pmSourceIO_CMF.c

    r6565 r6712  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-09 04:25:03 $
     5 *  @version $Revision: 1.1.2.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    8787    psMetadataAdd (theader, PS_LIST_HEAD, "EXTNAME", PS_DATA_STRING, "extension name", extname);
    8888
    89     psFitsWriteHeader (header, fits);
    9089    psFitsWriteTable (fits, theader, table);
     90    psTrace ("pmFPAfile", 5, "wrote ext data %s\n", extname);
     91
    9192    return true;
    9293}
  • branches/rel10_ifa/psModules/src/objects/pmSourceIO_RAW.c

    r6545 r6712  
     1/** @file  pmSourceIO.c
     2 *
     3 *  @author EAM, IfA
     4 *
     5 *  @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-28 02:14:56 $
     7 *
     8 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     9 *
     10 */
     11
     12#include <stdio.h>
     13#include <math.h>
     14#include <string.h>
     15#include "pslib.h"
     16#include "psLine.h"
     17#include "psEllipse.h"
     18#include "pmHDU.h"
     19#include "pmFPA.h"
     20#include "pmPeaks.h"
     21#include "pmMoments.h"
     22#include "pmGrowthCurve.h"
     23#include "pmModel.h"
     24#include "pmPSF.h"
     25#include "pmSource.h"
     26#include "pmModelGroup.h"
     27#include "pmSourcePhotometry.h"
     28#include "pmSourceIO.h"
     29
     30/***** Text Output Methods *****/
     31bool pmSourcesWriteRAW (psArray *sources, char *filename)
     32{
     33
     34    char *name = (char *) psAlloc (strlen(filename) + 10);
     35
     36    sprintf (name, "%s.psf.dat", filename);
     37    pmSourcesWritePSFs (sources, name);
     38
     39    sprintf (name, "%s.ext.dat", filename);
     40    pmSourcesWriteEXTs (sources, name);
     41
     42    sprintf (name, "%s.nul.dat", filename);
     43    pmSourcesWriteNULLs (sources, name);
     44
     45    sprintf (name, "%s.mnt.dat", filename);
     46    pmMomentsWriteText (sources, name);
     47
     48    psFree (name);
     49    return true;
     50}
     51
    152// write the PSF sources to an output file
    2 bool pmModelWritePSFs (psArray *sources, char *filename)
    3 {
    4 
    5     double dPos, dMag;
     53bool pmSourcesWritePSFs (psArray *sources, char *filename)
     54{
     55
     56    double dPos;
    657    int i, j;
    758    FILE *f;
     
    1162    f = fopen (filename, "w");
    1263    if (f == NULL) {
    13         psLogMsg ("pmModelWritePSFs", 3, "can't open output file for moments%s\n", filename);
     64        psLogMsg (__func__, 3, "can't open output file for PSFs: %s\n", filename);
    1465        return false;
    1566    }
     
    1869    for (i = 0; i < sources->n; i++) {
    1970        pmSource *source = (pmSource *) sources->data[i];
    20         if (source->type != PM_SOURCE_STAR)
     71        if (source->type != PM_SOURCE_TYPE_STAR)
    2172            continue;
    2273        model = source->modelPSF;
     
    2980        // dPos is positional error, dMag is mag error
    3081        dPos = hypot (dPAR[2], dPAR[3]);
    31         dMag = dPAR[1] / PAR[1];
    3282
    3383        fprintf (f, "%7.1f %7.1f  %7.1f %8.4f  %7.4f %7.4f  ",
    34                  PAR[2], PAR[3], PAR[0], source->fitMag, dMag, dPos);
     84                 PAR[2], PAR[3], PAR[0], source->psfMag, source->errMag, dPos);
    3585
    3686        for (j = 4; j < model->params->n; j++) {
     
    54104
    55105// dump the sources to an output file
    56 bool pmModelWriteEXTs (psArray *sources, char *filename)
    57 {
    58 
    59     double dPos, dMag;
     106bool pmSourcesWriteEXTs (psArray *sources, char *filename)
     107{
     108
     109    double dPos;
    60110    int i, j;
    61111    FILE *f;
     
    73123        pmSource *source = (pmSource *) sources->data[i];
    74124
    75         if (source->type != PM_SOURCE_EXTENDED)
     125        if (source->type != PM_SOURCE_TYPE_EXTENDED)
    76126            continue;
    77127        model = pmSourceMagnitudes (source, NULL, 0.0);
     
    85135        // XXX these are hardwired for SGAUSS
    86136        dPos = hypot ((dPAR[4] / PAR[4]), (dPAR[5] / PAR[5]));
    87         dMag = dPAR[1] / PAR[1];
    88137
    89138        fprintf (f, "%7.1f %7.1f  %7.1f %8.4f  %7.4f %7.4f  ",
    90                  PAR[2], PAR[3], PAR[0], source->fitMag, dMag, dPos);
     139                 PAR[2], PAR[3], PAR[0], source->extMag, source->errMag, dPos);
    91140
    92141        for (j = 4; j < model->params->n; j++) {
     
    111160
    112161// dump the sources to an output file
    113 bool pmModelWriteNULLs (psArray *sources, char *filename)
     162bool pmSourcesWriteNULLs (psArray *sources, char *filename)
    114163{
    115164
     
    132181
    133182        // skip these sources (in PSF or EXT)
    134         if (source->type == PM_SOURCE_STAR)
    135             continue;
    136         if (source->type == PM_SOURCE_EXTENDED)
     183        if (source->type == PM_SOURCE_TYPE_STAR)
     184            continue;
     185        if (source->type == PM_SOURCE_TYPE_EXTENDED)
    137186            continue;
    138187
Note: See TracChangeset for help on using the changeset viewer.