- Timestamp:
- Oct 8, 2012, 2:30:52 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20120905/Ohana/src/opihi/lib.shell/VectorIO.c
r33963 r34529 2 2 3 3 // 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 4 int WriteVectorTable (Header *theader, FTable *ftable, char *extname, Vector **vec, int Nvec, char *format) { 5 6 int j; 7 6 8 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); 34 11 35 12 ALLOCATE (tformat, char, 2*Nvec); … … 71 48 // this somehow 72 49 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); 74 51 } 75 52 free (tformat); 76 53 77 54 // generate the output array that carries the data 78 gfits_create_table ( &theader, &ftable);55 gfits_create_table (theader, ftable); 79 56 80 57 // add the vectors to the output array 81 58 for (j = 0; j < Nvec; j++) { 82 59 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); 84 61 } 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) 73 int 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; 88 94 89 95 if (!append) { 96 gfits_init_header (&header); 97 header.extend = TRUE; 98 gfits_create_header (&header); 99 gfits_create_matrix (&header, &matrix); 90 100 gfits_fwrite_header (f, &header); 91 101 gfits_fwrite_matrix (f, &matrix); … … 111 121 gfits_free_table (&ftable); 112 122 113 if (tformat) free (tformat);114 123 fclose (f); 115 124 fflush (f);
Note:
See TracChangeset
for help on using the changeset viewer.
