IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 8, 2012, 2:30:52 PM (14 years ago)
Author:
eugene
Message:

add IO functions for splines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20120905/Ohana/src/opihi/lib.shell/VectorIO.c

    r33963 r34529  
    22 
    33// write a set of vectors to a FITS file (vectors names become fits column names)
    4 int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, char *format) {
    5  
     4int WriteVectorTable (Header *theader, FTable *ftable, char *extname, Vector **vec, int Nvec, char *format) {
     5 
     6  int j;
     7
    68  char *tformat = NULL;
    7   Header header;
    8   Matrix matrix;
    9   Header theader;
    10   FTable ftable;
    11 
    12   int j;
    13   FILE *f = NULL;
    14 
    15   /* open file for outuput */
    16   if (append) {
    17     f = fopen (filename, "a");
    18   } else {
    19     f = fopen (filename, "w");
    20   }
    21   if (f == (FILE *) NULL) {
    22     gprint (GP_ERR, "can't open file for write : %s\n", filename);
    23     return (FALSE);
    24   }
    25 
    26   if (!append) {
    27     gfits_init_header (&header);
    28     header.extend = TRUE;
    29     gfits_create_header (&header);
    30     gfits_create_matrix (&header, &matrix);
    31   }
    32 
    33   gfits_create_table_header (&theader, "BINTABLE", extname);
     9
     10  gfits_create_table_header (theader, "BINTABLE", extname);
    3411
    3512  ALLOCATE (tformat, char, 2*Nvec);
     
    7148  // this somehow
    7249  for (j = 0; j < Nvec; j++) {
    73     gfits_define_bintable_column (&theader, &tformat[2*j], vec[j][0].name, NULL, NULL, 1.0, 0.0);
     50    gfits_define_bintable_column (theader, &tformat[2*j], vec[j][0].name, NULL, NULL, 1.0, 0.0);
    7451  }
    7552  free (tformat);
    7653
    7754  // generate the output array that carries the data
    78   gfits_create_table (&theader, &ftable);
     55  gfits_create_table (theader, ftable);
    7956
    8057  // add the vectors to the output array
    8158  for (j = 0; j < Nvec; j++) {
    8259    if (vec[j][0].type == OPIHI_FLT) {
    83       gfits_set_bintable_column_reformat (&theader, &ftable, vec[j][0].name, "double", vec[j][0].elements.Flt, vec[j][0].Nelements);
     60      gfits_set_bintable_column_reformat (theader, ftable, vec[j][0].name, "double", vec[j][0].elements.Flt, vec[j][0].Nelements);
    8461    } else {
    85       gfits_set_bintable_column_reformat (&theader, &ftable, vec[j][0].name, "int", vec[j][0].elements.Int, vec[j][0].Nelements);
    86     }
    87   }
     62      gfits_set_bintable_column_reformat (theader, ftable, vec[j][0].name, "int", vec[j][0].elements.Int, vec[j][0].Nelements);
     63    }
     64  }
     65  return (TRUE);
     66
     67 escape:
     68  if (tformat) free (tformat);
     69  return (FALSE);
     70}
     71 
     72// write a set of vectors to a FITS file (vectors names become fits column names)
     73int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, char *format) {
     74 
     75  Header header;
     76  Matrix matrix;
     77  Header theader;
     78  FTable ftable;
     79
     80  FILE *f = NULL;
     81
     82  /* open file for outuput */
     83  if (append) {
     84    f = fopen (filename, "a");
     85  } else {
     86    f = fopen (filename, "w");
     87  }
     88  if (f == (FILE *) NULL) {
     89    gprint (GP_ERR, "can't open file for write : %s\n", filename);
     90    return (FALSE);
     91  }
     92
     93  if (!WriteVectorTable (&theader, &ftable, extname, vec, Nvec, format)) goto escape;
    8894
    8995  if (!append) {
     96    gfits_init_header (&header);
     97    header.extend = TRUE;
     98    gfits_create_header (&header);
     99    gfits_create_matrix (&header, &matrix);
    90100    gfits_fwrite_header  (f, &header);
    91101    gfits_fwrite_matrix  (f, &matrix);
     
    111121  gfits_free_table (&ftable);
    112122
    113   if (tformat) free (tformat);
    114123  fclose (f);
    115124  fflush (f);
Note: See TracChangeset for help on using the changeset viewer.