IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 42146


Ignore:
Timestamp:
Mar 28, 2022, 3:25:41 PM (4 years ago)
Author:
eugene
Message:

adding catwise ingest code

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

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/addstar/include/WISE.h

    r38986 r42146  
    2121short WISE_W1, WISE_W2, WISE_W3, WISE_W4;
    2222
    23 enum {MODE_NONE, MODE_ALLWISE, MODE_ALLSKY, MODE_PRELIM};
     23enum {MODE_NONE, MODE_CATWISE, MODE_ALLWISE, MODE_ALLSKY, MODE_PRELIM};
    2424int MODE;
    2525
    26 AddstarClientOptions args_loadwise (int argc, char **argv, AddstarClientOptions options);
     26AddstarClientOptions args_loadwise (int *argc, char **argv, AddstarClientOptions options);
    2727
    2828int loadwise_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options);
     
    3838int loadwise_star_allsky  (Measure *measure, char *line, int Nmax);
    3939int loadwise_star_allwise (Measure *measure, char *line, int Nmax);
    40 
     40int loadwise_star_catwise (Measure *measure, char *line, int Nmax, double Rs, double Ds);
    4141
    4242char *nextWISEfield (char *line);
     
    4949int setWISE_dup_flag (Measure *measure, char qual);
    5050int setWISE_use_flag (Measure *measure, char qual);
     51int setWISE_sat_flag (Measure *measure, char *ptr);
     52
     53int setCatWISE_sat_flag (Measure *measure, char *ptr, int start, int end);
     54int setCatWISE_blend_flag (Measure *measure, char *line);
    5155
    5256char *skipNbounds (char *line, char bound, int Nbound, int Nbyte);
     57
     58char *getLineSegment (char *line, int start, int end);
     59double getDoubleRAW (char *line, int start, int end);
     60double getDoubleNAN (char *line, int start, int end);
  • trunk/Ohana/src/addstar/src/args_loadwise.c

    r38062 r42146  
    33static void help (void);
    44
    5 AddstarClientOptions args_loadwise (int argc, char **argv, AddstarClientOptions options) {
     5AddstarClientOptions args_loadwise (int *argc, char **argv, AddstarClientOptions options) {
    66 
    77  int N;
    88
    99  /* check for help request */
    10   if (get_argument (argc, argv, "-help") ||
    11       get_argument (argc, argv, "-h")) {
     10  if (get_argument (*argc, argv, "-help") ||
     11      get_argument (*argc, argv, "-h")) {
    1212    help ();
    1313  }
     
    2929  /* only add to existing regions */
    3030  options.existing_regions = FALSE;
    31   if ((N = get_argument (argc, argv, "-existing-regions"))) {
     31  if ((N = get_argument (*argc, argv, "-existing-regions"))) {
    3232    options.existing_regions = TRUE;
    33     remove_argument (N, &argc, argv);
     33    remove_argument (N, argc, argv);
    3434  }
    3535  /* only add to existing objects */
    3636  options.only_match = FALSE;
    37   if ((N = get_argument (argc, argv, "-only-match"))) {
     37  if ((N = get_argument (*argc, argv, "-only-match"))) {
    3838    options.only_match = TRUE;
    39     remove_argument (N, &argc, argv);
     39    remove_argument (N, argc, argv);
    4040  }
    4141  /* replace measurement, don't duplicate (ref/cat only) */
    4242  options.replace = FALSE;
    43   if ((N = get_argument (argc, argv, "-replace"))) {
     43  if ((N = get_argument (*argc, argv, "-replace"))) {
    4444    options.replace = TRUE;
    45     remove_argument (N, &argc, argv);
     45    remove_argument (N, argc, argv);
    4646  }
    4747
    4848  /* extra error messages */
    4949  VERBOSE = FALSE;
    50   if ((N = get_argument (argc, argv, "-v"))) {
     50  if ((N = get_argument (*argc, argv, "-v"))) {
    5151    VERBOSE = TRUE;
    52     remove_argument (N, &argc, argv);
     52    remove_argument (N, argc, argv);
    5353  }
    5454
    5555  /* load the prelim data dump */
    56   MODE = MODE_ALLWISE;
    57   if ((N = get_argument (argc, argv, "-mode"))) {
    58     MODE = MODE_NONE;
    59     remove_argument (N, &argc, argv);
     56  MODE = MODE_NONE;
     57  if ((N = get_argument (*argc, argv, "-mode"))) {
     58    remove_argument (N, argc, argv);
     59    if (!strcasecmp(argv[N], "catwise")) MODE = MODE_CATWISE;
    6060    if (!strcasecmp(argv[N], "allwise")) MODE = MODE_ALLWISE;
    6161    if (!strcasecmp(argv[N], "allsky"))  MODE = MODE_ALLSKY;
     
    6565      exit (2);
    6666    }
    67     remove_argument (N, &argc, argv);
     67    remove_argument (N, argc, argv);
    6868  }
    6969
     
    8585  DUMP = NULL;
    8686
    87   if (argc < 2) {
     87  if (*argc < 2) {
    8888    fprintf (stderr, "USAGE: loadwise [options] (wisefile) [..more files]\n");
    8989    exit (2);
     
    9494static void help () {
    9595
    96   fprintf (stderr, "USAGE: loadwise [options] (wisefile) [..more files]\n");
     96  fprintf (stderr, "USAGE: loadwise [-mode MODE] [options] (wisefile) [..more files]\n");
    9797  fprintf (stderr, "  add data from WISE catalog to DVO\n\n");
     98
     99  fprintf (stderr, "  MODE may be : catwise, allwise, allsky, prelim\n");
    98100
    99101  fprintf (stderr, "  optional flags:\n");
  • trunk/Ohana/src/addstar/src/loadwise.c

    r38986 r42146  
    2222  SetSignals ();
    2323  options = ConfigInit (&argc, argv);
    24   options = args_loadwise (argc, argv, options);
     24  options = args_loadwise (&argc, argv, options);
    2525
    2626  // load the full sky description table:
  • trunk/Ohana/src/addstar/src/loadwise_ops.c

    r33653 r42146  
    1717  char *ptr = line;
    1818
    19   ptr = skipNbounds (ptr, '|', 1, Nmax);
    20   *R = strtod (ptr, NULL);
    21   ptr = skipNbounds (ptr, '|', 1, Nmax);
    22   *D = strtod (ptr, NULL);
     19  if (MODE == MODE_CATWISE) {
     20      // copy the string ranges and then use strtod (not necessary?)
     21      *R = strtod (&ptr[47], NULL); // safe to use the strtod on the line because it is white-space separated
     22      *D = strtod (&ptr[59], NULL);
     23  } else {
     24      ptr = skipNbounds (ptr, '|', 1, Nmax);
     25      *R = strtod (ptr, NULL);
     26      ptr = skipNbounds (ptr, '|', 1, Nmax);
     27      *D = strtod (ptr, NULL);
     28  }
    2329  if (*D > 90) Shutdown ("weird DEC value: something is wrong");
    2430
     
    9197}
    9298 
     99/* return a pointer to the first char after Nbound of value bound */
     100char *getLineSegment (char *line, int start, int end) {
     101
     102  // do NOT damage the buffer by seting the end byte to NULL
     103  if (0) { line[end] = 0; }
     104  char *ptr = &line[start];
     105  return (ptr);
     106}
     107 
     108double getDoubleRAW (char *line, int start, int end) {
     109    char *ptr = getLineSegment(line, start, end);
     110    double value = strtod (ptr, NULL);
     111    return value;
     112}
     113
     114double getDoubleNAN (char *line, int start, int end) {
     115    char *endpoint = NULL;
     116    char *ptr = getLineSegment(line, start, end);
     117    double value = strtod (ptr, &endpoint);
     118    if (endpoint == ptr) { value = NAN; }
     119    return value;
     120}
     121
    93122/* watch for patches which cross 0,360 boundary */
    94123SkyTable *loadWISE_acc (char *path, char *accel) {
  • trunk/Ohana/src/addstar/src/loadwise_rawdata.c

    r38986 r42146  
    2828  getWISE_setup ();
    2929
     30  int NMeasPerStar = (MODE == MODE_CATWISE) ? 2 : 4;
     31
    3032  ALLOCATE (buffer, char, NBYTE);
    3133
     
    3436  if (f == NULL) Shutdown ("can't read WISE data file: %s", filename);
    3537  // test if this is a raw datafile or gzipped...
     38
     39  int skipHeader = TRUE;
    3640
    3741  Nextra = 0;  // number excess bytes from lsat partial row
     
    5963    Dmax = -90.0;
    6064
     65    // XXX buffer is being reread instead of continuing.
     66
    6167    // scan through entire buffer for star coords
    6268    while (1) {
     69
     70      if (skipHeader && (MODE == MODE_CATWISE)) {
     71        if (*p == '\\') goto skip_header;
     72        if (*p == '|') goto skip_header;
     73      }
     74      if (skipHeader && (MODE == MODE_CATWISE)) {
     75        // once we get past the header, do not skip any more
     76        skipHeader = FALSE;
     77      }
     78
    6379      getWISE_coords (p, &tstars[Ntstars].R, &tstars[Ntstars].D, Nbyte - offset);
    6480      tstars[Ntstars].offset = offset; // offset within scan
     
    7490      Ntstars ++;
    7591      CHECK_REALLOCATE (tstars, WISE_Stars, NTSTARS, Ntstars, 10000);
     92
     93    skip_header:
    7694
    7795      /* start of the next line */
     
    143161        if (tstars[j].D > UserPatch.Dmax) continue;
    144162         
     163        // offset is bytes to start of line from start of buffer
    145164        offset = tstars[j].offset;
    146165
    147166        dvo_average_init (&newcat->average[Nave]);
    148         for (k = 0; k < 4; k++) {
     167        for (k = 0; k < NMeasPerStar; k++) {
    149168          dvo_measure_init (&newcat->measure[Nmeas+k]);
    150169        }
     
    163182            loadwise_star_allwise (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset);
    164183            break;
     184          case MODE_CATWISE:
     185            loadwise_star_catwise (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset, tstars[j].R, tstars[j].D);
     186            break;
    165187          default:
    166188            break;
     
    169191        tstars[j].flag = TRUE;
    170192
    171         newcat->average[Nave].Nmeasure = 4;
     193        newcat->average[Nave].Nmeasure = NMeasPerStar;
    172194        newcat->average[Nave].measureOffset = Nmeas;
    173195
    174196        Nave ++;
    175         Nmeas += 4;
     197        Nmeas += NMeasPerStar;
    176198
    177199        CHECK_REALLOCATE (newcat->average, Average, NAVE,  Nave,  1000);
  • trunk/Ohana/src/addstar/src/loadwise_star_full.c

    r38986 r42146  
    22# include "WISE.h"
    33
    4 int setWISE_ph_qual (Measure *measure, char qual);
    54int setWISE_var_flag_allsky (Measure *measure, char qual);
    65int setWISE_ext_flag_allsky (Measure *measure, char ptr);
    76int setWISE_var_flag_prelim (Measure *measure, char qual);
    87int setWISE_ext_flag_prelim (Measure *measure, char ptr);
    9 int setWISE_cc_flag (Measure *measure, char qual);
    10 int setWISE_sat_flag (Measure *measure, char *ptr);
    118int setWISE_blend_flag (Measure *measure, char *ptr);
     9
     10// fill in the data for a CatWISE double star.  takes a pointer to the start of the line the
     11// RA and DEC have already been set
     12int loadwise_star_catwise (Measure *measure, char *line, int Nmax, double Rs, double Ds) {
     13
     14  int i;
     15  char *ptr;
     16
     17  if (line == NULL) Shutdown ("format error in WISE");
     18
     19  ptr = line;
     20
     21  /*** CATWISE has fixed width data, not pipe-separated, etc ***/
     22
     23  // https://irsa.ipac.caltech.edu/data/WISE/CatWISE/gator_docs/catwise_colDescriptions.html
     24
     25  // We are supplied a pointer (line) to the start of a full line of data.  The CatWISE
     26  // format uses fixed-width fields with white-space separators.  The ra & dec values have
     27  // already been extracted.
     28
     29  measure[0].R    = Rs;
     30  measure[0].D    = Ds;
     31  measure[1].R    = Rs;
     32  measure[1].D    = Ds;
     33
     34  // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale
     35  measure[0].dXccd = ToShortPixels(getDoubleRAW (line, 71, 79) + 0.005); // sig_ra -- add 5/1000 to avoid truncation
     36  measure[0].dYccd = ToShortPixels(getDoubleRAW (line, 80, 88) + 0.005); // sig_dec
     37  measure[0].posangle = 0.0;
     38  measure[0].pltscale = 1.0;
     39
     40  // we only know a single set of values for both bands
     41  measure[1].dXccd    = measure[0].dXccd;
     42  measure[1].dYccd    = measure[0].dYccd;
     43  measure[1].posangle = measure[0].posangle;
     44  measure[1].pltscale = measure[0].pltscale;
     45
     46  measure[0].Xccd = getDoubleRAW (line,  98, 106); // wx
     47  measure[0].Yccd = getDoubleRAW (line, 107, 115); // wy
     48  measure[1].Xccd = measure[0].Xccd;
     49  measure[1].Yccd = measure[0].Yccd;
     50
     51  // W1
     52  measure[0].M         = getDoubleNAN (line, 248, 254); // w1mpro
     53  measure[0].dM        = getDoubleNAN (line, 255, 264); // w1sigmpro
     54  measure[0].psfChisq  = getDoubleRAW (line, 265, 275); // w1rchi2
     55  measure[0].psfQF     = measure[0].psfChisq;
     56  measure[0].photFlags = 0;
     57
     58  // W2
     59  measure[1].M         = getDoubleNAN (line, 276, 282); // w2mpro
     60  measure[1].dM        = getDoubleNAN (line, 283, 292); // w2sigmpro
     61  measure[1].psfChisq  = getDoubleRAW (line, 293, 303); // w2rchi2
     62  measure[1].psfQF     = measure[1].psfChisq;
     63  measure[1].photFlags = 0;
     64
     65  setCatWISE_blend_flag (measure, line); // w1sat
     66
     67  setCatWISE_sat_flag (&measure[0], line, 323, 330); // w1sat
     68  setCatWISE_sat_flag (&measure[1], line, 331, 338); // w2sat
     69
     70  // cc_flags? 1642 - 1657
     71  // setWISE_cc_flag (&measure[0], ptr[i]); // cc_flags
     72
     73  // set ext flags for all 4 measures
     74  // setCatWISE_ext_flag_allsky (measure, ptr[0]); // ext_flg
     75
     76  // setWISE_var_flag_allsky (&measure[0], ptr[i]); // var_flg
     77
     78  // setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual
     79
     80  double mjdmean = getDoubleRAW (line, 1126, 1138); // MeanObsMJD
     81 
     82  // the release is based on data taken in the period 14 January 2010 to 29 April 2010
     83  if (mjdmean == 0.0) {
     84    measure[0].t = 0;
     85  } else {
     86    measure[0].t = ohana_mjd_to_sec (mjdmean);
     87  }
     88  measure[1].t = measure[0].t;
     89
     90  measure[0].photcode  = WISE_W1;
     91  measure[0].detID   = 0;
     92  measure[0].imageID = 0;
     93
     94  measure[1].photcode  = WISE_W2;
     95  measure[1].detID   = 0;
     96  measure[1].imageID = 0;
     97
     98  return TRUE;
     99}
    12100
    13101// fill in the data for a WISE quad star.  takes a pointer to the start of the line the
     
    458546}
    459547
     548int setCatWISE_blend_flag (Measure *measure, char *line) {
     549
     550  // na
     551  int nb = atoi(getLineSegment(line, 315, 318)); // nb
     552  int na = atoi(getLineSegment(line, 319, 322)); // na
     553
     554  if (nb != 1) {
     555    if (na == 0) {
     556      measure[0].photFlags |= FLAG_BLEND_ACTIVE;
     557      measure[1].photFlags |= FLAG_BLEND_ACTIVE;
     558    } else {
     559      measure[0].photFlags |= FLAG_BLEND_PASSIVE;
     560      measure[1].photFlags |= FLAG_BLEND_PASSIVE;
     561    }
     562  }
     563  return TRUE;
     564}
     565
    460566int setWISE_sat_flag (Measure *measure, char *ptr) {
    461567
     
    465571    }
    466572    return TRUE;
     573}
     574
     575int setCatWISE_sat_flag (Measure *measure, char *ptr, int start, int end) {
     576
     577  float sat = getDoubleRAW (ptr, start, end);
     578  if (sat > 0.0) {
     579    measure[0].photFlags |= FLAG_SATURATED_PIX;
     580  }
     581  return TRUE;
    467582}
    468583
Note: See TracChangeset for help on using the changeset viewer.