IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33824


Ignore:
Timestamp:
Apr 20, 2012, 3:20:43 PM (14 years ago)
Author:
eugene
Message:

add WISE allsky data release loader

Location:
branches/eam_branches/ipp-20120405/Ohana/src/addstar
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/Makefile

    r33719 r33824  
    220220LOAD-WISE = \
    221221$(SRC)/loadwise.$(ARCH).o \
    222 $(SRC)/loadwise_prelim_rawdata.$(ARCH).o \
     222$(SRC)/loadwise_rawdata.$(ARCH).o \
    223223$(SRC)/loadwise_ops.$(ARCH).o \
    224224$(SRC)/loadwise_star_full.$(ARCH).o \
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/include/WISE.h

    r33653 r33824  
    2121short WISE_W1, WISE_W2, WISE_W3, WISE_W4;
    2222
     23int ALLSKY;
     24
    2325AddstarClientOptions args_loadwise (int argc, char **argv, AddstarClientOptions options);
    2426
    25 int loadwise_prelim_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options);
     27int loadwise_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options, int ALLSKY);
    2628
    2729int getWISE_setup ();
     
    3133
    3234int getWISE_sortStars (WISE_Stars *tstars, int Ntstars);
    33 int loadwise_star_full (Stars **star, char *line, int Nmax);
     35
     36int loadwise_star_allsky (Stars **star, char *line, int Nmax);
     37int loadwise_star_prelim (Stars **star, char *line, int Nmax);
     38
    3439
    3540char *nextWISEfield (char *line);
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/src/args_loadwise.c

    r33653 r33824  
    11# include "addstar.h"
     2# include "WISE.h"
    23static void help (void);
    34
     
    1213  }
    1314
    14   // a global used by find_matches_refstars.c (value is 1 except for load2mass & loadwise)
     15  // a global used by find_matches_refstars.c (value is 1 except for loadwise & loadwise)
    1516  NREFSTAR_GROUP = 4;
    1617
     
    5253  }
    5354
    54   /* other addstar options which cannot be used in load2mass */
     55  /* load the prelim data dump */
     56  ALLSKY = TRUE;
     57  if ((N = get_argument (argc, argv, "-prelim"))) {
     58    ALLSKY = FALSE;
     59    remove_argument (N, &argc, argv);
     60  }
     61
     62  /* other addstar options which cannot be used in loadwise */
    5563  options.photcode = 0;
    5664  options.timeref = 0;
     
    7078
    7179  if (argc < 2) {
    72     fprintf (stderr, "USAGE: load2mass [options] (wisefile) [..more files]\n");
     80    fprintf (stderr, "USAGE: loadwise [options] (wisefile) [..more files]\n");
    7381    exit (2);
    7482  }
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/src/find_matches.c

    r33735 r33824  
    294294      catalog[0].secfilt[Nave*Nsecfilt+j].Map         = NAN;
    295295      catalog[0].secfilt[Nave*Nsecfilt+j].dM          = NAN;
    296       catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev      = NAN;
     296      catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev      = NAN_S_SHORT;
    297297      catalog[0].secfilt[Nave*Nsecfilt+j].Xm          = NAN_S_SHORT;
    298298      catalog[0].secfilt[Nave*Nsecfilt+j].M_20        = NAN_S_SHORT;
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/src/find_matches_closest.c

    r33735 r33824  
    295295      catalog[0].secfilt[Nave*Nsecfilt+j].Map         = NAN;
    296296      catalog[0].secfilt[Nave*Nsecfilt+j].dM          = NAN;
    297       catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev      = NAN;
     297      catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev      = NAN_S_SHORT;
    298298      catalog[0].secfilt[Nave*Nsecfilt+j].Xm          = NAN_S_SHORT;
    299299      catalog[0].secfilt[Nave*Nsecfilt+j].M_20        = NAN_S_SHORT;
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/src/loadwise.c

    r33653 r33824  
    4040  for (i = 1; i < argc; i++) {
    4141      fprintf (stderr, "loading %s\n", argv[i]);
    42       loadwise_prelim_rawdata (skylist, argv[i], options);
     42      loadwise_rawdata (skylist, argv[i], options, ALLSKY);
    4343  }
    4444  exit (0);
  • branches/eam_branches/ipp-20120405/Ohana/src/addstar/src/loadwise_star_full.c

    r33653 r33824  
    33
    44int setWISE_ph_qual (Stars *star, char qual);
    5 int setWISE_var_flag (Stars *star, char qual);
    6 int setWISE_ext_flag (Stars **star, char *ptr);
     5int setWISE_var_flag_allsky (Stars *star, char qual);
     6int setWISE_ext_flag_allsky (Stars **star, char ptr);
     7int setWISE_var_flag_prelim (Stars *star, char qual);
     8int setWISE_ext_flag_prelim (Stars **star, char ptr);
    79int setWISE_cc_flag (Stars *star, char qual);
    810int setWISE_sat_flag (Stars *star, char *ptr);
    911int setWISE_blend_flag (Stars **star, char *ptr);
    1012
     13// there are slight format differences between the prelim data dump and the allsky data dump:
     14// * after ph_qual & det_bit : new field moon_lev
     15// * for each filter, after w?sigp2 : new fields w?dmag, w?ndf, w?mlq, w?mjdmin, w?mjdmax, w?mjdmean
     16// * after w4mdjmean : new fields rho12, rho23, rho34, q12, q23, q34
     17// * after k_msig_2mass : new fields best_use_cntr, ngrp
     18
    1119// fill in the data for a WISE quad star.  takes a pointer to the start of the line the
    1220// RA and DEC have already been set
    13 int loadwise_star_full (Stars **star, char *line, int Nmax) {
     21int loadwise_star_allsky (Stars **star, char *line, int Nmax) {
    1422
    1523  int i;
     
    5260  // W1
    5361  for (i = 0; i < 4; i++) {
    54       star[0][0].measure.M  = strtod (ptr, NULL); // w?mpro
     62    char *endpoint;
     63      star[i][0].measure.M  = strtod (ptr, &endpoint); // w?mpro
     64      if (endpoint == ptr) {
     65        star[i][0].measure.M  = NAN;
     66      }
    5567      ptr = nextWISEfield (ptr);
    56       star[0][0].measure.dM = strtod (ptr, NULL); // w?sigmpro
     68      star[i][0].measure.dM = strtod (ptr, &endpoint); // w?sigmpro
     69      if (endpoint == ptr) {
     70        star[i][0].measure.dM  = NAN;
     71      }
    5772      ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr
    58       star[0][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2
     73      star[i][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2
    5974      ptr = nextWISEfield (ptr); // skip : w1rchi2
    6075
     
    8196
    8297  // set ext flags for all 4 measures
    83   setWISE_ext_flag (star, ptr); // ext_flg
     98  setWISE_ext_flag_allsky (star, ptr[0]); // ext_flg
    8499  ptr = nextWISEfield (ptr); // skip ext_flags
    85100
    86101  for (i = 0; i < 4; i++) {
    87       setWISE_var_flag (star[i], ptr[i]); // var_flg
     102      setWISE_var_flag_allsky (star[i], ptr[i]); // var_flg
     103  }
     104  ptr = nextWISEfield (ptr); // skip var_flags
     105
     106  for (i = 0; i < 4; i++) {
     107      setWISE_ph_qual (star[i], ptr[i]); // ph_qual
     108  }
     109
     110  ptr = skipNbounds (ptr, '|', 159, Nmax); // skip: det_bit, moon_lev, w?nm, w?m, w?cov, etc, etc.
     111
     112  for (i = 0; i < 4; i++) {
     113    ptr = skipNbounds (ptr, '|', 8, Nmax); // skip: det_bit, moon_lev, w?nm, w?m, w?cov, etc, etc.
     114
     115    // double mjdmin = strtod (ptr, NULL); // mjd min
     116    // ptr = nextWISEfield (ptr); // skip
     117    // double mjdmax = strtod (ptr, NULL); // mjd max
     118    // ptr = nextWISEfield (ptr); // skip mjd max
     119    double mjdmean = strtod (ptr, NULL); // mjd mean
     120    ptr = nextWISEfield (ptr); // skip mjd mean
     121
     122    // fprintf (stderr, "w%d mjd: %f\n", i, mjdmean);
     123
     124    // the release is based on data taken in the period 14 January 2010 to 29 April 2010
     125    if (mjdmean == 0.0) {
     126      star[i][0].measure.t = 0;
     127    } else {
     128      star[i][0].measure.t = ohana_mjd_to_sec (mjdmean);
     129    }
     130  }
     131
     132  star[0][0].measure.photcode  = WISE_W1;
     133  star[0][0].measure.detID   = 0;
     134  star[0][0].measure.imageID = 0;
     135
     136  star[1][0].measure.photcode  = WISE_W2;
     137  star[1][0].measure.detID   = 0;
     138  star[1][0].measure.imageID = 0;
     139
     140  star[2][0].measure.photcode  = WISE_W3;
     141  star[2][0].measure.detID   = 0;
     142  star[2][0].measure.imageID = 0;
     143
     144  star[3][0].measure.photcode  = WISE_W4;
     145  star[3][0].measure.detID   = 0;
     146  star[3][0].measure.imageID = 0;
     147
     148  return TRUE;
     149}
     150
     151// fill in the data for a WISE quad star.  takes a pointer to the start of the line the
     152// RA and DEC have already been set
     153int loadwise_star_prelim (Stars **star, char *line, int Nmax) {
     154
     155  int i;
     156  char *ptr;
     157
     158  if (line == NULL) Shutdown ("format error in WISE");
     159
     160  ptr = line;
     161
     162  // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale
     163  star[0][0].measure.posangle = 0.0;
     164  star[0][0].measure.pltscale = 1.0;
     165
     166  ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: desig, ra, dec,
     167  star[0][0].measure.dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra
     168  ptr = nextWISEfield (ptr);
     169  star[0][0].measure.dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec
     170  ptr = nextWISEfield (ptr);
     171
     172  // we only know a single set of values for all 4 bands
     173  for (i = 1; i < 4; i++) {
     174      star[i][0].measure.dXccd    = star[0][0].measure.dXccd;
     175      star[i][0].measure.dYccd    = star[0][0].measure.dYccd;
     176      star[i][0].measure.posangle = star[0][0].measure.posangle;
     177      star[i][0].measure.pltscale = star[0][0].measure.pltscale;
     178  }
     179  ptr = skipNbounds (ptr, '|', 5, Nmax); // skip: sig_radec, glon, glat, elon, elat
     180
     181  star[0][0].measure.Xccd = strtod (ptr, NULL); // wx
     182  ptr = nextWISEfield (ptr); // skip wx
     183  star[0][0].measure.Yccd = strtod (ptr, NULL); // wy
     184  ptr = nextWISEfield (ptr); // skip wy
     185
     186  for (i = 1; i < 4; i++) {
     187      star[i][0].measure.Xccd    = star[0][0].measure.Xccd;
     188      star[i][0].measure.Yccd    = star[0][0].measure.Yccd;
     189  }
     190  ptr = skipNbounds (ptr, '|', 4, Nmax); // skip: cntr, source_id, coadd_id, src
     191
     192  // W1
     193  for (i = 0; i < 4; i++) {
     194      star[i][0].measure.M  = strtod (ptr, NULL); // w?mpro
     195      ptr = nextWISEfield (ptr);
     196      star[i][0].measure.dM = strtod (ptr, NULL); // w?sigmpro
     197      ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr
     198      star[i][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2
     199      ptr = nextWISEfield (ptr); // skip : w1rchi2
     200
     201      // init the photFlags field
     202      star[i][0].measure.photFlags = 0;
     203  }
     204
     205  ptr = nextWISEfield (ptr); // skip: rchi2
     206
     207  // set blend flags for all 4 measures
     208  setWISE_blend_flag (star, ptr); // nb & na both used here
     209  ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na
     210
     211  for (i = 0; i < 4; i++) {
     212      setWISE_sat_flag (star[i], ptr); // w1sat
     213      ptr = nextWISEfield (ptr);
     214  }
     215  ptr = nextWISEfield (ptr); // skip satnum
     216
     217  for (i = 0; i < 4; i++) {
     218      setWISE_cc_flag (star[i], ptr[i]); // cc_flg
     219  }
     220  ptr = nextWISEfield (ptr); // skip cc_flags
     221
     222  // set ext flags for all 4 measures
     223  setWISE_ext_flag_prelim (star, *ptr); // ext_flg
     224  ptr = nextWISEfield (ptr); // skip ext_flags
     225
     226  for (i = 0; i < 4; i++) {
     227      setWISE_var_flag_prelim (star[i], ptr[i]); // var_flg
    88228  }
    89229  ptr = nextWISEfield (ptr); // skip var_flags
     
    150290
    151291# define FLAG_EXTENDED        0x01000000 // ext == 1
     292# define FLAG_EXT_IN_XSC      0x02000000 // ext == 1
     293# define FLAG_EXT_BY_XSC      0x04000000 // ext == 1
    152294
    153295# define FLAG_VARIABLE_LEVEL1 0x10000000 // var_flg == 1 to 4
     
    207349}
    208350
    209 int setWISE_ext_flag (Stars **star, char *ptr) {
    210 
    211     int ext = atoi (ptr);
    212     if (ext == 1) {
    213         star[0][0].measure.photFlags |= FLAG_EXTENDED;
    214         star[1][0].measure.photFlags |= FLAG_EXTENDED;
    215         star[2][0].measure.photFlags |= FLAG_EXTENDED;
    216         star[3][0].measure.photFlags |= FLAG_EXTENDED;
    217     }
    218     return TRUE;
    219 }
    220 
    221 int setWISE_var_flag (Stars *star, char qual) {
    222 
    223     int value = qual - '0';
    224     assert (value >= 0);
    225     assert (value <= 9);
    226     if (value == 0) return TRUE;
    227     if (value < 5) {
     351int setWISE_ext_flag_allsky (Stars **star, char value) {
     352
     353  switch (value) {
     354    case '0':
     355      return TRUE;
     356    case '1':
     357      star[0][0].measure.photFlags |= FLAG_EXTENDED;
     358      star[1][0].measure.photFlags |= FLAG_EXTENDED;
     359      star[2][0].measure.photFlags |= FLAG_EXTENDED;
     360      star[3][0].measure.photFlags |= FLAG_EXTENDED;
     361      return TRUE;
     362    case '2':
     363      star[0][0].measure.photFlags |= FLAG_EXT_IN_XSC;
     364      star[1][0].measure.photFlags |= FLAG_EXT_IN_XSC;
     365      star[2][0].measure.photFlags |= FLAG_EXT_IN_XSC;
     366      star[3][0].measure.photFlags |= FLAG_EXT_IN_XSC;
     367      return TRUE;
     368    case '3':
     369      star[0][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;
     370      star[1][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;
     371      star[2][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;
     372      star[3][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;
     373      return TRUE;
     374    case '4':
     375      star[0][0].measure.photFlags |= FLAG_EXT_BY_XSC;
     376      star[1][0].measure.photFlags |= FLAG_EXT_BY_XSC;
     377      star[2][0].measure.photFlags |= FLAG_EXT_BY_XSC;
     378      star[3][0].measure.photFlags |= FLAG_EXT_BY_XSC;
     379      return TRUE;
     380    case '5':
     381      star[0][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;
     382      star[1][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;
     383      star[2][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;
     384      star[3][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;
     385      return TRUE;
     386    default:
     387      fprintf (stderr, "programming error\n");
     388      abort();
     389  }
     390  return TRUE;
     391}
     392
     393int setWISE_ext_flag_prelim (Stars **star, char value) {
     394
     395  switch (value) {
     396    case '0':
     397      return TRUE;
     398    case '1':
     399      star[0][0].measure.photFlags |= FLAG_EXTENDED;
     400      star[1][0].measure.photFlags |= FLAG_EXTENDED;
     401      star[2][0].measure.photFlags |= FLAG_EXTENDED;
     402      star[3][0].measure.photFlags |= FLAG_EXTENDED;
     403      return TRUE;
     404    default:
     405      fprintf (stderr, "programming error\n");
     406      abort();
     407  }
     408  return TRUE;
     409}
     410
     411// NOTE: var flag definition changed slightly between prelim & allsky
     412int setWISE_var_flag_allsky (Stars *star, char qual) {
     413
     414  switch (qual) {
     415    case 'n':
     416        return TRUE;
     417    case '0':
     418    case '1':
     419    case '2':
     420    case '3':
     421    case '4':
     422    case '5':
    228423        star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL1;
    229424        return TRUE;
    230     }
    231     if (value < 8) {
     425    case '6':
     426    case '7':
    232427        star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL2;
    233428        return TRUE;
    234     }
    235     star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;
    236     return TRUE;
     429    case '8':
     430    case '9':
     431      star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;
     432      return TRUE;
     433    default:
     434      fprintf (stderr, "programming error\n");
     435      abort();
     436  }
     437}
     438
     439int setWISE_var_flag_prelim (Stars *star, char qual) {
     440
     441  switch (qual) {
     442    case '0':
     443      return TRUE;
     444    case '1':
     445    case '2':
     446    case '3':
     447    case '4':
     448        star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL1;
     449        return TRUE;
     450    case '5':
     451    case '6':
     452    case '7':
     453        star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL2;
     454        return TRUE;
     455    case '8':
     456    case '9':
     457      star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;
     458      return TRUE;
     459    default:
     460      fprintf (stderr, "programming error\n");
     461      abort();
     462  }
    237463}
    238464
Note: See TracChangeset for help on using the changeset viewer.