Changeset 37463
- Timestamp:
- Oct 4, 2014, 5:57:37 PM (12 years ago)
- Location:
- branches/eam_branches/ipp-20140904/Ohana/src/fakeastro
- Files:
-
- 5 added
- 13 edited
-
Makefile (modified) (2 diffs)
-
include/fakeastro.h (modified) (6 diffs)
-
src/ConfigInit.c (modified) (2 diffs)
-
src/StarOps.c (added)
-
src/args.c (modified) (8 diffs)
-
src/fakeastro.c (modified) (2 diffs)
-
src/fakeastro_client.c (modified) (1 diff)
-
src/fakeastro_galaxy.c (modified) (4 diffs)
-
src/fakeastro_images.c (modified) (1 diff)
-
src/get_image_patch.c (added)
-
src/initialize.c (modified) (2 diffs)
-
src/load_template_images.c (added)
-
src/make_fake_images.c (modified) (3 diffs)
-
src/make_fake_stars.c (modified) (1 diff)
-
src/make_fake_stars_catalog.c (modified) (4 diffs)
-
src/make_fakestars.c (modified) (4 diffs)
-
src/match_fake_stars.c (added)
-
src/save_fake_stars.c (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/Makefile
r37449 r37463 30 30 $(SRC)/fakeastro.$(ARCH).o \ 31 31 $(SRC)/fakeastro_galaxy.$(ARCH).o \ 32 $(SRC)/StarOps.$(ARCH).o \ 32 33 $(SRC)/make_fakestars.$(ARCH).o \ 33 34 $(SRC)/make_subset.$(ARCH).o \ … … 37 38 $(SRC)/insert_fakestar.$(ARCH).o \ 38 39 $(SRC)/gaussian.$(ARCH).o \ 40 $(SRC)/fakeastro_images.$(ARCH).o \ 41 $(SRC)/load_template_images.$(ARCH).o \ 42 $(SRC)/make_fake_images.$(ARCH).o \ 43 $(SRC)/get_image_patch.$(ARCH).o \ 44 $(SRC)/make_fake_stars.$(ARCH).o \ 45 $(SRC)/make_fake_stars_catalog.$(ARCH).o \ 46 $(SRC)/save_fake_stars.$(ARCH).o \ 47 $(SRC)/match_fake_stars.$(ARCH).o \ 39 48 $(SRC)/remote_hosts.$(ARCH).o 40 49 -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/include/fakeastro.h
r37453 r37463 14 14 int found; // assigned to an object? 15 15 } FakeAstro_Stars; 16 17 typedef struct { 18 Average average; 19 Measure measure; 20 Lensing *lensing; // optionally carry out the lensing measurements 21 int found; 22 } Stars; 16 23 17 24 /* used in find_matches, find_matches_refstars */ … … 41 48 char *INPUT; 42 49 50 char *IMAGES_INPUT; 51 char *CATDIR_INPUT; 52 char *CATDIR_OUTPUT; 53 43 54 int PARALLEL; 44 55 int PARALLEL_MANUAL; … … 50 61 int FORCE; 51 62 63 float RADIUS; 64 52 65 SkyRegion UserPatch; 53 66 … … 58 71 void ConfigInit PROTO((int *argc, char **argv)); 59 72 void GetConfig PROTO((char *config, char *field, char *format, int N, void *ptr)); 60 int args PROTO((int argc, char **argv));61 int args_client PROTO((int argc, char **argv));73 int args PROTO((int *argc, char **argv)); 74 int args_client PROTO((int *argc, char **argv)); 62 75 63 76 void set_db PROTO((FITS_DB *in)); … … 70 83 void initialize_client (int argc, char **argv); 71 84 72 int fakeastro_galaxy ( SkyList *skylistInput, HostTable *hosts);85 int fakeastro_galaxy (); 73 86 FakeAstro_Stars *make_fakestars (int Nstars); 74 87 int sortStars (FakeAstro_Stars *stars, int Nstars); … … 96 109 97 110 int strextend (char *input, char *format,...); 111 112 int fakeastro_images (); 113 Image *load_template_images (int *nimage); 114 Image *make_fake_images (Image *image, int *nfakeImage); 115 116 SkyRegion *get_image_patch (Image *image); 117 Stars *make_fake_stars (SkyTable *sky, SkyRegion *patch, Image *image, int *nstars); 118 Stars *make_fake_stars_catalog (Stars *stars, int *nstars, SkyRegion *patch, Catalog *catalog, Image *image); 119 int save_fake_stars (SkyTable *sky, SkyRegion *patch, Image *image, Stars *stars, int Nstars); 120 int match_fake_stars (SkyRegion *region, Stars *stars, unsigned int NstarsIn, Catalog *catalog, Image *image); 121 122 int InitStar (Stars *star); -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/ConfigInit.c
r37453 r37463 19 19 // if (!ScanConfig (config, "ADDSTAR_RADIUS", "%lf", 0, &ADDSTAR_RADIUS)) ADDSTAR_RADIUS = 1.0; 20 20 21 // force CATDIR to be absolute (so parallel mode will work) 22 GetConfig (config, "CATDIR", "%s", 0, CATDIR); 23 char *tmpcatdir = abspath (CATDIR, DVO_MAX_PATH); 24 strcpy (CATDIR, tmpcatdir); 25 free (tmpcatdir); 21 if (FAKEASTRO_OP == OP_GALAXY) { 22 // force CATDIR to be absolute (so parallel mode will work) 23 GetConfig (config, "CATDIR", "%s", 0, CATDIR); 24 char *tmpcatdir = abspath (CATDIR, DVO_MAX_PATH); 25 strcpy (CATDIR, tmpcatdir); 26 free (tmpcatdir); 27 28 sprintf (ImageCat, "%s/Images.dat", CATDIR); 29 } 26 30 27 31 GetConfig (config, "GSCFILE", "%s", 0, GSCFILE); … … 30 34 GetConfig (config, "PHOTCODE_FILE", "%s", 0, MasterPhotcodeFile); 31 35 32 sprintf (ImageCat, "%s/Images.dat", CATDIR);33 34 36 if (!ScanConfig (config, "SKY_DEPTH", "%d", 0, &SKY_DEPTH)) SKY_DEPTH = 2; 35 37 if (!ScanConfig (config, "SKY_TABLE", "%s", 0, SKY_TABLE)) SKY_TABLE[0] = 0; 38 39 /* set the default search radius */ 40 if (!ScanConfig (config, "ADDSTAR_RADIUS", "%f", 0, &RADIUS)) { 41 GetConfig (config, "RADIUS", "%f", 0, &RADIUS); 42 } 43 if (RADIUS < 0.0001) { 44 fprintf (stderr, "absurd match radius %f\n", RADIUS); 45 exit (2); 46 } 36 47 37 48 if (*CATMODE == 0) strcpy (CATMODE, "RAW"); 38 49 if (*CATFORMAT == 0) strcpy (CATFORMAT, "ELIXIR"); 39 50 51 char *CATDIR_CHECK = (FAKEASTRO_OP == OP_GALAXY) ? CATDIR : CATDIR_OUTPUT; 52 53 // check for existence of CATDIR 54 struct stat filestat; 55 int status = stat (CATDIR_CHECK, &filestat); 56 if (!FORCE && (status == 0)) { 57 fprintf (stderr, "directory %s exists, refusing to contaminate\n", CATDIR); 58 exit (1); 59 } 60 40 61 /* update master photcode table if not defined */ 41 sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", CATDIR );62 sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", CATDIR_CHECK); 42 63 if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile, TRUE)) { 43 64 fprintf (stderr, "error loading photcode table %s\n", CatdirPhotcodeFile); -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/args.c
r37458 r37463 3 3 void usage_client (void); 4 4 5 int args (int argc, char **argv) {5 int args (int *argc, char **argv) { 6 6 7 7 int N; … … 10 10 FAKEASTRO_OP = OP_NONE; 11 11 12 if ((N = get_argument ( argc, argv, "-images"))) {13 remove_argument (N, &argc, argv);12 if ((N = get_argument (*argc, argv, "-images"))) { 13 remove_argument (N, argc, argv); 14 14 FAKEASTRO_OP = OP_IMAGES; 15 15 } 16 16 17 if ((N = get_argument ( argc, argv, "-galaxy"))) {17 if ((N = get_argument (*argc, argv, "-galaxy"))) { 18 18 if (FAKEASTRO_OP != OP_NONE) usage(); 19 remove_argument (N, &argc, argv);19 remove_argument (N, argc, argv); 20 20 FAKEASTRO_OP = OP_GALAXY; 21 21 } … … 28 28 UserPatch.Dmin = -90; 29 29 UserPatch.Dmax = +90; 30 if ((N = get_argument ( argc, argv, "-region"))) {31 remove_argument (N, &argc, argv);32 UserPatch.Rmin = atof (argv[N]); 33 remove_argument (N, &argc, argv);30 if ((N = get_argument (*argc, argv, "-region"))) { 31 remove_argument (N, argc, argv); 32 UserPatch.Rmin = atof (argv[N]); 33 remove_argument (N, argc, argv); 34 34 UserPatch.Rmax = atof (argv[N]); 35 remove_argument (N, &argc, argv);36 UserPatch.Dmin = atof (argv[N]); 37 remove_argument (N, &argc, argv);35 remove_argument (N, argc, argv); 36 UserPatch.Dmin = atof (argv[N]); 37 remove_argument (N, argc, argv); 38 38 UserPatch.Dmax = atof (argv[N]); 39 remove_argument (N, &argc, argv);39 remove_argument (N, argc, argv); 40 40 } 41 if ((N = get_argument ( argc, argv, "-catalog"))) {42 remove_argument (N, &argc, argv);41 if ((N = get_argument (*argc, argv, "-catalog"))) { 42 remove_argument (N, argc, argv); 43 43 UserPatch.Rmin = atof (argv[N]); 44 44 UserPatch.Rmax = UserPatch.Rmin + 0.001; 45 remove_argument (N, &argc, argv);45 remove_argument (N, argc, argv); 46 46 UserPatch.Dmin = atof (argv[N]); 47 47 UserPatch.Dmax = UserPatch.Dmin + 0.001; 48 remove_argument (N, &argc, argv);48 remove_argument (N, argc, argv); 49 49 } 50 50 … … 52 52 // based on the state of the SkyTable 53 53 PARALLEL = FALSE; 54 if ((N = get_argument ( argc, argv, "-parallel"))) {54 if ((N = get_argument (*argc, argv, "-parallel"))) { 55 55 PARALLEL = TRUE; 56 remove_argument (N, &argc, argv);56 remove_argument (N, argc, argv); 57 57 } 58 58 // this is a test mode : rather than launching the remote jobs and waiting for completion, 59 59 // fakeastro will simply list the remote command and wait for the user to signal completion 60 60 PARALLEL_MANUAL = FALSE; 61 if ((N = get_argument ( argc, argv, "-parallel-manual"))) {61 if ((N = get_argument (*argc, argv, "-parallel-manual"))) { 62 62 PARALLEL = TRUE; // -parallel-manual implies -parallel 63 63 PARALLEL_MANUAL = TRUE; 64 remove_argument (N, &argc, argv);64 remove_argument (N, argc, argv); 65 65 } 66 66 // this is a test mode : rather than launching the fakeastro_client jobs remotely, they are 67 67 // run in serial via 'system' 68 68 PARALLEL_SERIAL = FALSE; 69 if ((N = get_argument ( argc, argv, "-parallel-serial"))) {69 if ((N = get_argument (*argc, argv, "-parallel-serial"))) { 70 70 if (PARALLEL_MANUAL) { 71 71 fprintf (stderr, "ERROR: cannot mix -parallel-manual and -parallel-serial\n"); … … 74 74 PARALLEL = TRUE; // -parallel-serial implies -parallel 75 75 PARALLEL_SERIAL = TRUE; 76 remove_argument (N, &argc, argv);76 remove_argument (N, argc, argv); 77 77 } 78 78 79 79 // MaxDensityUse = FALSE; 80 // if ((N = get_argument ( argc, argv, "-max-density"))) {81 // remove_argument (N, &argc, argv);80 // if ((N = get_argument (*argc, argv, "-max-density"))) { 81 // remove_argument (N, argc, argv); 82 82 // MaxDensityValue = atof(argv[N]); 83 // remove_argument (N, &argc, argv);83 // remove_argument (N, argc, argv); 84 84 // MaxDensityUse = TRUE; 85 85 // } 86 86 87 87 FORCE = FALSE; 88 if ((N = get_argument ( argc, argv, "-force"))) {88 if ((N = get_argument (*argc, argv, "-force"))) { 89 89 FORCE = TRUE; 90 remove_argument (N, &argc, argv);90 remove_argument (N, argc, argv); 91 91 } 92 92 93 93 VERBOSE = VERBOSE2 = FALSE; 94 if ((N = get_argument ( argc, argv, "-v"))) {94 if ((N = get_argument (*argc, argv, "-v"))) { 95 95 VERBOSE = TRUE; 96 remove_argument (N, &argc, argv);97 } 98 if ((N = get_argument ( argc, argv, "-vv"))) {96 remove_argument (N, argc, argv); 97 } 98 if ((N = get_argument (*argc, argv, "-vv"))) { 99 99 VERBOSE = VERBOSE2 = TRUE; 100 remove_argument (N, &argc, argv);100 remove_argument (N, argc, argv); 101 101 } 102 102 103 103 if (FAKEASTRO_OP == OP_IMAGES) { 104 104 // mandatory arguments to fakeastro -images -input catdir -output -catdir -images images.fits 105 if ((N = get_argument ( argc, argv, "-input"))) {106 remove_argument (N, &argc, argv);105 if ((N = get_argument (*argc, argv, "-input"))) { 106 remove_argument (N, argc, argv); 107 107 CATDIR_INPUT = strcreate (argv[N]); 108 remove_argument (N, &argc, argv);108 remove_argument (N, argc, argv); 109 109 } else { 110 110 fprintf (stderr, "missing -input (catdir)\n"); 111 111 exit (2); 112 112 } 113 if ((N = get_argument ( argc, argv, "-output"))) {114 remove_argument (N, &argc, argv);113 if ((N = get_argument (*argc, argv, "-output"))) { 114 remove_argument (N, argc, argv); 115 115 CATDIR_OUTPUT = strcreate (argv[N]); 116 remove_argument (N, &argc, argv);116 remove_argument (N, argc, argv); 117 117 } else { 118 118 fprintf (stderr, "missing -output (catdir)\n"); 119 119 exit (2); 120 120 } 121 if ((N = get_argument ( argc, argv, "-images"))) {122 remove_argument (N, &argc, argv);121 if ((N = get_argument (*argc, argv, "-input-images"))) { 122 remove_argument (N, argc, argv); 123 123 IMAGES_INPUT = strcreate (argv[N]); 124 remove_argument (N, &argc, argv);124 remove_argument (N, argc, argv); 125 125 } else { 126 126 fprintf (stderr, "missing -images (images)\n"); … … 129 129 } 130 130 131 if (argc != 1) usage ();132 131 return TRUE; 133 132 } 134 133 135 int args_client (int argc, char **argv) {134 int args_client (int *argc, char **argv) { 136 135 137 136 int N; … … 146 145 147 146 HOST_ID = 0; 148 if ((N = get_argument ( argc, argv, "-hostID"))) {149 remove_argument (N, &argc, argv);147 if ((N = get_argument (*argc, argv, "-hostID"))) { 148 remove_argument (N, argc, argv); 150 149 HOST_ID = atoi (argv[N]); 151 remove_argument (N, &argc, argv);150 remove_argument (N, argc, argv); 152 151 } 153 152 if (!HOST_ID) usage_client(); 154 153 155 154 HOSTDIR = NULL; 156 if ((N = get_argument ( argc, argv, "-hostdir"))) {157 remove_argument (N, &argc, argv);155 if ((N = get_argument (*argc, argv, "-hostdir"))) { 156 remove_argument (N, argc, argv); 158 157 HOSTDIR = strcreate (argv[N]); 159 remove_argument (N, &argc, argv);158 remove_argument (N, argc, argv); 160 159 } 161 160 if (!HOSTDIR) usage_client(); 162 161 163 162 CPT_FILE = NULL; 164 if ((N = get_argument ( argc, argv, "-cpt"))) {165 remove_argument (N, &argc, argv);163 if ((N = get_argument (*argc, argv, "-cpt"))) { 164 remove_argument (N, argc, argv); 166 165 CPT_FILE = strcreate (argv[N]); 167 remove_argument (N, &argc, argv);166 remove_argument (N, argc, argv); 168 167 } 169 168 if (!CPT_FILE) usage_client(); 170 169 171 170 INPUT = NULL; 172 if ((N = get_argument ( argc, argv, "-input"))) {173 remove_argument (N, &argc, argv);171 if ((N = get_argument (*argc, argv, "-input"))) { 172 remove_argument (N, argc, argv); 174 173 INPUT = strcreate (argv[N]); 175 remove_argument (N, &argc, argv);174 remove_argument (N, argc, argv); 176 175 } 177 176 if (!INPUT) usage_client(); 178 177 179 if ((N = get_argument ( argc, argv, "-images"))) {180 remove_argument (N, &argc, argv);178 if ((N = get_argument (*argc, argv, "-images"))) { 179 remove_argument (N, argc, argv); 181 180 FAKEASTRO_OP = OP_IMAGES; 182 181 } 183 if ((N = get_argument ( argc, argv, "-galaxy"))) {182 if ((N = get_argument (*argc, argv, "-galaxy"))) { 184 183 if (FAKEASTRO_OP != OP_NONE) usage(); 185 remove_argument (N, &argc, argv);184 remove_argument (N, argc, argv); 186 185 FAKEASTRO_OP = OP_GALAXY; 187 186 } … … 193 192 UserPatch.Dmin = -90; 194 193 UserPatch.Dmax = +90; 195 if ((N = get_argument ( argc, argv, "-region"))) {196 remove_argument (N, &argc, argv);197 UserPatch.Rmin = atof (argv[N]); 198 remove_argument (N, &argc, argv);194 if ((N = get_argument (*argc, argv, "-region"))) { 195 remove_argument (N, argc, argv); 196 UserPatch.Rmin = atof (argv[N]); 197 remove_argument (N, argc, argv); 199 198 UserPatch.Rmax = atof (argv[N]); 200 remove_argument (N, &argc, argv);201 UserPatch.Dmin = atof (argv[N]); 202 remove_argument (N, &argc, argv);199 remove_argument (N, argc, argv); 200 UserPatch.Dmin = atof (argv[N]); 201 remove_argument (N, argc, argv); 203 202 UserPatch.Dmax = atof (argv[N]); 204 remove_argument (N, &argc, argv);203 remove_argument (N, argc, argv); 205 204 } 206 if ((N = get_argument ( argc, argv, "-catalog"))) {207 remove_argument (N, &argc, argv);205 if ((N = get_argument (*argc, argv, "-catalog"))) { 206 remove_argument (N, argc, argv); 208 207 UserPatch.Rmin = atof (argv[N]); 209 208 UserPatch.Rmax = UserPatch.Rmin + 0.001; 210 remove_argument (N, &argc, argv);209 remove_argument (N, argc, argv); 211 210 UserPatch.Dmin = atof (argv[N]); 212 211 UserPatch.Dmax = UserPatch.Dmin + 0.001; 213 remove_argument (N, &argc, argv);212 remove_argument (N, argc, argv); 214 213 } 215 214 216 215 // MaxDensityUse = FALSE; 217 // if ((N = get_argument ( argc, argv, "-max-density"))) {218 // remove_argument (N, &argc, argv);216 // if ((N = get_argument (*argc, argv, "-max-density"))) { 217 // remove_argument (N, argc, argv); 219 218 // MaxDensityValue = atof(argv[N]); 220 // remove_argument (N, &argc, argv);219 // remove_argument (N, argc, argv); 221 220 // MaxDensityUse = TRUE; 222 221 // } 223 222 224 223 VERBOSE = VERBOSE2 = FALSE; 225 if ((N = get_argument ( argc, argv, "-v"))) {224 if ((N = get_argument (*argc, argv, "-v"))) { 226 225 VERBOSE = TRUE; 227 remove_argument (N, &argc, argv);228 } 229 if ((N = get_argument ( argc, argv, "-vv"))) {226 remove_argument (N, argc, argv); 227 } 228 if ((N = get_argument (*argc, argv, "-vv"))) { 230 229 VERBOSE = VERBOSE2 = TRUE; 231 remove_argument (N, &argc, argv); 232 } 233 234 if (argc != 1) usage_client (); 230 remove_argument (N, argc, argv); 231 } 232 235 233 return TRUE; 236 234 } -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/fakeastro.c
r37458 r37463 2 2 3 3 int main (int argc, char **argv) { 4 5 gauss_init (50000); 4 6 5 7 /* get configuration info, args */ … … 9 11 case OP_GALAXY: 10 12 /* the object analysis is a separate process iterating over catalogs */ 11 fakeastro_galaxy ( skylist, hosts);13 fakeastro_galaxy (); 12 14 exit (0); 13 15 14 16 case OP_IMAGES: 15 // fakeastro_images (skylist);17 fakeastro_images (); 16 18 exit (0); 17 19 -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/fakeastro_client.c
r37449 r37463 3 3 int main (int argc, char **argv) { 4 4 5 // need to construct these options with args_loadstarpar... 6 ConfigInit (&argc, argv); 7 args_client (argc, argv); 5 initialize_client (argc, argv); 8 6 9 7 // client is called with a pointer to the file to be loaded -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/fakeastro_galaxy.c
r37458 r37463 1 1 # include "fakeastro.h" 2 2 3 int fakeastro_galaxy (SkyList *skylistInput, HostTable *hosts) { 3 int fakeastro_galaxy () { 4 5 int n, i; 4 6 5 7 SkyTable *sky = SkyTableLoadOptimal (CATDIR, SKY_TABLE, GSCFILE, TRUE, SKY_DEPTH, VERBOSE); 6 8 SkyTableSetFilenames (sky, CATDIR, "cpt"); 7 SkyList *skylist = SkyListByPatch (sky, -1, &UserPatch);9 SkyList *skylistInput = SkyListByPatch (sky, -1, &UserPatch); 8 10 9 11 // load the list of hosts … … 17 19 18 20 // ensure that the paths are absolute path names 19 int i;20 21 for (i = 0; i < hosts->Nhosts; i++) { 21 22 char *tmppath = abspath (hosts->hosts[i].pathname, DVO_MAX_PATH); … … 27 28 init_remote_hosts (); 28 29 } 29 30 int n, i;31 32 // XXX check for an existing CATDIR and exit?33 34 /* outline35 36 * generate N stars (random draw from galaxy mode)37 * assign them to catalogs and distribute38 39 */40 41 gauss_init (50000);42 30 43 31 int Nloop = 1; … … 93 81 return TRUE; 94 82 } 83 84 /* outline 85 86 * generate N stars (random draw from galaxy mode) 87 * assign them to catalogs and distribute 88 89 */ 90 -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/fakeastro_images.c
r37458 r37463 1 1 # include "fakeastro.h" 2 2 3 int fakeastro_images (HostTable *hosts) { 3 int fakeastro_images () { 4 5 int i, j; 6 7 FITS_DB db; 8 9 /*** update the image table ***/ 10 snprintf (ImageCat, DVO_MAX_PATH, "%s/Images.dat", CATDIR_OUTPUT); 11 12 /* setup image table format and lock */ 13 db.mode = dvo_catalog_catmode (CATMODE); 14 db.format = dvo_catalog_catformat (CATFORMAT); 15 int status = dvo_image_lock (&db, ImageCat, 3600.0, LCK_XCLD); // shorter timeout? 16 if (!status) Shutdown ("ERROR: failure to lock image catalog %s", db.filename); 17 18 /* load or create the image table */ 19 if (db.dbstate == LCK_EMPTY) { 20 if (VERBOSE) fprintf (stderr, "can't find %s, creating a new one\n", ImageCat); 21 dvo_image_create (&db, GetZeroPoint()); 22 } else { 23 if (!dvo_image_load (&db, VERBOSE, FALSE)) { 24 Shutdown ("can't read image catalog %s", db.filename); 25 } 26 } 4 27 5 28 SkyTable *skyTableInput = SkyTableLoadOptimal (CATDIR_INPUT, SKY_TABLE, GSCFILE, TRUE, SKY_DEPTH, VERBOSE); 6 29 SkyTableSetFilenames (skyTableInput, CATDIR_INPUT, "cpt"); 7 // SkyList *skyListInput = SkyListByPatch (skyInpt, -1, &UserPatch);8 30 9 31 SkyTable *skyTableOutput = SkyTableLoadOptimal (CATDIR_OUTPUT, SKY_TABLE, GSCFILE, TRUE, SKY_DEPTH, VERBOSE); 10 32 SkyTableSetFilenames (skyTableOutput, CATDIR_OUTPUT, "cpt"); 11 // SkyList *skyListOutput = SkyListByPatch (skyInpt, -1, &UserPatch);12 33 13 int Nimages; 14 Images *images = load_template_images (&Nimages); 34 int Nimage = 0; 35 int NIMAGE = 1000; 36 Image *image = NULL; 15 37 16 for (i = 0; i < Nimages; i++) { 38 ALLOCATE (image, Image, NIMAGE); 39 40 int Nrefimage; 41 Image *refimage = load_template_images (&Nrefimage); 42 43 for (i = 0; i < Nrefimage; i++) { 17 44 18 45 // we only want to make fake images for the exposures 19 if (strcmp(& images[i].coords.ctype[4], "-DIS")) continue;46 if (strcmp(&refimage[i].coords.ctype[4], "-DIS")) continue; 20 47 21 Images *fakeImages = make_fake_images (&images[i], &NfakeImages); 48 int NfakeImage; 49 Image *fakeImage = make_fake_images (&refimage[i], &NfakeImage); 22 50 23 for (j = 0; j < NfakeImages; j++) { 24 Stars *fakeStars = make_fake_stars (skyTableInput, skyTableOutput, &fakeImages[i], &NfakeStars); 51 for (j = 0; j < NfakeImage; j++) { 52 53 // we only want to make fake stars for the fake chips 54 if (strcmp(&fakeImage[j].coords.ctype[4], "-WRP")) continue; 55 56 SkyRegion *patch = get_image_patch (&fakeImage[j]); 57 58 int NfakeStars; 59 Stars *fakeStars = make_fake_stars (skyTableInput, patch, &fakeImage[j], &NfakeStars); 25 60 26 // save fake stars... 61 save_fake_stars (skyTableOutput, patch, &fakeImage[j], fakeStars, NfakeStars); 62 63 free (fakeStars); 64 free (patch); 27 65 } 66 67 if (Nimage + NfakeImage >= NIMAGE) { 68 NIMAGE += 1000; 69 REALLOCATE (image, Image, NIMAGE); 70 } 71 72 for (j = 0; j < NfakeImage; j++) { 73 memcpy (&image[Nimage], &fakeImage[j], sizeof(Image)); 74 } 75 76 free (fakeImage); 28 77 } 78 79 /* add the new image and save */ 80 dvo_image_addrows (&db, image, Nimage); 81 SetProtect (TRUE); 82 dvo_image_update (&db, VERBOSE); 83 SetProtect (FALSE); 84 dvo_image_unlock (&db); /* unlock? */ 85 86 exit (0); 29 87 } 30 88 -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/initialize.c
r37453 r37463 12 12 if (get_argument (argc, argv, "--help")) usage(); 13 13 14 args (&argc, argv); 14 15 ConfigInit (&argc, argv); 15 args (argc, argv); 16 17 // check for existence of CATDIR 18 struct stat filestat; 19 int status = stat (CATDIR, &filestat); 20 if (!FORCE && (status == 0)) { 21 fprintf (stderr, "directory %s exist, refusing to contaminate\n", CATDIR); 22 exit (1); 23 } 16 if (argc != 1) usage (); 24 17 25 18 } … … 27 20 void initialize_client (int argc, char **argv) { 28 21 22 args_client (&argc, argv); 29 23 ConfigInit (&argc, argv); 30 args_client (argc, argv);24 if (argc != 1) usage_client (); 31 25 } 32 26 -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/make_fake_images.c
r37457 r37463 21 21 for (iy = 0; iy < 8; iy++) { 22 22 23 if ((ix == 0) && (iy == 0)) continue; 24 if ((ix == 7) && (iy == 0)) continue; 25 if ((ix == 0) && (iy == 7)) continue; 26 if ((ix == 7) && (iy == 7)) continue; 27 23 28 fakeImage[N] = fakeImage[0]; 24 29 … … 30 35 fakeImage[N].coords.crpix1 = (ix - 3)*4900; 31 36 fakeImage[N].coords.crpix2 = (iy - 3)*4900; 32 fakeImage[N].coords.pc1_1 = 1.0 33 fakeImage[N].coords.pc2_2 = 1.0 37 fakeImage[N].coords.pc1_1 = 1.0; 38 fakeImage[N].coords.pc2_2 = 1.0; 34 39 } else { 35 40 fakeImage[N].coords.crpix1 = (3 - ix)*4900; 36 41 fakeImage[N].coords.crpix2 = (4 - iy)*4900; 37 fakeImage[N].coords.pc1_1 = -1.0 38 fakeImage[N].coords.pc2_2 = -1.0 42 fakeImage[N].coords.pc1_1 = -1.0; 43 fakeImage[N].coords.pc2_2 = -1.0; 39 44 } 40 45 … … 53 58 fakeImage[N].NY = 4850; 54 59 55 fakeImage[N].photcode = 10000 + iy*10 + ix; 60 // XXX need a way to choose this better... 61 fakeImage[N].photcode = 10100 + iy*10 + ix; 56 62 fakeImage[N].exptime = 45.0; 57 63 N++; -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/make_fake_stars.c
r37458 r37463 1 1 # include "fakeastro.h" 2 2 3 Stars *make_fake_stars (SkyTable *sky TableInput, SkyTable *skyTableOutput, Image *image, int *nfakeStars) {3 Stars *make_fake_stars (SkyTable *sky, SkyRegion *patch, Image *image, int *nstars) { 4 4 5 // find the R,D coords of the 4 corners and 4 edge midpoints 6 7 static double Xpt[] = {0, 2425, 4850, 0, 4850, 0, 2425, 4850}; 8 static double Ypt[] = {0, 0, 0, 2425, 2425, 4850, 4850, 4850}; 9 10 double Rmin = +480.0; 11 double Rmax = -360.0; 12 double Dmin = +90.0; 13 double Dmax = -90.0; 14 15 for (i = 0; i < 8; i++) { 16 double R, D; 17 XY_to_RD (&R, &D, Xpt[i], Ypt[i], image->coords); 18 19 Rmin = MIN(R,Rmin); 20 Rmax = MAX(R,Rmax); 21 Dmin = MIN(D,Dmin); 22 Dmax = MAX(D,Dmax); 23 24 } 25 26 SkyList *skyInput = SkyListByBounds (skyTableInput, -1, Rmin, Rmax, Dmin, Dmax); 5 SkyList *skylist = SkyListByPatch (sky, -1, patch); 27 6 28 7 int Nstars = 0; 8 Stars *stars = NULL; 9 10 Catalog catalog; 29 11 30 12 // load stars from database in these regions 31 for (i = 0; i < skyInput->Nregions; i++) { 13 int i; 14 for (i = 0; i < skylist->Nregions; i++) { 32 15 33 16 // set the parameters which guide catalog open/load/create 34 cat Input.filename = skyInput[0].filename[i];35 cat Input.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data36 cat Input.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data37 cat Input.catflags = LOAD_AVES | LOAD_SECF;38 cat Input.Nsecfilt = GetPhotcodeNsecfilt ();39 if (!dvo_catalog_open (&cat Input, skylist[0].regions[i], VERBOSE, "r")) {17 catalog.filename = skylist[0].filename[i]; 18 catalog.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data 19 catalog.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data 20 catalog.catflags = LOAD_AVES | LOAD_SECF | LOAD_STARPAR; 21 catalog.Nsecfilt = GetPhotcodeNsecfilt (); 22 if (!dvo_catalog_open (&catalog, skylist[0].regions[i], VERBOSE, "r")) { 40 23 continue; 41 24 } 42 25 43 26 // generate fake measurements for this image 44 stars = make_fake_stars_catalog ( catInput, stars, &Nstars);27 stars = make_fake_stars_catalog (stars, &Nstars, patch, &catalog, image); 45 28 29 dvo_catalog_unlock (&catalog); 30 dvo_catalog_free (&catalog); 46 31 } 47 32 48 // will these match, or should I mangle the input cpt names? 49 SkyList *skyOutput = SkyListByBounds (skyTableOutput, -1, Rmin, Rmax, Dmin, Dmax); 33 SkyListFree (skylist); 50 34 51 // load stars from database in these regions 52 for (i = 0; i < skyOutput->Nregions; i++) { 53 if (!dvo_catalog_open (&catOutput, skyOutput[0].regions[i], VERBOSE, "w")) { 54 fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename); 55 exit (2); 56 } 57 58 save_fake_stars (stars, Nstars, catOutput); 59 } 35 *nstars = Nstars; 36 return stars; 60 37 } -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/make_fake_stars_catalog.c
r37460 r37463 1 1 # include "fakeastro.h" 2 # define SCALE 0.001 3 4 // sky[Nsecfilt], crude and hard-wired for now 5 float sky[] = {100.0, 150.0, 200.0, 300.0, 400.0}; 2 6 3 7 // things to figure out: … … 6 10 // * what about QSOs? 7 11 8 Stars *make_fake_stars_catalog (Catalog *catalog, Image *image, int *nfakeStars) { 12 Stars *make_fake_stars_catalog (Stars *stars, int *nstars, SkyRegion *region, Catalog *catalog, Image *image) { 13 14 int Nstars = *nstars; 15 *nstars += catalog->Naverage; 16 17 time_t timeRef = ohana_date_to_sec("2011/05/11,00:00:00"); 18 19 if (!stars) { 20 ALLOCATE (stars, Stars, *nstars); 21 } else { 22 REALLOCATE (stars, Stars, *nstars); 23 } 24 25 int Nsecfilt = GetPhotcodeNsecfilt (); 26 27 // use photcode to get zero point 28 PhotCode *code = GetPhotcodebyCode (image->photcode); 29 int Nsec = GetPhotcodeNsec (code->equiv); 30 myAssert (Nsec >= 0, "undefined Nsec?"); 9 31 10 32 float Mtime = 2.5*log10(image->exptime); 11 float ZP = image->Mcal + zeropt; 33 34 // XXX fix this!! 35 double plateScale = 0.257; 36 37 // XXX put in airmass? 38 float ZP = SCALE*code->C - image->Mcal + Mtime; 39 // float ZP = code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal; 12 40 13 41 // generate a set of measurements for each star entry 14 42 15 43 Average *average = catalog->average; 44 SecFilt *secfilt = catalog->secfilt; 16 45 StarPar *starpar = catalog->starpar; 17 46 47 int i; 18 48 for (i = 0; i < catalog->Naverage; i++) { 19 49 20 int nStar = average[i].starparOffset 50 // true position from src catalog 51 if (!IN_REGION(average[i].R, average[i].D)) continue; 21 52 22 InitStar (&stars[i]); 53 int nStar = average[i].starparOffset; 54 55 InitStar (&stars[Nstars]); 23 56 24 57 // which filter? 25 double Minst = secfilt[i*Nsecfilt + Ns ].M - Mtime- ZP;58 double Minst = secfilt[i*Nsecfilt + Nsec].M - ZP; 26 59 double Counts = pow(10.0, -0.4*Minst); 27 double SkyCts = Something;60 double SkyCts = sky[Nsec]; 28 61 29 62 double SN = Counts / sqrt(SkyCts + Counts); … … 36 69 // * proper motion 37 70 // * gaussian scatter (~ seeing) 38 double uR = starpar[nStar].uR ;39 double uD = starpar[nStar].uD ;71 double uR = starpar[nStar].uRA / 1000.0; // starpar are (currently) in mas / year 72 double uD = starpar[nStar].uDEC / 1000.0; 40 73 41 double Toffset = average - image.tzero; 74 // tzero, timeRef are in UNIX seconds, Toffset should be in years 75 double Toffset = (image->tzero - timeRef) / 365.25 / 86400.0; 42 76 43 77 // uR,uD in linear (arcsec / yr) 44 double dR off= uR*Toffset;45 double dD off= uD*Toffset;78 double dRpm = uR*Toffset; 79 double dDpm = uD*Toffset; 46 80 47 81 // uR,uD in linear arcsec … … 49 83 double dDsee = rnd_gauss (0.0, 1.0 / SN); 50 84 85 double dRoff = (dRpm + dRsee) / 3600.0; 86 double dDoff = (dDpm + dDsee) / 3600.0; 87 51 88 double Robs = Rtru + dRoff / cos(Dtru*DEG_RAD); 52 89 double Dobs = Dtru + dDoff; 53 90 54 91 double X, Y; 55 RD_to_XY (&X, &Y, Robs, Dobs, image->coords); 92 RD_to_XY (&X, &Y, Robs, Dobs, &image->coords); 93 if (X < 0) continue; 94 if (Y < 0) continue; 95 if (X > image->NX) continue; 96 if (Y > image->NY) continue; 56 97 57 stars[ i].measure.Xccd = X;58 stars[ i].measure.Yccd = Y;59 stars[ i].measure.dXccd = 1.0 / SN / plateScale;60 stars[ i].measure.dYccd = 1.0 / SN / plateScale;98 stars[Nstars].measure.Xccd = X; 99 stars[Nstars].measure.Yccd = Y; 100 stars[Nstars].measure.dXccd = 1.0 / SN / plateScale; 101 stars[Nstars].measure.dYccd = 1.0 / SN / plateScale; 61 102 62 // stars[ i].measure.posangle = ToShortDegrees(ps1data[i].posangle);63 // stars[ i].measure.pltscale = ps1data[i].pltscale;103 // stars[Nstars].measure.posangle = ToShortDegrees(ps1data[i].posangle); 104 // stars[Nstars].measure.pltscale = ps1data[i].pltscale; 64 105 65 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 66 stars[i].measure.M = NAN; 67 } else { 68 stars[i].measure.M = Minst + ZeroPt; 69 } 70 stars[i].measure.dM = 1.0 / SN; 106 stars[Nstars].measure.M = Minst + ZP; 107 stars[Nstars].measure.dM = 1.0 / SN; 71 108 72 // stars[ i].measure.dMcal = ps1data[i].dMcal;73 stars[ i].measure.Sky = X?;74 stars[ i].measure.dSky = X?;109 // stars[Nstars].measure.dMcal = ps1data[i].dMcal; 110 stars[Nstars].measure.Sky = sky[Nsec]; 111 stars[Nstars].measure.dSky = sqrt(sky[Nsec]); 75 112 76 stars[ i].measure.photFlags = ps1data[i].flags;77 stars[ i].measure.photFlags2 = ps1data[i].flags2;113 stars[Nstars].measure.photFlags = 0; 114 stars[Nstars].measure.photFlags2 = 0; 78 115 79 116 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 80 stars[i].measure.detID = ps1data[i].detID; 117 stars[Nstars].measure.detID = Nstars + 1; 118 119 Nstars ++; 81 120 } 82 121 122 return stars; 83 123 } -
branches/eam_branches/ipp-20140904/Ohana/src/fakeastro/src/make_fakestars.c
r37453 r37463 35 35 */ 36 36 37 double z = rnd_gauss (0.0, Z_GAL); 38 double r = sqrt(drand48()) * R_GAL; 39 double Lrad = drand48() * 2 * M_PI; 37 if (i % 100000 == 0) fprintf (stderr, "."); 38 double z,r,L,B,R,D,Lrad,Brad; 39 40 int inPatch = FALSE; 41 while (!inPatch) { 42 z = rnd_gauss (0.0, Z_GAL); 43 r = sqrt(drand48()) * R_GAL; 44 Lrad = drand48() * 2 * M_PI; 45 Brad = atan2(z,r); 46 47 L = Lrad*DEG_RAD; 48 B = Brad*DEG_RAD; 49 50 ApplyTransform (&R, &D, L, B, transform); 51 if (R < UserPatch.Rmin) continue; 52 if (R > UserPatch.Rmax) continue; 53 if (D < UserPatch.Dmin) continue; 54 if (D > UserPatch.Dmax) continue; 55 break; 56 } 40 57 41 58 // double x = r*cos(L); … … 43 60 44 61 double distance = sqrt (SQ(r) + SQ(z)); 45 double Brad = atan2(z,r);46 62 47 63 double uL_gal = (A_oort * cos(2.0*Lrad) + B_oort) * cos(Brad) * iFkap; … … 59 75 double Mr = rnd_gauss (11.25, 1.0); 60 76 61 double L = Lrad*DEG_RAD;62 double B = Brad*DEG_RAD;63 64 double R, D;65 ApplyTransform (&R, &D, L, B, transform);66 67 77 // C1, C2 are from http://arxiv.org/pdf/1306.2945v2.pdf 68 78 double Rrad = R*RAD_DEG; … … 104 114 stars[i].starpar.uDEC = uD; 105 115 } 116 fprintf (stderr, "\n"); 106 117 return stars; 107 118 }
Note:
See TracChangeset
for help on using the changeset viewer.
