Changeset 3491
- Timestamp:
- Mar 23, 2005, 6:18:28 PM (21 years ago)
- Location:
- trunk/Ohana/src/imregister
- Files:
-
- 1 added
- 8 edited
-
doc/spdb.txt (modified) (1 diff)
-
include/spreg.h (modified) (1 diff)
-
spreg/db2.c (added)
-
spreg/delete.c (modified) (2 diffs)
-
spreg/match.c (modified) (2 diffs)
-
spreg/modify.c (modified) (2 diffs)
-
spreg/output.c (modified) (5 diffs)
-
spreg/unique.c (modified) (2 diffs)
-
src/spsearch.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/imregister/doc/spdb.txt
r2773 r3491 73 73 - spload-mef converts to a single 74 74 75 ----- 76 77 database interactions vs autocode FITS tables 78 -
trunk/Ohana/src/imregister/include/spreg.h
r2803 r3491 1 1 # include <signal.h> 2 3 /*** fits_db test APIs ***/ 4 typedef struct { 5 FILE *f; 6 char *extname; 7 int dbstate; 8 int lockstat; 9 Header header; 10 Matrix matrix; 11 Header theader; 12 FTable ftable; 13 } DB; 14 15 DB *fits_db_init (); 16 DB *fits_db_lock (DB *db, char *filename); 17 int fits_db_load (DB *db); 18 int fits_db_save (DB *db); 19 int fits_db_free (DB *db); 20 int fits_db_update (DB *db, VTable *vtable); 21 int fits_db_close (DB *db); 22 int fits_db_print_status (DB *db, char *message); 23 int fits_db_escape (DB *db, char *message); 24 25 /**** move to fitsio.h ***/ 2 26 3 27 enum { -
trunk/Ohana/src/imregister/spreg/delete.c
r2488 r3491 2 2 # include "spreg.h" 3 3 4 void DeleteSubset ( int *match, int Nmatch) {4 void DeleteSubset (DB *db, Spectrum *spectrum, int Nspectrum, int *match, int Nmatch) { 5 5 6 6 int i, j; 7 int *keep, Nbad, Nspectrum, Nsubset; 8 Spectrum *spectrum, *subset; 9 10 spectrum = get_spectra (&Nspectrum); 7 int *keep, Nbad, Nsubset; 8 Spectrum *subset; 11 9 12 10 ALLOCATE (keep, int, MAX (Nspectrum, 1)); … … 33 31 34 32 free (keep); 35 set_spectra (subset, Nsubset);36 33 37 save_db (); 34 fits_table_set_Spectrum (&db[0].table, subset, Nsubset); 35 fits_db_save (db); 38 36 exit (0); 39 40 37 } -
trunk/Ohana/src/imregister/spreg/match.c
r2803 r3491 2 2 # include "spreg.h" 3 3 4 int *match_criteria ( int *Nmatch) {4 int *match_criteria (Spectrum *spectrum, int Nspectrum, int *Nmatch) { 5 5 6 int i, j , Nspectrum;6 int i, j; 7 7 int N, NMATCH; 8 8 int *match; 9 9 int reject; 10 10 int Nfilename, Nobject, Ntelescope, Ninstrument; 11 Spectrum *spectrum;12 11 13 12 /* create selection index */ … … 18 17 Nfilename = Nobject = Ntelescope = Ninstrument = 0; 19 18 20 if (criteria.FilenameSelect) Nfilename= strlen (criteria.Filename);21 if (criteria.ObjectSelect) Nobject= strlen (criteria.Object);22 if (criteria.TelescopeSelect) Ntelescope= strlen (criteria.Telescope);19 if (criteria.FilenameSelect) Nfilename = strlen (criteria.Filename); 20 if (criteria.ObjectSelect) Nobject = strlen (criteria.Object); 21 if (criteria.TelescopeSelect) Ntelescope = strlen (criteria.Telescope); 23 22 if (criteria.InstrumentSelect) Ninstrument = strlen (criteria.Instrument); 24 25 spectrum = get_spectra (&Nspectrum);26 23 27 24 /* find entries that matches criteria */ -
trunk/Ohana/src/imregister/spreg/modify.c
r2803 r3491 2 2 # include "spreg.h" 3 3 4 void ModifySubset ( int *match, int Nmatch) {4 void ModifySubset (DB *db, Spectrum *spectrum, int Nspectrum, int *match, int Nmatch) { 5 5 6 6 int i, j, Nold; 7 7 char *tmppath; 8 int Nspectrum; 9 Spectrum *spectrum; 8 VTable vtable; 10 9 11 10 Nold = 0; 12 11 tmppath = NULL; 13 14 spectrum = get_spectra (&Nspectrum);15 12 16 13 /* create some necessary variables */ … … 41 38 } 42 39 43 update_db (match, Nmatch); 40 fits_vtable_from_ftable (&vtable, &db[0].ftable, match, Nmatch); 41 for (i = 0; i < Nmatch; i++) { 42 fits_convert_Spectrum (vtable.buffer[i], 1); 43 } 44 fits_db_update (db, &vtable); 44 45 fprintf (stderr, "SUCCESS\n"); 45 46 exit (0); -
trunk/Ohana/src/imregister/spreg/output.c
r2803 r3491 3 3 4 4 static int RegTimeMode = FALSE; 5 static int PTstyle = FALSE;5 static int PTstyle = FALSE; 6 6 7 7 void SetOutputMode (char *mode) { … … 19 19 20 20 /* given a subset list, write out the selected spectra, if desired */ 21 void OutputSubset (int *match, int Nmatch) { 22 23 int Nspectrum; 24 Spectrum *spectrum; 25 26 spectrum = get_spectra (&Nspectrum); 21 void OutputSubset (Spectrum *spectra, int Nspectra, int *match, int Nmatch) { 27 22 28 23 if (output.table != (char *) NULL) { … … 42 37 43 38 int i, j; 44 Header header , theader;39 Header header; 45 40 Matrix matrix; 46 FTable table; 41 Header theader; 42 FTable ftable; 47 43 Spectrum *subset; 48 44 49 /* define table layout */ 50 define_table (&header, &matrix, &theader, &table); 51 45 /* extract subset list to single array */ 52 46 ALLOCATE (subset, Spectrum, MAX (1, Nmatch)); 53 47 for (i = 0; i < Nmatch; i++){ … … 55 49 memcpy (&subset[i], &spectrum[j], sizeof (Spectrum)); 56 50 } 57 ConvertStruct ((char *) subset, sizeof (Spectrum), Nmatch, "spectrum");58 fits_add_rows (&table, (char *) subset, Nmatch, sizeof (Spectrum));59 51 60 fits_write_header (filename, &header); 61 fits_write_matrix (filename, &matrix); 62 fits_write_Theader (filename, &theader); 63 fits_write_table (filename, &table); 52 /* open file for output */ 53 f = fopen (filename, "w"); 54 if (f == NULL) { 55 fprintf (stderr, "ERROR: can't open output file %s\n", filename); 56 exit (1); 57 } 58 59 /* create primary header */ 60 fits_init_header (header); 61 header[0].extend = TRUE; 62 fits_create_header (header); 63 fits_create_matrix (header, matrix); 64 fits_print (header, "NEXTEND", "%d", 1, 1); 65 66 ftable.header = &theader; 67 fits_table_set_Spectrum (&ftable, subset, Nmatch); 68 69 fits_fwrite_header (f, &header); 70 fits_fwrite_matrix (f, &matrix); 71 fits_fwrite_Theader (f, &theader); 72 fits_fwrite_ftable (f, &ftable)); 73 fclose (f); 74 64 75 exit (0); 65 76 } 66 77 78 /* can the table definition here be autocoded as well? */ 67 79 void DumpFitsTable (char *filename, Spectrum *spectrum, int *match, int Nmatch) { 68 80 … … 94 106 fits_modify (&theader, "DATE", "%s", 1, datestr); 95 107 96 /* define table layout */108 /* define table layout (can this be autocoded?) */ 97 109 fits_define_table_column (&theader, "A32", "FILENAME", "filename in db", ""); 98 110 fits_define_table_column (&theader, "A64", "PATHNAME", "fullpath in db", ""); -
trunk/Ohana/src/imregister/spreg/unique.c
r2803 r3491 3 3 4 4 /* input is a subset index of spectrum list, output is a new subset */ 5 int *unique_entries ( int *subset, int *Nmatch) {5 int *unique_entries (Spectrum *spectrum, int Nspectrum, int *subset, int *Nmatch) { 6 6 7 int i, j, m, Ns pectrum, Nsubset;7 int i, j, m, Nsubset; 8 8 int N, NMATCH; 9 9 int *match, *entry; 10 Spectrum *spectrum;11 10 char idxline[128]; 12 11 char **index; … … 20 19 21 20 Nsubset = *Nmatch; 22 spectrum = get_spectra (&Nspectrum);23 21 24 22 /* index = filename */ -
trunk/Ohana/src/imregister/src/spsearch.c
r2488 r3491 1 1 # include "imregister.h" 2 2 # include "spreg.h" 3 static char *version = " imsearch $Revision: 1.1.1.1$";3 static char *version = "spsearch $Revision: 1.2 $"; 4 4 5 5 int main (int argc, char **argv) { 6 6 7 int status, Nmatch ;7 int status, Nmatch, Nspectra; 8 8 int *match; 9 DB *db; 10 Spectrum *spectra; 9 11 10 12 get_version (argc, argv, version); 11 13 args (argc, argv); 12 14 13 set_db (SpectrumDB); 15 lockstate = (output.modify || output.delete) ? LCK_HARD : LCK_SOFT; 16 db = fits_db_init (lockstate); 14 17 15 status = load_db (); 16 if (!status) { 17 close_db (); 18 exit (0); 18 if (!fits_db_lock (db, SpectrumDB)) { 19 fits_db_close (db); 20 exit (1); 19 21 } 20 if (!output.modify && !output.delete) close_db ();21 22 22 match = match_criteria (&Nmatch); 23 match = unique_entries (match, &Nmatch); 23 if (!fits_db_load (db)) { 24 fits_db_close (db); 25 exit (1); 26 } 27 if (!output.modify && !output.delete) fits_db_close (db); 24 28 25 if (output.modify) ModifySubset (match, Nmatch); 26 if (output.delete) DeleteSubset (match, Nmatch); 29 spectrum = fits_table_get_Spectrum (&db[0].table, &Nspectrum); 30 31 match = match_criteria (spectra, Nspectra, &Nmatch); 32 match = unique_entries (spectra, Nspectra, match, &Nmatch); 27 33 28 OutputSubset (match, Nmatch); 34 if (output.modify) ModifySubset (db, spectra, Nspectra, match, Nmatch); 35 if (output.delete) DeleteSubset (db, spectra, Nspectra, match, Nmatch); 36 37 OutputSubset (spectra, Nspectra, match, Nmatch); 29 38 30 39 exit (0); 31 40 } 32 33 /*34 35 FITS table version:36 37 load_db - open, read in database, store as RegImage structure38 match - return index 'match' to matched images39 modify - change value of selected images40 write out subset of rows41 delete - remove selected images from image structure42 write out entire table43 output - write out subset in various formats44 45 get_images returns pointer to complete image structure46 47 48 SQL version:49 50 load_db - set up connection51 match - convert criteria to SQL where clause and do:52 'select from images [where clause]'53 images structure is filled with result from query54 modify - change value of subset selection (identical)55 update selected rows56 delete - user where clause and do57 'delete from images where clause'58 output - (identical)59 60 get_images returns pointer to image subset from query61 match[i] = i62 63 */
Note:
See TracChangeset
for help on using the changeset viewer.
