Changeset 30443
- Timestamp:
- Jan 31, 2011, 2:47:28 PM (15 years ago)
- Location:
- branches/eam_branches/ipp-20101205/Ohana/src/relphot
- Files:
-
- 1 added
- 9 edited
-
Makefile (modified) (1 diff)
-
include/relphot.h (modified) (1 diff)
-
src/MosaicOps.c (modified) (1 diff)
-
src/args.c (modified) (2 diffs)
-
src/bcatalog.c (modified) (1 diff)
-
src/help.c (added)
-
src/initialize.c (modified) (1 diff)
-
src/load_catalogs.c (modified) (2 diffs)
-
src/load_images.c (modified) (3 diffs)
-
src/select_images.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20101205/Ohana/src/relphot/Makefile
r17242 r30443 29 29 $(SRC)/StarOps.$(ARCH).o \ 30 30 $(SRC)/args.$(ARCH).o \ 31 $(SRC)/help.$(ARCH).o \ 31 32 $(SRC)/bcatalog.$(ARCH).o \ 32 33 $(SRC)/global_stats.$(ARCH).o \ -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/include/relphot.h
r27586 r30443 215 215 void write_coords PROTO((Header *header, Coords *coords)); 216 216 int relphot_objects (void); 217 218 void relphot_usage (void); 219 void relphot_help (int argc, char **argv); -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/MosaicOps.c
r29001 r30443 400 400 mark = (N < IMAGE_TOOFEW) || (N < IMAGE_GOOD_FRACTION*Nlist[i]); 401 401 if (mark) { 402 fprintf (stderr, "marked mosaic %s ("OFF_T_FMT"), ("OFF_T_FMT" < %d) || ("OFF_T_FMT" < %f*"OFF_T_FMT")\n", image[imlist[i][0]].name, i, N, IMAGE_TOOFEW, N, IMAGE_GOOD_FRACTION, Nlist[i]);402 if (VERBOSE2) { fprintf (stderr, "marked mosaic %s ("OFF_T_FMT"), ("OFF_T_FMT" < %d) || ("OFF_T_FMT" < %f*"OFF_T_FMT")\n", image[imlist[i][0]].name, i, N, IMAGE_TOOFEW, N, IMAGE_GOOD_FRACTION, Nlist[i]); } 403 403 mosaic[i].flags |= ID_IMAGE_PHOTOM_FEW; 404 404 Nfew ++; -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/args.c
r27586 r30443 1 1 # include "relphot.h" 2 void usage (void);3 2 4 3 int args (int argc, char **argv) { … … 228 227 if (UpdateAverages && (argc == 1)) return TRUE; 229 228 if (UserPatchSelect && (argc == 2)) return TRUE; 230 if (argc != 3) usage ();229 if (argc != 3) relphot_usage (); 231 230 232 231 return TRUE; 233 232 } 234 235 void usage () {236 fprintf (stderr, "ERROR: USAGE: relphot (region) (photcode)\n");237 fprintf (stderr, " or: relphot (photcode) -region RA RA DEC DEC\n");238 fprintf (stderr, " or: relphot -averages -region RA RA DEC DEC\n");239 fprintf (stderr, " options: \n");240 fprintf (stderr, " -time (start) (stop)\n");241 fprintf (stderr, " -v : verbose output\n");242 fprintf (stderr, " -vv : more verbose output\n");243 fprintf (stderr, " -outroot (outroot)\n");244 fprintf (stderr, " -plot\n");245 fprintf (stderr, " -plotdelay (seconds)\n");246 fprintf (stderr, " -statmode (mode)\n");247 fprintf (stderr, " -refcode (name) : give extra weight to this photcode\n");248 fprintf (stderr, " -n (nloop)\n");249 fprintf (stderr, " -reset\n");250 fprintf (stderr, " -update\n");251 fprintf (stderr, " -params\n");252 fprintf (stderr, " -mosaic (mosaic)\n");253 fprintf (stderr, " -imfreeze\n");254 fprintf (stderr, " -grid\n");255 fprintf (stderr, " -area Xmin Xmax Ymin Ymax\n");256 fprintf (stderr, " -instmag min max\n");257 fprintf (stderr, " \n");258 exit (2);259 } -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/bcatalog.c
r28660 r30443 119 119 120 120 if (VERBOSE) { 121 fprintf (stderr, "using "OFF_T_FMT" stars ("OFF_T_FMT" measures) of "OFF_T_FMT" for catalog \n",122 subcatalog[0].Naverage, subcatalog[0].Nmeasure, i);121 fprintf (stderr, "using "OFF_T_FMT" stars ("OFF_T_FMT" measures) of "OFF_T_FMT" for catalog %s\n", 122 subcatalog[0].Naverage, subcatalog[0].Nmeasure, i, catalog[0].filename); 123 123 fprintf (stderr, "rejections: %d code, %d time, %d dophot, %d mag, %d sigma, %d imag, %d few\n", 124 124 Ncode, Ntime, Ndophot, Nmag, Nsigma, Nimag, Nfew); -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/initialize.c
r29001 r30443 5 5 int N; 6 6 7 relphot_help (argc, argv); 7 8 ConfigInit (&argc, argv); 8 9 args (argc, argv); -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/load_catalogs.c
r29754 r30443 6 6 Catalog *catalog, tcatalog; 7 7 8 if (VERBOSE ) fprintf (stderr, "loading catalog data\n");8 if (VERBOSE2) fprintf (stderr, "loading catalog data\n"); 9 9 10 10 ALLOCATE (catalog, Catalog, skylist[0].Nregions); … … 22 22 tcatalog.Nsecfilt = GetPhotcodeNsecfilt (); // set the desired number in case we need to create the catalog 23 23 24 if (!dvo_catalog_open (&tcatalog, skylist[0].regions[i], VERBOSE , "r")) {24 if (!dvo_catalog_open (&tcatalog, skylist[0].regions[i], VERBOSE2, "r")) { 25 25 fprintf (stderr, "ERROR: failure reading catalog %s\n", tcatalog.filename); 26 26 exit (1); 27 27 } 28 if (VERBOSE && !tcatalog.Naves_disk) fprintf (stderr, "no data in %s, skipping\n", tcatalog.filename); 28 if (!tcatalog.Naves_disk) { 29 if (VERBOSE2) { fprintf (stderr, "no data in %s, skipping\n", tcatalog.filename); } 30 dvo_catalog_unlock (&tcatalog); 31 dvo_catalog_free (&tcatalog); 32 continue; 33 } 34 29 35 Nstar_total += tcatalog.Naverage; 30 36 Nmeas_total += tcatalog.Nmeasure; -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/load_images.c
r29001 r30443 1 1 # include "relphot.h" 2 3 # define MARKTIME(MSG,...) { \ 4 float dtime; \ 5 gettimeofday (&stop, (void *) NULL); \ 6 dtime = DTIME (stop, start); \ 7 fprintf (stderr, MSG, __VA_ARGS__); } 2 8 3 9 SkyList *load_images (FITS_DB *db, char *regionName, SkyRegion *region, int RegionSelect) { … … 6 12 off_t Nimage, Nsubset, Nchar; 7 13 off_t *LineNumber; 14 struct timeval start, stop; 8 15 9 16 SkyTable *sky = NULL; 10 17 SkyList *skylist = NULL; 18 19 gettimeofday (&start, (void *) NULL); 11 20 12 21 // load the current sky table (layout of all SkyRegions) … … 29 38 exit (2); 30 39 } 40 MARKTIME("read image table: %f sec\n", dtime); 31 41 32 42 // select the images which overlap the selected sky regions 33 43 subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset); 44 MARKTIME("selected images: %f sec\n", dtime); 34 45 35 46 gfits_vtable_from_ftable (&db[0].ftable, &db[0].vtable, LineNumber, Nsubset); 47 MARKTIME("converted ftable to vtable: %f sec\n", dtime); 36 48 37 49 initImages (subset, Nsubset); 50 MARKTIME("init images: %f sec\n", dtime); 51 38 52 initMosaics (subset, Nsubset); 53 MARKTIME("init mosaics: %f sec\n", dtime); 39 54 40 55 return (skylist); -
branches/eam_branches/ipp-20101205/Ohana/src/relphot/src/select_images.c
r29001 r30443 15 15 void dsortindex (double *X, off_t *Y, int N); 16 16 off_t getRegionStartByRA (double R, double *Rref, off_t Nregions); 17 18 # define MARKTIME(MSG,...) { \ 19 float dtime; \ 20 gettimeofday (&stop, (void *) NULL); \ 21 dtime = DTIME (stop, start); \ 22 fprintf (stderr, MSG, __VA_ARGS__); } 17 23 18 24 Image *select_images (SkyList *skylist, Image *timage, off_t Ntimage, off_t **LineNumber, off_t *Nimage) { … … 25 31 Coords tcoords; 26 32 SkyRegionCoords *skycoords; 27 33 struct timeval start, stop; 34 35 double RmaxSkyRegion, RminSkyRegion, DminSkyRegion, DmaxSkyRegion; 36 28 37 double *RmaxSky; 29 38 off_t *index; … … 35 44 return NULL; 36 45 } 46 47 gettimeofday (&start, (void *) NULL); 37 48 38 49 // the comparison is made in the catalog local projection. below we set crval1,2 … … 47 58 ALLOCATE (RmaxSky, double, skylist[0].Nregions); 48 59 ALLOCATE (index, off_t, skylist[0].Nregions); 60 61 RminSkyRegion = +360.0; 62 RmaxSkyRegion = -360.0; 63 DminSkyRegion = +90.0; 64 DmaxSkyRegion = -90.0; 49 65 50 66 /* compare with each region file */ … … 75 91 skycoords[i].Xc[3] -= dx; skycoords[i].Yc[3] += dy; 76 92 skycoords[i].Xc[4] -= dx; skycoords[i].Yc[4] -= dy; 77 } 93 94 RminSkyRegion = MIN(RminSkyRegion, skylist[0].regions[i][0].Rmin); 95 RmaxSkyRegion = MAX(RmaxSkyRegion, skylist[0].regions[i][0].Rmax); 96 DminSkyRegion = MIN(DminSkyRegion, skylist[0].regions[i][0].Dmin); 97 DmaxSkyRegion = MAX(DmaxSkyRegion, skylist[0].regions[i][0].Dmax); 98 } 99 MARKTIME("create sky region coords: %f sec\n", dtime); 78 100 79 101 dsortindex (RmaxSky, index, skylist[0].Nregions); 102 MARKTIME("sort sky coords: %f sec\n", dtime); 80 103 81 104 if (VERBOSE) fprintf (stderr, "finding images\n"); 82 105 BuildChipMatch (timage, Ntimage); 106 MARKTIME("build chip match: %f sec\n", dtime); 83 107 84 108 nimage = 0; … … 100 124 } 101 125 126 // this adds 1.3 sec for 3M images 102 127 if (!FindMosaicForImage (timage, Ntimage, i)) { 103 128 fprintf (stderr, "cannot find mosaic for "OFF_T_FMT"\n", i); … … 113 138 found = FALSE; 114 139 115 /* transform corners to ra,dec */140 /* transform corners to ra,dec -- costs ~3sec for 3M images */ 116 141 double RminImage = 360.0; 142 double RmaxImage = 0.0; 143 double DminImage = +90.0; 144 double DmaxImage = -90.0; 117 145 for (j = 0; j < 5; j++) { 118 146 XY_to_RD (&Ri[j], &Di[j], Xi[j], Yi[j], &timage[i].coords); 119 147 RminImage = MIN(RminImage, Ri[j]); 120 } 121 122 // RA(nStart) is guaranteed to be < RminImage: 148 RmaxImage = MAX(RmaxImage, Ri[j]); 149 DminImage = MIN(DminImage, Di[j]); 150 DmaxImage = MAX(DmaxImage, Di[j]); 151 } 152 if (RmaxImage - RminImage > 180.0) { 153 double tmp = RminImage; 154 RmaxImage = RminImage; 155 RminImage = tmp - 360.0; 156 } 157 158 // check that this image is even in range of the searched region 159 if (DminImage > DmaxSkyRegion) continue; 160 if (DmaxImage < DminSkyRegion) continue; 161 162 // the sky region RA is defined to be 0 - 360.0 163 if (RminImage > RmaxSkyRegion) continue; 164 if (RmaxImage < RminSkyRegion) continue; 165 166 // RA(nStart) is guaranteed to be < RminImage: -- costs 0.5sec for 3M images 123 167 nStart = getRegionStartByRA (RminImage, RmaxSky, skylist[0].Nregions); 124 168 125 169 /* compare with each region file */ 126 for (iSky = 0; (iSky < skylist[0].Nregions) && !found; iSky++) {170 for (iSky = nStart; (iSky < skylist[0].Nregions) && !found; iSky++) { 127 171 128 172 m = index[iSky]; … … 174 218 } 175 219 } 176 220 MARKTIME("finish image selection: %f sec\n", dtime); 221 177 222 if (VERBOSE) fprintf (stderr, "found "OFF_T_FMT" images\n", nimage); 178 223 … … 295 340 return (Nlo); 296 341 } 342 343 off_t getRegionStopByRA (double R, double *Rref, off_t Nregions) { 344 345 // use bisection to find the overlapping mosaic 346 347 off_t Nlo, Nhi, N; 348 349 // find the last mosaic before start 350 Nlo = 0; Nhi = Nregions; 351 while (Nhi - Nlo > 10) { 352 N = 0.5*(Nlo + Nhi); 353 if (Rref[N] < R) { 354 Nlo = MAX(N, 0); 355 } else { 356 Nhi = MIN(N, Nregions); 357 } 358 } 359 return (Nlo); 360 }
Note:
See TracChangeset
for help on using the changeset viewer.
