Changeset 41341 for trunk/Ohana/src/opihi/cmd.astro
- Timestamp:
- Apr 16, 2020, 2:04:27 PM (6 years ago)
- Location:
- trunk/Ohana/src/opihi/cmd.astro
- Files:
-
- 7 edited
-
cdensify.c (modified) (2 diffs)
-
cdhistogram.c (modified) (3 diffs)
-
cgrid.c (modified) (5 diffs)
-
csystem.c (modified) (3 diffs)
-
fitplx_irls.c (modified) (3 diffs)
-
mkgauss.c (modified) (3 diffs)
-
region.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro/cdensify.c
r41340 r41341 39 39 } 40 40 41 int binning = 1; 42 if ((N = get_argument (argc, argv, "-binning"))) { 43 remove_argument (N, &argc, argv); 44 binning = atoi(argv[N]); 45 remove_argument (N, &argc, argv); 46 } 47 41 48 int PSFTYPE = IS_DOT; 42 49 if ((N = get_argument (argc, argv, "-psf"))) { … … 80 87 Ymax = graphmode.ymax; 81 88 Ymin = graphmode.ymin; 82 dX = (Xmax - Xmin) / (Xpix - 1); 83 dY = (Ymax - Ymin) / (Ypix - 1); 89 90 // (dX, dY) are the pixel scale of the output image (output pixels / input pixels) 91 92 dX = binning * (Xmax - Xmin) / (Xpix - 1); 93 dY = binning * (Ymax - Ymin) / (Ypix - 1); 84 94 85 95 CHECKVAL(Xmin); -
trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c
r41340 r41341 13 13 int kapa; 14 14 Graphdata graphmode; 15 16 int binning = 1; 17 if ((N = get_argument (argc, argv, "-binning"))) { 18 remove_argument (N, &argc, argv); 19 binning = atoi(argv[N]); 20 remove_argument (N, &argc, argv); 21 } 15 22 16 23 range = NULL; … … 79 86 Ymax = graphmode.ymax; 80 87 Ymin = graphmode.ymin; 81 dX = (Xmax - Xmin) / (Xpix - 1); 82 dY = (Ymax - Ymin) / (Ypix - 1); 88 89 // (dX, dY) are the pixel scale of the output image (output pixels / input pixels) 90 91 dX = binning * (Xmax - Xmin) / (Xpix - 1); 92 dY = binning * (Ymax - Ymin) / (Ypix - 1); 83 93 84 94 CHECKVAL(Xmin); … … 90 100 CHECKVAL(dY); 91 101 92 int Nx = (Xmax - Xmin) / dX+ 1;93 int Ny = (Ymax - Ymin) / dY+ 1;102 int Nx = abs((Xmax - Xmin) / dX) + 1; 103 int Ny = abs((Ymax - Ymin) / dY) + 1; 94 104 95 105 Coords newcoords = graphmode.coords; -
trunk/Ohana/src/opihi/cmd.astro/cgrid.c
r41340 r41341 83 83 Graphdata graphmode; 84 84 85 if ((N = get_argument (argc, argv, "-h"))) goto usage; 86 if ((N = get_argument (argc, argv, "--help"))) goto usage; 87 85 88 RAbyHour = FALSE; 86 89 if ((N = get_argument (argc, argv, "-ra-by-hour"))) { … … 115 118 } 116 119 117 int JustifyRA = 5;118 double JustifyDEC = 5;120 int JustifyRA = 8; 121 int JustifyDEC = 2; 119 122 if ((N = get_argument (argc, argv, "-justify-ra"))) { 120 123 remove_argument (N, &argc, argv); … … 151 154 if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE; 152 155 153 if (argc != 1) { 154 gprint (GP_ERR, "USAGE: cgrid [style] [-ra-by-hour] [-labels]\n"); 155 return (FALSE); 156 } 156 if (argc != 1) goto usage; 157 157 158 158 /* are we plotting one of the poles? */ … … 182 182 } 183 183 } 184 184 185 185 186 /* set spacings for DEC */ … … 345 346 return (TRUE); 346 347 348 usage: 349 350 gprint (GP_ERR, "USAGE: cgrid [style] [options]\n"); 351 gprint (GP_ERR, " options:\n"); 352 gprint (GP_ERR, " -h, --help: show this list\n"); 353 gprint (GP_ERR, " -ra-by-hour : RA grid lines will be space on rounded hour lines (default is degrees)\n"); 354 gprint (GP_ERR, " -labels : add RA & dec coordinates\n"); 355 gprint (GP_ERR, " -major-spacing : grid lines drawn at major tickmarks, not minor tickmarks\n"); 356 gprint (GP_ERR, " -ra-spacing : specify size of RA grid steps in degrees (ignores -ra-by-hour)\n"); 357 gprint (GP_ERR, " -dec-spacing : specify size of dec grid steps in degrees\n"); 358 gprint (GP_ERR, " -justify-ra : choose how RA labels are justified (see below)\n"); 359 gprint (GP_ERR, " -justify-dec : choose how dec labels are justified (see below)\n"); 360 gprint (GP_ERR, " -label-ra : RA coordinate of the Dec-line labels\n"); 361 gprint (GP_ERR, " -label-dec : Dec coordinate of the RA-line labels\n"); 362 gprint (GP_ERR, " -label-color : color for the labels (independent of grid lines)\n"); 363 gprint (GP_ERR, " text justification: text is justified horizontally and vertically based on the following numbers:\n"); 364 gprint (GP_ERR, " 6 7 8\n"); 365 gprint (GP_ERR, " 3 4 5\n"); 366 gprint (GP_ERR, " 0 1 2\n"); 367 return (FALSE); 347 368 } 369 -
trunk/Ohana/src/opihi/cmd.astro/csystem.c
r41340 r41341 12 12 Vector *uxvec = NULL; 13 13 Vector *uyvec = NULL; 14 15 int Quiet = FALSE; 16 if ((N = get_argument (argc, argv, "-q"))) { 17 Quiet = TRUE; 18 remove_argument (N, &argc, argv); 19 } 20 if ((N = get_argument (argc, argv, "-quiet"))) { 21 Quiet = TRUE; 22 remove_argument (N, &argc, argv); 23 } 14 24 15 25 // transform proper motions at the same time … … 84 94 85 95 if (uXname) { 86 gprint (GP_LOG, "%10.6f %10.6f @ %10.6f %10.6f\n", x, y, ux, uy); 96 if (!Quiet) { 97 gprint (GP_LOG, "%10.6f %10.6f @ %10.6f %10.6f\n", x, y, ux, uy); 98 switch (output) { 99 case COORD_CELESTIAL: 100 set_variable ("uR", ux); 101 set_variable ("uD", uy); 102 break; 103 case COORD_ECLIPTIC: 104 set_variable ("uL", ux); 105 set_variable ("uB", uy); 106 break; 107 case COORD_GALACTIC: 108 case COORD_GALACTIC_REID_2004: 109 set_variable ("uLon", ux); 110 set_variable ("uLat", uy); 111 break; 112 default: 113 break; 114 } 115 } 87 116 } else { 88 gprint (GP_LOG, "%10.6f %10.6f\n", x, y); 117 if (!Quiet) { 118 gprint (GP_LOG, "%10.6f %10.6f\n", x, y); 119 } 120 } 121 switch (output) { 122 case COORD_CELESTIAL: 123 set_variable ("RA", x); 124 set_variable ("DEC", y); 125 break; 126 case COORD_ECLIPTIC: 127 set_variable ("Lambda", x); 128 set_variable ("Beta", y); 129 break; 130 case COORD_GALACTIC: 131 case COORD_GALACTIC_REID_2004: 132 set_variable ("gLon", x); 133 set_variable ("gLat", y); 134 break; 135 default: 136 break; 89 137 } 90 138 free (transform); … … 154 202 gprint (GP_ERR, " e.g. : csystem C G R D -pm uR uD -> R D will contain glon, glat; uR, uD will contain uL, uB\n"); 155 203 gprint (GP_ERR, " e.g. : csystem C G R D -pmback uL uB -> R D will contain glon, glat; uL, uB will contain uR, uD\n"); 204 gprint (GP_ERR, " : if input values are vectors, their values are replaced with the transformed values\n"); 205 gprint (GP_ERR, " : if input values are scalars, the transformed coordinates are printed (disable with -q)\n"); 206 gprint (GP_ERR, " : and the following output variables will be set (names depend on output system)\n"); 207 gprint (GP_ERR, " : output positions (RA, DEC), (Lambda, Beta), (gLon, gLat)\n"); 208 gprint (GP_ERR, " : output motions (uR, uD), (uL, uB), (uLon, uLat)\n"); 156 209 return FALSE; 157 210 } -
trunk/Ohana/src/opihi/cmd.astro/fitplx_irls.c
r41340 r41341 11 11 remove_argument (N, &argc, argv); 12 12 if ((mvec = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE); 13 remove_argument (N, &argc, argv); 14 } 15 16 Vector *WxOutV = NULL; // mask vector 17 if ((N = get_argument (argc, argv, "-Wxvec"))) { 18 remove_argument (N, &argc, argv); 19 if ((WxOutV = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE); 20 remove_argument (N, &argc, argv); 21 } 22 Vector *WyOutV = NULL; // mask vector 23 if ((N = get_argument (argc, argv, "-Wyvec"))) { 24 remove_argument (N, &argc, argv); 25 if ((WyOutV = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE); 13 26 remove_argument (N, &argc, argv); 14 27 } … … 101 114 mask = mvec->elements.Int; 102 115 } 116 } 117 118 if (WxOutV) { 119 ResetVector (WxOutV, OPIHI_FLT, Ntotal); 120 for (i = 0; i < Ntotal; i++) { WxOutV->elements.Flt[i] = NAN; } 121 } 122 if (WyOutV) { 123 ResetVector (WyOutV, OPIHI_FLT, Ntotal); 124 for (i = 0; i < Ntotal; i++) { WyOutV->elements.Flt[i] = NAN; } 103 125 } 104 126 … … 169 191 } 170 192 } 193 } 194 } 195 if (WxOutV) { 196 // save the calculated weights 197 for (i = 0; i < fitdata.Npts; i++) { 198 // fitdata only includes the previously unmasked points 199 int n = fitdata.index[i]; 200 WxOutV->elements.Flt[n] = fitdata.Wx[i]; 201 } 202 } 203 if (WyOutV) { 204 // save the calculated weights 205 for (i = 0; i < fitdata.Npts; i++) { 206 // fitdata only includes the previously unmasked points 207 int n = fitdata.index[i]; 208 WyOutV->elements.Flt[n] = fitdata.Wy[i]; 171 209 } 172 210 } -
trunk/Ohana/src/opihi/cmd.astro/mkgauss.c
r41340 r41341 10 10 double x, y, r, f, Xo, Yo; 11 11 Buffer *buf; 12 13 int Normalize = FALSE; 14 if ((N = get_argument (argc, argv, "-norm"))) { 15 Normalize = TRUE; 16 remove_argument (N, &argc, argv); 17 } 12 18 13 19 // this should be Nx/2, Ny/2 if not set … … 60 66 /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */ 61 67 68 double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0; 69 62 70 in = (float *) buf[0].matrix.buffer; 63 71 for (j = 0; j < Ny; j++) { … … 67 75 y = j - Yo; 68 76 r = 0.5*x*x/Sx + 0.5*y*y/Sy + x*y*Sxy; 69 f = exp (-r);77 f = Io * exp (-r); 70 78 *in += f; 71 79 } -
trunk/Ohana/src/opihi/cmd.astro/region.c
r41340 r41341 3 3 int region (int argc, char **argv) { 4 4 5 double Ra, Dec , Radius;5 double Ra, Dec; 6 6 float dx, dy; 7 7 int N, kapa, NoClear, dXpix, dYpix; … … 54 54 } 55 55 56 float XSIZE = NAN; 57 if ((N = get_argument (argc, argv, "-xsize"))) { 58 remove_argument (N, &argc, argv); 59 XSIZE = atof (argv[N]); 60 remove_argument (N, &argc, argv); 61 if (XSIZE <= 0) { 62 gprint (GP_ERR, "ERROR: xsize <= 0\n"); 63 return FALSE; 64 } 65 } 66 67 float YSIZE = NAN; 68 if ((N = get_argument (argc, argv, "-ysize"))) { 69 remove_argument (N, &argc, argv); 70 YSIZE = atof (argv[N]); 71 remove_argument (N, &argc, argv); 72 if (YSIZE <= 0) { 73 gprint (GP_ERR, "ERROR: xsize <= 0\n"); 74 return FALSE; 75 } 76 } 77 56 78 if ((N = get_argument (argc, argv, "-ew"))) { 57 79 remove_argument (N, &argc, argv); … … 81 103 } 82 104 83 if ((argc != 4) && (argc != 5)) { 84 gprint (GP_ERR, "USAGE: region Ra Dec Radius [projection] [orientation]\n"); 105 int RadiusArg, CtypeArg; 106 if (!isnan(XSIZE) || !isnan(YSIZE)) { 107 RadiusArg = -1; 108 CtypeArg = 3; 109 if ((argc != 3) && (argc != 4)) { 110 gprint (GP_ERR, "USAGE: region Ra Dec [projection] [-xsize deg] [-ysize deg]\n"); 111 gprint (GP_ERR, " OR: region Ra Dec Radius [projection]\n"); 85 112 gprint (GP_ERR, " [-image] [-ew] [+ew] [-ns] [+ns] [-no-clear] [-angle theta]\n"); 86 113 gprint (GP_ERR, " current: %f %f (%f x %f) (%s)\n", … … 90 117 &graphmode.coords.ctype[5]); 91 118 return (FALSE); 92 } 93 119 } 120 } else { 121 RadiusArg = 3; 122 CtypeArg = 4; 123 if ((argc != 4) && (argc != 5)) { 124 gprint (GP_ERR, "USAGE: region Ra Dec Radius [projection]\n"); 125 gprint (GP_ERR, " OR: region Ra Dec [projection] [-xsize deg] [-ysize deg]\n"); 126 gprint (GP_ERR, " [-image] [-ew] [+ew] [-ns] [+ns] [-no-clear] [-angle theta]\n"); 127 gprint (GP_ERR, " current: %f %f (%f x %f) (%s)\n", 128 graphmode.coords.crval1, graphmode.coords.crval2, 129 fabs(graphmode.xmax - graphmode.xmin), 130 fabs(graphmode.ymax - graphmode.ymin), 131 &graphmode.coords.ctype[5]); 132 return (FALSE); 133 } 134 } 94 135 if (!ohana_str_to_radec (&Ra, &Dec, argv[1], argv[2])) return (FALSE); 95 Radius = atof (argv[3]); 136 137 // region 0 0 sin -- should raise an error (radius = 0 or non-numeric) 138 139 // I want to be able to support the old style call in which both of these were valid: 140 // region 0 0 90 ait 141 // region 0 0 90 <- uses existing, sticky projection type 142 // but I also want to be able to use 143 // region 0 0 ait -xsize 5 144 // region 0 0 ait -ysize 5 145 146 double Radius = NAN; 147 if (RadiusArg >= 0) { 148 Radius = atof (argv[RadiusArg]); 149 } 150 96 151 InitCoords (&graphmode.coords, "DEC--TAN"); 97 98 if (argc == 5) { 99 if (!strcasecmp (argv[4], "TAN")) 100 strcpy (graphmode.coords.ctype, "DEC--TAN"); 101 if (!strcasecmp (argv[4], "SIN")) 102 strcpy (graphmode.coords.ctype, "DEC--SIN"); 103 if (!strcasecmp (argv[4], "ARC")) 104 strcpy (graphmode.coords.ctype, "DEC--ARC"); 105 if (!strcasecmp (argv[4], "STG")) 106 strcpy (graphmode.coords.ctype, "DEC--STG"); 107 if (!strcasecmp (argv[4], "ZEA")) 108 strcpy (graphmode.coords.ctype, "DEC--ZEA"); 109 if (!strcasecmp (argv[4], "AIT")) 110 strcpy (graphmode.coords.ctype, "DEC--AIT"); 111 if (!strcasecmp (argv[4], "GLS")) 112 strcpy (graphmode.coords.ctype, "DEC--GLS"); 113 if (!strcasecmp (argv[4], "PAR")) 114 strcpy (graphmode.coords.ctype, "DEC--PAR"); 115 } 152 if (argc == CtypeArg + 1) { 153 if (!strcasecmp (argv[CtypeArg], "TAN")) { strcpy (graphmode.coords.ctype, "DEC--TAN"); goto got_ctype; } 154 if (!strcasecmp (argv[CtypeArg], "SIN")) { strcpy (graphmode.coords.ctype, "DEC--SIN"); goto got_ctype; } 155 if (!strcasecmp (argv[CtypeArg], "ARC")) { strcpy (graphmode.coords.ctype, "DEC--ARC"); goto got_ctype; } 156 if (!strcasecmp (argv[CtypeArg], "STG")) { strcpy (graphmode.coords.ctype, "DEC--STG"); goto got_ctype; } 157 if (!strcasecmp (argv[CtypeArg], "ZEA")) { strcpy (graphmode.coords.ctype, "DEC--ZEA"); goto got_ctype; } 158 if (!strcasecmp (argv[CtypeArg], "AIT")) { strcpy (graphmode.coords.ctype, "DEC--AIT"); goto got_ctype; } 159 if (!strcasecmp (argv[CtypeArg], "GLS")) { strcpy (graphmode.coords.ctype, "DEC--GLS"); goto got_ctype; } 160 if (!strcasecmp (argv[CtypeArg], "PAR")) { strcpy (graphmode.coords.ctype, "DEC--PAR"); goto got_ctype; } 161 gprint (GP_ERR, "ERROR: invalid projection type %s\n", argv[CtypeArg]); 162 gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR\n"); 163 return FALSE; 164 } 165 got_ctype: 116 166 117 167 graphmode.coords.crval1 = Ra; … … 126 176 graphmode.coords.pc2_2 = cos(Angle*RAD_DEG)*pc2_2; 127 177 128 /* ask kapa for coordinate limits, to get the right aspect ratio */ 178 // ask kapa for coordinate limits, to get the right aspect ratio 179 // dx, dy are the size of the graph region in pixels 129 180 KapaGetLimits (kapa, &dx, &dy); 130 181 dx = fabs (dx); … … 132 183 133 184 /* define limits for Ra, Dec at center, grid in degrees */ 134 if (dy < dx) { 135 graphmode.xmin = -(dx/dy)*Radius; 136 graphmode.ymin = -Radius; 137 graphmode.xmax = (dx/dy)*Radius; 138 graphmode.ymax = Radius; 185 if (RadiusArg >= 0) { 186 // force non-anamorphic projection with Radius set to smaller axis 187 if (dy < dx) { 188 graphmode.xmin = -(dx/dy)*Radius; 189 graphmode.ymin = -Radius; 190 graphmode.xmax = (dx/dy)*Radius; 191 graphmode.ymax = Radius; 192 } else { 193 graphmode.xmin = -Radius; 194 graphmode.ymin = -(dy/dx)*Radius; 195 graphmode.xmax = Radius; 196 graphmode.ymax = (dy/dx)*Radius; 197 } 139 198 } else { 140 graphmode.xmin = -Radius; 141 graphmode.ymin = -(dy/dx)*Radius; 142 graphmode.xmax = Radius; 143 graphmode.ymax = (dy/dx)*Radius; 144 } 199 if (isnan(XSIZE)) { 200 graphmode.xmin = -(dx/dy)*YSIZE/2.0; 201 graphmode.ymin = -YSIZE/2.0; 202 graphmode.xmax = (dx/dy)*YSIZE/2.0; 203 graphmode.ymax = YSIZE/2.0; 204 } 205 if (isnan(YSIZE)) { 206 graphmode.xmin = -XSIZE/2.0; 207 graphmode.ymin = -(dy/dx)*XSIZE/2.0; 208 graphmode.xmax = XSIZE/2.0; 209 graphmode.ymax = (dy/dx)*XSIZE/2.0; 210 } 211 // anamorphic projection: 212 if (!isnan(XSIZE) && !isnan(YSIZE)) { 213 graphmode.xmin = -XSIZE/2.0; 214 graphmode.ymin = -YSIZE/2.0; 215 graphmode.xmax = XSIZE/2.0; 216 graphmode.ymax = YSIZE/2.0; 217 } 218 } 145 219 146 220 set_variable ("XMIN", graphmode.xmin);
Note:
See TracChangeset
for help on using the changeset viewer.
