Changeset 41340 for trunk/Ohana/src/opihi/cmd.astro
- Timestamp:
- Apr 16, 2020, 1:54:47 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
r41158 r41340 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 48 41 int PSFTYPE = IS_DOT; 49 42 if ((N = get_argument (argc, argv, "-psf"))) { … … 87 80 Ymax = graphmode.ymax; 88 81 Ymin = graphmode.ymin; 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); 82 dX = (Xmax - Xmin) / (Xpix - 1); 83 dY = (Ymax - Ymin) / (Ypix - 1); 94 84 95 85 CHECKVAL(Xmin); -
trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c
r41158 r41340 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 }22 15 23 16 range = NULL; … … 86 79 Ymax = graphmode.ymax; 87 80 Ymin = graphmode.ymin; 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); 81 dX = (Xmax - Xmin) / (Xpix - 1); 82 dY = (Ymax - Ymin) / (Ypix - 1); 93 83 94 84 CHECKVAL(Xmin); … … 100 90 CHECKVAL(dY); 101 91 102 int Nx = abs((Xmax - Xmin) / dX)+ 1;103 int Ny = abs((Ymax - Ymin) / dY)+ 1;92 int Nx = (Xmax - Xmin) / dX + 1; 93 int Ny = (Ymax - Ymin) / dY + 1; 104 94 105 95 Coords newcoords = graphmode.coords; -
trunk/Ohana/src/opihi/cmd.astro/cgrid.c
r41326 r41340 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 88 85 RAbyHour = FALSE; 89 86 if ((N = get_argument (argc, argv, "-ra-by-hour"))) { … … 118 115 } 119 116 120 int JustifyRA = 8;121 int JustifyDEC = 2;117 int JustifyRA = 5; 118 double JustifyDEC = 5; 122 119 if ((N = get_argument (argc, argv, "-justify-ra"))) { 123 120 remove_argument (N, &argc, argv); … … 154 151 if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE; 155 152 156 if (argc != 1) goto usage; 153 if (argc != 1) { 154 gprint (GP_ERR, "USAGE: cgrid [style] [-ra-by-hour] [-labels]\n"); 155 return (FALSE); 156 } 157 157 158 158 /* are we plotting one of the poles? */ … … 182 182 } 183 183 } 184 185 184 186 185 /* set spacings for DEC */ … … 346 345 return (TRUE); 347 346 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);368 347 } 369 -
trunk/Ohana/src/opihi/cmd.astro/csystem.c
r41305 r41340 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 }24 14 25 15 // transform proper motions at the same time … … 94 84 95 85 if (uXname) { 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 } 86 gprint (GP_LOG, "%10.6f %10.6f @ %10.6f %10.6f\n", x, y, ux, uy); 116 87 } else { 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; 88 gprint (GP_LOG, "%10.6f %10.6f\n", x, y); 137 89 } 138 90 free (transform); … … 202 154 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"); 203 155 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");209 156 return FALSE; 210 157 } -
trunk/Ohana/src/opihi/cmd.astro/fitplx_irls.c
r41322 r41340 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 vector17 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 vector23 if ((N = get_argument (argc, argv, "-Wyvec"))) {24 remove_argument (N, &argc, argv);25 if ((WyOutV = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE);26 13 remove_argument (N, &argc, argv); 27 14 } … … 114 101 mask = mvec->elements.Int; 115 102 } 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; }125 103 } 126 104 … … 191 169 } 192 170 } 193 }194 }195 if (WxOutV) {196 // save the calculated weights197 for (i = 0; i < fitdata.Npts; i++) {198 // fitdata only includes the previously unmasked points199 int n = fitdata.index[i];200 WxOutV->elements.Flt[n] = fitdata.Wx[i];201 }202 }203 if (WyOutV) {204 // save the calculated weights205 for (i = 0; i < fitdata.Npts; i++) {206 // fitdata only includes the previously unmasked points207 int n = fitdata.index[i];208 WyOutV->elements.Flt[n] = fitdata.Wy[i];209 171 } 210 172 } -
trunk/Ohana/src/opihi/cmd.astro/mkgauss.c
r41305 r41340 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 }18 12 19 13 // this should be Nx/2, Ny/2 if not set … … 66 60 /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */ 67 61 68 double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0;69 70 62 in = (float *) buf[0].matrix.buffer; 71 63 for (j = 0; j < Ny; j++) { … … 75 67 y = j - Yo; 76 68 r = 0.5*x*x/Sx + 0.5*y*y/Sy + x*y*Sxy; 77 f = Io *exp (-r);69 f = exp (-r); 78 70 *in += f; 79 71 } -
trunk/Ohana/src/opihi/cmd.astro/region.c
r41158 r41340 3 3 int region (int argc, char **argv) { 4 4 5 double Ra, Dec ;5 double Ra, Dec, Radius; 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 78 56 if ((N = get_argument (argc, argv, "-ew"))) { 79 57 remove_argument (N, &argc, argv); … … 103 81 } 104 82 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"); 83 if ((argc != 4) && (argc != 5)) { 84 gprint (GP_ERR, "USAGE: region Ra Dec Radius [projection] [orientation]\n"); 112 85 gprint (GP_ERR, " [-image] [-ew] [+ew] [-ns] [+ns] [-no-clear] [-angle theta]\n"); 113 86 gprint (GP_ERR, " current: %f %f (%f x %f) (%s)\n", … … 117 90 &graphmode.coords.ctype[5]); 118 91 return (FALSE); 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 } 92 } 93 135 94 if (!ohana_str_to_radec (&Ra, &Dec, argv[1], argv[2])) return (FALSE); 95 Radius = atof (argv[3]); 96 InitCoords (&graphmode.coords, "DEC--TAN"); 136 97 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]); 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"); 149 115 } 150 151 InitCoords (&graphmode.coords, "DEC--TAN");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:166 116 167 117 graphmode.coords.crval1 = Ra; … … 176 126 graphmode.coords.pc2_2 = cos(Angle*RAD_DEG)*pc2_2; 177 127 178 // ask kapa for coordinate limits, to get the right aspect ratio 179 // dx, dy are the size of the graph region in pixels 128 /* ask kapa for coordinate limits, to get the right aspect ratio */ 180 129 KapaGetLimits (kapa, &dx, &dy); 181 130 dx = fabs (dx); … … 183 132 184 133 /* define limits for Ra, Dec at center, grid in degrees */ 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 } 134 if (dy < dx) { 135 graphmode.xmin = -(dx/dy)*Radius; 136 graphmode.ymin = -Radius; 137 graphmode.xmax = (dx/dy)*Radius; 138 graphmode.ymax = Radius; 198 139 } else { 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 } 140 graphmode.xmin = -Radius; 141 graphmode.ymin = -(dy/dx)*Radius; 142 graphmode.xmax = Radius; 143 graphmode.ymax = (dy/dx)*Radius; 144 } 219 145 220 146 set_variable ("XMIN", graphmode.xmin);
Note:
See TracChangeset
for help on using the changeset viewer.
