IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 6, 2013, 3:30:44 PM (13 years ago)
Author:
eugene
Message:

option to specify output format for fits table columns; add dbinsert; pass db info on command line; option to make a guess for vgauss; option to rename a spline; option to get results files for remote clients; some improvments to gstar (sorting, optional fields)

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

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi

  • trunk/Ohana/src/opihi/dvo/gstar.c

    r34844 r35109  
    11# include "dvoshell.h"
     2
     3typedef enum {
     4  GSTAR_BY_SEQ,
     5  GSTAR_BY_TIME,
     6  GSTAR_BY_PHOTCODE,
     7} GSTAR_SORT_CODES;
    28
    39typedef enum {
     
    713  GSTAR_FILTER_NAMES,
    814  GSTAR_SECF_FLAGS,
     15  GSTAR_UCDIST,
    916  GSTAR_AVE_AP_MAG,
    1017  GSTAR_AVE_MAG_20,
     
    2229void printPhotcodeSequence (Average *average, SecFilt *secfilt, int entry, int type);
    2330
     31void sort_index_float (float *X, int *IDX, int N) {
     32
     33# define SWAPFUNC(A,B){ float tmp; int itmp;    \
     34  tmp = X[A]; X[A] = X[B]; X[B] = tmp; \
     35  itmp = IDX[A]; IDX[A] = IDX[B]; IDX[B] = itmp; \
     36}
     37# define COMPARE(A,B)(X[A] < X[B])
     38
     39  OHANA_SORT (N, COMPARE, SWAPFUNC);
     40
     41# undef SWAPFUNC
     42# undef COMPARE
     43
     44}
     45
    2446int gstar (int argc, char **argv) {
    2547 
     
    3052  off_t i, Nstars, *N1;
    3153  off_t j, k, m, N, Nlo, Nhi;
    32   int Nsecfilt, NPTS, QUIET, FULL_OUTPUT, STACK_OUTPUT, INST;
     54  int Nsecfilt, NPTS, QUIET, FULL_OUTPUT, STACK_OUTPUT, INST, SHOW_MASKS;
    3355  int found, GetMeasures;
    3456  int SaveVectors;
     
    4365  Nsecfilt = GetPhotcodeNsecfilt ();
    4466
     67  GSTAR_SORT_CODES sortCode = GSTAR_BY_SEQ;
     68  if ((N = get_argument (argc, argv, "-sort"))) {
     69    remove_argument (N, &argc, argv);
     70    if (!strcasecmp (argv[N], "time")) {
     71      sortCode = GSTAR_BY_TIME;
     72    }
     73    if (!strcasecmp (argv[N], "photcode")) {
     74      sortCode = GSTAR_BY_PHOTCODE;
     75    }
     76    remove_argument (N, &argc, argv);
     77  }
     78
    4579  QUIET = FALSE;
    4680  if ((N = get_argument (argc, argv, "-q"))) {
     
    5286  if ((N = get_argument (argc, argv, "-inst"))) {
    5387    INST = TRUE;
     88    remove_argument (N, &argc, argv);
     89  }
     90
     91  SHOW_MASKS = FALSE;
     92  if ((N = get_argument (argc, argv, "-masks"))) {
     93    SHOW_MASKS = TRUE;
    5494    remove_argument (N, &argc, argv);
    5595  }
     
    275315          gprint (GP_LOG, "\n");
    276316
     317          /* UCDIST */
     318          for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_UCDIST);;
     319          gprint (GP_LOG, "\n");
     320
    277321          /* secfilt flags */
    278322          for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_SECF_FLAGS);
     
    300344      }
    301345      if (GetMeasures || SaveVectors) {
     346
     347        if (catalog.average[k].Nmeasure == 0) continue;
     348
    302349        m = catalog.average[k].measureOffset;
     350
     351        int *index = NULL;
     352        float *value = NULL;
     353        ALLOCATE (index, int, catalog.average[k].Nmeasure);
     354        ALLOCATE (value, float, catalog.average[k].Nmeasure);
     355        for (j = 0; j < catalog.average[k].Nmeasure; j++) {
     356          index[j] = j + m;
     357          switch (sortCode) {
     358            case GSTAR_BY_SEQ:
     359              value[j] = j + m;
     360              break;
     361            case GSTAR_BY_PHOTCODE:
     362              value[j] = catalog.measure[j + m].photcode;
     363              break;
     364            case GSTAR_BY_TIME:
     365              value[j] = catalog.measure[j + m].t;
     366              break;
     367          }
     368        }
     369
     370        sort_index_float (value, index, catalog.average[k].Nmeasure);
     371
    303372        for (j = 0; j < catalog.average[k].Nmeasure; j++, m++) {
    304373
    305           Mcat = PhotCat (&catalog.measure[m]);
     374          int Nv = index[j];
     375
     376          Mcat = PhotCat (&catalog.measure[Nv]);
    306377          if (INST) {
    307             Mrel = PhotInst (&catalog.measure[m]);
     378            Mrel = PhotInst (&catalog.measure[Nv]);
    308379          } else {
    309             Mrel = PhotRel (&catalog.measure[m], &catalog.average[k], &catalog.secfilt[k*Nsecfilt]);
     380            Mrel = PhotRel (&catalog.measure[Nv], &catalog.average[k], &catalog.secfilt[k*Nsecfilt]);
    310381          }
    311382
    312383          if (GetMeasures && !QUIET) {
    313             date = ohana_sec_to_date (catalog.measure[m].t);
     384            date = ohana_sec_to_date (catalog.measure[Nv].t);
    314385            gprint (GP_LOG, "%6.3f ",  Mcat);
    315386            gprint (GP_LOG, "%6.3f ",  Mrel);
    316             gprint (GP_LOG, "%5.3f  ", catalog.measure[m].dM);
     387            gprint (GP_LOG, "%6.3f  ", catalog.measure[Nv].dM);
    317388            gprint (GP_LOG, "%20s  ",  date);
    318             gprint (GP_LOG, "%7.4f ",  catalog.measure[m].dR);
    319             gprint (GP_LOG, "%7.4f ",  catalog.measure[m].dD);
    320             gprint (GP_LOG, "0x%08x ", catalog.measure[m].photFlags);
    321             gprint (GP_LOG, "0x%08x ", catalog.measure[m].dbFlags);
    322             gprint (GP_LOG, "%5d ",    catalog.measure[m].photcode);
    323             gprint (GP_LOG, "%-20s ",  GetPhotcodeNamebyCode (catalog.measure[m].photcode));
    324             gprint (GP_LOG, "%5.2f ",  FromShortPixels(catalog.measure[m].FWx));
    325             gprint (GP_LOG, "%5.2f ",  FromShortPixels(catalog.measure[m].FWy));
     389            gprint (GP_LOG, "%7.4f ",  catalog.measure[Nv].dR);
     390            gprint (GP_LOG, "%7.4f ",  catalog.measure[Nv].dD);
     391            gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].photFlags);
     392            gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].dbFlags);
     393            if (SHOW_MASKS) {
     394              gprint (GP_LOG, "%5d ",    catalog.measure[Nv].photcode);
     395              PhotCode *code = GetPhotcodebyCode (catalog.measure[Nv].photcode);
     396              int badMask = 0;
     397              int poorMask = 0;
     398              if (code) {
     399                badMask = catalog.measure[Nv].photFlags & code->photomBadMask;
     400                poorMask = catalog.measure[Nv].photFlags & code->photomPoorMask;
     401              }
     402              gprint (GP_LOG, "0x%08x ", poorMask);
     403              gprint (GP_LOG, "0x%08x ", badMask);
     404            }
     405            gprint (GP_LOG, "%5d ",    catalog.measure[Nv].photcode);
     406            gprint (GP_LOG, "%-20s ",  GetPhotcodeNamebyCode (catalog.measure[Nv].photcode));
     407            gprint (GP_LOG, "%5.2f ",  FromShortPixels(catalog.measure[Nv].FWx));
     408            gprint (GP_LOG, "%5.2f ",  FromShortPixels(catalog.measure[Nv].FWy));
    326409
    327410            if (FULL_OUTPUT) {
    328                 gprint (GP_LOG, "%6.3f ", catalog.measure[m].Mcal);
    329                 gprint (GP_LOG, "%6.3f ", catalog.measure[m].Map);
    330                 gprint (GP_LOG, "%6.3f ", catalog.measure[m].Mkron);
    331                 gprint (GP_LOG, "%6.3f ", catalog.measure[m].dMkron);
    332                 gprint (GP_LOG, "%5.1f ", pow(10.0, 0.4*catalog.measure[m].dt));
    333                 gprint (GP_LOG, "%5.3f ", catalog.measure[m].airmass);
    334                 gprint (GP_LOG, "%6.1f ", catalog.measure[m].az);
    335                 gprint (GP_LOG, "%6.1f ", catalog.measure[m].Xccd);
    336                 gprint (GP_LOG, "%6.1f ", catalog.measure[m].Yccd);
    337                 gprint (GP_LOG, "%3.1f ", FromShortPixels(catalog.measure[m].dXccd));
    338                 gprint (GP_LOG, "%3.1f ", FromShortPixels(catalog.measure[m].dYccd));
    339                 gprint (GP_LOG, "%6.1f ", catalog.measure[m].Sky);
    340                 gprint (GP_LOG, "%5.1f ", catalog.measure[m].dSky);
    341                 gprint (GP_LOG, "%8d ", catalog.measure[m].averef);
    342                 gprint (GP_LOG, "0x%08x ", catalog.measure[m].detID);
    343                 gprint (GP_LOG, "0x%08x ", catalog.measure[m].imageID);
    344                 gprint (GP_LOG, "%.3f ", catalog.measure[m].psfQF);
    345                 gprint (GP_LOG, "%.1f ", catalog.measure[m].psfChisq);
    346                 gprint (GP_LOG, "%.1f ", catalog.measure[m].crNsigma);
    347                 gprint (GP_LOG, "%.1f ", catalog.measure[m].extNsigma);
    348                 gprint (GP_LOG, "%.1f ", FromShortDegrees(catalog.measure[m].theta));
     411                gprint (GP_LOG, "%6.3f ", catalog.measure[Nv].Mcal);
     412                gprint (GP_LOG, "%6.3f ", catalog.measure[Nv].Map);
     413                gprint (GP_LOG, "%6.3f ", catalog.measure[Nv].Mkron);
     414                gprint (GP_LOG, "%6.3f ", catalog.measure[Nv].dMkron);
     415                gprint (GP_LOG, "%5.1f ", pow(10.0, 0.4*catalog.measure[Nv].dt));
     416                gprint (GP_LOG, "%5.3f ", catalog.measure[Nv].airmass);
     417                gprint (GP_LOG, "%6.1f ", catalog.measure[Nv].az);
     418                gprint (GP_LOG, "%6.1f ", catalog.measure[Nv].Xccd);
     419                gprint (GP_LOG, "%6.1f ", catalog.measure[Nv].Yccd);
     420                gprint (GP_LOG, "%3.1f ", FromShortPixels(catalog.measure[Nv].dXccd));
     421                gprint (GP_LOG, "%3.1f ", FromShortPixels(catalog.measure[Nv].dYccd));
     422                gprint (GP_LOG, "%6.1f ", catalog.measure[Nv].Sky);
     423                gprint (GP_LOG, "%5.1f ", catalog.measure[Nv].dSky);
     424                gprint (GP_LOG, "%8d ", catalog.measure[Nv].averef);
     425                gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].detID);
     426                gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].imageID);
     427                gprint (GP_LOG, "%.3f ", catalog.measure[Nv].psfQF);
     428                gprint (GP_LOG, "%.1f ", catalog.measure[Nv].psfChisq);
     429                gprint (GP_LOG, "%.1f ", catalog.measure[Nv].crNsigma);
     430                gprint (GP_LOG, "%.1f ", catalog.measure[Nv].extNsigma);
     431                gprint (GP_LOG, "%.1f ", FromShortDegrees(catalog.measure[Nv].theta));
    349432            }
    350433            if (STACK_OUTPUT) {
    351                 gprint (GP_LOG, "%10.3e ", catalog.measure[m].FluxPSF);
    352                 gprint (GP_LOG, "%10.3e ", catalog.measure[m].dFluxPSF);
    353                 gprint (GP_LOG, "%10.3e ", catalog.measure[m].FluxKron);
    354                 gprint (GP_LOG, "%10.3e ", catalog.measure[m].dFluxKron);
     434                gprint (GP_LOG, "%10.3e ", catalog.measure[Nv].FluxPSF);
     435                gprint (GP_LOG, "%10.3e ", catalog.measure[Nv].dFluxPSF);
     436                gprint (GP_LOG, "%10.3e ", catalog.measure[Nv].FluxKron);
     437                gprint (GP_LOG, "%10.3e ", catalog.measure[Nv].dFluxKron);
    355438            }
    356439            gprint (GP_LOG, "\n");
     
    361444          if (SaveVectors) {
    362445            vec1[0].elements.Flt[N] = Mcat;
    363             vec2[0].elements.Flt[N] = TimeValue (catalog.measure[m].t, TimeReference, TimeFormat);
    364             vec3[0].elements.Flt[N] = catalog.measure[m].airmass;
    365             vec4[0].elements.Flt[N] = catalog.measure[m].photcode;
    366             vec5[0].elements.Flt[N] = catalog.measure[m].dR;
    367             vec6[0].elements.Flt[N] = catalog.measure[m].dD;
     446            vec2[0].elements.Flt[N] = TimeValue (catalog.measure[Nv].t, TimeReference, TimeFormat);
     447            vec3[0].elements.Flt[N] = catalog.measure[Nv].airmass;
     448            vec4[0].elements.Flt[N] = catalog.measure[Nv].photcode;
     449            vec5[0].elements.Flt[N] = catalog.measure[Nv].dR;
     450            vec6[0].elements.Flt[N] = catalog.measure[Nv].dD;
    368451            N ++;
    369452            if (N == NPTS - 1) {
     
    378461          }
    379462        }
     463        free (value);
     464        free (index);
    380465      }
    381466    }
     
    495580      break;
    496581
     582    case GSTAR_UCDIST: /* ubercal distance */
     583      if (seq == -1) {
     584        gprint (GP_LOG, "%5d ", 0);
     585      } else {
     586        gprint (GP_LOG, "%5d ", secfilt[seq].ubercalDist);
     587      }
     588      break;
     589
    497590    case GSTAR_AVE_AP_MAG: /* average ap mags */
    498591      if (seq == -1) {
Note: See TracChangeset for help on using the changeset viewer.