Changeset 4864
- Timestamp:
- Aug 23, 2005, 8:55:22 PM (21 years ago)
- Location:
- trunk/Ohana/src
- Files:
-
- 17 added
- 6 deleted
- 70 edited
-
addstar/Makefile (modified) (1 diff)
-
addstar/include/addstar.h (modified) (3 diffs)
-
addstar/src/Shutdown.c (added)
-
addstar/src/addstar.c (modified) (4 diffs)
-
addstar/src/gimages.c (modified) (6 diffs)
-
addstar/src/image-db.c (modified) (2 diffs)
-
addstar/src/rfits.c (modified) (1 diff)
-
addstar/src/wimage.c (modified) (2 diffs)
-
delstar/Makefile (modified) (1 diff)
-
delstar/include/delstar.h (modified) (3 diffs)
-
delstar/src/Shutdown.c (added)
-
delstar/src/args.c (modified) (1 diff)
-
delstar/src/delete_image.c (deleted)
-
delstar/src/delete_imagefile.c (modified) (3 diffs)
-
delstar/src/delete_imagename.c (modified) (3 diffs)
-
delstar/src/delete_times.c (modified) (3 diffs)
-
delstar/src/delstar.c (modified) (2 diffs)
-
delstar/src/dimages.c (deleted)
-
delstar/src/find_image_db.c (modified) (6 diffs)
-
delstar/src/find_images.c (deleted)
-
delstar/src/gcatstats.c (deleted)
-
delstar/src/gregions.c (deleted)
-
delstar/src/gtimes.c (deleted)
-
delstar/src/image-db.c (modified) (1 diff)
-
gastro2/src/rfits.c (modified) (1 diff)
-
getstar/src/gimages.c (modified) (2 diffs)
-
imregister/Makefile (modified) (1 diff)
-
imregister/detrend/altpath.c (modified) (4 diffs)
-
imregister/detrend/modify.c (modified) (2 diffs)
-
imregister/imphot/modify.c (modified) (2 diffs)
-
imregister/imreg/imregclient.c (modified) (2 diffs)
-
imregister/imreg/modify.c (modified) (2 diffs)
-
imregister/spreg/modify.c (modified) (2 diffs)
-
imregister/src/detregister.c (modified) (3 diffs)
-
imregister/src/detsearch.c (modified) (2 diffs)
-
imregister/src/imphotmerge.c (modified) (1 diff)
-
imregister/src/imphotsearch.c (modified) (3 diffs)
-
imregister/src/imregister.c (modified) (3 diffs)
-
imregister/src/imregtable.c (modified) (4 diffs)
-
imregister/src/imsearch.c (modified) (2 diffs)
-
imregister/src/imstatreg.c (modified) (5 diffs)
-
imregister/src/photreg.c (modified) (3 diffs)
-
imregister/src/photsearch.c (modified) (2 diffs)
-
imregister/src/spregister.c (modified) (2 diffs)
-
imregister/src/spsearch.c (modified) (2 diffs)
-
libautocode/def/autocode.c (modified) (2 diffs)
-
libautocode/def/autocode.h (modified) (1 diff)
-
libfits/include/fitsio.h (modified) (2 diffs)
-
libohana/Makefile (modified) (1 diff)
-
libohana/include/dvo.h (modified) (3 diffs)
-
libohana/src/dvo_convert.c (modified) (6 diffs)
-
libohana/src/dvo_image.c (modified) (4 diffs)
-
libohana/src/fits_db.c (modified) (5 diffs)
-
libohana/src/phot_catalog_mef.c (modified) (2 diffs)
-
markstar/src/find_images.c (modified) (3 diffs)
-
markstar/src/markstar.c (modified) (3 diffs)
-
mosastro/src/rfits.c (modified) (1 diff)
-
opihi/dvo/LoadImages.c (modified) (1 diff)
-
opihi/dvo/badimages.c (modified) (4 diffs)
-
photdbc/Makefile (modified) (1 diff)
-
photdbc/include/photdbc.h (modified) (3 diffs)
-
photdbc/src/SetSignals.c (added)
-
photdbc/src/Shutdown.c (added)
-
photdbc/src/check_permissions.c (added)
-
photdbc/src/find_images.c (modified) (5 diffs)
-
photdbc/src/flag_measures.c (modified) (2 diffs)
-
photdbc/src/image-db.c (added)
-
photdbc/src/load_images.c (modified) (1 diff)
-
photdbc/src/overlap_funcs.c (added)
-
photdbc/src/photdbc.c (modified) (2 diffs)
-
relphot/Makefile (modified) (1 diff)
-
relphot/include/relphot.h (modified) (4 diffs)
-
relphot/src/MosaicOps.c (modified) (1 diff)
-
relphot/src/SetSignals.c (added)
-
relphot/src/Shutdown.c (added)
-
relphot/src/check_permissions.c (added)
-
relphot/src/find_images.c (modified) (4 diffs)
-
relphot/src/image-db.c (added)
-
relphot/src/load_images.c (modified) (2 diffs)
-
relphot/src/relphot.c (modified) (2 diffs)
-
relphot/src/wimages.c (added)
-
uniphot/Makefile (modified) (2 diffs)
-
uniphot/include/uniphot.h (modified) (4 diffs)
-
uniphot/src/SetSignals.c (added)
-
uniphot/src/Shutdown.c (added)
-
uniphot/src/check_permissions.c (added)
-
uniphot/src/find_image_sgroups.c (modified) (1 diff)
-
uniphot/src/find_image_tgroups.c (modified) (1 diff)
-
uniphot/src/image-db.c (added)
-
uniphot/src/load_images.c (modified) (1 diff)
-
uniphot/src/subset_images.c (added)
-
uniphot/src/uniphot.c (modified) (2 diffs)
-
uniphot/src/update.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/Makefile
r4805 r4864 61 61 $(SRC)/update_coords.$(ARCH).o \ 62 62 $(SRC)/wcatalog.$(ARCH).o \ 63 $(SRC)/ wimage.$(ARCH).o \63 $(SRC)/Shutdown.$(ARCH).o \ 64 64 $(SRC)/rfits.$(ARCH).o \ 65 65 $(SRC)/rtext.$(ARCH).o -
trunk/Ohana/src/addstar/include/addstar.h
r4826 r4864 138 138 Stars *getgsc PROTO((GSCRegion *patch, int *NSTARS)); 139 139 Stars *getusno PROTO((GSCRegion *catstats, int *Nstars)); 140 Image *gimages PROTO(( Image *image, int *Npimage));140 Image *gimages PROTO((FITS_DB *db, Image *image, int *Npimage)); 141 141 Stars *grefcat PROTO((char *Refcat, GSCRegion *catstats, int *nstars)); 142 142 Stars *grefstars PROTO((char *file, int *Nstars)); … … 152 152 int load_pt_catalog PROTO((Catalog *catalog, GSCRegion *region)); /*** choose new name ***/ 153 153 void load_subpix PROTO(()); 154 void lock_image_db PROTO(( ));154 void lock_image_db PROTO((FITS_DB *db, char *filename)); 155 155 int main PROTO((int argc, char **argv)); 156 156 void make_backup PROTO((char *filename)); … … 170 170 void sort_stars PROTO((Stars *stars, int N)); 171 171 int str_to_radec PROTO((double *ra, double *dec, char *str1, char *str2)); 172 void unlock_image_db PROTO(( Image *image));172 void unlock_image_db PROTO((FITS_DB *db)); 173 173 void update_coords PROTO((Average *average, Measure *measure, int *next)); 174 174 void wcatalog PROTO((Catalog *catalog)); 175 void wimage PROTO((Image *image)); 175 void wimage PROTO((FITS_DB *db, Image *image)); 176 void create_image_db PROTO((FITS_DB *db)); 177 void set_db PROTO((FITS_DB *in)); 176 178 177 179 void uppercase PROTO((char *string)); -
trunk/Ohana/src/addstar/src/addstar.c
r4854 r4864 8 8 GSCRegion *regions; 9 9 Catalog catalog; 10 FITS_DB db; 10 11 11 12 double dtime; … … 21 22 overlap = NULL; 22 23 regions = NULL; 24 set_db (&db); 23 25 24 26 if (SKYPROBE) load_subpix (); 25 27 26 /* we use the image table to lock db access */27 lock_image_db ( );28 /* we use the image table to lock db access -- perhaps this is not necessary?*/ 29 lock_image_db (&db, ImageCat); 28 30 29 31 switch (MODE) { … … 32 34 if ((DUMP != NULL) && !strcmp (DUMP, "rawstars")) dump_rawstars (stars, Nstars); 33 35 regions = gregion_image (&image, &Nregions); 34 overlap = gimages (&image, &Noverlap); 36 /* lock_image_db (&db, ImageCat); */ 37 overlap = gimages (&db, &image, &Noverlap); 38 /* unlock_image_db (&db); */ 35 39 break; 36 40 case M_REFLIST: … … 75 79 76 80 if (CALIBRATE) { FindCalibration (&image); } 77 unlock_image_db (&image); 81 82 if (db.dbstate == LCK_EMPTY) { 83 create_image_db (&db); 84 } 85 86 ohana_memcheck (FALSE); 87 88 /* write out new image */ 89 if (MODE == M_IMAGE) { 90 dvo_image_addrows (&db, &image, 1); 91 SetProtect (TRUE); 92 dvo_image_update (&db, VERBOSE); 93 SetProtect (FALSE); 94 } 95 ohana_memcheck (FALSE); 96 /* unlock_image_db (&db); */ 78 97 79 98 gettimeofday (&stop, NULL); -
trunk/Ohana/src/addstar/src/gimages.c
r4854 r4864 2 2 3 3 /* given image, find catalog images which overlap it */ 4 Image *gimages ( Image *image, int *Npimage) {4 Image *gimages (FITS_DB *db, Image *image, int *Npimage) { 5 5 6 int i, j, k, Nimage, addtolist, size, dbstate; 7 int NTIMAGE, Ntimage, ntimage; 8 int NPIMAGE, npimage; 6 int i, j, k, addtolist; 7 int NPIMAGE, npimage, Ntimage; 9 8 Image *timage, *pimage; 10 9 Coords tcoords; … … 12 11 double Xi[5], Yi[5], Xo[5], Yo[5]; /* image and original corners */ 13 12 double zeropt; 14 struct stat filestatus;15 FILE *f;16 17 FITS_DB *db;18 13 19 14 /* if image.db is opened successfully, f will not be NULL. … … 21 16 if image.db is not locked & opened successfully, we will not reach here! 22 17 */ 23 db = GetDB ();24 18 if (db[0].dbstate == LCK_EMPTY) { 25 19 *Npimage = 0; 26 20 return (NULL); 27 21 } 28 fseek (f, 0, SEEK_SET);29 22 30 if (!dvo_image_load (db, TRUE)) { 31 Shutdown ("can't read image catalog %s", ImageCat); 23 /* read entire db table (use block read eventually?) */ 24 if (!dvo_image_load (db, VERBOSE, FORCE_READ)) { 25 Shutdown ("can't read image catalog %s", db[0].filename); 32 26 } 33 timage = fits_table_get_Image (&db.ftable, &Ntimage); 34 /* timage represents the complete image table */ 27 timage = fits_table_get_Image (&db[0].ftable, &Ntimage, &db[0].swapped); 35 28 36 29 fits_scan (&db[0].header, "ZERO_PT", "%lf", 1, &zeropt); … … 80 73 BuildChipMatch (timage, Ntimage); 81 74 82 /* run through image table and search for overlaps */ 75 /* run through image table and search for overlaps 76 also define the vtable entries for the images we keep */ 77 83 78 for (i = 0; i < Ntimage; i++) { 84 79 … … 116 111 117 112 BuildChipMatch (pimage, npimage); 118 113 119 114 if (VERBOSE) fprintf (stderr, "found %d overlapping images\n", npimage); 120 115 … … 134 129 we are now loading in the entire image db table into memory. 135 130 136 we will need to write out the new image with a vtable.137 131 */ -
trunk/Ohana/src/addstar/src/image-db.c
r4854 r4864 1 1 # include "addstar.h" 2 2 3 # define LOCK LCK_XCLD 3 void lock_image_db (FITS_DB *db, char *filename) { 4 4 5 /* file-pointer to Image.db table. if image db does not yet exist*/6 static FITS_DB db;5 /* lock the image catalog */ 6 check_permissions (filename); 7 7 8 FITS_DB *GetDB () { 9 return (&db);10 } 8 db[0].lockstate = LCK_XCLD; 9 db[0].timeout = 3600.0; 10 fits_db_init (db); 11 11 12 void lock_image_db () { 13 /* lock the image catalog */ 14 check_permissions (ImageCat); 15 16 db.lockstate = LCK_XCLD; 17 db.timeout = 3600.0; 18 fits_db_init (&db); 19 20 if (!fits_db_lock (&db, ImageCat)) { 12 if (!fits_db_lock (db, filename)) { 21 13 fprintf (stderr, "ERROR: can't lock image catalog\n"); 22 14 exit (1); … … 24 16 } 25 17 26 void unlock_image_db ( Image *image) {18 void unlock_image_db (FITS_DB *db) { 27 19 28 20 mode_t mode; 29 21 30 /* protect wimage from interrupt signals */ 31 if (MODE == M_IMAGE) { 32 SetProtect (TRUE); 33 wimage (image); 34 SetProtect (FALSE); 22 fprintf (stderr, "closing file\n"); 23 if (db[0].f == NULL) { 24 fprintf (stderr, "re-closing file??\n"); 35 25 } 36 37 fits_db_close (&db);26 fits_db_close (db); 27 db[0].f = NULL; 38 28 39 29 /* force permissions to 666 */ 40 30 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; 41 chmod ( ImageCat, mode);31 chmod (db[0].filename, mode); 42 32 } 43 33 44 /* clean up open / locked ImageCat before shutting down */ 45 int Shutdown (char *format, ...) { 46 va_list argp; 47 char *formatplus; 48 49 ALLOCATE (formatplus, char, strlen(format)); 50 strcpy (formatplus, format); 51 strcat (formatplus, "\n"); 34 void create_image_db (FITS_DB *db) { 52 35 53 va_start (argp, format); 54 vfprintf (stderr, formatplus, argp); 55 free (formatplus); 56 va_end (argp); 36 if (VERBOSE) fprintf (stderr, "can't find %s, creating a new one\n", ImageCat); 57 37 58 SetProtect (TRUE); 59 fits_db_close (&db); 60 fprintf (stderr, "ERROR: addstar halted\n"); 61 exit (1); 38 /* create new header */ 39 fits_init_header (&db[0].header); 40 41 if (!strcmp (CATMODE, "RAW")) { 42 /* make header a fake image */ 43 db[0].header.bitpix = 16; 44 db[0].header.Naxes = 2; 45 db[0].header.Naxis[0] = 1; 46 db[0].header.Naxis[1] = 1; 47 fits_create_header (&db[0].header); 48 } 49 50 if (!strcmp (CATMODE, "MEF") || !strcmp (CATMODE, "SPLIT")) { 51 fits_create_header (&db[0].header); 52 } 53 54 fits_create_matrix (&db[0].header, &db[0].matrix); 55 fits_table_set_Image (&db[0].ftable, NULL, 0); 56 57 /* assign Zero Point provided by first image in dB */ 58 fits_modify (&db[0].header, "ZERO_PT", "%lf", 1, ZeroPt); 59 fits_modify (&db[0].header, "NIMAGES", "%d", 1, 0); 62 60 } 61 -
trunk/Ohana/src/addstar/src/rfits.c
r4299 r4864 16 16 if (!fits_fread_ftable (f, &table, "SMPFILE")) goto escape; 17 17 18 smpdata = fits_table_get_SMPData (&table, &Nstars );18 smpdata = fits_table_get_SMPData (&table, &Nstars, NULL); 19 19 20 20 ALLOCATE (stars, Stars, Nstars); -
trunk/Ohana/src/addstar/src/wimage.c
r4854 r4864 2 2 3 3 /* add 1 image to image db */ 4 void wimage (Image *image) {4 void wimages (FITS_DB *db, Image *image, int Nimage) { 5 5 6 FILE *f; 7 int Nimages, status, offset, dbstate; 8 Header header; 6 int status, Nimages; 9 7 10 db = GetDB (); 11 fseek (f, 0, SEEK_SET); 8 /* set permissions somewhere ... 9 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; 10 fchmod (ImageCat, mode); */ 12 11 13 if (dbstate == LCK_EMPTY) { 14 if (VERBOSE) fprintf (stderr, "can't find %s, creating a new one\n", ImageCat); 15 if (!fits_read_header (ImageTemplate, &header)) { 16 fprintf (stderr, "ERROR: can't find template header %s\n", ImageTemplate); 17 exit (1); 18 } 19 /* assign Zero Point provided by first image in dB */ 20 fits_modify (&header, "ZERO_PT", "%lf", 1, ZeroPt); 21 fits_modify (&header, "NIMAGES", "%d", 1, 0); 22 } else { 23 if (!fits_load_header (f, &header)) { 24 fprintf (stderr, "ERROR: can't read image header %s\n", ImageCat); 25 exit (1); 26 } 27 } 28 12 /* adjust header */ 29 13 Nimages = 0; 30 fits_scan (& header, "NIMAGES", "%d", 1, &Nimages);14 fits_scan (&db[0].header, "NIMAGES", "%d", 1, &Nimages); 31 15 Nimages ++; 32 fits_modify (& header, "NIMAGES", "%d", 1, Nimages);16 fits_modify (&db[0].header, "NIMAGES", "%d", 1, Nimages); 33 17 34 /* position to begining of file to write header */ 35 fseek (f, 0, SEEK_SET); 36 status = Fwrite (header.buffer, 1, header.size, f, "char"); 37 if (status != header.size) { 38 fprintf (stderr, "ERROR: failed writing data to image header\n"); 39 exit (1); 18 fits_table_to_vtable (&db[0].ftable, &db[0].vtable, 0, 0); 19 for (i = 0; i < Nimage; i++) { 20 fits_vadd_rows (&db[0].vtable, (char *) image, 1, sizeof(Image)); 40 21 } 41 22 42 /* position to end of data array */ 43 offset = (Nimages - 1)*sizeof(Image) + header.size; 44 fseek (f, offset, SEEK_SET); 23 /* check that primary header and table header agree */ 24 if (Nimages != db[0].header.Naxis[1]) { 25 fprintf (stderr, "header / table length mismatch!\n"); 26 } 45 27 46 status = Fwrite (image, sizeof(Image), 1, f, "image"); 47 if (status != 1) { 28 SetProtect (TRUE); 29 status = dvo_image_update (db, VERBOSE); 30 SetProtect (FALSE); 31 32 if (!status) { 48 33 fprintf (stderr, "ERROR: failed writing data to image catalog\n"); 49 34 exit (1); … … 51 36 } 52 37 53 /* the image we add in this routine is always a new image. 54 We only need to do two things: 55 1) append the data for the image to the end of the file 56 2) update the NIMAGES field in the header (which means, read in header, re-write) 57 */ 38 /* add the new image to the image table: 39 - use the table header (from ftable) 40 - create an empty vtable 41 - add the new image to the end of the vtable 42 43 - write out the vtable, either as TEXT or FITS 44 * dvo_image_update performs the needed byte-swap on the image data 45 */ -
trunk/Ohana/src/delstar/Makefile
r4832 r4864 40 40 $(SRC)/sort_lists.$(ARCH).o \ 41 41 $(SRC)/check_permissions.$(ARCH).o \ 42 $(SRC)/ dimages.$(ARCH).o42 $(SRC)/Shutdown.$(ARCH).o 43 43 44 44 OBJ = $(DELSTAR) -
trunk/Ohana/src/delstar/include/delstar.h
r4832 r4864 50 50 int args PROTO((int *argc, char **argv)); 51 51 void check_permissions PROTO((char *basefile)); 52 void delete_imagefile PROTO((char *filename)); 53 void delete_imagename PROTO((char *name)); 54 void delete_times PROTO(()); 55 int dimages PROTO((int *imlist, int Nimlist)); 52 void delete_imagefile PROTO((FITS_DB *db, char *filename)); 53 void delete_imagename PROTO((FITS_DB *db, char *name)); 54 void delete_times PROTO((FITS_DB *db)); 56 55 int edge_check PROTO((double *x1, double *y1, double *x2, double *y2)); 57 Image *find_images PROTO((FILE *f, CatStats *catstats, int *Nimages)); 58 int *find_images_data PROTO((Image *timage, int *nlist)); 59 int *find_images_name PROTO((char *filename, int *nlist)); 60 int *find_images_time PROTO((time_t start, time_t end, PhotCode *code, int *nlist)); 56 int *find_images_data PROTO((FITS_DB *db, Image *timage, int *nlist)); 57 int *find_images_name PROTO((FITS_DB *db, char *filename, int *nlist)); 58 int *find_images_time PROTO((FITS_DB *db, time_t start, time_t end, PhotCode *code, int *nlist)); 61 59 void find_matches PROTO((Catalog *catalog, int photcode, int start, int end)); 62 60 int gcatalog PROTO((Catalog *catalog)); … … 66 64 Image *gtimes PROTO((int *NIMAGE)); 67 65 void help PROTO(()); 68 int load_image_db PROTO(( ));69 void lock_image_db PROTO(( ));66 int load_image_db PROTO((FITS_DB *db)); 67 void lock_image_db PROTO((FITS_DB *db, char *filename)); 70 68 void match_images PROTO((Catalog *catalog, Image *image, int Nimage)); 71 69 double opening_angle PROTO((double x1, double y1, double x2, double y2, double x3, double y3)); … … 74 72 void sort_lists PROTO((float *X, float *Y, int *S, int N)); 75 73 void sort_regions PROTO((GSCRegion *region, int N)); 76 void unlock_image_db PROTO(( ));74 void unlock_image_db PROTO((FITS_DB *db)); 77 75 void usage PROTO(()); 78 76 int wcatalog PROTO((Catalog *catalog)); 77 78 void set_db (FITS_DB *in); -
trunk/Ohana/src/delstar/src/args.c
r4680 r4864 4 4 5 5 fprintf (stderr, "USAGE:\n"); 6 fprintf (stderr, " delstar (filename) or (start range) or -orphan (region)\n"); 6 fprintf (stderr, " delstar (filename)\n"); 7 fprintf (stderr, " delstar -name (filename)\n"); 7 8 fprintf (stderr, " delstar -time (start) (stop/range)\n"); 8 9 fprintf (stderr, " delstar -orphan (region)\n"); -
trunk/Ohana/src/delstar/src/delete_imagefile.c
r4611 r4864 1 1 # include "delstar.h" 2 2 3 void delete_imagefile ( char *filename) {3 void delete_imagefile (FITS_DB *db, char *filename) { 4 4 5 int i, j; 6 int Nregions, Nimlist; 5 int i, Nregions, Nimlist; 7 6 int *imlist; 8 7 double trange; … … 41 40 start = image[0].tzero; 42 41 stop = image[0].tzero + trange; 43 find_matches (&catalog, image[ j].source, start, stop);42 find_matches (&catalog, image[0].source, start, stop); 44 43 wcatalog (&catalog); 45 44 unlock_catalog (&catalog); … … 47 46 48 47 /* find and delete matching images */ 49 imlist = find_images_data ( image, &Nimlist);48 imlist = find_images_data (db, image, &Nimlist); 50 49 if (!Nimlist) Shutdown ("image %s not found in db", filename); 51 50 52 dimages (imlist, Nimlist); 51 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, imlist, Nimlist); 52 dvo_image_update (db, VERBOSE); 53 unlock_image_db (db); 53 54 54 save_image_db ();55 unlock_image_db ();56 55 fprintf (stderr, "SUCCESS\n"); 57 56 exit (0); -
trunk/Ohana/src/delstar/src/delete_imagename.c
r4680 r4864 1 1 # include "delstar.h" 2 2 3 void delete_imagename ( char *name) {3 void delete_imagename (FITS_DB *db, char *name) { 4 4 5 5 int i, j, k; … … 12 12 Catalog catalog; 13 13 14 image = GetImages (&Nimage);14 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 15 15 16 16 /* find image in db by name */ 17 imlist = find_images_name ( name, &Nimlist);17 imlist = find_images_name (db, name, &Nimlist); 18 18 if (!Nimlist) Shutdown ("image %s not found in db", name); 19 19 … … 55 55 56 56 /* delete the identified images */ 57 dimages (imlist, Nimlist); 57 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, imlist, Nimlist); 58 dvo_image_update (db, VERBOSE); 59 unlock_image_db (db); 58 60 59 save_image_db ();60 unlock_image_db ();61 61 fprintf (stderr, "SUCCESS\n"); 62 62 exit (0); -
trunk/Ohana/src/delstar/src/delete_times.c
r4680 r4864 1 1 # include "delstar.h" 2 2 3 void delete_times ( ) {3 void delete_times (FITS_DB *db) { 4 4 5 5 int i, j, k, n; … … 17 17 ALLOCATE (region, GSCRegion, NREGIONS); 18 18 19 image = GetImages (&Nimage);19 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 20 20 21 21 /* find images for time range, delete each image */ 22 imlist = find_images_time ( START, END, PHOTCODE, &Nimlist);22 imlist = find_images_time (db, START, END, PHOTCODE, &Nimlist); 23 23 24 24 /* find all overlapping regions */ … … 75 75 76 76 /* delete the identified images */ 77 dimages (imlist, Nimlist); 77 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, imlist, Nimlist); 78 dvo_image_update (db, VERBOSE); 79 unlock_image_db (db); 78 80 79 save_image_db ();80 unlock_image_db ();81 81 fprintf (stderr, "SUCCESS\n"); 82 82 exit (0); -
trunk/Ohana/src/delstar/src/delstar.c
r4680 r4864 2 2 3 3 int main (int argc, char **argv) { 4 5 FITS_DB db; 4 6 5 7 SetSignals (); … … 7 9 args (&argc, argv); 8 10 9 lock_image_db (); 10 load_image_db (); 11 set_db (&db); 12 lock_image_db (&db, ImageCat); 13 load_image_db (&db); 11 14 12 /* delete orphaned measurements (no image) from catalog */13 15 switch (MODE) { 14 16 case MODE_IMAGEFILE: 15 delete_imagefile ( argv[1]);17 delete_imagefile (&db, argv[1]); 16 18 break; 17 19 case MODE_IMAGENAME: 18 delete_imagename ( argv[1]);20 delete_imagename (&db, argv[1]); 19 21 break; 20 22 case MODE_TIME: 21 delete_times ( );23 delete_times (&db); 22 24 break; 23 25 case MODE_ORPHAN: -
trunk/Ohana/src/delstar/src/find_image_db.c
r4682 r4864 1 1 # include "delstar.h" 2 2 3 int *find_images_name ( char *filename, int *nlist) {3 int *find_images_name (FITS_DB *db, char *filename, int *nlist) { 4 4 5 5 int i, Nimage, Nlist, NLIST; … … 16 16 } 17 17 18 image = GetImages (&Nimage);18 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 19 19 20 20 Nlist = 0; … … 34 34 35 35 /* find images in db by image data (time/photcode) */ 36 int *find_images_data ( Image *timage, int *nlist) {36 int *find_images_data (FITS_DB *db, Image *timage, int *nlist) { 37 37 38 38 int i, Nimage, Nlist, NLIST; … … 42 42 int code; 43 43 44 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 45 44 46 start = timage[0].tzero - MAX(0.05*timage[0].trate*timage[0].NY, 1); 45 47 stop = timage[0].tzero + MAX(1.05*timage[0].trate*timage[0].NY, 1); 46 48 code = timage[0].source; 47 48 image = GetImages (&Nimage);49 49 50 50 Nlist = 0; … … 66 66 67 67 /* find images in db by image data (time/photcode) */ 68 int *find_images_time ( time_t start, time_t end, PhotCode *code, int *nlist) {68 int *find_images_time (FITS_DB *db, time_t start, time_t end, PhotCode *code, int *nlist) { 69 69 70 70 int i, Nimage, Nlist, NLIST; … … 72 72 Image *image; 73 73 74 image = GetImages (&Nimage);74 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 75 75 76 76 Nlist = 0; -
trunk/Ohana/src/delstar/src/image-db.c
r4680 r4864 1 1 # include "delstar.h" 2 2 3 # define LOCK LCK_XCLD 3 void lock_image_db (FITS_DB *db, char *filename) { 4 4 5 /* file-pointer to Image.db table. if image db does not yet exist */ 6 static FILE *f = (FILE *) NULL; 7 static int dbstate = LCK_UNLOCK; 5 /* lock the image catalog */ 6 check_permissions (filename); 8 7 9 static Header header;10 static Image *image = NULL;11 static int Nimage;8 db[0].lockstate = LCK_XCLD; 9 db[0].timeout = 3600.0; 10 fits_db_init (db); 12 11 13 FILE *GetDB (int *state) { 14 *state = dbstate; 15 return (f); 12 if (!fits_db_lock (db, filename)) { 13 fprintf (stderr, "ERROR: can't lock image catalog\n"); 14 exit (1); 15 } 16 16 } 17 17 18 Image *GetImages (int *nimage) { 19 *nimage = Nimage; 20 return (image); 21 } 22 23 int SetImages (Image *new, int Nnew) { 24 Nimage = Nnew; 25 image = new; 26 fits_modify (&header, "NIMAGES", "%d", 1, Nimage); 27 return (TRUE); 28 } 29 30 /* clean up open / locked ImageCat before shutting down */ 31 int Shutdown (char *format, ...) { 32 va_list argp; 33 char *formatplus; 34 35 ALLOCATE (formatplus, char, strlen(format)); 36 strcpy (formatplus, format); 37 strcat (formatplus, "\n"); 38 39 va_start (argp, format); 40 vfprintf (stderr, formatplus, argp); 41 va_end (argp); 42 43 SetProtect (TRUE); 44 fclearlockfile (ImageCat, f, LOCK, &dbstate); 45 fprintf (stderr, "ERROR: addstar halted\n"); 46 exit (1); 47 } 48 49 void lock_image_db () { 50 /* lock the image catalog */ 51 check_permissions (ImageCat); 52 f = fsetlockfile (ImageCat, 3600.0, LOCK, &dbstate); 53 if (f == NULL) { 54 Shutdown ("ERROR: can't lock image catalog"); 55 } 56 if (dbstate == LCK_EMPTY) { 57 Shutdown ("ERROR: database is empty"); 58 } 59 fseek (f, 0, SEEK_SET); 60 } 61 62 int load_image_db () { 63 64 int nimage; 65 66 /* read header */ 67 fseek (f, 0, SEEK_SET); 68 if (!fits_fread_header (f, &header)) { 69 Shutdown ("can't read image catalog %s", ImageCat); 70 } 71 fseek (f, header.size, SEEK_SET); 72 73 Nimage = 0; 74 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage); 75 ALLOCATE (image, Image, Nimage); 76 77 nimage = Fread (image, sizeof(Image), Nimage, f, "image"); 78 if (nimage != Nimage) { 79 Shutdown ("error reading images from db file"); 80 } 81 82 return (TRUE); 83 } 84 85 int save_image_db () { 86 87 int status; 88 char line[1024]; 89 mode_t mode; 90 91 /* use cp to make backup copy */ 92 sprintf (line, "cp %s %s~", ImageCat, ImageCat); 93 status = system (line); 94 if (status) { 95 Shutdown ("ERROR: unable to create %s~, exiting", ImageCat); 96 } 97 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; 98 sprintf (line, "%s~", ImageCat); 99 chmod (line, mode); 100 101 /* update header */ 102 fits_modify (&header, "NIMAGES", "%d", 1, Nimage); 103 104 /* write out data to already opened file */ 105 fseek (f, 0, SEEK_SET); 106 Fwrite (header.buffer, 1, header.size, f, "char"); 107 Fwrite (image, sizeof(Image), Nimage, f, "image"); 108 109 return (TRUE); 110 } 111 112 void unlock_image_db () { 18 void unlock_image_db (FITS_DB *db) { 113 19 114 20 mode_t mode; 115 21 116 fclearlockfile (ImageCat, f, LOCK, &dbstate); 22 fits_db_close (db); 23 24 /* force permissions to 666 */ 117 25 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; 118 chmod ( ImageCat, mode);26 chmod (db[0].filename, mode); 119 27 } 28 29 int load_image_db (FITS_DB *db) { 30 31 if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename); 32 33 /* read entire db table */ 34 if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename); 35 } -
trunk/Ohana/src/gastro2/src/rfits.c
r4772 r4864 13 13 if (!fits_fread_ftable (f, &table, "SMPFILE")) goto escape; 14 14 15 stars = fits_table_get_SMPData (&table, &Nstars );15 stars = fits_table_get_SMPData (&table, &Nstars, NULL); 16 16 17 17 ALLOCATE (stardata, StarData, Nstars); -
trunk/Ohana/src/getstar/src/gimages.c
r2490 r4864 10 10 Header header; 11 11 12 f = fopen (ImageCat, "r"); 13 if (f == (FILE *) NULL) { 14 fprintf (stderr, "error opening image cat %s\n", ImageCat); 15 exit (1); 16 } 17 18 /* read header */ 19 if (!fits_load_header (f, &header)) { 20 if (VERBOSE) fprintf (stderr, "ERROR: can't read image catalog %s\n", ImageCat); 21 exit (1); 22 } 12 set_db (&db); 13 lock_image_db (&db, ImageCat); 14 if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename); 15 if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename); 16 timage = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 17 unlock_image_db (&db, ImageCat); 23 18 24 19 fits_scan (&header, "ZERO_PT", "%lf", 1, &zeropt); … … 26 21 fprintf (stderr, "ERROR: zero point in image table (%f:%s) inconsistent with zero point in image header (%f:%s)\n", 27 22 zeropt, ImageCat, ZeroPt, filename); 28 exit (1);29 }30 31 /* advance to data segment */32 fseek (f, header.size, SEEK_SET);33 34 Nimage = 0;35 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage);36 /* check that file size makes sense */37 if (stat (ImageCat, &filestatus) == -1) {38 fprintf (stderr, "ERROR: failed to get status of image catalog\n");39 exit (1);40 }41 size = Nimage*sizeof(Image) + header.size;42 if (size != filestatus.st_size) {43 fprintf (stderr, "ERROR: image catalog has inconsistent size\n");44 exit (1);45 }46 47 ALLOCATE (timage, Image, Nimage);48 nimage = Fread (timage, sizeof(Image), Nimage, f, "image");49 if (nimage != Nimage) {50 fprintf (stderr, "error reading images from table\n");51 23 exit (1); 52 24 } -
trunk/Ohana/src/imregister/Makefile
r4024 r4864 179 179 180 180 install: 181 for i in $(INSTALL); do make $$i.install ; done181 for i in $(INSTALL); do make $$i.install || exit; done 182 182 183 183 clean: -
trunk/Ohana/src/imregister/detrend/altpath.c
r3606 r4864 8 8 char *dBPath, infile[256], outfile[256], line[1024]; 9 9 struct stat statbuf; 10 VTable vtable;11 10 12 11 ALLOCATE (current, int, Nimage); … … 48 47 49 48 /** we may later want to pull this out and put it elsewhere **/ 50 fits_vtable_from_ftable (&db[0].ftable, & vtable, list, Nlist);49 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, list, Nlist); 51 50 for (i = 0; i < Nmatch; i++) { 52 fits_convert_DetReg ((DetReg *) vtable.buffer[i], sizeof (DetReg), 1);51 fits_convert_DetReg ((DetReg *) db[0].vtable.buffer[i], sizeof (DetReg), 1); 53 52 } 54 fits_db_update (db , &vtable);53 fits_db_update (db); 55 54 fits_db_close (db); 56 55 fits_db_free (db); … … 85 84 86 85 /** we may later want to pull this out and put it elsewhere **/ 87 fits_vtable_from_ftable (&db[0].ftable, & vtable, list, Nlist);86 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, list, Nlist); 88 87 for (i = 0; i < Nmatch; i++) { 89 fits_convert_DetReg ((DetReg *) vtable.buffer[i], sizeof (DetReg), 1);88 fits_convert_DetReg ((DetReg *) db[0].vtable.buffer[i], sizeof (DetReg), 1); 90 89 } 91 fits_db_update (db , &vtable);90 fits_db_update (db); 92 91 fits_db_close (db); 93 92 fits_db_free (db); … … 114 113 115 114 /** we may later want to pull this out and put it elsewhere **/ 116 fits_vtable_from_ftable (&db[0].ftable, & vtable, list, Nlist);115 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, list, Nlist); 117 116 for (i = 0; i < Nmatch; i++) { 118 fits_convert_DetReg ((DetReg *) vtable.buffer[i], sizeof (DetReg), 1);117 fits_convert_DetReg ((DetReg *) db[0].vtable.buffer[i], sizeof (DetReg), 1); 119 118 } 120 fits_db_update (db , &vtable);119 fits_db_update (db); 121 120 fits_db_close (db); 122 121 fits_db_free (db); -
trunk/Ohana/src/imregister/detrend/modify.c
r3606 r4864 6 6 int i, j, value; 7 7 int *list; 8 VTable vtable;9 8 10 9 value = M_UNDEF; … … 45 44 46 45 /** we may later want to pull this out and put it elsewhere **/ 47 fits_vtable_from_ftable (&db[0].ftable, & vtable, list, Nmatch);46 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, list, Nmatch); 48 47 for (i = 0; i < Nmatch; i++) { 49 fits_convert_DetReg ((DetReg *) vtable.buffer[i], sizeof (DetReg), 1);48 fits_convert_DetReg ((DetReg *) db[0].vtable.buffer[i], sizeof (DetReg), 1); 50 49 } 51 fits_db_update (db , &vtable);50 fits_db_update (db); 52 51 fits_db_close (db); 53 52 fits_db_free (db); -
trunk/Ohana/src/imregister/imphot/modify.c
r4024 r4864 5 5 6 6 int i, j; 7 VTable vtable;8 7 9 8 /* modify the selected entries */ … … 29 28 30 29 /** we may later want to pull this out and put it elsewhere **/ 31 fits_vtable_from_ftable (&db[0].ftable, & vtable, match, Nmatch);30 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, match, Nmatch); 32 31 for (i = 0; i < Nmatch; i++) { 33 fits_convert_Image ((Image *) vtable.buffer[i], sizeof (Image), 1);32 fits_convert_Image ((Image *) db[0].vtable.buffer[i], sizeof (Image), 1); 34 33 } 35 fits_db_update (db , &vtable);34 fits_db_update (db); 36 35 fits_db_close (db); 37 36 fits_db_free (db); -
trunk/Ohana/src/imregister/imreg/imregclient.c
r3650 r4864 7 7 FILE *f; 8 8 RegImage *image; 9 VTable vtable;10 9 FITS_DB db; 11 10 … … 83 82 84 83 fits_convert_RegImage (image, sizeof (RegImage), Nentry); 85 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);86 fits_vadd_rows (& vtable, (char *) image, Nentry, sizeof(RegImage));84 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 85 fits_vadd_rows (&db.vtable, (char *) image, Nentry, sizeof(RegImage)); 87 86 88 fits_db_update (&db , &vtable);87 fits_db_update (&db); 89 88 fits_db_close (&db); 90 89 fits_db_free (&db); -
trunk/Ohana/src/imregister/imreg/modify.c
r3606 r4864 7 7 char *tmppath; 8 8 char *ext, *root, *path, dist; 9 VTable vtable;10 9 11 10 Nold = 0; … … 79 78 80 79 /** we may later want to pull this out and put it elsewhere **/ 81 fits_vtable_from_ftable (&db[0].ftable, & vtable, match, Nmatch);80 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, match, Nmatch); 82 81 for (i = 0; i < Nmatch; i++) { 83 fits_convert_RegImage ((RegImage *) vtable.buffer[i], sizeof (RegImage), 1);82 fits_convert_RegImage ((RegImage *) db[0].vtable.buffer[i], sizeof (RegImage), 1); 84 83 } 85 fits_db_update (db , &vtable);84 fits_db_update (db); 86 85 fits_db_close (db); 87 86 fits_db_free (db); -
trunk/Ohana/src/imregister/spreg/modify.c
r3509 r4864 6 6 int i, j, Nold; 7 7 char *tmppath; 8 VTable vtable;9 8 10 9 Nold = 0; … … 39 38 40 39 /** we may later want to pull this out and put it elsewhere **/ 41 fits_vtable_from_ftable (&db[0].ftable, & vtable, match, Nmatch);40 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, match, Nmatch); 42 41 for (i = 0; i < Nmatch; i++) { 43 fits_convert_Spectrum ((Spectrum *) vtable.buffer[i], sizeof (Spectrum), 1);42 fits_convert_Spectrum ((Spectrum *) db[0].vtable.buffer[i], sizeof (Spectrum), 1); 44 43 } 45 fits_db_update (db , &vtable);44 fits_db_update (db); 46 45 fits_db_close (db); 47 46 fits_db_free (db); -
trunk/Ohana/src/imregister/src/detregister.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "detrend.h" 3 static char *version = "detregister $Revision: 3. 3$";3 static char *version = "detregister $Revision: 3.4 $"; 4 4 5 5 int main (int argc, char **argv) { … … 8 8 DetReg newdata; 9 9 Descriptor descriptor; 10 VTable vtable;11 10 FITS_DB db; 12 11 … … 40 39 41 40 fits_convert_DetReg (&newdata, sizeof (DetReg), 1); 42 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);43 fits_vadd_rows (& vtable, (char *) &newdata, 1, sizeof(DetReg));41 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 42 fits_vadd_rows (&db.vtable, (char *) &newdata, 1, sizeof(DetReg)); 44 43 45 fits_db_update (&db , &vtable);44 fits_db_update (&db); 46 45 fits_db_close (&db); 47 46 fits_db_free (&db); -
trunk/Ohana/src/imregister/src/detsearch.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "detrend.h" 3 static char *version = "detsearch $Revision: 3. 6$";3 static char *version = "detsearch $Revision: 3.7 $"; 4 4 5 5 int main (int argc, char **argv) { … … 35 35 36 36 if (!output.Modify && !output.Delete && !output.Altpath) fits_db_close (&db); 37 detrend = fits_table_get_DetReg (&db.ftable, &Ndetrend );37 detrend = fits_table_get_DetReg (&db.ftable, &Ndetrend, &db.swapped); 38 38 39 39 match = MatchCriteria (detrend, Ndetrend, &Nmatch); /* match basic criteria */ -
trunk/Ohana/src/imregister/src/imphotmerge.c
r2803 r4864 1 1 # include "imregister.h" 2 2 3 /*** this needs to be written using dvo_image functions ***/ 4 3 5 Image *LoadImageTable (FILE *f, Header *header, int *nimage); 4 static char *version = "imphotcopy $Revision: 1. 2$";6 static char *version = "imphotcopy $Revision: 1.3 $"; 5 7 6 8 int main (int argc, char **argv) { -
trunk/Ohana/src/imregister/src/imphotsearch.c
r4854 r4864 2 2 # include "imphot.h" 3 3 4 static char *version = "imphotsearch $Revision: 1. 8$";4 static char *version = "imphotsearch $Revision: 1.9 $"; 5 5 6 6 int main (int argc, char **argv) { … … 25 25 } 26 26 /* we use a varient of fits_db_load since the file may be in text format */ 27 if (!dvo_image_load (&db )) {27 if (!dvo_image_load (&db, VERBOSE, FORCE_READ)) { 28 28 fprintf (stderr, "ERROR: failure to load db\n"); 29 29 fits_db_close (&db); … … 32 32 if (!options.modify) fits_db_close (&db); 33 33 34 image = fits_table_get_Image (&db.ftable, &Nimage );34 image = fits_table_get_Image (&db.ftable, &Nimage, &db.swapped); 35 35 36 36 match = subset (image, Nimage, &Nmatch); -
trunk/Ohana/src/imregister/src/imregister.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "imreg.h" 3 static char *version = "imregister $Revision: 3. 6$";3 static char *version = "imregister $Revision: 3.7 $"; 4 4 5 5 int main (int argc, char **argv) { … … 7 7 int Nregimage; 8 8 RegImage *image, *regimage; 9 VTable vtable;10 9 FITS_DB db; 11 10 … … 39 38 40 39 fits_convert_RegImage (regimage, sizeof (RegImage), Nregimage); 41 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);42 fits_vadd_rows (& vtable, (char *) regimage, Nregimage, sizeof(RegImage));40 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 41 fits_vadd_rows (&db.vtable, (char *) regimage, Nregimage, sizeof(RegImage)); 43 42 44 fits_db_update (&db , &vtable);43 fits_db_update (&db); 45 44 fits_db_close (&db); 46 45 fits_db_free (&db); -
trunk/Ohana/src/imregister/src/imregtable.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "imreg.h" 3 static char *version = "imregtable $Revision: 3. 6$";3 static char *version = "imregtable $Revision: 3.7 $"; 4 4 5 5 int main (int argc, char **argv) { … … 12 12 Matrix matrix; 13 13 FTable ftable; 14 VTable vtable;15 14 FITS_DB db; 16 15 … … 34 33 fits_read_ftable (infile, &ftable, "IMAGE_DATABASE"); 35 34 36 image = fits_table_get_RegImage (&ftable, &Nimage );35 image = fits_table_get_RegImage (&ftable, &Nimage, NULL); 37 36 38 37 /* load database table */ … … 58 57 59 58 fits_convert_RegImage (image, sizeof (RegImage), Nimage); 60 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);61 fits_vadd_rows (& vtable, (char *) image, Nimage, sizeof(RegImage));59 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 60 fits_vadd_rows (&db.vtable, (char *) image, Nimage, sizeof(RegImage)); 62 61 63 fits_db_update (&db , &vtable);62 fits_db_update (&db); 64 63 fits_db_close (&db); 65 64 fits_db_free (&db); -
trunk/Ohana/src/imregister/src/imsearch.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "imreg.h" 3 static char *version = "imsearch $Revision: 3. 5$";3 static char *version = "imsearch $Revision: 3.6 $"; 4 4 5 5 int main (int argc, char **argv) { … … 29 29 if (!output.modify && !output.delete) fits_db_close (&db); 30 30 31 image = fits_table_get_RegImage (&db.ftable, &Nimage );31 image = fits_table_get_RegImage (&db.ftable, &Nimage, &db.swapped); 32 32 33 33 match = match_criteria (image, Nimage, &Nmatch); -
trunk/Ohana/src/imregister/src/imstatreg.c
r4772 r4864 1 1 # include "imregister.h" 2 2 # include "imreg.h" 3 static char *version = "imstatreg $Revision: 3.1 4$";3 static char *version = "imstatreg $Revision: 3.15 $"; 4 4 5 5 int main (int argc, char **argv) { … … 10 10 RegImage *image, *subset; 11 11 FITS_DB image_db, temp_db; 12 VTable vtable;13 12 14 13 get_version (argc, argv, version); … … 67 66 exit (1); 68 67 } 69 subset = fits_table_get_RegImage (&temp_db.ftable, &Nsubset );68 subset = fits_table_get_RegImage (&temp_db.ftable, &Nsubset, &temp_db.swapped); 70 69 fprintf (stderr, "temporary database read\n"); 71 70 … … 90 89 we will just drop the temp db data */ 91 90 } 92 image = fits_table_get_RegImage (&image_db.ftable, &Nimage );91 image = fits_table_get_RegImage (&image_db.ftable, &Nimage, &image_db.swapped); 93 92 fprintf (stderr, "main database read\n"); 94 93 … … 98 97 99 98 /* update entries in main db */ 100 fits_vtable_from_ftable (&image_db.ftable, & vtable, match, Nmatch);99 fits_vtable_from_ftable (&image_db.ftable, &image_db.vtable, match, Nmatch); 101 100 for (i = 0; i < Nmatch; i++) { 102 fits_convert_RegImage ((RegImage *) vtable.buffer[i], sizeof (RegImage), 1);101 fits_convert_RegImage ((RegImage *) image_db.vtable.buffer[i], sizeof (RegImage), 1); 103 102 } 104 fits_db_update (&image_db , &vtable);103 fits_db_update (&image_db); 105 104 fits_db_close (&image_db); 106 105 107 106 fits_db_free (&image_db); 108 107 fits_db_free (&temp_db); 109 fits_free_vtable (&vtable);110 108 if (match != NULL) free (match); 111 109 if (image != NULL) free (image); -
trunk/Ohana/src/imregister/src/photreg.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "photreg.h" 3 static char *version = "photreg $Revision: 1. 7$";3 static char *version = "photreg $Revision: 1.8 $"; 4 4 5 5 int main (int argc, char **argv) { … … 7 7 char *filename; 8 8 PhotPars newdata; 9 VTable vtable;10 9 FITS_DB db; 11 10 … … 42 41 /** we may later want to pull this out and put it elsewhere **/ 43 42 fits_convert_PhotPars (&newdata, sizeof (PhotPars), 1); 44 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);45 fits_vadd_rows (& vtable, (char *) &newdata, 1, sizeof(PhotPars));43 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 44 fits_vadd_rows (&db.vtable, (char *) &newdata, 1, sizeof(PhotPars)); 46 45 47 fits_db_update (&db , &vtable);46 fits_db_update (&db); 48 47 fits_db_close (&db); 49 48 fits_db_free (&db); -
trunk/Ohana/src/imregister/src/photsearch.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "photreg.h" 3 static char *version = "photsearch $Revision: 1. 7$";3 static char *version = "photsearch $Revision: 1.8 $"; 4 4 5 5 int main (int argc, char **argv) { … … 41 41 /* add test to EXTNAME? */ 42 42 if (output.convert) { 43 photpars_old = fits_table_get_PhotParsOld (&db.ftable, &Nphotpars );43 photpars_old = fits_table_get_PhotParsOld (&db.ftable, &Nphotpars, &db.swapped); 44 44 photpars = PhotParsOld_to_PhotPars (photpars_old, Nphotpars); 45 45 } else { 46 photpars = fits_table_get_PhotPars (&db.ftable, &Nphotpars );46 photpars = fits_table_get_PhotPars (&db.ftable, &Nphotpars, &db.swapped); 47 47 } 48 48 -
trunk/Ohana/src/imregister/src/spregister.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "spreg.h" 3 static char *version = "spregister $Revision: 1. 7$";3 static char *version = "spregister $Revision: 1.8 $"; 4 4 5 5 int main (int argc, char **argv) { 6 6 7 7 Spectrum *spectrum; 8 VTable vtable;9 8 FITS_DB db; 10 9 … … 39 38 40 39 fits_convert_Spectrum (spectrum, sizeof (Spectrum), 1); 41 fits_table_to_vtable (&db.ftable, & vtable, 0, 0);42 fits_vadd_rows (& vtable, (char *) spectrum, 1, sizeof(Spectrum));40 fits_table_to_vtable (&db.ftable, &db.vtable, 0, 0); 41 fits_vadd_rows (&db.vtable, (char *) spectrum, 1, sizeof(Spectrum)); 43 42 44 fits_db_update (&db , &vtable);43 fits_db_update (&db); 45 44 fits_db_close (&db); 46 45 fits_db_free (&db); -
trunk/Ohana/src/imregister/src/spsearch.c
r3649 r4864 1 1 # include "imregister.h" 2 2 # include "spreg.h" 3 static char *version = "spsearch $Revision: 1. 6$";3 static char *version = "spsearch $Revision: 1.7 $"; 4 4 5 5 int main (int argc, char **argv) { … … 29 29 if (!output.modify && !output.delete) fits_db_close (&db); 30 30 31 spectrum = fits_table_get_Spectrum (&db.ftable, &Nspectrum );31 spectrum = fits_table_get_Spectrum (&db.ftable, &Nspectrum, &db.swapped); 32 32 33 33 match = match_criteria (spectrum, Nspectrum, &Nmatch); -
trunk/Ohana/src/libautocode/def/autocode.c
r4019 r4864 27 27 28 28 /*** add test of EXTNAME and header-defined columns? ***/ 29 $STRUCT *fits_table_get_$STRUCT (FTable *ftable, int *Ndata) { 29 /* return internal structure representation */ 30 $STRUCT *fits_table_get_$STRUCT (FTable *ftable, int *Ndata, int *swapped) { 30 31 31 32 $STRUCT *data; … … 33 34 *Ndata = ftable[0].header[0].Naxis[1]; 34 35 data = ($STRUCT *) ftable[0].buffer; 35 fits_convert_$STRUCT (data, sizeof ($STRUCT), *Ndata); 36 36 if ((swapped == NULL) || (*swapped == FALSE)) { 37 fits_convert_$STRUCT (data, sizeof ($STRUCT), *Ndata); 38 if (swapped != NULL) *swapped = TRUE; 39 } 37 40 return (data); 38 41 } -
trunk/Ohana/src/libautocode/def/autocode.h
r4772 r4864 2 2 /** STRUCT DEFINITION **/ 3 3 4 $STRUCT *fits_table_get_$STRUCT (FTable *table, int *Ndata );4 $STRUCT *fits_table_get_$STRUCT (FTable *table, int *Ndata, int *swapped); 5 5 int fits_table_set_$STRUCT (FTable *ftable, $STRUCT *data, int Ndata); 6 6 int fits_table_mkheader_$STRUCT (Header *header); -
trunk/Ohana/src/libfits/include/fitsio.h
r4799 r4864 82 82 int fits_fread_Theader PROTO((FILE *, Header *)); 83 83 int fits_fread_ftable PROTO((FILE *, FTable *, char *)); 84 int fits_fread_vtable_range PROTO((FILE *f, VTable *table, int start, int Nrows)); 84 85 int fits_fread_vtable PROTO((FILE *f, VTable *table, char *extname, int Nrow, int *row)); 85 86 int fits_fread_ftable_data PROTO((FILE *f, FTable *table)); … … 122 123 int fits_read_Theader PROTO((char *, Header *)); 123 124 int fits_read_table PROTO((char *, FTable *)); 125 int fits_read_table PROTO((char *, FTable *)); 124 126 int fits_write_Theader PROTO((char *, Header *header)); 125 127 int fits_write_table PROTO((char *, FTable *)); -
trunk/Ohana/src/libohana/Makefile
r4832 r4864 47 47 $(SRC)/fits_db.$(ARCH).o \ 48 48 $(SRC)/photfits.$(ARCH).o \ 49 $(SRC)/dvo_image.$(ARCH).o \ 49 50 $(SRC)/phot_catalog.$(ARCH).o \ 50 51 $(SRC)/phot_catalog_mef.$(ARCH).o \ -
trunk/Ohana/src/libohana/include/dvo.h
r4832 r4864 90 90 Header theader; 91 91 FTable ftable; 92 VTable vtable; 93 int mode; /* what data storage mode is used for disk file? */ 94 int format; /* what data format is used for disk file? */ 95 int virtual; /* is table in ftable or vtable? */ 96 int swapped; /* is table in internal byte-order? */ 92 97 } FITS_DB; 93 98 … … 141 146 int fits_db_lock PROTO((FITS_DB *db, char *filename)); 142 147 int fits_db_load PROTO((FITS_DB *db)); 148 int fits_db_load_segment PROTO((FITS_DB *db, int start, int Nrows)); 149 int fits_db_save PROTO((FITS_DB *db)); 150 int fits_db_update PROTO((FITS_DB *db)); 143 151 int fits_db_close PROTO((FITS_DB *db)); 144 152 int fits_db_free PROTO((FITS_DB *db)); 145 int fits_db_save PROTO((FITS_DB *db));146 int fits_db_update PROTO((FITS_DB *db, VTable *vtable));147 153 148 154 /* in coords.c, using libautocode/def/coords.d */ … … 256 262 int save_catalog_mef (Catalog *catalog, char VERBOSE); 257 263 264 /*** DVO image db I/O Functions ***/ 265 int dvo_image_load (FITS_DB *db, int VERBOSE, int FORCE_READ); 266 int dvo_image_save (FITS_DB *db, int VERBOSE); 267 int dvo_image_update (FITS_DB *db, int VERBOSE); 268 int dvo_image_load_raw (FITS_DB *db, int VERBOSE, int FORCE_READ); 269 int dvo_image_update_raw (FITS_DB *db, int VERBOSE); 270 int dvo_image_save_raw (FITS_DB *db, int VERBOSE); 271 int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew); 272 258 273 # endif -
trunk/Ohana/src/libohana/src/dvo_convert.c
r4832 r4864 24 24 } 25 25 if (!strcmp (extname, "DVO_AVERAGE")) { 26 average = fits_table_get_Average (ftable, Naverage );26 average = fits_table_get_Average (ftable, Naverage, NULL); 27 27 return (average); 28 28 } 29 29 if (!strcmp (extname, "DVO_AVERAGE_ELIXIR")) { 30 30 AverageElixir *tmpaverage; 31 tmpaverage = fits_table_get_AverageElixir (ftable, Naverage );31 tmpaverage = fits_table_get_AverageElixir (ftable, Naverage, NULL); 32 32 average = AverageElixirToInternal (tmpaverage, *Naverage); 33 33 free (tmpaverage); … … 36 36 if (!strcmp (extname, "DVO_AVERAGE_LONEOS")) { 37 37 AverageLoneos *tmpaverage; 38 tmpaverage = fits_table_get_AverageLoneos (ftable, Naverage );38 tmpaverage = fits_table_get_AverageLoneos (ftable, Naverage, NULL); 39 39 average = AverageLoneosToInternal (tmpaverage, *Naverage); 40 40 free (tmpaverage); … … 43 43 if (!strcmp (extname, "DVO_AVERAGE_PANSTARRS")) { 44 44 AveragePanstarrs *tmpaverage; 45 tmpaverage = fits_table_get_AveragePanstarrs (ftable, Naverage );45 tmpaverage = fits_table_get_AveragePanstarrs (ftable, Naverage, NULL); 46 46 average = AveragePanstarrsToInternal (tmpaverage, *Naverage); 47 47 free (tmpaverage); … … 99 99 } 100 100 if (!strcmp (extname, "DVO_MEASURE")) { 101 measure = fits_table_get_Measure (ftable, Nmeasure );101 measure = fits_table_get_Measure (ftable, Nmeasure, NULL); 102 102 return (measure); 103 103 } 104 104 if (!strcmp (extname, "DVO_MEASURE_ELIXIR")) { 105 105 MeasureElixir *tmpmeasure; 106 tmpmeasure = fits_table_get_MeasureElixir (ftable, Nmeasure );106 tmpmeasure = fits_table_get_MeasureElixir (ftable, Nmeasure, NULL); 107 107 measure = MeasureElixirToInternal (tmpmeasure, *Nmeasure); 108 108 free (tmpmeasure); … … 111 111 if (!strcmp (extname, "DVO_MEASURE_LONEOS")) { 112 112 MeasureLoneos *tmpmeasure; 113 tmpmeasure = fits_table_get_MeasureLoneos (ftable, Nmeasure );113 tmpmeasure = fits_table_get_MeasureLoneos (ftable, Nmeasure, NULL); 114 114 measure = MeasureLoneosToInternal (tmpmeasure, *Nmeasure); 115 115 free (tmpmeasure); … … 118 118 if (!strcmp (extname, "DVO_MEASURE_PANSTARRS")) { 119 119 MeasurePanstarrs *tmpmeasure; 120 tmpmeasure = fits_table_get_MeasurePanstarrs (ftable, Nmeasure );120 tmpmeasure = fits_table_get_MeasurePanstarrs (ftable, Nmeasure, NULL); 121 121 measure = MeasurePanstarrsToInternal (tmpmeasure, *Nmeasure); 122 122 free (tmpmeasure); -
trunk/Ohana/src/libohana/src/dvo_image.c
r4854 r4864 4 4 enum {FITS, RAW}; 5 5 6 /* * this is a varient on fits_db_load to handle the RAW mode */7 int dvo_image_load (FITS_DB *db, int VERBOSE ) {8 9 int N x, Ny, Naxis;10 int mode, status;6 /* determine db mode (raw/fits) and read the complete table */ 7 int dvo_image_load (FITS_DB *db, int VERBOSE, int FORCE_READ) { 8 9 int Naxis, Nrow, Nread, mode, status; 10 char buffer[241]; 11 11 12 12 /* database name must be set first */ 13 if (db == NULL) { 14 fprintf (stderr, "db handle is not set\n"); 13 if (db == NULL) return (FALSE); 14 if (db[0].f == NULL) return (FALSE); 15 16 fseek (db[0].f, 0, SEEK_SET); 17 18 /* test for NAXIS == 2 in line 3 */ 19 bzero (buffer, 241); 20 Nread = fread (buffer, 1, 240, db[0].f); 21 if (Nread != 240) { 22 if (VERBOSE) fprintf (stderr, "can't determine image db mode\n"); 15 23 return (FALSE); 16 24 } 25 Nread = sscanf (&buffer[160], "NAXIS = %d", &Naxis); 26 if (Nread != 1) { 27 if (VERBOSE) fprintf (stderr, "can't determine image db mode\n"); 28 return (FALSE); 29 } 30 fseek (db[0].f, 0, SEEK_SET); 31 32 mode = FITS; 33 if (Naxis == 2) mode = RAW; 34 if (VERBOSE) { 35 switch (mode) { 36 case FITS: 37 fprintf (stderr, "reading images (mode FITS)\n"); 38 break; 39 case RAW: 40 fprintf (stderr, "reading images (mode RAW)\n"); 41 break; 42 default: 43 fprintf (stderr, "error getting image mode\n"); 44 exit (2); 45 } 46 } 47 48 /* read data in appropriate mode */ 49 if (mode == FITS) { 50 status = fits_db_load (db); 51 } else { 52 status = dvo_image_load_raw (db, VERBOSE, FORCE_READ); 53 } 54 /* byteswap table data */ 55 Nrow = db[0].theader.Naxis[1]; 56 fits_convert_Image ((Image *) db[0].ftable.buffer, sizeof(Image), Nrow); 57 db[0].swapped = TRUE; 58 59 return (TRUE); 60 } 61 62 /* write the complete image table to disk in the requested mode */ 63 int dvo_image_save (FITS_DB *db, int VERBOSE) { 64 65 int Nrow, mode, status; 66 67 mode = FITS; 68 if (db[0].header.Naxes == 2) mode = RAW; 69 70 /* byteswap table data */ 71 Nrow = db[0].theader.Naxis[1]; 72 if (db[0].swapped) { 73 fits_convert_Image ((Image *) db[0].ftable.buffer, sizeof(Image), Nrow); 74 db[0].swapped = FALSE; 75 } 76 77 /* write data in appropriate mode */ 78 if (mode == FITS) { 79 status = fits_db_save (db); 80 } else { 81 status = dvo_image_save_raw (db, VERBOSE); 82 } 83 return (TRUE); 84 } 85 86 int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew) { 87 88 int Nimages; 89 90 /* adjust header */ 91 Nimages = 0; 92 fits_scan (&db[0].header, "NIMAGES", "%d", 1, &Nimages); 93 Nimages += Nnew; 94 fits_modify (&db[0].header, "NIMAGES", "%d", 1, Nimages); 95 96 fits_table_to_vtable (&db[0].ftable, &db[0].vtable, 0, 0); 97 fits_vadd_rows (&db[0].vtable, (char *) new, Nnew, sizeof(Image)); 98 99 /* check that primary header and table header agree */ 100 if (Nimages != db[0].theader.Naxis[1]) { 101 fprintf (stderr, "header / table length mismatch!\n"); 102 } 103 return (TRUE); 104 } 105 106 /* write the vtable data to disk in the requested mode */ 107 int dvo_image_update (FITS_DB *db, int VERBOSE) { 108 109 int i, mode, status; 110 111 mode = FITS; 112 if (db[0].header.Naxes == 2) mode = RAW; 113 114 /* byteswap table data */ 115 for (i = 0; i < db[0].vtable.Nrow; i++) { 116 fits_convert_Image ((Image *) db[0].vtable.buffer[i], sizeof(Image), 1); 117 } 118 119 /* write data in appropriate mode */ 120 if (mode == FITS) { 121 status = fits_db_update (db); 122 } else { 123 status = dvo_image_update_raw (db, VERBOSE); 124 } 125 return (TRUE); 126 } 127 128 /* the old Image.dat files used a fake FITS header defining a finite data block 129 * this function reads in the data portion, assuming header already loaded 130 */ 131 132 int dvo_image_load_raw (FITS_DB *db, int VERBOSE, int FORCE_READ) { 133 134 int Nimage, size, nimage; 135 struct stat filestatus; 136 Image *image; 17 137 18 138 /* init & load in FITS table data - return FALSE on error */ … … 21 141 return (FALSE); 22 142 } 23 24 fits_scan (&db[0].header, "NAXIS", "%d", 1, &Naxis);25 fits_scan (&db[0].header, "NAXIS1", "%d", 1, &Nx);26 fits_scan (&db[0].header, "NAXIS2", "%d", 1, &Ny);27 28 mode = FITS;29 if ((Naxis == 2) && (Nx == 1106) && (Ny == 1024)) {30 mode = TEXT;31 }32 33 /* how do we decide if it is text or fits? must examine header */34 if (mode == FITS) {35 status = dvo_image_load_fits (db, VERBOSE);36 } else {37 status = dvo_image_load_rtext (db, VERBOSE);38 }39 return (TRUE);40 }41 42 /* the old Image.dat files used a fake FITS header defining a finite data block43 * this function reads in the data portion, assuming header already loaded44 */45 46 int dvo_image_load_text (FITS_DB *db, int VERBOSE) {47 48 int Nimage, size, nimage;49 struct stat filestatus;50 Image *image;51 143 52 144 /* check that file size makes sense */ … … 70 162 /* create a dummy set of table information */ 71 163 /* (original table has NAXIS = 2, change to 0) */ 72 fits_modify (&db[0].header, "NAXIS", "%d", 1, 0);164 /* fits_modify (&db[0].header, "NAXIS", "%d", 1, 0); */ 73 165 fits_create_matrix (&db[0].header, &db[0].matrix); 74 166 fits_table_mkheader_Image (&db[0].theader); … … 90 182 } 91 183 92 /* load the rest of the db table into memory (first extension only) */ 93 int rfits (FITS_DB *db, int VERBOSE) { 94 95 /* database name must be set first */ 96 if (db == NULL) { 97 if (VERBOSE) fprintf (stderr, "db handle is not set\n"); 98 return (FALSE); 99 } 100 if (!fits_fread_matrix (db[0].f, &db[0].matrix, &db[0].header)) { 101 if (VERBOSE) fprintf (stderr, "can't read primary matrix"); 102 return (FALSE); 103 } 104 if (!fits_fread_header (db[0].f, &db[0].theader)) { 105 if (VERBOSE) fprintf (stderr, "can't read table header"); 106 return (FALSE); 107 } 108 if (!fits_fread_ftable_data (db[0].f, &db[0].ftable)) { 109 if (VERBOSE) fprintf (stderr, "can't read table data"); 110 return (FALSE); 111 } 112 return (TRUE); 113 } 184 /* write out image db elements from vtable */ 185 int dvo_image_update_raw (FITS_DB *db, int VERBOSE) { 186 187 int i, Nx, Ny, Nrow, Nbytes; 188 int status, start, offset; 189 int *row; 190 191 if (VERBOSE) fprintf (stderr, "writing out %d images\n", db[0].vtable.Nrow); 192 193 /* position to start of file */ 194 Fseek (db[0].f, 0, SEEK_SET); 195 196 /* write out complete header (no check on disk size?) */ 197 status = fwrite (db[0].header.buffer, 1, db[0].header.size, db[0].f); 198 if (status != db[0].header.size) { 199 fprintf (stderr, "ERROR: failed writing data to image header\n"); 200 exit (1); 201 } 202 203 /** this code is identical to fits_fwrite_vtable, except without padding */ 204 Nrow = db[0].vtable.Nrow; 205 row = db[0].vtable.row; 206 fits_scan (db[0].vtable.header, "NAXIS1", "%d", 1, &Nx); 207 fits_scan (db[0].vtable.header, "NAXIS2", "%d", 1, &Ny); 208 209 /* file pointer is at beginning of desired table data */ 210 start = ftell (db[0].f); 211 212 for (i = 0; i < Nrow; i++) { 213 offset = start + Nx*row[i]; 214 fseek (db[0].f, offset, SEEK_SET); 215 Nbytes = fwrite (db[0].vtable.buffer[i], sizeof (char), Nx, db[0].f); 216 if (Nbytes != Nx) { return (FALSE); } 217 } 218 return (TRUE); 219 } 220 221 /* write out complete image db table from ftable */ 222 int dvo_image_save_raw (FITS_DB *db, int VERBOSE) { 223 224 int status, Nx, Ny, size, Nbytes; 225 226 if (VERBOSE) fprintf (stderr, "writing out %d images\n", db[0].theader.Naxis[1]); 227 228 /* position to start of file */ 229 Fseek (db[0].f, 0, SEEK_SET); 230 231 /* write out complete header (no check on disk size?) */ 232 status = fwrite (db[0].header.buffer, 1, db[0].header.size, db[0].f); 233 if (status != db[0].header.size) { 234 fprintf (stderr, "ERROR: failed writing data to image header\n"); 235 exit (1); 236 } 237 238 fits_scan (db[0].ftable.header, "NAXIS1", "%d", 1, &Nx); 239 fits_scan (db[0].ftable.header, "NAXIS2", "%d", 1, &Ny); 240 size = Nx * Ny; 241 Nbytes = fwrite (db[0].ftable.buffer, sizeof(char), size, db[0].f); 242 if (Nbytes != size) return (FALSE); 243 return (TRUE); 244 } -
trunk/Ohana/src/libohana/src/fits_db.c
r3649 r4864 5 5 int fits_db_init (FITS_DB *db) { 6 6 7 db[0].f = NULL; 7 8 db[0].filename = NULL; 8 9 db[0].header.buffer = NULL; 9 10 db[0].matrix.buffer = NULL; 11 db[0].theader.buffer = NULL; 10 12 db[0].ftable.buffer = NULL; 11 13 db[0].ftable.header = &db[0].theader; 14 15 db[0].vtable.header = NULL; 16 db[0].vtable.buffer = NULL; 17 db[0].vtable.row = NULL; 12 18 return (TRUE); 13 19 } … … 79 85 return (FALSE); 80 86 } 87 db[0].swapped = FALSE; /* is table in internal byte-order? */ 88 return (TRUE); 89 } 90 91 /* load the data from Nrows from table starting at start; load header, etc if needed */ 92 int fits_db_load_segment (FITS_DB *db, int start, int Nrows) { 93 94 int Nskip; 95 96 /* database name must be set first */ 97 if (db == NULL) { 98 fprintf (stderr, "db handle is not set\n"); 99 return (FALSE); 100 } 101 102 /* database name must be opened */ 103 if (db[0].f == NULL) { 104 fprintf (stderr, "db is not opened\n"); 105 return (FALSE); 106 } 107 108 /* position to start of file */ 109 Fseek (db[0].f, 0, SEEK_SET); 110 111 /* load or skip header */ 112 if (db[0].header.buffer == NULL) { 113 if (!fits_fread_header (db[0].f, &db[0].header)) { 114 fprintf (stderr, "can't read primary header\n"); 115 return (FALSE); 116 } 117 } else { 118 Nskip = db[0].header.size; 119 Fseek (db[0].f, Nskip, SEEK_CUR); 120 } 121 122 /* load or skip matrix */ 123 if (db[0].matrix.buffer == NULL) { 124 if (!fits_fread_matrix (db[0].f, &db[0].matrix, &db[0].header)) { 125 fprintf (stderr, "can't read primary matrix"); 126 return (FALSE); 127 } 128 } else { 129 Nskip = fits_matrix_size (&db[0].header); 130 Fseek (db[0].f, Nskip, SEEK_CUR); 131 } 132 133 /* load or skip table header */ 134 if (db[0].theader.buffer == NULL) { 135 if (!fits_fread_header (db[0].f, &db[0].theader)) { 136 fprintf (stderr, "can't read table header"); 137 return (FALSE); 138 } 139 } else { 140 Nskip = db[0].header.size; 141 Fseek (db[0].f, Nskip, SEEK_CUR); 142 } 143 144 /* read table segment into vtable */ 145 if (!fits_fread_vtable_range (db[0].f, &db[0].vtable, start, Nrows)) { 146 fprintf (stderr, "can't read table data"); 147 return (FALSE); 148 } 81 149 return (TRUE); 82 150 } … … 109 177 110 178 /* write vtable to db file (also appends rows to the end of the table) */ 111 int fits_db_update (FITS_DB *db , VTable *vtable) {179 int fits_db_update (FITS_DB *db) { 112 180 113 181 /* this section is not valid if we have changed the size of header, matrix, theader */ 114 182 115 183 /* write subset to file */ 116 make_backup (db[0].filename); 184 make_backup (db[0].filename); /*** drop this!!?? ***/ 117 185 Fseek (db[0].f, 0, SEEK_SET); 118 186 … … 130 198 return (FALSE); 131 199 } 132 if (!fits_fwrite_vtable (db[0].f, vtable)) {200 if (!fits_fwrite_vtable (db[0].f, &db[0].vtable)) { 133 201 fprintf (stderr, "can't update table data"); 134 202 return (FALSE); … … 143 211 fits_free_header (&db[0].theader); 144 212 fits_free_table (&db[0].ftable); 213 fits_free_vtable (&db[0].vtable); 145 214 if (db[0].filename != NULL) { 146 215 free (db[0].filename); -
trunk/Ohana/src/libohana/src/phot_catalog_mef.c
r4830 r4864 87 87 } 88 88 /* no conversions currently defined */ 89 catalog[0].missing = fits_table_get_Missing (&ftable, &catalog[0].Nmissing );89 catalog[0].missing = fits_table_get_Missing (&ftable, &catalog[0].Nmissing, NULL); 90 90 if (Nmissing != catalog[0].Nmissing) { 91 91 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%d vs %d)\n", Nmissing, catalog[0].Nmissing); … … 108 108 } 109 109 /* no conversions currently defined */ 110 catalog[0].secfilt = fits_table_get_SecFilt (&ftable, &Nitems );110 catalog[0].secfilt = fits_table_get_SecFilt (&ftable, &Nitems, NULL); 111 111 catalog[0].Nsecfilt = Nitems / catalog[0].Naverage; 112 112 if (Nsecfilt != catalog[0].Nsecfilt) { -
trunk/Ohana/src/markstar/src/find_images.c
r2490 r4864 2 2 double opening_angle (); 3 3 4 Image *find_images (catstats, Nimages) 5 CatStats catstats[]; 6 int *Nimages; 7 { 4 Image *find_images (FITS_DB *db, CatStats *catstats, int *Nimages) { 8 5 9 6 Header header; … … 28 25 } 29 26 30 /* check if image datafile exists, get header, number of images */ 31 if (!fits_read_header (ImageCat, &header)) { 32 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 33 exit (0); 34 } 35 Nimage = 0; 36 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage); 37 if (Nimage == 0) { 38 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 39 exit (0); 40 } 41 42 /* get ready to read data on images */ 43 f = fopen (ImageCat, "r"); 44 if (f == (FILE *) NULL) { 45 fprintf (stderr, "ERROR: trouble opening Image catalog: %s (2)\n", ImageCat); 46 exit (0); 47 } 48 fseek (f, header.size, SEEK_SET); 27 timage = fits_table_get_Image (&db[0].ftable, &Ntimage, &db[0].swapped); 49 28 50 29 /* set up buffers for images, temporary storage */ 51 NTIMAGE = 100; 52 ALLOCATE (timage, Image, NTIMAGE); 30 nimage = 0; 53 31 NIMAGE = 100; 54 32 ALLOCATE (image, Image, NIMAGE); 55 nimage = 0; 56 Nloop = Nimage / NTIMAGE + 1; 57 Nlast = Nimage % NTIMAGE; 58 59 /* read in images in groups of NTIMAGE (100) */ 60 for (n = 0; n < Nloop; n++) { 61 Nim = (n == Nloop - 1) ? Nlast : NTIMAGE; 62 status = Fread (timage, sizeof(Image), Nim, f, "image"); 63 if (status != Nim) { 64 fprintf (stderr, "ERROR: couldn't read images from image catalog: %s\n", ImageCat); 65 exit (0); 66 } 67 /* test each image in block */ 68 for (i = 0; i < Nim; i++) { 69 /* define image corners */ 70 Xi[0] = 0; Yi[0] = 0; 71 Xi[1] = timage[i].NX; Yi[1] = 0; 72 Xi[2] = timage[i].NX; Yi[2] = timage[i].NY; 73 Xi[3] = 0; Yi[3] = timage[i].NY; 74 Xi[4] = 0; Yi[4] = 0; 75 found = FALSE; 76 /* transform to tcoords */ 77 if (catstats[0].DEC[1] > 86.25) { /* pole */ 78 for (j = 0; j < 5; j++) { 79 XY_to_RD (&r, &d, Xi[j], Yi[j], &timage[i].coords); 80 if (d > catstats[0].DEC[0] - 0.5) found = TRUE; 81 } 82 } else { 83 for (j = 0; j < 6; j++) { 84 XY_to_RD (&r, &d, Xi[j], Yi[j], &timage[i].coords); 85 InRange = RD_to_XY (&Xi[j], &Yi[j], r, d, tcoords); 86 if (!InRange) { 87 /* if RD_to_XY returns false, the coords are ~180 away from 88 the projection center */ 89 goto imskip; 90 } 91 } 92 /* check if image corner inside catalog */ 93 for (j = 0; (j < 4) && !found; j++) { 94 found |= corner_check (&Xi[j], &Yi[j], &Xc[0], &Yc[0]); 95 } 96 /* check if catalog corner inside image */ 97 for (j = 0; (j < 4) && !found; j++) { 98 found |= corner_check (&Xc[j], &Yc[j], &Xi[0], &Yi[0]); 99 } 100 /* check if edges cross */ 101 for (j = 0; (j < 4) && !found; j++) { 102 for (k = 0; (k < 4) && !found; k++) { 103 found |= edge_check (&Xi[j], &Yi[j], &Xc[k], &Yc[k]); 104 } 33 34 /* test each image in block */ 35 for (i = 0; i < Ntimage; i++) { 36 /* define image corners */ 37 Xi[0] = 0; Yi[0] = 0; 38 Xi[1] = timage[i].NX; Yi[1] = 0; 39 Xi[2] = timage[i].NX; Yi[2] = timage[i].NY; 40 Xi[3] = 0; Yi[3] = timage[i].NY; 41 Xi[4] = 0; Yi[4] = 0; 42 found = FALSE; 43 /* transform to tcoords */ 44 if (catstats[0].DEC[1] > 86.25) { /* pole */ 45 for (j = 0; j < 5; j++) { 46 XY_to_RD (&r, &d, Xi[j], Yi[j], &timage[i].coords); 47 if (d > catstats[0].DEC[0] - 0.5) found = TRUE; 48 } 49 } else { 50 for (j = 0; j < 6; j++) { 51 XY_to_RD (&r, &d, Xi[j], Yi[j], &timage[i].coords); 52 InRange = RD_to_XY (&Xi[j], &Yi[j], r, d, tcoords); 53 if (!InRange) { 54 /* if RD_to_XY returns false, the coords are ~180 away from 55 the projection center */ 56 goto imskip; 105 57 } 106 58 } 107 if (found) { 108 image[nimage] = timage[i]; 109 image[nimage].code = 0; 110 nimage ++; 111 if (nimage == NIMAGE) { 112 NIMAGE += 100; 113 REALLOCATE (image, Image, NIMAGE); 59 /* check if image corner inside catalog */ 60 for (j = 0; (j < 4) && !found; j++) { 61 found |= corner_check (&Xi[j], &Yi[j], &Xc[0], &Yc[0]); 62 } 63 /* check if catalog corner inside image */ 64 for (j = 0; (j < 4) && !found; j++) { 65 found |= corner_check (&Xc[j], &Yc[j], &Xi[0], &Yi[0]); 66 } 67 /* check if edges cross */ 68 for (j = 0; (j < 4) && !found; j++) { 69 for (k = 0; (k < 4) && !found; k++) { 70 found |= edge_check (&Xi[j], &Yi[j], &Xc[k], &Yc[k]); 114 71 } 115 72 } 116 imskip:117 73 } 74 if (found) { 75 image[nimage] = timage[i]; 76 image[nimage].code = 0; 77 nimage ++; 78 if (nimage == NIMAGE) { 79 NIMAGE += 100; 80 REALLOCATE (image, Image, NIMAGE); 81 } 82 } 83 imskip: 118 84 } 119 85 … … 128 94 129 95 REALLOCATE (image, Image, MAX (nimage, 1)); 130 free (timage);131 96 *Nimages = nimage; 132 fclose (f);133 97 return (image); 134 98 } -
trunk/Ohana/src/markstar/src/markstar.c
r2490 r4864 1 1 # include "markstar.h" 2 2 3 main (argc, argv) 4 int argc; 5 char **argv; 6 { 3 /*** this needs to be cleaned to match current db I/O model ***/ 4 5 int main (int argc, char **argv) { 7 6 8 7 FILE *f; … … 12 11 CatStats catstats; 13 12 struct timeval now, then; 13 FITS_DB db; 14 14 15 15 gettimeofday (&then, (void *) NULL); … … 36 36 } 37 37 38 /* if lockfile exists, program will complain and quit */ 39 check_lockfile (); 40 check_permissions (argv[1]); 38 set_db (&db); 39 lock_image_db (&db, ImageCat); 41 40 42 41 gcatalog (argv[1], &catalog); -
trunk/Ohana/src/mosastro/src/rfits.c
r3520 r4864 30 30 } 31 31 32 stars = fits_table_get_SMPData (&table, &mychip[0].Nstars );32 stars = fits_table_get_SMPData (&table, &mychip[0].Nstars, NULL); 33 33 fits_scan (table.header, "NAXIS1", "%d", 1, &Nx); 34 34 -
trunk/Ohana/src/opihi/dvo/LoadImages.c
r4854 r4864 10 10 11 11 fits_db_init (&db); 12 db.lockstate = LCK_SOFT; 13 db.timeout = 120.0; 14 12 15 if (!fits_db_lock (&db, filename)) { 13 fprintf (stderr, " No availableimage catalog %s (1)\n", filename);16 fprintf (stderr, "error opening image catalog %s (1)\n", filename); 14 17 return (NULL); 15 18 } 16 19 17 dvo_image_load (&db, TRUE); 20 if (db.dbstate == LCK_EMPTY) { 21 fprintf (stderr, "note: image catalog is empty\n"); 22 ALLOCATE (image, Image, 1); 23 *nimage = 1; 24 return (image); 25 } 26 27 dvo_image_load (&db, TRUE, FALSE); 18 28 fits_db_close (&db); 19 29 20 image = fits_table_get_Image (&db.ftable, nimage );30 image = fits_table_get_Image (&db.ftable, nimage, &db.swapped); 21 31 return (image); 22 32 } -
trunk/Ohana/src/opihi/dvo/badimages.c
r4689 r4864 8 8 int badimages (int argc, char **argv) { 9 9 10 FILE *f; 11 int i, Nimage, nimage, entry, First, Cross; 10 int i, Nimage, entry, First, Cross; 12 11 float *ptr; 13 12 double nominal, big, small, value; 14 Header header;15 13 Image *image; 16 char ImageCat[256];17 14 18 VarConfig ("IMAGE_CATALOG", "%s", ImageCat);19 20 15 if (argc != 3) { 21 16 fprintf (stderr, "USAGE: badimages entry value\n"); … … 24 19 } 25 20 21 image = LoadImages (&Nimage); 22 26 23 Cross = FALSE; 27 24 First = FALSE; … … 36 33 Cross = TRUE; 37 34 } 38 }39 40 /* check if image datafile exists, get header */41 if (!fits_read_header (ImageCat, &header)) {42 fprintf (stderr, "can't open image catalog %s\n", ImageCat);43 return (FALSE);44 }45 46 /* get ready to read data on images */47 f = fopen (ImageCat, "r");48 if (f == (FILE *) NULL) {49 fprintf (stderr, "can't open image catalog %s\n", ImageCat);50 return (FALSE);51 }52 fseek (f, header.size, SEEK_SET);53 54 /* read in image data */55 Nimage = 0;56 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage);57 ALLOCATE (image, Image, Nimage);58 nimage = Fread (image, sizeof(Image), Nimage, f, "image");59 fclose (f);60 if (nimage != Nimage) {61 fprintf (stderr, "error reading all data from image file (%d != %d)\n", nimage, Nimage);62 free (image);63 return (FALSE);64 35 } 65 36 … … 101 72 102 73 } 103 -
trunk/Ohana/src/photdbc/Makefile
r4808 r4864 20 20 21 21 SRCLIST = \ 22 $(SRC)/photdbc.$(ARCH).o \ 23 $(SRC)/initialize.$(ARCH).o \ 24 $(SRC)/ConfigInit.$(ARCH).o \ 25 $(SRC)/args.$(ARCH).o \ 26 $(SRC)/liststats.$(ARCH).o \ 27 $(SRC)/load_images.$(ARCH).o \ 28 $(SRC)/name_region.$(ARCH).o \ 29 $(SRC)/find_images.$(ARCH).o \ 30 $(SRC)/find_regions.$(ARCH).o \ 31 $(SRC)/get_regions.$(ARCH).o \ 32 $(SRC)/load_catalogs.$(ARCH).o \ 33 $(SRC)/gcatalog.$(ARCH).o \ 34 $(SRC)/misc.$(ARCH).o \ 35 $(SRC)/join_stars.$(ARCH).o \ 36 $(SRC)/unique_measures.$(ARCH).o \ 37 $(SRC)/flag_measures.$(ARCH).o \ 38 $(SRC)/get_mags.$(ARCH).o \ 39 $(SRC)/check_directory.$(ARCH).o \ 40 $(SRC)/subcatalog.$(ARCH).o \ 22 $(SRC)/photdbc.$(ARCH).o \ 23 $(SRC)/initialize.$(ARCH).o \ 24 $(SRC)/ConfigInit.$(ARCH).o \ 25 $(SRC)/args.$(ARCH).o \ 26 $(SRC)/liststats.$(ARCH).o \ 27 $(SRC)/load_images.$(ARCH).o \ 28 $(SRC)/name_region.$(ARCH).o \ 29 $(SRC)/find_images.$(ARCH).o \ 30 $(SRC)/find_regions.$(ARCH).o \ 31 $(SRC)/get_regions.$(ARCH).o \ 32 $(SRC)/load_catalogs.$(ARCH).o \ 33 $(SRC)/gcatalog.$(ARCH).o \ 34 $(SRC)/misc.$(ARCH).o \ 35 $(SRC)/join_stars.$(ARCH).o \ 36 $(SRC)/unique_measures.$(ARCH).o \ 37 $(SRC)/flag_measures.$(ARCH).o \ 38 $(SRC)/get_mags.$(ARCH).o \ 39 $(SRC)/check_directory.$(ARCH).o \ 40 $(SRC)/overlap_funcs.$(ARCH).o \ 41 $(SRC)/image-db.$(ARCH).o \ 42 $(SRC)/SetSignals.$(ARCH).o \ 43 $(SRC)/Shutdown.$(ARCH).o \ 44 $(SRC)/check_permissions.$(ARCH).o \ 45 $(SRC)/subcatalog.$(ARCH).o \ 41 46 $(SRC)/wcatalog.$(ARCH).o 42 47 -
trunk/Ohana/src/photdbc/include/photdbc.h
r4828 r4864 64 64 # define FLAG_DUPMEAS 0x0040 65 65 66 Image *find_images ( GSCRegion *region, int Nregion, int *Nimages, int **LineNum);66 Image *find_images (FITS_DB *db, GSCRegion *region, int Nregion, int *Nimage, int **LineNum); 67 67 GSCRegion *find_regions (Image *image, int Nimage, int *Nregions, GSCRegion *fullregion); 68 Image *get_images (int *N);69 68 GSCRegion *get_regions (double minRa, double maxRa, double minDec, double maxDec, int *Nregions); 70 69 Catalog *load_catalogs (GSCRegion *region, int Nregion); 71 GSCRegion *load_images ( char *seed, int *nregion);70 GSCRegion *load_images (FITS_DB *db, char *seed, int *nregion); 72 71 GSCRegion *name_region (char *name, int *Nregions); 73 72 void ConfigInit (int *argc, char **argv); … … 75 74 int corner_check (double *x1, double *y1, double *x2, double *y2); 76 75 int edge_check (double *x1, double *y1, double *x2, double *y2); 77 void flag_measures ( Catalog *catalog);76 void flag_measures (FITS_DB *db, Catalog *catalog); 78 77 int gcatalog (Catalog *catalog); 79 78 void get_mags (Catalog *catalog); … … 93 92 void unique_measures (Catalog *catalog); 94 93 void wcatalog (Catalog *catalog); 95 Catalog *subcatalog (Catalog *catalog); 96 void check_directory (char *basefile); 94 Catalog *subcatalog (Catalog *catalog); 95 void check_directory (char *basefile); 96 97 int Shutdown (char *format, ...); 98 void set_db (FITS_DB *in); 99 void lock_image_db (FITS_DB *db, char *filename); 100 void unlock_image_db (FITS_DB *db); 101 void check_permissions (char *basefile); 102 void TrapSignal (int sig); 103 void SetProtect (int mode); 104 int SetSignals (); -
trunk/Ohana/src/photdbc/src/find_images.c
r4808 r4864 7 7 images */ 8 8 9 Image *find_images ( GSCRegion *region, int Nregion, int *Nimages, int **LineNum) {9 Image *find_images (FITS_DB *db, GSCRegion *region, int Nregion, int *Nimage, int **LineNum) { 10 10 11 Header header;12 11 Image *timage, *image; 13 int i, j, k, m, found, nimage, Nimage, NIMAGE; 14 int status, InRange; 15 FILE *f; 12 int i, j, k, m, found, nimage, Ntimage, NIMAGE; 13 int InRange; 16 14 double Xc[5], Yc[5], Xi[5], Yi[5], r, d, dx, dy; 17 15 int *line_number; … … 29 27 strcpy (tcoords.ctype, "RA---TAN"); 30 28 31 /* check if image datafile exists, get header, number of images */ 32 if (!fits_read_header (ImageCat, &header)) { 33 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 34 exit (0); 35 } 36 Nimage = 0; 37 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage); 38 if (Nimage == 0) { 39 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 40 exit (0); 41 } 42 43 /* get ready to read data on images */ 44 f = fopen (ImageCat, "r"); 45 if (f == (FILE *) NULL) { 46 fprintf (stderr, "ERROR: trouble opening Image catalog: %s (2)\n", ImageCat); 47 exit (0); 48 } 49 fseek (f, header.size, SEEK_SET); 50 51 /* load all images */ 52 ALLOCATE (timage, Image, Nimage); 53 status = Fread (timage, sizeof(Image), Nimage, f, "image"); 54 if (status != Nimage) { 55 fprintf (stderr, "ERROR: couldn't read images from image catalog: %s\n", ImageCat); 56 exit (0); 57 } 29 timage = fits_table_get_Image (&db[0].ftable, &Ntimage, &db[0].swapped); 58 30 59 31 nimage = 0; … … 62 34 ALLOCATE (line_number, int, NIMAGE); 63 35 64 for (i = 0; i < N image; i++) {36 for (i = 0; i < Ntimage; i++) { 65 37 66 38 # if (0) 67 39 /* select images by photcode */ 68 np = timage[i].source; 69 Np = photcodes.hashcode[np]; 70 if (Np < 0) continue; 71 if (photcodes.code[Np].equiv != PHOTCODE) continue; 40 ecode = GetPhotcodeEquivCodebyCode (timage[i].source); 41 if (ecode != photcode[0].code) continue; 72 42 73 43 /* select images by time */ … … 77 47 } 78 48 # endif 79 49 80 50 /* define image corners */ 81 51 Xi[0] = 0; Yi[0] = 0; … … 153 123 REALLOCATE (image, Image, MAX (nimage + 1, 1)); 154 124 REALLOCATE (line_number, int, MAX (nimage + 1, 1)); 155 free (timage); 156 *Nimages = nimage; 125 *Nimage = nimage; 157 126 *LineNum = line_number; 158 fclose (f);159 127 return (image); 160 128 } 161 129 162 /* check if line between points 0 and 1 of x1163 crosses line between points 0 and 1 of x2 */164 int edge_check (double *x1, double *y1, double *x2, double *y2) {165 166 double theta1, theta2;167 double Theta1, Theta2;168 169 theta1 = opening_angle (x1[0], y1[0], x2[0], y2[0], x1[1], y1[1]);170 theta2 = opening_angle (x1[0], y1[0], x2[0], y2[0], x2[1], y2[1]);171 172 if (theta1*theta2 < 0.0) {173 return (FALSE);174 }175 176 if (fabs(theta1) < fabs(theta2)) {177 return (FALSE);178 }179 180 Theta1 = theta1;181 Theta2 = theta2;182 theta1 = opening_angle (x2[0], y2[0], x1[1], y1[1], x2[1], y2[1]);183 theta2 = opening_angle (x2[0], y2[0], x1[1], y1[1], x1[0], y1[0]);184 185 186 if (theta1*theta2 < 0.0) {187 return (FALSE);188 }189 190 if (fabs(theta1) < fabs(theta2)) {191 return (FALSE);192 }193 194 return (TRUE);195 196 }197 198 /* check if point x1,y1 is in box formed by x2[0-4] */199 int corner_check (double *x1, double *y1, double *x2, double *y2) {200 201 int i;202 double theta;203 204 theta = 0;205 206 for (i = 0; i < 4; i++) {207 theta += opening_angle (x2[i], y2[i], x1[0], y1[0], x2[i+1], y2[i+1]);208 }209 if (fabs(theta) > 6) {210 return (TRUE);211 } else {212 return (FALSE);213 }214 }215 216 /* returns the opening angle between the three points (2 is in middle)217 in range -pi to pi */218 219 double opening_angle (double x1, double y1, double x2, double y2, double x3, double y3) {220 221 double dx1, dy1, dx2, dy2, ct, st, theta;222 223 dx1 = x1 - x2;224 dy1 = y1 - y2;225 226 dx2 = x3 - x2;227 dy2 = y3 - y2;228 229 ct = (dx1*dx2 + dy1*dy2);230 st = (dx1*dy2 - dx2*dy1);231 232 theta = atan2 (st, ct);233 234 return (theta);235 236 }237 -
trunk/Ohana/src/photdbc/src/flag_measures.c
r4808 r4864 1 1 # include "photdbc.h" 2 2 3 void flag_measures ( Catalog *catalog) {3 void flag_measures (FITS_DB *db, Catalog *catalog) { 4 4 5 5 int i, j, k, m, n, N, found; … … 15 15 if (VERBOSE) fprintf (stderr, "flagging bad measurements\n"); 16 16 17 /* load images */ 18 image = get_images (&Nimage); 17 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 19 18 20 19 PhotNsec = GetPhotcodeNsecfilt (); -
trunk/Ohana/src/photdbc/src/load_images.c
r4808 r4864 1 1 # include "photdbc.h" 2 2 3 static int Nimage; 4 static int *Line; 5 static Image *image; 3 GSCRegion *load_images (FITS_DB *db, char *seed, int *nregion) { 6 4 7 GSCRegion *load_images (char *seed, int *nregion) { 8 5 int Nregion; 9 6 GSCRegion *region; 10 int Nregion; 7 int Nimage; 8 int *Line; 9 Image *image; 11 10 12 11 region = name_region (seed, &Nregion); 13 12 13 if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename); 14 15 /* read entire db table */ 16 if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename); 17 14 18 /* find images which supplied all measurements */ 15 image = find_images ( region, Nregion, &Nimage, &Line);19 image = find_images (db, region, Nregion, &Nimage, &Line); 16 20 *nregion = Nregion; 17 21 22 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, Line, Nimage); 23 18 24 return (region); 19 25 } 20 21 Image *get_images (int *N) {22 23 *N = Nimage;24 return (image);25 }26 27 /*28 void wimages () {29 30 int i, status, mode;31 FILE *f;32 Header header;33 34 setMcalFinal (image, Nimage);35 36 if (!fits_read_header (ImageCat, &header)) {37 fprintf (stderr, "ERROR: can't find %s\n", ImageCat);38 exit (0);39 }40 41 f = fopen (ImageCat, "r+");42 if (f == NULL) {43 fprintf (stderr, "ERROR: can't open image catalog file to append: %s\n", ImageCat);44 exit (0);45 }46 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;47 chmod (ImageCat, mode);48 49 if (VERBOSE) fprintf (stderr, "writing out %d images\n", Nimage);50 for (i = 0; i < Nimage; i++) {51 if (image[i].code == ID_IMAGE_NOCAL) image[i].code &= ~ID_IMAGE_NOCAL;52 53 fseek (f, header.size + Line[i]*sizeof(Image), SEEK_SET);54 status = Fwrite (&image[i], sizeof(Image), 1, f, "image");55 if (status != 1) {56 fprintf (stderr, "ERROR: failure writing image data to catalog %s\n", ImageCat);57 exit (0);58 }59 }60 61 fclose (f);62 }63 */ -
trunk/Ohana/src/photdbc/src/photdbc.c
r4808 r4864 7 7 Catalog *catalog; 8 8 GSCRegion *region; 9 FITS_DB db; 9 10 10 11 /* get configuration info, args, lockfile */ 11 12 initialize (argc, argv); 12 13 14 set_db (&db); 15 lock_image_db (&db, ImageCat); 16 13 17 /* load region and images overlapping region */ 14 region = load_images ( argv[1], &Nregion);18 region = load_images (&db, argv[1], &Nregion); 15 19 16 20 /* load catalog data corresponding to region file */ … … 25 29 unique_measures (catalog); 26 30 27 flag_measures ( catalog);31 flag_measures (&db, catalog); 28 32 29 33 get_mags (catalog); -
trunk/Ohana/src/relphot/Makefile
r4805 r4864 42 42 $(SRC)/misc.$(ARCH).o \ 43 43 $(SRC)/reload_catalogs.$(ARCH).o \ 44 $(SRC)/image-db.$(ARCH).o \ 44 45 $(SRC)/free_catalogs.$(ARCH).o \ 46 $(SRC)/check_permissions.$(ARCH).o \ 45 47 $(SRC)/setMrelFinal.$(ARCH).o \ 46 48 $(SRC)/write_coords.$(ARCH).o \ 47 49 $(SRC)/setExclusions.$(ARCH).o \ 50 $(SRC)/Shutdown.$(ARCH).o \ 51 $(SRC)/SetSignals.$(ARCH).o \ 48 52 $(SRC)/wcatalog.$(ARCH).o 49 53 -
trunk/Ohana/src/relphot/include/relphot.h
r4828 r4864 1 1 # include <ohana.h> 2 2 # include <dvo.h> 3 # include <signal.h> 3 4 4 5 /* # define GRID_V1 */ … … 118 119 void findImages PROTO((Catalog *catalog, int Ncatalog)); 119 120 int findMosaics PROTO((Catalog *catalog, int Ncatalog)); 120 Image *find_images PROTO((GSCRegion *region, int Nregion, int *Nimages, int **LineNum)); 121 Image *find_images PROTO((FITS_DB *db, GSCRegion *region, int Nregion, int *Nimage, int **LineNum)); 122 void set_db (FITS_DB *in); 123 int Shutdown (char *format, ...); 124 void TrapSignal (int sig); 125 void SetProtect (int mode); 126 int SetSignals (); 127 121 128 GSCRegion *find_regions PROTO((Image *image, int Nimage, int *Nregions, GSCRegion *fullregion)); 122 129 void freeGridBins PROTO((int Ncatalog)); … … 147 154 int liststats PROTO((double *value, double *dvalue, int N, StatType *stats)); 148 155 Catalog *load_catalogs PROTO((GSCRegion *region, int Nregion, GSCRegion *fullregion)); 149 GSCRegion *load_images PROTO((char *seed, int *nregion, GSCRegion *fullregion)); 156 GSCRegion *load_images PROTO((FITS_DB *db, char *seed, int *nregion, GSCRegion *fullregion)); 157 158 void check_permissions (char *basefile); 159 void lock_image_db (FITS_DB *db, char *filename); 160 void unlock_image_db (FITS_DB *db); 161 void create_image_db (FITS_DB *db); 162 150 163 int main PROTO((int argc, char **argv)); 151 164 void mark_images PROTO((Image *image, int Nimage, Image *timage, int Ntimage)); … … 167 180 int setExclusions PROTO((Catalog *catalog, int Ncatalog)); 168 181 void setMcal PROTO((Catalog *catalog, int Poor)); 169 void setMcalFinal PROTO(( Image *image, int Nimage));182 void setMcalFinal PROTO(()); 170 183 int setMcalOutput PROTO((Catalog *catalog, int Ncatalog)); 171 184 void setMgrid PROTO((Catalog *catalog)); -
trunk/Ohana/src/relphot/src/MosaicOps.c
r4796 r4864 167 167 } 168 168 169 void setMcalFinal (Image *image, int Nimage) { 170 171 int i, j, im; 169 void setMcalFinal () { 170 171 int i, j, im, Nimage; 172 Image *image; 172 173 173 174 if (!MOSAICNAME[0]) return; 175 176 image = getimages (&Nimage); 174 177 175 178 for (i = 0; i < Nmosaic; i++) { -
trunk/Ohana/src/relphot/src/find_images.c
r4796 r4864 7 7 images */ 8 8 9 Image *find_images (GSCRegion *region, int Nregion, int *Nimages, int **LineNum) { 10 11 Header header; 9 Image *find_images (FITS_DB *db, GSCRegion *region, int Nregion, int *Nimage, int **LineNum) { 10 12 11 Image *timage, *image; 13 int i, j, k, m, found, nimage, Nimage, NIMAGE; 14 int status, InRange, ecode; 15 FILE *f; 12 int i, j, k, m, found, nimage, Ntimage, NIMAGE; 13 int InRange, ecode; 16 14 double Xc[5], Yc[5], Xi[5], Yi[5], r, d, dx, dy; 17 15 int *line_number; … … 29 27 strcpy (tcoords.ctype, "RA---TAN"); 30 28 31 /* check if image datafile exists, get header, number of images */ 32 if (!fits_read_header (ImageCat, &header)) { 33 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 34 exit (0); 35 } 36 Nimage = 0; 37 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage); 38 if (Nimage == 0) { 39 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 40 exit (0); 41 } 42 43 /* get ready to read data on images */ 44 f = fopen (ImageCat, "r"); 45 if (f == (FILE *) NULL) { 46 fprintf (stderr, "ERROR: trouble opening Image catalog: %s (2)\n", ImageCat); 47 exit (0); 48 } 49 fseek (f, header.size, SEEK_SET); 50 51 /* load all images */ 52 ALLOCATE (timage, Image, Nimage); 53 status = Fread (timage, sizeof(Image), Nimage, f, "image"); 54 if (status != Nimage) { 55 fprintf (stderr, "ERROR: couldn't read images from image catalog: %s\n", ImageCat); 56 exit (0); 57 } 29 timage = fits_table_get_Image (&db[0].ftable, &Ntimage, &db[0].swapped); 58 30 59 31 nimage = 0; … … 62 34 ALLOCATE (line_number, int, NIMAGE); 63 35 64 for (i = 0; i < N image; i++) {36 for (i = 0; i < Ntimage; i++) { 65 37 66 38 /* select images by photcode */ … … 153 125 REALLOCATE (line_number, int, MAX (nimage, 1)); 154 126 155 free (timage); 156 *Nimages = nimage; 127 *Nimage = nimage; 157 128 *LineNum = line_number; 158 fclose (f);159 129 return (image); 160 130 } -
trunk/Ohana/src/relphot/src/load_images.c
r2486 r4864 1 1 # include "relphot.h" 2 2 3 static int Nimage; 4 static int *Line; 5 static Image *image; 6 7 GSCRegion *load_images (char *seed, int *nregion, GSCRegion *fullregion) { 3 GSCRegion *load_images (FITS_DB *db, char *seed, int *nregion, GSCRegion *fullregion) { 8 4 9 5 GSCRegion *region; 10 int Nregion, Ntimage; 11 Image *timage; 6 int Nregion; 7 Image *image; 8 int *Line; 9 int Nimage; 10 11 if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename); 12 13 /* read entire db table */ 14 if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename); 12 15 13 16 region = name_region (seed, &Nregion); 14 17 15 18 /* find images which supplied all measurements */ 16 timage = find_images (region, Nregion, &Ntimage, &Line);19 image = find_images (db, region, Nregion, &Nimage, &Line); 17 20 free (Line); 18 21 19 22 /* find all region files which touch images */ 20 region = find_regions ( timage, Ntimage, &Nregion, fullregion);21 free ( timage);23 region = find_regions (image, Nimage, &Nregion, fullregion); 24 free (image); 22 25 23 26 /* find images which supplied all measurements for all regions */ 24 image = find_images ( region, Nregion, &Nimage, &Line);27 image = find_images (db, region, Nregion, &Nimage, &Line); 25 28 getfullregion (image, Nimage, fullregion); 29 30 fits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, Line, Nimage); 26 31 27 32 initImages (image, Nimage); … … 30 35 *nregion = Nregion; 31 36 return (region); 32 33 37 } 34 35 void wimages () {36 37 int i, status, mode;38 FILE *f;39 Header header;40 41 setMcalFinal (image, Nimage);42 43 if (!fits_read_header (ImageCat, &header)) {44 fprintf (stderr, "ERROR: can't find %s\n", ImageCat);45 exit (0);46 }47 48 f = fopen (ImageCat, "r+");49 if (f == NULL) {50 fprintf (stderr, "ERROR: can't open image catalog file to append: %s\n", ImageCat);51 exit (0);52 }53 mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;54 chmod (ImageCat, mode);55 56 if (VERBOSE) fprintf (stderr, "writing out %d images\n", Nimage);57 for (i = 0; i < Nimage; i++) {58 fseek (f, header.size + Line[i]*sizeof(Image), SEEK_SET);59 status = Fwrite (&image[i], sizeof(Image), 1, f, "image");60 if (status != 1) {61 fprintf (stderr, "ERROR: failure writing image data to catalog %s\n", ImageCat);62 exit (0);63 }64 }65 66 fclose (f);67 } -
trunk/Ohana/src/relphot/src/relphot.c
r4796 r4864 7 7 Catalog *catalog; 8 8 GSCRegion fullregion, *region; 9 FITS_DB db; 9 10 10 11 /* get configuration info, args */ 11 12 initialize (argc, argv); 12 13 14 set_db (&db); 15 lock_image_db (&db, ImageCat); 16 13 17 /* load regions and images based on seed region */ 14 region = load_images ( argv[1], &Ncatalog, &fullregion);18 region = load_images (&db, argv[1], &Ncatalog, &fullregion); 15 19 16 20 /* load catalog data from region files */ … … 79 83 /* load catalog data from region files, update Mrel include all data */ 80 84 reload_catalogs (region, Ncatalog, &fullregion); 81 wimages (); 85 setMcalFinal (); 86 dvo_image_update (&db, VERBOSE); 87 unlock_image_db (&db); 88 82 89 exit (0); 83 90 } -
trunk/Ohana/src/uniphot/Makefile
r4809 r4864 26 26 $(SRC)/liststats.$(ARCH).o \ 27 27 $(SRC)/load_images.$(ARCH).o \ 28 $(SRC)/subset_images.$(ARCH).o \ 28 29 $(SRC)/find_image_tgroups.$(ARCH).o \ 29 30 $(SRC)/find_image_sgroups.$(ARCH).o \ … … 34 35 $(SRC)/wimages.$(ARCH).o \ 35 36 $(SRC)/gcatalog.$(ARCH).o \ 37 $(SRC)/check_permissions.$(ARCH).o \ 38 $(SRC)/image-db.$(ARCH).o \ 39 $(SRC)/SetSignals.$(ARCH).o \ 40 $(SRC)/Shutdown.$(ARCH).o \ 36 41 $(SRC)/misc.$(ARCH).o 37 42 -
trunk/Ohana/src/uniphot/include/uniphot.h
r4828 r4864 1 1 # include <ohana.h> 2 2 # include <dvo.h> 3 # include <signal.h> 3 4 4 5 # ifdef ANSI … … 75 76 int args PROTO((int argc, char **argv)); 76 77 void dumpresult PROTO(()); 77 Group *find_image_sgroups PROTO(( Image *image, ImageLink *imlink, int Nimage, int *Nsgroup));78 Group *find_image_tgroups PROTO(( Image *image, ImageLink *imlink, int Nimage, int *Ntgroup));78 Group *find_image_sgroups PROTO((FITS_DB *db, ImageLink *imlink, int *Nsgroup)); 79 Group *find_image_tgroups PROTO((FITS_DB *db, ImageLink *imlink, int *Ntgroup)); 79 80 void fit_sgroup PROTO((Group *sgroup, int Nsgroup)); 80 81 void fit_tgroup PROTO((Group *tgroup, int Ntgroup)); … … 83 84 void initstats PROTO((char *mode)); 84 85 int liststats PROTO((double *value, double *dvalue, int N, StatType *stats)); 85 Image *load_images PROTO((int *nimage));86 int load_images PROTO((FITS_DB *db)); 86 87 int main PROTO((int argc, char **argv)); 87 88 int open_graph PROTO((int N)); … … 89 90 void sortB PROTO((double *X, double *Y, int N)); 90 91 void sortD PROTO((double *X, double *Y, double *Z, int N)); 91 void update PROTO((Image *image, int Nimage, Group *sgroup, int Nsgroup));92 92 void update_catalog PROTO((Catalog *catalog, Group *sgroup, int warn)); 93 93 void wcatalog PROTO((Catalog *catalog)); 94 94 void wimages PROTO((Image *image, int Nimage)); 95 void check_permissions (char *basefile); 96 void lock_image_db (FITS_DB *db, char *filename); 97 void unlock_image_db (FITS_DB *db); 98 void create_image_db (FITS_DB *db); 99 void set_db (FITS_DB *in); 100 int Shutdown (char *format, ...); 101 void TrapSignal (int sig); 102 void SetProtect (int mode); 103 int SetSignals (); 104 int subset_images (FITS_DB *db); 105 void update (FITS_DB *db, Group *sgroup, int Nsgroup); -
trunk/Ohana/src/uniphot/src/find_image_sgroups.c
r2492 r4864 1 1 # include "uniphot.h" 2 2 3 Group *find_image_sgroups ( Image *image, ImageLink *imlink, int Nimage, int *Nsgroup) {3 Group *find_image_sgroups (FITS_DB *db, ImageLink *imlink, int *Nsgroup) { 4 4 5 int i, j, N group, Nentry, NENTRY;5 int i, j, Nimage, Ngroup, Nentry, NENTRY; 6 6 double r, d, x, y, radius; 7 7 Group *group; 8 8 Coords coords; 9 9 Image *image; 10 11 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 12 10 13 coords.crpix1 = coords.crpix2 = 0.0; 11 14 coords.cdelt1 = coords.cdelt2 = 1.0; /* scale is degrees, radius in degrees */ -
trunk/Ohana/src/uniphot/src/find_image_tgroups.c
r2492 r4864 1 1 # include "uniphot.h" 2 2 3 Group *find_image_tgroups ( Image *image, ImageLink *imlink, int Nimage, int *Ntgroup) {3 Group *find_image_tgroups (FITS_DB *db, ImageLink *imlink, int *Ntgroup) { 4 4 5 5 char *start, *stop; 6 int i, j, N group, NGROUP, Nentry, NENTRY;6 int i, j, Nimage, Ngroup, NGROUP, Nentry, NENTRY; 7 7 unsigned int *time, *tmin, *tmax; 8 8 Group *group; 9 Image *image; 10 11 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 9 12 10 13 /* sort time list (use only valid images?) */ -
trunk/Ohana/src/uniphot/src/load_images.c
r2492 r4864 1 1 # include "uniphot.h" 2 2 3 Image *load_images (int *nimage) { 4 5 int i, Nimage, status, equiv; 6 FILE *f; 7 Image *image; 8 Header header; 3 int load_images (FITS_DB *db) { 9 4 10 5 if (VERBOSE) fprintf (stderr, "finding images\n"); 11 6 12 /* open image datafile */ 13 if ((f = fopen (ImageCat, "r")) == (FILE *) NULL) { 14 fprintf (stderr, "ERROR: can't open image table %s\n", ImageCat); 15 exit (1); 16 } 7 if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename); 17 8 18 /* read header */ 19 if (!fits_fread_header (f, &header)) { 20 fprintf (stderr, "ERROR: can't read image table header %s\n", ImageCat); 21 exit (1); 22 } 9 /* read entire db table */ 10 if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename); 23 11 24 /* read number of images */ 25 Nimage = 0; 26 fits_scan (&header, "NIMAGES", "%d", 1, &Nimage); 27 if (Nimage == 0) { 28 fprintf (stderr, "ERROR: No images in catalog %s (1)\n", ImageCat); 29 exit (1); 30 } 31 32 /* load all images */ 33 ALLOCATE (image, Image, Nimage); 34 status = Fread (image, sizeof(Image), Nimage, f, "image"); 35 if (status != Nimage) { 36 fprintf (stderr, "ERROR: couldn't read all images from image catalog: %s\n", ImageCat); 37 exit (1); 38 } 39 fclose (f); 40 41 /* mark images to be calibrated */ 42 for (i = 0; i < Nimage; i++) { 43 44 image[i].code |= ID_IMAGE_NOCAL; 45 46 /* select images by photcode */ 47 equiv = GetPhotcodeEquivCodebyCode (image[i].source); 48 if (equiv != photcode[0].code) continue; 49 50 /* select images by time */ 51 if (TimeSelect) { 52 if (image[i].tzero < TSTART) continue; 53 if (image[i].tzero > TSTOP) continue; 54 } 55 56 image[i].code &= ~ID_IMAGE_NOCAL; 57 } 58 *nimage = Nimage; 59 return (image); 12 return (TRUE); 60 13 } -
trunk/Ohana/src/uniphot/src/uniphot.c
r4797 r4864 5 5 int i, Nimage, Ntgroup, Nsgroup; 6 6 Group *tgroup, *sgroup; 7 Image *image;8 7 ImageLink *imlinks; 9 10 /* add a mode to check / force consistency between image.Mcal and 11 measure.Mcal use the method in delstar to match image with measure 12 (gregions (image), etc) 13 */ 8 FITS_DB db; 14 9 15 10 /* get configuration info, args, lockfile */ 16 11 initialize (argc, argv); 17 12 18 /* load images filtered by selection */ 19 image = load_images (&Nimage); 13 set_db (&db); 14 lock_image_db (&db, ImageCat); 15 16 /* load images */ 17 load_images (&db); 18 19 /* filter image list by selection */ 20 subset_images (&db); 21 20 22 ALLOCATE (imlinks, ImageLink, Nimage); 21 22 tgroup = find_image_tgroups (image, imlinks, Nimage, &Ntgroup); 23 sgroup = find_image_sgroups (image, imlinks, Nimage, &Nsgroup); 23 tgroup = find_image_tgroups (&db, imlinks, &Ntgroup); 24 sgroup = find_image_sgroups (&db, imlinks, &Nsgroup); 24 25 25 26 /* determine fit values */ … … 49 50 if (!UPDATE) exit (0); 50 51 51 update (image, Nimage, sgroup, Nsgroup); 52 update (&db, sgroup, Nsgroup); 53 unlock_image_db (&db); 54 52 55 exit (0); 53 56 } 54 57 58 /* add a mode to check / force consistency between image.Mcal and 59 measure.Mcal. 60 61 use the method in delstar to match image with measure (gregions (image), etc) 62 */ -
trunk/Ohana/src/uniphot/src/update.c
r2492 r4864 2 2 # include <glob.h> 3 3 4 void update ( Image *image, int Nimage, Group *sgroup, int Nsgroup) {4 void update (FITS_DB *db, Group *sgroup, int Nsgroup) { 5 5 6 int i, j, status, Nmin ;6 int i, j, status, Nmin, Nimage; 7 7 char line[256]; 8 8 glob_t pglob; 9 9 double Rmin, Rmax, Dmin, Dmax, x, y, radius; 10 Image *image; 10 11 Catalog catalog; 11 12 Coords coords; 13 14 image = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 12 15 13 16 /* clear the NOCAL flags */ … … 15 18 image[i].code &= ~ID_IMAGE_NOCAL; 16 19 } 17 18 20 19 21 /* apply calculated space-group offset to image Mcal values */ … … 25 27 26 28 /** write image table **/ 27 wimages (image, Nimage);29 dvo_image_update (db, VERBOSE); 28 30 29 31 /** update catalog tables **/
Note:
See TracChangeset
for help on using the changeset viewer.
