Changeset 17284
- Timestamp:
- Apr 2, 2008, 12:37:15 PM (18 years ago)
- Location:
- trunk/Ohana/src/photdbc
- Files:
-
- 7 edited
-
Makefile (modified) (2 diffs)
-
include/photdbc.h (modified) (1 diff)
-
src/ConfigInit.c (modified) (3 diffs)
-
src/copy_images.c (modified) (4 diffs)
-
src/join_stars.c (modified) (14 diffs)
-
src/make_subcatalog.c (modified) (3 diffs)
-
src/photdbc.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/photdbc/Makefile
r12842 r17284 27 27 $(SRC)/copy_images.$(ARCH).o \ 28 28 $(SRC)/Shutdown.$(ARCH).o \ 29 $(SRC)/join_stars.$(ARCH).o \ 29 30 $(SRC)/make_subcatalog.$(ARCH).o 30 31 … … 37 38 $(SRC)/load_catalogs.$(ARCH).o \ 38 39 $(SRC)/gcatalog.$(ARCH).o \ 39 $(SRC)/join_stars.$(ARCH).o \40 40 $(SRC)/unique_measures.$(ARCH).o \ 41 41 $(SRC)/flag_measures.$(ARCH).o \ -
trunk/Ohana/src/photdbc/include/photdbc.h
r8630 r17284 112 112 void SetProtect (int mode); 113 113 int SetSignals (); 114 115 116 114 int copy_images (char *outdir); -
trunk/Ohana/src/photdbc/src/ConfigInit.c
r12332 r17284 26 26 if (VERBOSE) fprintf (stderr, "loaded config file: %s\n", file); 27 27 28 // WarnConfig (config, "JOIN_RADIUS","%lf", 0, &JOIN_RADIUS);28 WarnConfig (config, "PHOTDBC_JOIN_RADIUS", "%lf", 0, &JOIN_RADIUS); 29 29 // WarnConfig (config, "UNIQ_RADIUS", "%lf", 0, &UNIQ_RADIUS); 30 30 … … 59 59 } 60 60 61 SetZeroPoint (ZERO_POINT);62 63 61 if (*CATMODE == 0) strcpy (CATMODE, "RAW"); 64 62 if (*CATFORMAT == 0) strcpy (CATFORMAT, "ELIXIR"); … … 70 68 exit (1); 71 69 } 70 SetZeroPoint (ZERO_POINT); 72 71 73 72 free (config); -
trunk/Ohana/src/photdbc/src/copy_images.c
r8630 r17284 10 10 struct stat filestat; 11 11 char *path; 12 char filename[1024]; 12 13 13 14 path = pathname (ImageCat); … … 28 29 // load the input image data 29 30 if (!dvo_image_load (&in, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", in.filename); 30 dvo_image_unlock (&in);31 31 32 32 // define output filename (replace CATDIR) … … 35 35 36 36 // lock the output catalog 37 status = dvo_image_lock (&out, ImageOut, 60.0, LCK_ SOFT);37 status = dvo_image_lock (&out, ImageOut, 60.0, LCK_XCLD); 38 38 if (!status) Shutdown ("ERROR: failure to lock image catalog %s", ImageOut); 39 39 if (out.dbstate != LCK_EMPTY) Shutdown ("ERROR: image table exists %s", ImageOut); … … 46 46 dvo_image_addrows (&out, image, Nimage); 47 47 48 dvo_image_ save (&out, VERBOSE);48 dvo_image_update (&out, VERBOSE); 49 49 dvo_image_unlock (&out); 50 51 dvo_image_unlock (&in); 52 53 // create the photcode file 54 sprintf (filename, "%s/Photcodes.dat", outdir); 55 SavePhotcodesFITS (filename); 56 50 57 return (TRUE); 51 58 } -
trunk/Ohana/src/photdbc/src/join_stars.c
r16040 r17284 8 8 double *X, *Y, dX, dY, dR, RADIUS2; 9 9 double Sr, Sd, Rmid, Dmid; 10 int basecode, baseNsec, Nsecfilt, Nfirst; 10 11 11 12 Average *naverage, *average; … … 16 17 17 18 if (VERBOSE) fprintf (stderr, "joining overlapping stars\n"); 19 if (VERBOSE) fprintf (stderr, "require base star to have i-band\n"); 20 21 basecode = GetPhotcodeCodebyName ("i"); 22 baseNsec = GetPhotcodeNsec (basecode); 23 Nsecfilt = catalog[0].Nsecfilt; 18 24 19 25 average = catalog[0].average; … … 26 32 27 33 /* reference for coords is this region */ 34 Naves = 0; 28 35 Rmid = Dmid = 0; 29 36 for (i = 0; i < Naverage; i++) { 37 // XXX we should be vigilant against R,D becoming nan : this must be due to pm... 38 if (isnan(average[i].R) || isnan(average[i].D)) { 39 average[i].R = 0.0; 40 average[i].D = 0.0; 41 continue; 42 } 30 43 Rmid += average[i].R; 31 44 Dmid += average[i].D; 45 Naves ++; 32 46 } 33 47 Rmid /= Naverage; … … 59 73 60 74 ALLOCATE (naverage, Average, Naverage); 75 ALLOCATE (nsecfilt, SecFilt, Naverage*Nsecfilt); 61 76 ALLOCATE (mpointer, Mpointer, Nmeasure); 62 77 for (i = 0; i < Nmeasure; i++) mpointer[i].averef = -1; … … 69 84 Nj = index[j]; 70 85 86 // if ((average[Ni].R > 131.259) && (average[Ni].R < 131.267) && (average[Ni].D > 20.440) && (average[Ni].D < 20.450)) { 87 // fprintf (stderr, "outer: %f, %f - %f, %f (%f, %f) == (%f, %f)\n", average[Ni].R, average[Ni].D, average[Nj].R, average[Nj].D, 88 // 3600.0*(average[Ni].R - average[Nj].R), 3600.0*(average[Ni].D - average[Nj].D), X[i] - X[j], Y[i] - Y[j]); 89 // } 90 91 // require base star to meet certain conditions: 92 if (isnan(secfilt[Ni*Nsecfilt + baseNsec].M)) { 93 i++; 94 continue; 95 } 96 71 97 /* a new star, add it to naverage[] */ 72 98 if (!found[i]) { 73 naverage[Naves] = average[Ni]; 74 naverage[Naves].offset = Nmeas; 75 for (k = 0; k < average[Ni].Nm; k++) { 76 m = average[Ni].offset + k; 99 naverage[Naves] = average[Ni]; 100 naverage[Naves].measureOffset = Nmeas; 101 102 for (k = 0; k < Nsecfilt; k++) { 103 nsecfilt[Naves*Nsecfilt + k] = secfilt[Ni*Nsecfilt + k]; 104 } 105 106 for (k = 0; k < average[Ni].Nmeasure; k++) { 107 m = average[Ni].measureOffset + k; 77 108 mpointer[Nmeas].measure = m; 78 109 mpointer[Nmeas].averef = Naves; … … 87 118 88 119 if (found[j]) { j++; continue; } // don't duplicate 89 if (j == i) {j++; continue; } // don't auto-correlate120 if (j == i) { j++; continue; } // don't auto-correlate 90 121 91 122 dX = X[i] - X[j]; … … 102 133 for (; (dX > -2*JOIN_RADIUS) && (j < Naverage); j++) { 103 134 Nj = index[j]; 135 136 // if ((average[Ni].R > 131.259) && (average[Ni].R < 131.267) && (average[Ni].D > 20.440) && (average[Ni].D < 20.450)) { 137 // fprintf (stderr, "inner: %f, %f - %f, %f (%f, %f) == (%f, %f)\n", average[Ni].R, average[Ni].D, average[Nj].R, average[Nj].D, 138 // 3600.0*(average[Ni].R - average[Nj].R), 3600.0*(average[Ni].D - average[Nj].D), X[i] - X[j], Y[i] - Y[j]); 139 // } 140 104 141 if (found[j]) continue; 105 142 dX = X[i] - X[j]; … … 108 145 if (dR < RADIUS2) { /* matched star, join to first */ 109 146 147 // if ((average[Ni].R > 131.259) && (average[Ni].R < 131.267) && (average[Ni].D > 20.440) && (average[Ni].D < 20.450)) { 148 // fprintf (stderr, "match: %f, %f - %f, %f\n", average[Ni].R, average[Ni].D, average[Nj].R, average[Nj].D); 149 // } 150 110 151 /* define pointers for new measures */ 111 for (k = 0; k < average[Nj].Nm ; k++) {112 m = average[Nj]. offset + k;152 for (k = 0; k < average[Nj].Nmeasure; k++) { 153 m = average[Nj].measureOffset + k; 113 154 mpointer[Nmeas].measure = m; 114 155 mpointer[Nmeas].averef = Ncurr; … … 117 158 Nmeas ++; 118 159 } 119 naverage[Ncurr].Nm += average[Nj].Nm; 160 Nfirst = average[Nj].Nmeasure; 161 naverage[Ncurr].Nmeasure += average[Nj].Nmeasure; 120 162 found[j] = TRUE; 121 163 164 # if 0 122 165 /* recalculate naverage[Ncurr].RA,DEC */ 123 166 /* this must be done here to keep the average position consistent 124 167 for the next star found */ 125 for (Sr = Sd = k = 0; k < naverage[Ncurr].Nm ; k++) {126 m = naverage[Ncurr]. offset + k;168 for (Sr = Sd = k = 0; k < naverage[Ncurr].Nmeasure; k++) { 169 m = naverage[Ncurr].measureOffset + k; 127 170 Sr += mpointer[m].R; 128 171 Sd += mpointer[m].D; 129 172 } 130 Sr = Sr / naverage[Ncurr].Nm ;131 Sd = Sd / naverage[Ncurr].Nm ;173 Sr = Sr / naverage[Ncurr].Nmeasure; 174 Sd = Sd / naverage[Ncurr].Nmeasure; 132 175 naverage[Ncurr].R = Sr; 133 176 naverage[Ncurr].D = Sd; 134 177 135 /* update original measurement offsets */136 for (k = 0; k < naverage[Ncurr].Nm; k++) {137 m = naverage[Ncurr]. offset + k;178 /* update original measurement offsets for new detections */ 179 for (k = Nfirst; k < naverage[Ncurr].Nmeasure; k++) { 180 m = naverage[Ncurr].measureOffset + k; 138 181 M = mpointer[m].measure; 139 182 measure[M].dR = 3600.0*(Sr - mpointer[m].R); … … 143 186 /* update current reference star position */ 144 187 RD_to_XY (&X[i], &Y[i], Sr, Sd, &tcoords); 188 # else 189 /* update original measurement offsets for new detections */ 190 for (k = Nfirst; k < naverage[Ncurr].Nmeasure; k++) { 191 m = naverage[Ncurr].measureOffset + k; 192 M = mpointer[m].measure; 193 measure[M].dR = 3600.0*(naverage[Ncurr].R - mpointer[m].R); 194 measure[M].dD = 3600.0*(naverage[Ncurr].D - mpointer[m].D); 195 } 196 # endif 145 197 } 146 198 } … … 148 200 j = first_j; 149 201 } 202 150 203 if (Nmeas != Nmeasure) { 151 fprintf (stderr, "failure to match measures\n");204 fprintf (stderr, "failure to match %d measures (%d of %d matched)\n", Nmeasure - Nmeas, Nmeas, Nmeasure); 152 205 } 153 206 154 207 /* create a new Measure table in the appropriate sequence */ 155 ALLOCATE (nmeasure, Measure, Nmeas ure);156 for (i = 0; i < Nmeas ure; i++) {208 ALLOCATE (nmeasure, Measure, Nmeas); 209 for (i = 0; i < Nmeas; i++) { 157 210 nmeasure[i] = measure[mpointer[i].measure]; 158 211 nmeasure[i].averef = mpointer[i].averef; … … 160 213 161 214 /* create an empty SecFilt table */ 162 ALLOCATE (nsecfilt, SecFilt, Naves*catalog[0].Nsecfilt);163 bzero (nsecfilt, Naves*catalog[0].Nsecfilt*sizeof(SecFilt));215 // ALLOCATE (nsecfilt, SecFilt, Naves*catalog[0].Nsecfilt); 216 // bzero (nsecfilt, Naves*catalog[0].Nsecfilt*sizeof(SecFilt)); 164 217 165 218 free (catalog[0].average); … … 171 224 catalog[0].secfilt = nsecfilt; 172 225 226 // allow output catalog to retain fewer measures 173 227 catalog[0].Naverage = Naves; 228 catalog[0].Nmeasure = Nmeas; 174 229 catalog[0].Nsecf_mem = Naves*catalog[0].Nsecfilt; 230 231 return; 175 232 } 176 233 … … 185 242 (measures are just moved around). thus, catalog[0].Nmeasure does not change. 186 243 */ 187 -
trunk/Ohana/src/photdbc/src/make_subcatalog.c
r15743 r17284 24 24 25 25 // exclude stars with too few measurements 26 if (NMEAS_MIN && (catalog[0].average[i].Nm < NMEAS_MIN)) continue;26 if (NMEAS_MIN && (catalog[0].average[i].Nmeasure < NMEAS_MIN)) continue; 27 27 28 28 /* assign average and secfilt values */ 29 29 subcatalog[0].average[Naverage] = catalog[0].average[i]; 30 subcatalog[0].average[Naverage]. offset = Nmeasure;30 subcatalog[0].average[Naverage].measureOffset = Nmeasure; 31 31 for (j = 0; j < Nsecfilt; j++) { 32 32 subcatalog[0].secfilt[Nsecfilt*Naverage+j] = catalog[0].secfilt[Nsecfilt*i+j]; … … 35 35 minMag = 32; 36 36 Nm = 0; 37 for (j = 0; j < catalog[0].average[i].Nm ; j++) {37 for (j = 0; j < catalog[0].average[i].Nmeasure; j++) { 38 38 39 offset = catalog[0].average[i]. offset + j;39 offset = catalog[0].average[i].measureOffset + j; 40 40 41 41 # if 0 … … 83 83 continue; 84 84 } 85 subcatalog[0].average[Naverage].N n= 0;86 subcatalog[0].average[Naverage].Nm = Nm;85 subcatalog[0].average[Naverage].Nmissing = 0; 86 subcatalog[0].average[Naverage].Nmeasure = Nm; 87 87 Naverage ++; 88 88 if (Naverage == NAVERAGE) { -
trunk/Ohana/src/photdbc/src/photdbc.c
r15743 r17284 60 60 61 61 // XXX add other filters here: 62 // join_stars (catalog);62 join_stars (&outcatalog); 63 63 // unique_measures (catalog); 64 64 // flag_measures (&db, catalog);
Note:
See TracChangeset
for help on using the changeset viewer.
