IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 41305 for trunk


Ignore:
Timestamp:
Mar 10, 2020, 10:52:25 AM (6 years ago)
Author:
eugene
Message:

csystem: save scalar results to variables; mkgauss: add normalization option; read_vectors: add hms and date conversion options

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

Legend:

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

    r39926 r41305  
    1212  Vector *uxvec = NULL;
    1313  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  }
    1424
    1525  // transform proper motions at the same time
     
    8494
    8595    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      }
    87116    } 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;
    89137    }
    90138    free (transform);
     
    154202  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");
    155203  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");
    156209  return FALSE;
    157210}
  • trunk/Ohana/src/opihi/cmd.astro/mkgauss.c

    r26891 r41305  
    1010  double x, y, r, f, Xo, Yo;
    1111  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  }   
    1218
    1319  // this should be Nx/2, Ny/2 if not set
     
    6066  /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */
    6167
     68  double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0;
     69
    6270  in = (float *) buf[0].matrix.buffer;
    6371  for (j = 0; j < Ny; j++) {
     
    6775      y = j - Yo;
    6876      r = 0.5*x*x/Sx + 0.5*y*y/Sy + x*y*Sxy;
    69       f = exp (-r);
     77      f = Io * exp (-r);
    7078      *in += f;
    7179    }
  • trunk/Ohana/src/opihi/cmd.data/read_vectors.c

    r41269 r41305  
    3535
    3636// vector types
    37 enum {COLTYPE_NONE, COLTYPE_FLT, COLTYPE_INT, COLTYPE_TIME, COLTYPE_CHAR, COLTYPE_STR};
     37enum {COLTYPE_NONE, COLTYPE_FLT, COLTYPE_INT, COLTYPE_TIME, COLTYPE_DATE, COLTYPE_CHAR, COLTYPE_STR, COLTYPE_HMS};
    3838
    3939static int      Nvec     = 0;
     
    9191    gprint (GP_ERR, "     -skip N : skip N lines before reading\n");
    9292    gprint (GP_ERR, "     column names may include a type: name:type\n");
    93     gprint (GP_ERR, "       type is int, float, char, str, time\n");
     93    gprint (GP_ERR, "       type is int, float, char, str, time, date, hms\n");
    9494    gprint (GP_ERR, "       for char, values are placed into a list $name:0 - $name:n\n");
    9595    gprint (GP_ERR, "       for str, values are placed into a string-typed vector\n");
     96    gprint (GP_ERR, "       for hms, values are sexigesimal values HH:MM:SS (good for degrees as well)\n");
     97    gprint (GP_ERR, "       for date, values are human-readable date strings YYYY/MM/DD\n");
    9698    gprint (GP_ERR, "       for time, values are human-readable date/time strings YYYY/MM/DD,hh:mm:ss\n");
    97     gprint (GP_ERR, "       the resulting vector is a float based on the TIMEFORMAT, TIMEREF values\n");
     99    gprint (GP_ERR, "         date & time values are stored as a float using the TIMEFORMAT, TIMEREF values for the conversion\n");
    98100
    99101    gprint (GP_ERR, "     -fits options:\n");
     
    154156      if (!strcasecmp(ptr, "char"))  { coltype[i] = COLTYPE_CHAR; }
    155157      if (!strcasecmp(ptr, "str"))   { coltype[i] = COLTYPE_STR; }
     158      if (!strcasecmp(ptr, "date"))  { coltype[i] = COLTYPE_DATE; }
    156159      if (!strcasecmp(ptr, "time"))  { coltype[i] = COLTYPE_TIME; }
     160      if (!strcasecmp(ptr, "hms"))   { coltype[i] = COLTYPE_HMS; }
    157161      if (!coltype[i]) goto bad_colname;
    158162    }
     
    212216        break;
    213217      case COLTYPE_FLT:
     218      case COLTYPE_HMS:
    214219      case COLTYPE_TIME:
    215         // note that COLTYPE_TIME is a type of float
     220      case COLTYPE_DATE:
    216221        ResetVector (vec[i], OPIHI_FLT, NELEM);
    217222        break;
     
    292297        time_t tvalue;
    293298        int readStatus = FALSE;
     299        int dataStatus = FALSE;
    294300        // need to make the if cases for coltype[i]
    295301        switch (coltype[i]) {
     
    341347            vec[i][0].elements.Flt[Nelem] = readStatus ? dvalue : NAN;
    342348            break;
     349          case COLTYPE_DATE: {
     350            char *string = NULL;
     351            if (IsCSV) {
     352              char *ptr = ptrparse_csv (col[i], c0);
     353              string = strcreate (ptr); // create separate string (NULL-safe)
     354              ptr = (string == NULL) ? NULL : strchr (string, ',');
     355              if (ptr != NULL) *ptr = 0; // place an EOL here so parsing does not go past the comma
     356            } else {
     357              char *ptr = ptrparse (col[i], c0); // NULL-safe
     358              string = getword (ptr); // NULL-safe
     359            }         
     360            tvalue = ohana_date_to_sec (string); // NULL-safe (returns 0)
     361            dvalue = TimeValue (tvalue, TimeReference, TimeFormat);
     362            vec[i][0].elements.Flt[Nelem] = string ? dvalue : NAN;
     363            FREE (string);
     364            break;
     365          }
     366          case COLTYPE_HMS: {
     367            char *ptr = IsCSV ? ptrparse_csv (col[i], c0) : ptrparse (col[i], c0);
     368            char *string = strcreate (ptr); // make a copy so we can munge it in ohana_dms_to_ddd
     369            dataStatus = ohana_dms_to_ddd (&dvalue, string);
     370            vec[i][0].elements.Flt[Nelem] = ((string != NULL) && dataStatus) ? dvalue : NAN;
     371            FREE (string);
     372            break;
     373          }
    343374        }
    344375        if (!readStatus && VERBOSE) {
     
    366397              break;
    367398            case COLTYPE_FLT:
     399            case COLTYPE_HMS:
    368400            case COLTYPE_TIME:
     401            case COLTYPE_DATE:
    369402              ResetVector (vec[i], OPIHI_FLT, NELEM);
    370403              break;
     
    390423        break;
    391424      case COLTYPE_FLT:
     425      case COLTYPE_HMS:
    392426      case COLTYPE_TIME:
     427      case COLTYPE_DATE:
    393428        ResetVector (vec[i], OPIHI_FLT, Nelem);
    394429        break;
  • trunk/Ohana/src/opihi/dvo/skyregion.c

    r41282 r41305  
    4949      gprint (GP_ERR, "current skyregion: %f - %f : %f - %f\n", Rmin, Rmax, Dmin, Dmax);
    5050      gprint (GP_ERR, "USAGE:  skyregion (min RA) (max RA) (min DEC) (max DEC)\n");
     51      gprint (GP_ERR, "        skyregion -box (RA) (DEC) (radius) [sets Rmin,Rmax & Dmin,Dmax]\n");
    5152      return FALSE;
    5253    }
  • trunk/Ohana/src/opihi/lib.data/starfuncs.c

    r41162 r41305  
    7676  FWHMy = 2.355*sqrt (fabs(y2 / I - y*y));
    7777
    78   fprintf (stderr, "Mxx, Myy: %f, %f\n", x2/I - x*x, y2/I - y*y);
     78  // fprintf (stderr, "Mxx, Myy: %f, %f\n", x2/I - x*x, y2/I - y*y);
    7979  Sxy   = xy / I - x*y;
    8080  mag = -2.5*log10(I);
Note: See TracChangeset for help on using the changeset viewer.