Changeset 42821 for trunk/Ohana/src/opihi/cmd.astro
- Timestamp:
- May 8, 2025, 4:29:52 PM (15 months ago)
- Location:
- trunk/Ohana
- Files:
-
- 19 edited
-
. (modified) (1 prop)
-
src/opihi/cmd.astro/cdensify.c (modified) (8 diffs)
-
src/opihi/cmd.astro/imfit-fgauss-pol.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-fgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-pgauss-psf.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-pgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-q2gauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-qfgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-qgauss-psf.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-qgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-qrgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-r2gauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-rgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-sgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-tgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit-vgauss.c (modified) (1 diff)
-
src/opihi/cmd.astro/imfit.c (modified) (7 diffs)
-
src/opihi/cmd.astro/mkgauss.c (modified) (4 diffs)
-
src/opihi/cmd.astro/region.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana
- Property svn:mergeinfo changed
-
trunk/Ohana/src/opihi/cmd.astro/cdensify.c
r41515 r42821 1 1 # include "data.h" 2 # define dCOS(A) ((double) cos ((double)RAD_DEG*A)) 2 3 3 4 # define CHECKVAL(ARG) if (!isfinite(ARG)) { gprint (GP_ERR, "illegal value for %s: %f\n", #ARG, ARG); return (FALSE); } … … 116 117 PutCoords (&newcoords, &bf[0].header); 117 118 119 // use the mask to prevent double-counting 120 ALLOCATE_PTR (mask, char, Nx*Ny); 121 118 122 float scalescale = scale*scale; 119 123 float scale2 = (scale + 1.0) * (scale + 1.0); … … 142 146 coords.crval1 = rn; 143 147 coords.crval2 = *d; 148 149 // XXX do not oversample by more than a factor of 10 150 float dXn = dX * MAX(fabs(dCOS(*d)), 0.1); 144 151 145 152 float F = 1.0; 146 153 if (vv) { F = isFloatScale ? Fs[i] : Is[i]; } 154 155 // reset the mask so we do not double-count 156 memset (mask, 0, Nx*Ny); 147 157 148 158 switch (PSFTYPE) { … … 162 172 break; 163 173 case IS_SQUARE: 164 for (ix = -scale; ix <= scale; ix += dX ) {174 for (ix = -scale; ix <= scale; ix += dXn) { 165 175 for (iy = -scale; iy <= scale; iy += dY) { 166 176 double rp, dp; … … 184 194 break; 185 195 case IS_CIRCLE: 186 for (ix = -scale ; ix <= scale; ix += dX) {187 for (iy = -scale ; iy <= scale; iy += dY) {196 for (ix = -scale - dXn; ix <= scale + dXn; ix += dXn) { 197 for (iy = -scale - dY; iy <= scale + dY; iy += dY) { 188 198 float r2 = ix*ix + iy*iy; 189 199 double rp, dp; … … 199 209 if (Xb < 0) continue; 200 210 if (Yb < 0) continue; 211 if (mask[Xb + Yb*Nx]) continue; 212 mask[Xb + Yb*Nx] = 1; 201 213 if (vv) { 202 214 val[Xb + Yb*Nx] += Normalize ? fCircle*F : F; … … 208 220 break; 209 221 case IS_GAUSS: 210 for (ix = -3.0*scale; ix <= 3.0*scale; ix += dX ) {222 for (ix = -3.0*scale; ix <= 3.0*scale; ix += dXn) { 211 223 for (iy = -3.0*scale; iy <= 3.0*scale; iy += dY) { 212 224 float r2 = ix*ix + iy*iy; … … 232 244 } 233 245 } 246 247 free (mask); 234 248 return (TRUE); 235 249 } -
trunk/Ohana/src/opihi/cmd.astro/imfit-fgauss-pol.c
r42078 r42821 51 51 set_variable ("Zpk", par[5]); 52 52 set_variable ("Sg", par[6]); 53 54 /* 55 set_variable ("dXg", dpar[0]); 56 set_variable ("dYg", dpar[1]); 57 set_variable ("dSXg", NAN); 58 set_variable ("dSYg", NAN); 59 set_variable ("dSXYg", NAN); 60 set_variable ("dZpk", dpar[5]); 61 set_variable ("dSg", dpar[6]); 62 */ 53 63 } 54 64 -
trunk/Ohana/src/opihi/cmd.astro/imfit-fgauss.c
r42078 r42821 39 39 set_variable ("Zpk", par[5]); 40 40 set_variable ("Sg", par[6]); 41 42 /* 43 set_variable ("dXg", dpar[0]); 44 set_variable ("dYg", dpar[1]); 45 set_variable ("dSXg", 2.35 / dpar[2]); 46 set_variable ("dSYg", 2.35 / dpar[3]); 47 set_variable ("dSXYg", dpar[4]); 48 set_variable ("dZpk", dpar[5]); 49 set_variable ("dSg", dpar[6]); 50 */ 41 51 } 42 52 -
trunk/Ohana/src/opihi/cmd.astro/imfit-pgauss-psf.c
r39457 r42821 35 35 set_variable ("Zpk", par[2]); 36 36 set_variable ("Sg", par[3]); 37 38 /* 39 set_variable ("dXg", dpar[0]); 40 set_variable ("dYg", dpar[1]); 41 set_variable ("dZpk", dpar[2]); 42 set_variable ("dSg", dpar[3]); 43 */ 37 44 } 38 45 -
trunk/Ohana/src/opihi/cmd.astro/imfit-pgauss.c
r39457 r42821 37 37 set_variable ("Zpk", par[5]); 38 38 set_variable ("Sg", par[6]); 39 40 /* 41 set_variable ("dXg", dpar[0]); 42 set_variable ("dYg", dpar[1]); 43 set_variable ("dSXg", 2.35 / dpar[2]); 44 set_variable ("dSYg", 2.35 / dpar[3]); 45 set_variable ("dSXYg", dpar[4]); 46 set_variable ("dZpk", dpar[5]); 47 set_variable ("dSg", dpar[6]); 48 */ 39 49 } 40 50 -
trunk/Ohana/src/opihi/cmd.astro/imfit-q2gauss.c
r42078 r42821 41 41 set_variable ("Sg", par[6]); 42 42 set_variable ("Sr", par[7]); 43 44 /* 45 set_variable ("dXg", dpar[0]); 46 set_variable ("dYg", dpar[1]); 47 set_variable ("dSXg", 2.35 / dpar[2]); 48 set_variable ("dSYg", 2.35 / dpar[3]); 49 set_variable ("dSXYg", dpar[4]); 50 set_variable ("dZpk", dpar[5]); 51 set_variable ("dSg", dpar[6]); 52 set_variable ("dSr", dpar[7]); 53 */ 43 54 } 44 55 -
trunk/Ohana/src/opihi/cmd.astro/imfit-qfgauss.c
r39457 r42821 41 41 set_variable ("Zpk", par[5]); 42 42 set_variable ("Sg", par[6]); 43 44 /* 45 set_variable ("dXg", dpar[0]); 46 set_variable ("dYg", dpar[1]); 47 set_variable ("dSXg", 2.35 / dpar[2]); 48 set_variable ("dSYg", 2.35 / dpar[3]); 49 set_variable ("dSXYg", dpar[4]); 50 set_variable ("dZpk", dpar[5]); 51 set_variable ("dSg", dpar[6]); 52 */ 43 53 } 44 54 -
trunk/Ohana/src/opihi/cmd.astro/imfit-qgauss-psf.c
r39457 r42821 38 38 set_variable ("Zpk", par[2]); 39 39 set_variable ("Sg", par[3]); 40 41 /* 42 set_variable ("dXg", dpar[0]); 43 set_variable ("dYg", dpar[1]); 44 set_variable ("dZpk", dpar[2]); 45 set_variable ("dSg", dpar[3]); 46 */ 40 47 } 41 48 -
trunk/Ohana/src/opihi/cmd.astro/imfit-qgauss.c
r42078 r42821 41 41 set_variable ("Sg", par[6]); 42 42 set_variable ("Sr", par[7]); 43 44 /* 45 set_variable ("dXg", dpar[0]); 46 set_variable ("dYg", dpar[1]); 47 set_variable ("dSXg", 2.35 / dpar[2]); 48 set_variable ("dSYg", 2.35 / dpar[3]); 49 set_variable ("dSXYg", dpar[4]); 50 set_variable ("dZpk", dpar[5]); 51 set_variable ("dSg", dpar[6]); 52 set_variable ("dSr", dpar[7]); 53 */ 43 54 } 44 55 -
trunk/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c
r42078 r42821 42 42 set_variable ("Sg", par[6]); 43 43 set_variable ("Npow", par[7]); 44 45 /* 46 set_variable ("dXg", dpar[0]); 47 set_variable ("dYg", dpar[1]); 48 set_variable ("dSXg", 2.35 / dpar[2]); 49 set_variable ("dSYg", 2.35 / dpar[3]); 50 set_variable ("dSXYg", dpar[4]); 51 set_variable ("dZpk", dpar[5]); 52 set_variable ("dSg", dpar[6]); 53 set_variable ("dNpow", dpar[7]); 54 */ 44 55 } 45 56 -
trunk/Ohana/src/opihi/cmd.astro/imfit-r2gauss.c
r42078 r42821 85 85 set_variable ("SYf", 2.35 * sqrt(2.0) / par[8]); 86 86 set_variable ("SXYf", par[9]); 87 88 /* 89 set_variable ("dXg", dpar[0]); 90 set_variable ("dYg", dpar[1]); 91 set_variable ("dSXg", 2.35 * sqrt(2.0) / dpar[2]); 92 set_variable ("dSYg", 2.35 * sqrt(2.0) / dpar[3]); 93 set_variable ("dSXYg", dpar[4]); 94 set_variable ("dZpk", dpar[5]); 95 set_variable ("dSg", dpar[6]); 96 set_variable ("dSXf", 2.35 * sqrt(2.0) / dpar[7]); 97 set_variable ("dSYf", 2.35 * sqrt(2.0) / dpar[8]); 98 set_variable ("dSXYf", dpar[9]); 99 */ 87 100 } -
trunk/Ohana/src/opihi/cmd.astro/imfit-rgauss.c
r42078 r42821 42 42 set_variable ("Sg", par[6]); 43 43 set_variable ("Sr", par[7]); 44 45 /* 46 set_variable ("dXg", dpar[0]); 47 set_variable ("dYg", dpar[1]); 48 set_variable ("dSXg", 2.35 / dpar[2]); 49 set_variable ("dSYg", 2.35 / dpar[3]); 50 set_variable ("dSXYg", dpar[4]); 51 set_variable ("dZpk", dpar[5]); 52 set_variable ("dSg", dpar[6]); 53 set_variable ("dSr", dpar[7]); 54 */ 44 55 } 45 56 -
trunk/Ohana/src/opihi/cmd.astro/imfit-sgauss.c
r39457 r42821 49 49 set_variable ("SYf", 2.35 / par[8]); 50 50 set_variable ("SXYf", par[9]); 51 52 /* 53 set_variable ("dXg", dpar[0]); 54 set_variable ("dYg", dpar[1]); 55 set_variable ("dSXg", 2.35 / dpar[2]); 56 set_variable ("dSYg", 2.35 / dpar[3]); 57 set_variable ("dSXYg", dpar[4]); 58 set_variable ("dZpk", dpar[5]); 59 set_variable ("dSg", dpar[6]); 60 set_variable ("dSXf", 2.35 / dpar[7]); 61 set_variable ("dSYf", 2.35 / dpar[8]); 62 set_variable ("dSXYf", dpar[9]); 63 */ 51 64 } 52 65 -
trunk/Ohana/src/opihi/cmd.astro/imfit-tgauss.c
r39457 r42821 80 80 set_variable ("SYf", 2.35 * sqrt(2.0) / par[8]); 81 81 set_variable ("SXYf", par[9]); 82 83 /* 84 set_variable ("dXg", dpar[0]); 85 set_variable ("dYg", dpar[1]); 86 set_variable ("dSXg", 2.35 * sqrt(2.0) / dpar[2]); 87 set_variable ("dSYg", 2.35 * sqrt(2.0) / dpar[3]); 88 set_variable ("dSXYg", dpar[4]); 89 set_variable ("dZpk", dpar[5]); 90 set_variable ("dSg", dpar[6]); 91 set_variable ("dSXf", 2.35 * sqrt(2.0) / dpar[7]); 92 set_variable ("dSYf", 2.35 * sqrt(2.0) / dpar[8]); 93 set_variable ("dSXYf", dpar[9]); 94 */ 82 95 } -
trunk/Ohana/src/opihi/cmd.astro/imfit-vgauss.c
r39457 r42821 69 69 set_variable ("SXf", par[7]); 70 70 set_variable ("SYf", par[8]); 71 72 /* 73 set_variable ("dXg", dpar[0]); 74 set_variable ("dYg", dpar[1]); 75 set_variable ("dSXg", 2.35 / dpar[2]); 76 set_variable ("dSYg", 2.35 / dpar[3]); 77 set_variable ("dSXYg", dpar[4]); 78 set_variable ("dZpk", dpar[5]); 79 set_variable ("dSg", dpar[6]); 80 set_variable ("dSXf", dpar[7]); 81 set_variable ("dSYf", dpar[8]); 82 */ 71 83 } -
trunk/Ohana/src/opihi/cmd.astro/imfit.c
r42078 r42821 13 13 } 14 14 15 Buffer *var = NULL; 16 if ((N = get_argument (argc, argv, "-var-image"))) { 17 remove_argument (N, &argc, argv); 18 var = SelectBuffer (argv[N], OLDBUFFER, TRUE); 19 if (!var) { 20 gprint (GP_ERR, "unknown buffer for variance %s\n", argv[N]); 21 FREE (Save); 22 return (FALSE); 23 } 24 remove_argument (N, &argc, argv); 25 } 26 15 27 int Insert = FALSE; 16 28 if ((N = get_argument (argc, argv, "-insert"))) { … … 18 30 Insert = TRUE; 19 31 if (Save) { gprint (GP_ERR, "-save and -insert are mutually exclusive\n"); free (Save); return (FALSE); } 32 if (var) { gprint (GP_ERR, "-save and -var-image are mutually exclusive\n"); return (FALSE); } 20 33 } 21 34 … … 40 53 Gain = atof(argv[N]); 41 54 remove_argument (N, &argc, argv); 55 if (var) { gprint (GP_ERR, "warning: -var-image selected, -gain will have no effect\n"); } 42 56 } 43 57 … … 48 62 RDnoise = atof(argv[N]); 49 63 remove_argument (N, &argc, argv); 64 if (var) { gprint (GP_ERR, "warning: -var-image selected, -rdnoise will have no effect\n"); } 50 65 } 51 66 … … 140 155 if (j + sy >= Ny) continue; 141 156 float *V = (float *)(buf[0].matrix.buffer) + (j+sy)*buf[0].matrix.Naxis[0] + sx; 157 float *dV = (var) ? ((float *)(var[0].matrix.buffer) + (j+sy)*var[0].matrix.Naxis[0] + sx) : NULL; 142 158 for (int i = 0; i < dX; i++) { 143 159 if (i + sx < 0) continue; … … 145 161 if (*V > SatThreshold) goto next; // skip pixels above threshold 146 162 if (!isfinite(*V)) goto next; // skip nan pixels 147 dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise 163 if (dV) { 164 dz[N] = *dV; 165 } else { 166 dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise 167 } 148 168 if (dz[N] <= 0) goto next; 149 169 dz[N] = 1.0 / dz[N]; … … 154 174 next: 155 175 V++; 176 if (dV) { dV++; } 156 177 } 157 178 } -
trunk/Ohana/src/opihi/cmd.astro/mkgauss.c
r41341 r42821 11 11 Buffer *buf; 12 12 13 // if TRUE, integrated flux is Flux, else Io is Flux 13 14 int Normalize = FALSE; 14 15 if ((N = get_argument (argc, argv, "-norm"))) { … … 16 17 remove_argument (N, &argc, argv); 17 18 } 19 20 // Io or integrated flux (depending on value of Normalize) 21 float Flux = 1.0; 22 if ((N = get_argument (argc, argv, "-flux"))) { 23 remove_argument (N, &argc, argv); 24 Flux = atof(argv[N]); 25 remove_argument (N, &argc, argv); 26 } 27 18 28 19 29 // this should be Nx/2, Ny/2 if not set … … 29 39 if ((argc < 3) || (argc > 5)) { 30 40 gprint (GP_ERR, "USAGE: mkgauss (buffer) (sigma) [[sy/sx] angle]\n"); 41 gprint (GP_ERR, " -flux flux : integral or peak is flux (default is 1.0)\n"); 42 gprint (GP_ERR, " -norm : integral is flux (else peak)\n"); 43 gprint (GP_ERR, " -c X Y : place center at X,Y\n"); 31 44 return (FALSE); 32 45 } … … 66 79 /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */ 67 80 68 double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0;81 double Io = Normalize ? Flux / (2.0 * M_PI * Sig_x * Sig_y) : Flux; 69 82 70 83 in = (float *) buf[0].matrix.buffer; -
trunk/Ohana/src/opihi/cmd.astro/region.c
r42078 r42821 160 160 if (!strcasecmp (argv[CtypeArg], "PAR")) { strcpy (graphmode.coords.ctype, "DEC--PAR"); goto got_ctype; } 161 161 if (!strcasecmp (argv[CtypeArg], "MOL")) { strcpy (graphmode.coords.ctype, "DEC--MOL"); goto got_ctype; } 162 if (!strcasecmp (argv[CtypeArg], "LIN")) { strcpy (graphmode.coords.ctype, "DEC--LIN"); goto got_ctype; } 163 if (!strcasecmp (argv[CtypeArg], "CAR")) { strcpy (graphmode.coords.ctype, "DEC--CAT"); goto got_ctype; } 162 164 gprint (GP_ERR, "ERROR: invalid projection type %s\n", argv[CtypeArg]); 163 gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL \n");165 gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL, LIN, CAR\n"); 164 166 return FALSE; 165 167 }
Note:
See TracChangeset
for help on using the changeset viewer.
