IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 8, 2025, 4:29:52 PM (15 months ago)
Author:
eugene
Message:

merge changes from eam_branches/ipp-20230313

Location:
trunk/Ohana
Files:
34 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/opihi/cmd.astro/cdensify.c

    r41515 r42821  
    11# include "data.h"
     2# define dCOS(A)   ((double) cos ((double)RAD_DEG*A))
    23
    34# define CHECKVAL(ARG) if (!isfinite(ARG)) { gprint (GP_ERR, "illegal value for %s: %f\n", #ARG, ARG); return (FALSE); }
     
    116117  PutCoords (&newcoords, &bf[0].header);
    117118 
     119  // use the mask to prevent double-counting
     120  ALLOCATE_PTR (mask, char, Nx*Ny);
     121
    118122  float scalescale = scale*scale;
    119123  float scale2 = (scale + 1.0) * (scale + 1.0);
     
    142146    coords.crval1 = rn;
    143147    coords.crval2 = *d;
     148   
     149    // XXX do not oversample by more than a factor of 10
     150    float dXn = dX * MAX(fabs(dCOS(*d)), 0.1);
    144151
    145152    float F = 1.0;
    146153    if (vv) { F = isFloatScale ? Fs[i] : Is[i]; }
     154
     155    // reset the mask so we do not double-count
     156    memset (mask, 0, Nx*Ny);
    147157
    148158    switch (PSFTYPE) {
     
    162172        break;
    163173      case IS_SQUARE:
    164         for (ix = -scale; ix <= scale; ix += dX) {
     174        for (ix = -scale; ix <= scale; ix += dXn) {
    165175          for (iy = -scale; iy <= scale; iy += dY) {
    166176            double rp, dp;
     
    184194        break;
    185195      case IS_CIRCLE:
    186         for (ix = -scale; ix <= scale; ix += dX) {
    187           for (iy = -scale; iy <= scale; iy += dY) {
     196        for (ix = -scale - dXn; ix <= scale + dXn; ix += dXn) {
     197          for (iy = -scale - dY; iy <= scale + dY; iy += dY) {
    188198            float r2 = ix*ix + iy*iy;
    189199            double rp, dp;
     
    199209            if (Xb < 0) continue;
    200210            if (Yb < 0) continue;
     211            if (mask[Xb + Yb*Nx]) continue;
     212            mask[Xb + Yb*Nx] = 1;
    201213            if (vv) {
    202214              val[Xb + Yb*Nx] += Normalize ? fCircle*F : F;
     
    208220        break;
    209221      case IS_GAUSS:
    210         for (ix = -3.0*scale; ix <= 3.0*scale; ix += dX) {
     222        for (ix = -3.0*scale; ix <= 3.0*scale; ix += dXn) {
    211223          for (iy = -3.0*scale; iy <= 3.0*scale; iy += dY) {
    212224            float r2 = ix*ix + iy*iy;
     
    232244    }
    233245  }
     246
     247  free (mask);
    234248  return (TRUE);
    235249}
  • trunk/Ohana/src/opihi/cmd.astro/imfit-fgauss-pol.c

    r42078 r42821  
    5151  set_variable ("Zpk",  par[5]);
    5252  set_variable ("Sg",   par[6]);
     53
     54  /*
     55  set_variable ("dXg",   dpar[0]);
     56  set_variable ("dYg",   dpar[1]);
     57  set_variable ("dSXg",  NAN);
     58  set_variable ("dSYg",  NAN);
     59  set_variable ("dSXYg", NAN);
     60  set_variable ("dZpk",  dpar[5]);
     61  set_variable ("dSg",   dpar[6]);
     62  */
    5363}
    5464
  • trunk/Ohana/src/opihi/cmd.astro/imfit-fgauss.c

    r42078 r42821  
    3939  set_variable ("Zpk",  par[5]);
    4040  set_variable ("Sg",   par[6]);
     41
     42/*
     43  set_variable ("dXg",   dpar[0]);
     44  set_variable ("dYg",   dpar[1]);
     45  set_variable ("dSXg",  2.35 / dpar[2]);
     46  set_variable ("dSYg",  2.35 / dpar[3]);
     47  set_variable ("dSXYg", dpar[4]);
     48  set_variable ("dZpk",  dpar[5]);
     49  set_variable ("dSg",   dpar[6]);
     50*/
    4151}
    4252
  • trunk/Ohana/src/opihi/cmd.astro/imfit-pgauss-psf.c

    r39457 r42821  
    3535  set_variable ("Zpk",  par[2]);
    3636  set_variable ("Sg",   par[3]);
     37
     38/*
     39  set_variable ("dXg",   dpar[0]);
     40  set_variable ("dYg",   dpar[1]);
     41  set_variable ("dZpk",  dpar[2]);
     42  set_variable ("dSg",   dpar[3]);
     43*/
    3744}
    3845
  • trunk/Ohana/src/opihi/cmd.astro/imfit-pgauss.c

    r39457 r42821  
    3737  set_variable ("Zpk",  par[5]);
    3838  set_variable ("Sg",   par[6]);
     39
     40/*
     41  set_variable ("dXg",   dpar[0]);
     42  set_variable ("dYg",   dpar[1]);
     43  set_variable ("dSXg",  2.35 / dpar[2]);
     44  set_variable ("dSYg",  2.35 / dpar[3]);
     45  set_variable ("dSXYg", dpar[4]);
     46  set_variable ("dZpk",  dpar[5]);
     47  set_variable ("dSg",   dpar[6]);
     48*/
    3949}
    4050
  • trunk/Ohana/src/opihi/cmd.astro/imfit-q2gauss.c

    r42078 r42821  
    4141  set_variable ("Sg",   par[6]);
    4242  set_variable ("Sr", par[7]);
     43
     44/*
     45  set_variable ("dXg",   dpar[0]);
     46  set_variable ("dYg",   dpar[1]);
     47  set_variable ("dSXg",  2.35 / dpar[2]);
     48  set_variable ("dSYg",  2.35 / dpar[3]);
     49  set_variable ("dSXYg", dpar[4]);
     50  set_variable ("dZpk",  dpar[5]);
     51  set_variable ("dSg",   dpar[6]);
     52  set_variable ("dSr",   dpar[7]);
     53*/
    4354}
    4455
  • trunk/Ohana/src/opihi/cmd.astro/imfit-qfgauss.c

    r39457 r42821  
    4141  set_variable ("Zpk",  par[5]);
    4242  set_variable ("Sg",   par[6]);
     43
     44/*
     45  set_variable ("dXg",   dpar[0]);
     46  set_variable ("dYg",   dpar[1]);
     47  set_variable ("dSXg",  2.35 / dpar[2]);
     48  set_variable ("dSYg",  2.35 / dpar[3]);
     49  set_variable ("dSXYg", dpar[4]);
     50  set_variable ("dZpk",  dpar[5]);
     51  set_variable ("dSg",   dpar[6]);
     52*/
    4353}
    4454
  • trunk/Ohana/src/opihi/cmd.astro/imfit-qgauss-psf.c

    r39457 r42821  
    3838  set_variable ("Zpk", par[2]);
    3939  set_variable ("Sg",  par[3]);
     40
     41  /*
     42  set_variable ("dXg",  dpar[0]);
     43  set_variable ("dYg",  dpar[1]);
     44  set_variable ("dZpk", dpar[2]);
     45  set_variable ("dSg",  dpar[3]);
     46  */
    4047}
    4148
  • trunk/Ohana/src/opihi/cmd.astro/imfit-qgauss.c

    r42078 r42821  
    4141  set_variable ("Sg",   par[6]);
    4242  set_variable ("Sr",   par[7]);
     43
     44/*
     45  set_variable ("dXg",   dpar[0]);
     46  set_variable ("dYg",   dpar[1]);
     47  set_variable ("dSXg",  2.35 / dpar[2]);
     48  set_variable ("dSYg",  2.35 / dpar[3]);
     49  set_variable ("dSXYg", dpar[4]);
     50  set_variable ("dZpk",  dpar[5]);
     51  set_variable ("dSg",   dpar[6]);
     52  set_variable ("dSr",   dpar[7]);
     53*/
    4354}
    4455
  • trunk/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c

    r42078 r42821  
    4242  set_variable ("Sg",   par[6]);
    4343  set_variable ("Npow", par[7]);
     44
     45/*
     46  set_variable ("dXg",   dpar[0]);
     47  set_variable ("dYg",   dpar[1]);
     48  set_variable ("dSXg",  2.35 / dpar[2]);
     49  set_variable ("dSYg",  2.35 / dpar[3]);
     50  set_variable ("dSXYg", dpar[4]);
     51  set_variable ("dZpk",  dpar[5]);
     52  set_variable ("dSg",   dpar[6]);
     53  set_variable ("dNpow",   dpar[7]);
     54*/
    4455}
    4556
  • trunk/Ohana/src/opihi/cmd.astro/imfit-r2gauss.c

    r42078 r42821  
    8585  set_variable ("SYf", 2.35 * sqrt(2.0) / par[8]);
    8686  set_variable ("SXYf", par[9]);
     87
     88/*
     89  set_variable ("dXg",   dpar[0]);
     90  set_variable ("dYg",   dpar[1]);
     91  set_variable ("dSXg",  2.35 * sqrt(2.0) / dpar[2]);
     92  set_variable ("dSYg",  2.35 * sqrt(2.0) / dpar[3]);
     93  set_variable ("dSXYg", dpar[4]);
     94  set_variable ("dZpk",  dpar[5]);
     95  set_variable ("dSg",   dpar[6]);
     96  set_variable ("dSXf", 2.35 * sqrt(2.0) / dpar[7]);
     97  set_variable ("dSYf", 2.35 * sqrt(2.0) / dpar[8]);
     98  set_variable ("dSXYf", dpar[9]);
     99*/
    87100}
  • trunk/Ohana/src/opihi/cmd.astro/imfit-rgauss.c

    r42078 r42821  
    4242  set_variable ("Sg",   par[6]);
    4343  set_variable ("Sr",   par[7]);
     44
     45/*
     46  set_variable ("dXg",   dpar[0]);
     47  set_variable ("dYg",   dpar[1]);
     48  set_variable ("dSXg",  2.35 / dpar[2]);
     49  set_variable ("dSYg",  2.35 / dpar[3]);
     50  set_variable ("dSXYg", dpar[4]);
     51  set_variable ("dZpk",  dpar[5]);
     52  set_variable ("dSg",   dpar[6]);
     53  set_variable ("dSr",   dpar[7]);
     54*/
    4455}
    4556
  • trunk/Ohana/src/opihi/cmd.astro/imfit-sgauss.c

    r39457 r42821  
    4949  set_variable ("SYf", 2.35 / par[8]);
    5050  set_variable ("SXYf", par[9]);
     51
     52/*
     53  set_variable ("dXg",   dpar[0]);
     54  set_variable ("dYg",   dpar[1]);
     55  set_variable ("dSXg",  2.35 / dpar[2]);
     56  set_variable ("dSYg",  2.35 / dpar[3]);
     57  set_variable ("dSXYg", dpar[4]);
     58  set_variable ("dZpk",  dpar[5]);
     59  set_variable ("dSg",   dpar[6]);
     60  set_variable ("dSXf", 2.35 / dpar[7]);
     61  set_variable ("dSYf", 2.35 / dpar[8]);
     62  set_variable ("dSXYf", dpar[9]);
     63*/
    5164}
    5265
  • trunk/Ohana/src/opihi/cmd.astro/imfit-tgauss.c

    r39457 r42821  
    8080  set_variable ("SYf",  2.35 * sqrt(2.0) / par[8]);
    8181  set_variable ("SXYf", par[9]);
     82
     83/*
     84  set_variable ("dXg",   dpar[0]);
     85  set_variable ("dYg",   dpar[1]);
     86  set_variable ("dSXg",  2.35 * sqrt(2.0) / dpar[2]);
     87  set_variable ("dSYg",  2.35 * sqrt(2.0) / dpar[3]);
     88  set_variable ("dSXYg", dpar[4]);
     89  set_variable ("dZpk",  dpar[5]);
     90  set_variable ("dSg",   dpar[6]);
     91  set_variable ("dSXf",  2.35 * sqrt(2.0) / dpar[7]);
     92  set_variable ("dSYf",  2.35 * sqrt(2.0) / dpar[8]);
     93  set_variable ("dSXYf", dpar[9]);
     94*/
    8295}
  • trunk/Ohana/src/opihi/cmd.astro/imfit-vgauss.c

    r39457 r42821  
    6969  set_variable ("SXf", par[7]);
    7070  set_variable ("SYf", par[8]);
     71
     72  /*
     73  set_variable ("dXg",   dpar[0]);
     74  set_variable ("dYg",   dpar[1]);
     75  set_variable ("dSXg",  2.35 / dpar[2]);
     76  set_variable ("dSYg",  2.35 / dpar[3]);
     77  set_variable ("dSXYg", dpar[4]);
     78  set_variable ("dZpk",  dpar[5]);
     79  set_variable ("dSg",   dpar[6]);
     80  set_variable ("dSXf",  dpar[7]);
     81  set_variable ("dSYf",  dpar[8]);
     82  */
    7183}
  • trunk/Ohana/src/opihi/cmd.astro/imfit.c

    r42078 r42821  
    1313  }
    1414
     15  Buffer *var = NULL;
     16  if ((N = get_argument (argc, argv, "-var-image"))) {
     17    remove_argument (N, &argc, argv);
     18    var = SelectBuffer (argv[N], OLDBUFFER, TRUE);
     19    if (!var) {
     20      gprint (GP_ERR, "unknown buffer for variance %s\n", argv[N]);
     21      FREE (Save);
     22      return (FALSE);
     23    }
     24    remove_argument (N, &argc, argv);
     25  }
     26
    1527  int Insert = FALSE;
    1628  if ((N = get_argument (argc, argv, "-insert"))) {
     
    1830    Insert = TRUE;
    1931    if (Save) { gprint (GP_ERR, "-save and -insert are mutually exclusive\n"); free (Save); return (FALSE); }
     32    if (var)  { gprint (GP_ERR, "-save and -var-image are mutually exclusive\n"); return (FALSE); }
    2033  }
    2134
     
    4053    Gain = atof(argv[N]);
    4154    remove_argument (N, &argc, argv);
     55    if (var) { gprint (GP_ERR, "warning: -var-image selected, -gain will have no effect\n"); }
    4256  }
    4357
     
    4862    RDnoise = atof(argv[N]);
    4963    remove_argument (N, &argc, argv);
     64    if (var) { gprint (GP_ERR, "warning: -var-image selected, -rdnoise will have no effect\n"); }
    5065  }
    5166
     
    140155    if (j + sy >= Ny) continue;
    141156    float *V = (float *)(buf[0].matrix.buffer) + (j+sy)*buf[0].matrix.Naxis[0] + sx;
     157    float *dV = (var) ? ((float *)(var[0].matrix.buffer) + (j+sy)*var[0].matrix.Naxis[0] + sx) : NULL;
    142158    for (int i = 0; i < dX; i++) {
    143159      if (i + sx < 0) continue;
     
    145161      if (*V > SatThreshold) goto next; // skip pixels above threshold
    146162      if (!isfinite(*V)) goto next; // skip nan pixels
    147       dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise
     163      if (dV) {
     164        dz[N] = *dV;
     165      } else {
     166        dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise
     167      }
    148168      if (dz[N] <= 0) goto next;
    149169      dz[N] = 1.0 / dz[N];
     
    154174    next:
    155175      V++;
     176      if (dV) { dV++; }
    156177    }
    157178  }
  • trunk/Ohana/src/opihi/cmd.astro/mkgauss.c

    r41341 r42821  
    1111  Buffer *buf;
    1212
     13  // if TRUE, integrated flux is Flux, else Io is Flux
    1314  int Normalize = FALSE;
    1415  if ((N = get_argument (argc, argv, "-norm"))) {
     
    1617    remove_argument (N, &argc, argv);
    1718  }   
     19
     20  // Io or integrated flux (depending on value of Normalize)
     21  float Flux = 1.0;
     22  if ((N = get_argument (argc, argv, "-flux"))) {
     23    remove_argument (N, &argc, argv);
     24    Flux = atof(argv[N]);
     25    remove_argument (N, &argc, argv);
     26  }   
     27
    1828
    1929  // this should be Nx/2, Ny/2 if not set
     
    2939  if ((argc < 3) || (argc > 5)) {
    3040    gprint (GP_ERR, "USAGE: mkgauss (buffer) (sigma) [[sy/sx] angle]\n");
     41    gprint (GP_ERR, " -flux flux : integral or peak is flux (default is 1.0)\n");
     42    gprint (GP_ERR, " -norm : integral is flux (else peak)\n");
     43    gprint (GP_ERR, " -c X Y : place center at X,Y\n");
    3144    return (FALSE);
    3245  }
     
    6679  /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */
    6780
    68   double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0;
     81  double Io = Normalize ? Flux / (2.0 * M_PI * Sig_x * Sig_y) : Flux;
    6982
    7083  in = (float *) buf[0].matrix.buffer;
  • trunk/Ohana/src/opihi/cmd.astro/region.c

    r42078 r42821  
    160160    if (!strcasecmp (argv[CtypeArg], "PAR")) { strcpy (graphmode.coords.ctype, "DEC--PAR"); goto got_ctype; }
    161161    if (!strcasecmp (argv[CtypeArg], "MOL")) { strcpy (graphmode.coords.ctype, "DEC--MOL"); goto got_ctype; }
     162    if (!strcasecmp (argv[CtypeArg], "LIN")) { strcpy (graphmode.coords.ctype, "DEC--LIN"); goto got_ctype; }
     163    if (!strcasecmp (argv[CtypeArg], "CAR")) { strcpy (graphmode.coords.ctype, "DEC--CAT"); goto got_ctype; }
    162164    gprint (GP_ERR, "ERROR: invalid projection type %s\n", argv[CtypeArg]);
    163     gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL\n");
     165    gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL, LIN, CAR\n");
    164166    return FALSE;
    165167  }
  • trunk/Ohana/src/opihi/cmd.data/Makefile

    r42456 r42821  
    6767$(SRC)/ungridify.$(ARCH).o     \
    6868$(SRC)/histogram.$(ARCH).o      \
     69$(SRC)/histbins.$(ARCH).o       \
    6970$(SRC)/tdhistogram.$(ARCH).o    \
    7071$(SRC)/hermitian1d.$(ARCH).o    \
     
    8081$(SRC)/imresample.$(ARCH).o     \
    8182$(SRC)/imcollapse.$(ARCH).o     \
     83$(SRC)/impoints.$(ARCH).o       \
    8284$(SRC)/integrate.$(ARCH).o      \
    8385$(SRC)/interpolate.$(ARCH).o    \
  • trunk/Ohana/src/opihi/cmd.data/init.c

    r42456 r42821  
    5656int ungridify        PROTO((int, char **));
    5757int histogram        PROTO((int, char **));
     58int histbins         PROTO((int, char **));
    5859int tdhistogram      PROTO((int, char **));
    5960int hermitian1d      PROTO((int, char **));
     
    7071int imresample       PROTO((int, char **));
    7172int imcollapse       PROTO((int, char **));
     73int impoints         PROTO((int, char **));
    7274int integrate        PROTO((int, char **));
    7375int interpolate      PROTO((int, char **));
     
    265267  {1, "header",       header,           "print image header"},
    266268  {1, "histogram",    histogram,        "generate histogram from vector"},
     269  {1, "histbins",     histbins,         "generate histogram from vector, bins specified by vectors"},
    267270  {1, "tdhistogram",  tdhistogram,      "generate 2D histogram image from vector set"},
    268271  {1, "hermitian1d",  hermitian1d,      "generate 1-D Hermitian Polynomial"},
     
    281284  {1, "imconvolve",   imconvolve,       "full 2D real-space convolution"},
    282285  {1, "imstats",      imstats,          "statistics on a portion of an image"},
     286  {1, "impoints",     impoints,         "insert points into an image by vector pair"},
    283287  {1, "integrate",    integrate,        "integrate a vector"},
    284288  {1, "interpolate_presort",  interpolate_presort,      "interpolate between vector pairs"},
  • trunk/Ohana/src/opihi/cmd.data/interpolate_presort.c

    r41341 r42821  
    1717  /** check basic syntax **/
    1818  if (argc != 5) {
    19     gprint (GP_ERR, "USAGE: interpolate Xi Yi Xo Yo\n");
     19    gprint (GP_ERR, "USAGE: interpolate Xi Yi Xo Yo [-fill-ends]\n");
    2020    gprint (GP_ERR, "  Xi Yi - sorted reference vectors\n");
    2121    gprint (GP_ERR, "  Xo    - output positions (vector)\n");
     
    2323    gprint (GP_ERR, "  (vectors must be pre-sorted)\n");
    2424    gprint (GP_ERR, "  (use 'threshold' to interpolate to a value)\n");
     25    gprint (GP_ERR, "  -fill-ends : values outside of range are set to end-point values\n");
    2526    return (FALSE);
    2627  }
  • trunk/Ohana/src/opihi/cmd.data/vgroup.c

    r33963 r42821  
    7070  ALLOCATE (values, double, xin[0].Nelements);
    7171
    72   for (i = 0; i < xout[0].Nelements - 1; i++) {
     72  // if we specify binsize, then we need to examine all bins
     73  int Nout = isnan(binsize) ? xout[0].Nelements - 1 : xout[0].Nelements;
     74  for (i = 0; i < Nout; i++) {
    7375    if (isnan(binsize)) {
    7476      xmin = xout[0].elements.Flt[i];
     
    8183    N = 0;
    8284    for (j = 0; j < xin[0].Nelements; j++) {
    83       if (xin[0].elements.Flt[j] < xmin) continue;
    84       if (xin[0].elements.Flt[j] > xmax) continue;
     85      if (xin[0].elements.Flt[j] <  xmin) continue;
     86      if (xin[0].elements.Flt[j] >= xmax) continue;
    8587      if (yin) {
    8688        values[N] = yin[0].elements.Flt[j];
  • trunk/Ohana/src/opihi/dvo/avperiodogram.c

    r40574 r42821  
    274274        // The first 3 values[] / fields[] will be time, mag, dmag
    275275        for (off_t n = 0; n < Nmfields; n++) {
    276           mvalues[n] = dbExtractMeasures (average, secfilt, &measure[k], NULL, NULL, &mfields[n]);
     276          mvalues[n] = dbExtractMeasures (average, secfilt, NULL, &measure[k], NULL, NULL, NULL, &mfields[n]);
    277277        }
    278278        if (!dbBooleanCond (mstack, Nmstack, mvalues)) continue;
  • trunk/Ohana/src/opihi/dvo/avperiodomatch.c

    r41379 r42821  
    302302        // The first 3 values[] / fields[] will be time, mag, dmag
    303303        for (off_t n = 0; n < Nmfields; n++) {
    304           mvalues[n] = dbExtractMeasures (average, secfilt, &measure[k], NULL, NULL, &mfields[n]);
     304          mvalues[n] = dbExtractMeasures (average, secfilt, NULL, &measure[k], NULL, NULL, NULL, &mfields[n]);
    305305        }
    306306        if (!dbBooleanCond (mstack, Nmstack, mvalues)) continue;
  • trunk/Ohana/src/opihi/dvo/avselect.c

    r41341 r42821  
    1717  int VERBOSE;
    1818  char name[1024];
    19   float RADIUS;
     19  opihi_flt RADIUS;
    2020
    2121  Catalog catalog;
    2222
    2323  Vector **vec, **invec, *RAvec, *DECvec, *IDXvec, *RADvec;
     24  Vector *RINvec = NULL;
    2425  dbField *fields;
    2526  dbValue *values;
     
    102103  }
    103104
    104   RADIUS = atof (argv[1]);
    105 
    106   /* load regions which contain all supplied RA,DEC coordinates */
     105  if (SelectScalar (argv[1], &RADIUS)) {
     106    remove_argument (1, &argc, argv);
     107  } else {
     108    gprint (GP_ERR, " RADIUS must be a numerical value\n");
     109    goto help;
     110    if ((RINvec = SelectVector (argv[1], ANYVECTOR, TRUE)) == NULL) goto help;
     111    RADIUS = 0.0; // find the max radius for region selection:
     112    for (i = 0; i < RINvec->Nelements; i++) {
     113      RADIUS = MAX(RINvec->elements.Flt[i], RADIUS);
     114    }
     115  }
     116
     117  /* load regions which contain all supplied RA,DEC coordinates (for RINvec, uses max radius) */
    107118  if ((skylist = SelectRegionsByCoordVectorsAndRadius (RAvec, DECvec, RADIUS/3600.0)) == NULL) goto escape;
    108119
     
    167178    return status;
    168179  }
    169 
    170   RADIUS = atof (argv[1]);
    171   remove_argument (1, &argc, argv);
    172180
    173181  // parse the fields to be extracted and returned
  • trunk/Ohana/src/opihi/dvo/gstar.c

    r41427 r42821  
    401401          gprint (GP_LOG, "%20s ",     date);
    402402          gprint (GP_LOG, "%f   ",     catalog.average[k].Trange / 86400.0);
     403
     404          gprint (GP_LOG, "%ld ", catalog.average[k].extID);
     405          // gprint (GP_LOG, "0x%16x ", catalog.average[k].extID);
    403406        }
    404407
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r42103 r42821  
    221221  }
    222222
     223  int needLensobj = dbFieldNeedLensobj (fields, Nfields);
    223224  int needLensing = dbFieldNeedLensing (fields, Nfields);
    224225  int needStarpar = dbFieldNeedStarpar (fields, Nfields, FALSE);
     226  int needGalphot = dbFieldNeedGalphot (fields, Nfields);
    225227
    226228  // the lensing table does not have a good index to/from the measure table.  if we need lensing
     
    247249    catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT;
    248250    catalog.catflags |= needLensing ? DVO_LOAD_LENSING : DVO_SKIP_LENSING;
     251    catalog.catflags |= needLensobj ? DVO_LOAD_LENSOBJ : DVO_SKIP_LENSOBJ;
    249252    catalog.catflags |= needStarpar ? DVO_LOAD_STARPAR : DVO_SKIP_STARPAR;
     253    catalog.catflags |= needGalphot ? DVO_LOAD_GALPHOT : DVO_SKIP_GALPHOT;
    250254    catalog.Nsecfilt = Nsecfilt;
    251255
     
    297301        dbExtractMeasuresInitMeas (); // reset counters for saved fields  (costs very little
    298302
    299         int Nstarpar = average->starparOffset;
    300         StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[Nstarpar] : NULL;
     303        int nStar = average->starparOffset;
     304        StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[nStar] : NULL;
     305
     306        int nLens = average->lensobjOffset;
     307        Lensobj *lensobj = needLensobj && average->Nlensobj ? &catalog.lensobj[nLens] : NULL;
     308
     309        int nPhot = average->galphotOffset;
     310        GalPhot *galphot = needGalphot && average->Ngalphot ? &catalog.galphot[nPhot] : NULL;
    301311
    302312        Lensing *lensing = NULL;
     
    313323
    314324        for (n = 0; n < Nfields; n++) {
    315           values[n] = dbExtractMeasures (average, secfilt, &catalog.measure[m], lensing, starpar, &fields[n]);
     325          values[n] = dbExtractMeasures (average, secfilt, lensobj, &catalog.measure[m], lensing, starpar, galphot, &fields[n]);
    316326        }
    317327        // fprintf (stderr, "object: ave: %f, cat: %f, averef %d\n", fields[n].name, values[2], values[3], catalog.measure[m].averef);
  • trunk/Ohana/src/opihi/dvo/mmatch.c

    r41341 r42821  
    232232  ALLOCATE (index, off_t, Nelem);
    233233
    234   // int needLensing = dbFieldNeedLensing (fields, Nfields);
     234  int needLensobj = dbFieldNeedLensobj (fields, Nfields);
     235//int needLensing = dbFieldNeedLensing (fields, Nfields);
    235236  int needStarpar = dbFieldNeedStarpar (fields, Nfields, FALSE);
     237  int needGalphot = dbFieldNeedGalphot (fields, Nfields);
    236238
    237239  // grab data from all selected sky regions
     
    249251    catalog.filename = HOST_ID ? hostfile : skylist[0].filename[i];
    250252    catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT | DVO_LOAD_MEASURE;
     253    catalog.catflags |= needLensobj ? DVO_LOAD_LENSOBJ : DVO_SKIP_LENSOBJ;
    251254    catalog.catflags |= needStarpar ? DVO_LOAD_STARPAR : DVO_SKIP_STARPAR;
     255    catalog.catflags |= needGalphot ? DVO_LOAD_GALPHOT : DVO_SKIP_GALPHOT;
    252256    catalog.Nsecfilt = Nsecfilt;
    253257
     
    289293        Average *average = &catalog.average[Ncat];
    290294
    291         int Nstarpar = average->starparOffset;
    292         StarPar *starpar = needStarpar ? &catalog.starpar[Nstarpar] : NULL;
     295        int nStar = average->starparOffset;
     296        StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[nStar] : NULL;
     297
     298        int nLens = average->lensobjOffset;
     299        Lensobj *lensobj = needLensobj && average->Nlensobj ? &catalog.lensobj[nLens] : NULL;
     300
     301        int nPhot = average->galphotOffset;
     302        GalPhot *galphot = needGalphot && average->Ngalphot ? &catalog.galphot[nPhot] : NULL;
    293303
    294304        // int Nlensing = average->lensobjOffset;
     
    299309
    300310        for (n = 0; n < Nfields; n++) {
    301           values[n] = dbExtractMeasures (average, secfilt, &catalog.measure[m], NULL, starpar, &fields[n]);
     311          values[n] = dbExtractMeasures (average, secfilt, lensobj, &catalog.measure[m], NULL, starpar, galphot, &fields[n]);
    302312        }
    303313
  • trunk/Ohana/src/opihi/dvo/mmextract.c

    r39457 r42821  
    174174  }
    175175
    176   // int needLensing = dbFieldNeedLensing (fields, Nfields);
     176  int needLensobj = dbFieldNeedLensobj (fields, Nfields);
     177//int needLensing = dbFieldNeedLensing (fields, Nfields);
    177178  int needStarpar = dbFieldNeedStarpar (fields, Nfields, FALSE);
     179  int needGalphot = dbFieldNeedGalphot (fields, Nfields);
    178180
    179181  // grab data from all selected sky regions
     
    185187    catalog.filename = skylist[0].filename[i];
    186188    catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT;
     189//  catalog.catflags |= needLensing ? DVO_LOAD_LENSING : DVO_SKIP_LENSING;
     190    catalog.catflags |= needLensobj ? DVO_LOAD_LENSOBJ : DVO_SKIP_LENSOBJ;
     191    catalog.catflags |= needStarpar ? DVO_LOAD_STARPAR : DVO_SKIP_STARPAR;
     192    catalog.catflags |= needGalphot ? DVO_LOAD_GALPHOT : DVO_SKIP_GALPHOT;
    187193    catalog.Nsecfilt = Nsecfilt;
    188194
     
    220226        Average *average = &catalog.average[j];
    221227
    222         int Nstarpar = average->starparOffset;
    223         StarPar *starpar = needStarpar ? &catalog.starpar[Nstarpar] : NULL;
     228        int nStar = average->starparOffset;
     229        StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[nStar] : NULL;
     230
     231        int nLens = average->lensobjOffset;
     232        Lensobj *lensobj = needLensobj && average->Nlensobj ? &catalog.lensobj[nLens] : NULL;
     233
     234        int nPhot = average->galphotOffset;
     235        GalPhot *galphot = needGalphot && average->Ngalphot ? &catalog.galphot[nPhot] : NULL;
    224236
    225237        // int Nlensing = average->lensobjOffset;
     
    231243        for (n = 0; n < Nfields; n++) {
    232244          // values needs to be a pointer to a type with FLT and INT (with a union, we would save a bit of memory...)
    233           values[n] = dbExtractMeasures (average, secfilt, &catalog.measure[m], NULL, starpar, &fields[n]);
     245          values[n] = dbExtractMeasures (average, secfilt, lensobj, &catalog.measure[m], NULL, starpar, galphot, &fields[n]);
    234246        }
    235247        // fprintf (stderr, "object: ave: %f, cat: %f, averef %d\n", fields[n].name, values[2], values[3], catalog.measure[m].averef);
  • trunk/Ohana/src/opihi/lib.data/mrq2dmin.c

    r41715 r42821  
    1717static opihi_flt *parmax = NULL;
    1818
     19/** only used locally **/
    1920opihi_flt mrq2dcof (opihi_flt *x, opihi_flt *t, opihi_flt *y, opihi_flt *dy, int Npts,
    2021              opihi_flt *par, int Npar, opihi_flt **ta, opihi_flt **tb,
     
    6061}
    6162
     63/** only used in imfit-test.c ?? **/
    6264opihi_flt mrq2dchi (opihi_flt *x, opihi_flt *t, opihi_flt *y, opihi_flt *dy, int Npts,
    6365                opihi_flt *par, int Npar,
     
    126128    chisq = ochisq;
    127129  }
     130
     131  /* note that the parameter errors are sqrt(alpha[j][j]) */
    128132
    129133  return (chisq);
  • trunk/Ohana/src/opihi/lib.data/spline.c

    r42332 r42821  
    113113  opihi_flt dx, a, b, value;
    114114 
    115   // saturate correction at high and low ends
    116   if (X < x[0]) return y[0];
    117   if (X > x[N-1]) return y[N-1];
     115  // linear extrapolation past endpoints
     116  if (X < x[0]) {
     117    hi = 1;
     118    lo = 0;
     119    goto evaluate;
     120    // alternative: saturate correction at high and low ends
     121    // return y[0];
     122  }
     123  if (X > x[N-1]) {
     124    hi = N - 1;
     125    lo = N - 2;
     126    goto evaluate;
     127    // alternative: saturate correction at high and low ends
     128    // return y[N-1];
     129  }
    118130
    119131  /* find correct element in array (x must be sorted) */
     
    128140    }
    129141  }
     142
     143evaluate:
    130144
    131145  /* error condition: duplicate abssisca */
  • trunk/Ohana/src/opihi/lib.shell/convert_to_RPN.c

    r42080 r42821  
    7777    if (!strcmp (argv[i], "isflt"))  { type = ST_UNARY; goto gotit; }
    7878    if (!strcmp (argv[i], "length")) { type = ST_UNARY; goto gotit; }
     79    if (!strcmp (argv[i], "toupper")) { type = ST_UNARY; goto gotit; }
     80    if (!strcmp (argv[i], "tolower")) { type = ST_UNARY; goto gotit; }
    7981
    8082    /* binary operations */
  • trunk/Ohana/src/opihi/lib.shell/stack_math.c

    r42389 r42821  
    16151615  int i, Nx;
    16161616 
     1617  // handle string vectors in the L_unary function
     1618  if (V1->vector->type == OPIHI_STR) {
     1619    int status = L_unary (OUT, V1, op);
     1620    return status;
     1621  }
     1622
    16171623  Nx = V1[0].vector[0].Nelements;
    16181624
    16191625  OUT[0].vector = InitVector ();
    16201626  OUT[0].type = ST_VECTOR_TMP; /*** <<--- says this is a temporary matrix ***/
    1621 
    1622   if (V1->vector->type == OPIHI_STR) {
    1623     ResetVector (OUT->vector, V1->vector->type, V1->vector->Nelements);
    1624     for (i = 0; i < V1->vector->Nelements; i++) {
    1625       OUT->vector->elements.Str[i] = strcreate (V1->vector->elements.Str[i]);
    1626     }
    1627     goto escape;
    1628   }
    16291627
    16301628# define V_FUNC(OP,FTYPE) {                                             \
     
    17441742    for (int i = 0; i < Nx; i++) {                     
    17451743      Ov[i] = strcreate (Iv[i]);
     1744    }                                                                   
     1745    goto escape;                                                       
     1746  }
     1747  if (!strcmp (op, "toupper")) {
     1748    for (int i = 0; i < Nx; i++) {                     
     1749      Ov[i] = strcreate (Iv[i]);
     1750      for (int j = 0; Ov[i][j]; j++) {
     1751        Ov[i][j] = toupper ((unsigned int) Ov[i][j]);
     1752      }
     1753    }                                                                   
     1754    goto escape;                                                       
     1755  }
     1756  if (!strcmp (op, "tolower")) {
     1757    for (int i = 0; i < Nx; i++) {                     
     1758      Ov[i] = strcreate (Iv[i]);
     1759      for (int j = 0; Ov[i][j]; j++) {
     1760        Ov[i][j] = tolower ((unsigned int) Ov[i][j]);
     1761      }
    17461762    }                                                                   
    17471763    goto escape;                                                       
Note: See TracChangeset for help on using the changeset viewer.