IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 41379


Ignore:
Timestamp:
Jun 22, 2020, 11:00:22 AM (6 years ago)
Author:
eugene
Message:

add -copy option to coords; add mjdtolst; add option to control major tick spacing; add -copy option to header; add usage info to avperiodomatch

Location:
trunk/Ohana/src/opihi
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.astro/coords.c

    r37807 r41379  
    1212  Vector *xvec = NULL;
    1313  Vector *yvec = NULL;
     14
     15  if ((N = get_argument (argc, argv, "-copy"))) {
     16    Buffer *src = NULL;
     17
     18    remove_argument (N, &argc, argv);
     19    if ((src = SelectBuffer (argv[N], OLDBUFFER, TRUE)) == NULL) goto escape;
     20
     21    if (!GetCoords (&coords, &src[0].header)) {
     22      gprint (GP_ERR, "error getting WCS elements from src buffer %s\n", argv[N]);
     23      return (FALSE);
     24    }
     25
     26    remove_argument (N, &argc, argv);
     27
     28    if (argc != 2) goto syntax;
     29
     30    if ((buf = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) goto escape;
     31    if (!PutCoords (&coords, &buf[0].header)) {
     32      gprint (GP_ERR, "error getting WCS elements from src buffer %s\n", argv[1]);
     33      return (FALSE);
     34    }
     35    return TRUE;
     36  }
    1437
    1538  MOSAIC = NULL;
     
    116139 syntax:
    117140  gprint (GP_ERR, "USAGE: coords [buffer] (-c R D) | (-p X Y)\n");
    118   gprint (GP_ERR, "only one of -p or -c can be used\n");
     141  gprint (GP_ERR, "USAGE: coords [tgtbuffer] (-copy srcbuffer)\n");
     142  gprint (GP_ERR, "only one of -p or -c or -copy can be used\n");
    119143  gprint (GP_ERR, " -p : from pixels to ra/dec\n");
    120144  gprint (GP_ERR, " -c : from ra/dec to pixels\n");
    121145  gprint (GP_ERR, " coordinates are in degrees\n");
     146  gprint (GP_ERR, " -copy : copy coordinate WCS keywords from srcbuffer to tgtbuffer\n");
    122147 escape:
    123148  if (MOSAIC != NULL) free (MOSAIC);
  • trunk/Ohana/src/opihi/cmd.astro/init.c

    r40376 r41379  
    3434int imsub                   PROTO((int, char **));
    3535int jdtolst                 PROTO((int, char **));
     36int mjdtolst                PROTO((int, char **));
    3637int medianmap               PROTO((int, char **));
    3738int galsectors              PROTO((int, char **));
     
    105106  {1, "imsub",       imsub,        "subtract function"},
    106107  {1, "jdtolst",     jdtolst,      "JD to LST conversion"},
     108  {1, "mjdtolst",    mjdtolst,     "MJD to LST conversion"},
    107109  {1, "medianmap",   medianmap,    "small median image"},
    108110  {1, "mkgauss",     mkgauss,      "generate a 2-D gaussian centered in image"},
  • trunk/Ohana/src/opihi/cmd.astro/jdtolst.c

    r40376 r41379  
    2323  char *long_str = get_variable ("LONGITUDE");
    2424  if (!long_str) {
    25     gprint (GP_ERR, "please define $LONGITUDE\n");
     25    gprint (GP_ERR, "please define $LONGITUDE (decimal hours, west positive)\n");
    2626    FREE (OutputName);
    2727    return FALSE;
    2828  }
    2929  double longitude = atof (long_str);
    30   if (VERBOSE) gprint (GP_ERR, "using longitude of %f\n", longitude);
     30  if (VERBOSE) gprint (GP_ERR, "using longitude of %f (decimal hours, west positive)\n", longitude);
    3131  free (long_str);
    3232
     
    8787  gprint (GP_ERR, "  (JD) may be a number or a vector.\n");
    8888  gprint (GP_ERR, "  if (JD) is a vector, (output) must be supplied and is used as the name of the output vector \n");
     89  gprint (GP_ERR, "  $LONGITUDE must be set (decimal hours, west positive)\n");
    8990  return (FALSE);
    9091}
     92
     93# define MJD_OFFSET 2400000.5
     94
     95int mjdtolst (int argc, char **argv) {
     96
     97  int N;
     98  Vector *mjdvec, *outvec;
     99
     100  int VERBOSE = FALSE;
     101  VERBOSE = FALSE;
     102  if ((N = get_argument (argc, argv, "-v"))) {
     103    VERBOSE = TRUE;
     104    remove_argument (N, &argc, argv);
     105  }
     106
     107  char *OutputName = NULL;
     108  if ((N = get_argument (argc, argv, "-output"))) {
     109    remove_argument (N, &argc, argv);
     110    OutputName = strcreate (argv[N]);
     111    remove_argument (N, &argc, argv);
     112  }
     113  if (argc != 2) goto syntax;
     114
     115  char *long_str = get_variable ("LONGITUDE");
     116  if (!long_str) {
     117    gprint (GP_ERR, "please define $LONGITUDE (decimal hours, west positive)\n");
     118    FREE (OutputName);
     119    return FALSE;
     120  }
     121  double longitude = atof (long_str);
     122  if (VERBOSE) gprint (GP_ERR, "using longitude of %f (decimal hours, west positive)\n", longitude);
     123  free (long_str);
     124
     125  if (ISNUM(argv[1][0])) {
     126
     127    char *endptr;
     128    double mjd = strtod (argv[1], &endptr);
     129    if (endptr == argv[1]) {
     130      gprint (GP_ERR, "error interpretting %s as a number\n", argv[1]);
     131      FREE (OutputName);
     132      return FALSE;
     133    }
     134
     135    double lst = ohana_lst (mjd + MJD_OFFSET, longitude);
     136
     137    if (OutputName) {
     138      set_variable (OutputName, lst);
     139      FREE (OutputName);
     140      return (TRUE);
     141    }
     142   
     143    gprint (GP_ERR, "lst: %f\n", lst);
     144    return (TRUE);
     145  }
     146
     147  if (!OutputName) {
     148    gprint (GP_ERR, " if (MJD) is a vector, -output must be supplied\n");
     149    return FALSE;
     150  }
     151
     152  if ((mjdvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) {
     153    FREE (OutputName);
     154    return FALSE;
     155  }
     156
     157  if (mjdvec->type != OPIHI_FLT) {
     158    gprint (GP_ERR, " (MJD) must be of type FLOAT\n");
     159    FREE (OutputName);
     160    return FALSE;
     161  }
     162
     163  if ((outvec = SelectVector (OutputName, ANYVECTOR, TRUE)) == NULL) {
     164    FREE (OutputName);
     165    return FALSE;
     166  }
     167
     168  ResetVector (outvec, OPIHI_FLT, mjdvec[0].Nelements);
     169
     170  for (int i = 0; i < mjdvec[0].Nelements; i++) {
     171    double lst = ohana_lst (mjdvec->elements.Flt[i] + MJD_OFFSET, longitude);
     172    outvec->elements.Flt[i] = lst;
     173  }
     174  FREE (OutputName);
     175  return TRUE;
     176
     177 syntax:
     178  gprint (GP_ERR, "USAGE: mjdtolst (MJD) [-output name]\n");
     179  gprint (GP_ERR, "  (MJD) may be a number or a vector.\n");
     180  gprint (GP_ERR, "  if (MJD) is a vector, (output) must be supplied and is used as the name of the output vector \n");
     181  gprint (GP_ERR, "  $LONGITUDE must be set (decimal hours, west positive)\n");
     182  return (FALSE);
     183}
  • trunk/Ohana/src/opihi/cmd.data/box.c

    r41344 r41379  
    171171  }
    172172
     173  if ((N = get_argument (argc, argv, "-dmajor"))) {
     174    remove_argument (N, &argc, argv);
     175    graphmode.dMajorXm = atof(argv[N]);
     176    graphmode.dMajorXp = atof(argv[N]);
     177    graphmode.dMajorYm = atof(argv[N]);
     178    graphmode.dMajorYp = atof(argv[N]);
     179    remove_argument (N, &argc, argv);
     180  }
     181  if ((N = get_argument (argc, argv, "-xdmajor"))) {
     182    remove_argument (N, &argc, argv);
     183    graphmode.dMajorXm = atof(argv[N]);
     184    remove_argument (N, &argc, argv);
     185  }
     186  if ((N = get_argument (argc, argv, "+xdmajor"))) {
     187    remove_argument (N, &argc, argv);
     188    graphmode.dMajorXp = atof(argv[N]);
     189    remove_argument (N, &argc, argv);
     190  }
     191  if ((N = get_argument (argc, argv, "-ydmajor"))) {
     192    remove_argument (N, &argc, argv);
     193    graphmode.dMajorYm = atof(argv[N]);
     194    remove_argument (N, &argc, argv);
     195  }
     196  if ((N = get_argument (argc, argv, "+ydmajor"))) {
     197    remove_argument (N, &argc, argv);
     198    graphmode.dMajorYp = atof(argv[N]);
     199    remove_argument (N, &argc, argv);
     200  }
     201
    173202  if ((N = get_argument (argc, argv, "-flabel"))) {
    174203    remove_argument (N, &argc, argv);
     
    257286  gprint (GP_ERR, "    +y refers to the right y-axis, \n");
    258287  gprint (GP_ERR, "  \n");
    259   gprint (GP_ERR, "  -ticks [NNNN]  : turn on (1), off (0), or use default for ticks\n");
    260   gprint (GP_ERR, "  -labels [NNNN] : turn on (1), off (0), or use default for label\n");
    261   gprint (GP_ERR, "  -axis [NNNN]   : turn on (1), off (0), or use default for axis\n");
     288  gprint (GP_ERR, "  -ticks [NNNN]  : turn on (1), off (0), or use default (2) for ticks\n");
     289  gprint (GP_ERR, "  -labels [NNNN] : turn on (1), off (0), or use default (2) for label\n");
     290  gprint (GP_ERR, "  -axis [NNNN]   : turn on (1), off (0), or use default (2) for axis\n");
    262291  gprint (GP_ERR, "    the order for the NNNN values in the above options is: -x, -y, +x, +y\n");
     292  gprint (GP_ERR, "    for ticks, 1, 2, 3 give fewer values (larger tick spacing)\n");
    263293  gprint (GP_ERR, "  \n");
    264294  gprint (GP_ERR, "  -tickpad : set the spacing between the ticks and the tick text \n");
     
    274304  gprint (GP_ERR, "         alternatively, set each axis independently with:\n");
    275305  gprint (GP_ERR, "        -xfminor, -yfminor, +xfminor, +yfminor\n");
     306  gprint (GP_ERR, "  \n");
     307  gprint (GP_ERR, "  -dmajor : set the major tixk spacing (all axes)\n");
     308  gprint (GP_ERR, "         alternatively, set each axis independently with:\n");
     309  gprint (GP_ERR, "        -xdmajor, -ydmajor, +xdmajor, +ydmajor\n");
    276310  gprint (GP_ERR, "  \n");
    277311  gprint (GP_ERR, "  -flabel : set the fraction of axis over which major ticks have labels (all axes)\n");
  • trunk/Ohana/src/opihi/cmd.data/list_header.c

    r34088 r41379  
    11# include "data.h"
     2
     3# define SKIP_HEADER(NAME) { if (!strncmp(line, NAME, strlen(NAME))) continue; }
    24
    35int header (int argc, char **argv) {
     
    1618    LOADHEAD = TRUE;
    1719  }
     20  if ((N = get_argument (argc, argv, "-file"))) {
     21    remove_argument (N, &argc, argv);
     22    strcpy (filename, argv[N]);
     23    remove_argument (N, &argc, argv);
     24    LOADHEAD = TRUE;
     25  }
     26
     27  char *COPYHEAD = NULL;
     28  if ((N = get_argument (argc, argv, "-copy"))) {
     29    if (LOADHEAD) {
     30      gprint (GP_ERR, "-copy and -w are incompatible\n");
     31      return (FALSE);
     32    }
     33    remove_argument (N, &argc, argv);
     34    COPYHEAD = strcreate (argv[N]);
     35    remove_argument (N, &argc, argv);
     36  }
    1837
    1938  if (argc != 2) {
    20     gprint (GP_ERR, "USAGE: header <buffer> [-w filename]\n");
     39    gprint (GP_ERR, "USAGE: header <buffer> [-w filename] [-file filename] [-copy buffer]\n");
     40    gprint (GP_ERR, "  -file / -w : replace buffer header with contents from file (PHU only)\n");
     41    gprint (GP_ERR, "  -copy : replace buffer header with contents of buffer\n");
    2142    return (FALSE);
    2243  }
    2344
    2445  if ((buf = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) return (FALSE);
     46
     47  if (COPYHEAD) {
     48    Buffer *src = NULL;
     49    if ((src = SelectBuffer (COPYHEAD, OLDBUFFER, TRUE)) == NULL) return (FALSE);
     50
     51    // loop over all lines in the header and copy one-by-one
     52    // skip the special words:
     53   
     54    for (int i = 0; TRUE; i++) {
     55      char *line = gfits_header_lineno (&src[0].header, i);
     56      if (!line) break;
     57
     58      // skip special keywords
     59      SKIP_HEADER ("SIMPLE");
     60      SKIP_HEADER ("SIMPLE");
     61      SKIP_HEADER ("BITPIX");
     62      SKIP_HEADER ("NAXIS");
     63      SKIP_HEADER ("EXTEND");
     64      SKIP_HEADER ("UNSIGN");
     65      SKIP_HEADER ("BSCALE");
     66      SKIP_HEADER ("BZERO");
     67      SKIP_HEADER ("NAXIS1");
     68      SKIP_HEADER ("NAXIS2");
     69      SKIP_HEADER ("NAXIS3");
     70      SKIP_HEADER ("NAXIS4");
     71      SKIP_HEADER ("NAXIS5");
     72      SKIP_HEADER ("NAXIS6");
     73      SKIP_HEADER ("NAXIS7");
     74      SKIP_HEADER ("NAXIS8");
     75      SKIP_HEADER ("NAXIS9");
     76      SKIP_HEADER ("NAXIS10");
     77      SKIP_HEADER ("PCOUNT");
     78      SKIP_HEADER ("GCOUNT");
     79
     80      gfits_header_append_line_raw (&buf[0].header, line);
     81    }
     82    return TRUE;
     83
     84  }
    2585
    2686  if (LOADHEAD) {
  • trunk/Ohana/src/opihi/dvo/avperiodomatch.c

    r41341 r41379  
    367367  gprint (GP_ERR, "USAGE: avperiodomatch (output) (RA) (DEC) (RADIUS) -where-measure (expression)\n");
    368368  gprint (GP_ERR, "  NOTE: the optional -where-measure (expression) MUST come after the required arguments\n");
     369  gprint (GP_ERR, "   RADIUS is in arcseconds\n");
    369370  return (FALSE);
    370371}
Note: See TracChangeset for help on using the changeset viewer.