IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 24, 2015, 6:01:22 AM (11 years ago)
Author:
eugene
Message:

test for parallel dvo; add option to print full filename (automatically parallel or local); add option to scale cdensify image by a vectors

File:
1 edited

Legend:

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

    r39233 r39294  
    1111  Buffer *bf;
    1212  Vector *vr, *vd;
    13   opihi_flt *r, *d, x, y;
     13  opihi_flt x, y;
    1414  int kapa;
    1515  Graphdata graphmode;
     
    2424  double Rmin = graphmode.coords.crval1 - 182.0;
    2525  double Rmax = graphmode.coords.crval1 + 182.0;
     26
     27  Vector *vv = NULL;
     28  if ((N = get_argument (argc, argv, "-value"))) {
     29    remove_argument (N, &argc, argv);
     30    if ((vv = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE);   
     31    remove_argument (N, &argc, argv);
     32  }
    2633
    2734  float scale = 0.0;
     
    4552    gprint (GP_ERR, "USAGE: cdensify buffer R D\n");
    4653    gprint (GP_ERR, " option: -psf [dot] (circle) (square) (gauss)\n");
     54    gprint (GP_ERR, " other options:\n");
     55    gprint (GP_ERR, "   -raw : do not renormalize PSF\n");
     56    gprint (GP_ERR, "   -scale : spatial scale factor for PSF (radius, half-width, or sigma)\n");
     57    gprint (GP_ERR, "   -value (vector) : multiply sum by the given vector\n");
    4758    return (FALSE);
    4859  }
     
    5364
    5465  if (vr[0].Nelements != vd[0].Nelements) return (FALSE);
     66
     67  if (vv) {
     68    if (vv[0].Nelements != vr[0].Nelements) {
     69      gprint (GP_ERR, "mis-match in vector lengths\n");
     70      return FALSE;
     71    }
     72  }
    5573
    5674  REQUIRE_VECTOR_FLT (vr, FALSE);
     
    99117  InitCoords (&coords, "DEC--TAN");
    100118
    101   r = vr[0].elements.Flt;
    102   d = vd[0].elements.Flt;
     119  opihi_flt *r = vr[0].elements.Flt;
     120  opihi_flt *d = vd[0].elements.Flt;
     121
     122  opihi_flt *Fs = vv ? vv[0].elements.Flt : NULL;
     123  opihi_int *Is = vv ? vv[0].elements.Int : NULL;
     124  int isFloatScale = (vv && vv[0].type == OPIHI_FLT);
     125
    103126  val = (float *)bf[0].matrix.buffer;
     127
    104128  for (i = 0; i < vr[0].Nelements; i++, r++, d++) {
    105129    double rn = ohana_normalize_angle (*r);
     
    108132    coords.crval1 = rn;
    109133    coords.crval2 = *d;
     134
     135    float F = 1.0;
     136    if (vv) {
     137      F = isFloatScale ? Fs[i] : Is[i];
     138    }
    110139
    111140    switch (PSFTYPE) {
     
    118147        if (Xb < 0) continue;
    119148        if (Yb < 0) continue;
    120         val[Xb + Yb*Nx] ++;
     149        if (vv) {
     150          val[Xb + Yb*Nx] += F;
     151        } else {
     152          val[Xb + Yb*Nx] ++;
     153        }
    121154        break;
    122155      case IS_SQUARE:
     
    134167            if (Xb < 0) continue;
    135168            if (Yb < 0) continue;
    136             val[Xb + Yb*Nx] += Normalize ? fSquare : 1.0;
     169            if (vv) {
     170              val[Xb + Yb*Nx] += Normalize ? fSquare*F : F;
     171            } else {
     172              val[Xb + Yb*Nx] += Normalize ? fSquare : 1.0;
     173            }
    137174          }
    138175        }
     
    154191            if (Xb < 0) continue;
    155192            if (Yb < 0) continue;
    156             val[Xb + Yb*Nx] += Normalize ? fCircle : 1.0;
     193            if (vv) {
     194              val[Xb + Yb*Nx] += Normalize ? fCircle*F : F;
     195            } else {
     196              val[Xb + Yb*Nx] += Normalize ? fCircle : 1.0;
     197            }
    157198          }
    158199        }
     
    173214            if (Xb < 0) continue;
    174215            if (Yb < 0) continue;
    175             val[Xb + Yb*Nx] += fGauss*exp(-fSigma*r2);
     216            if (vv) {
     217              val[Xb + Yb*Nx] += F*fGauss*exp(-fSigma*r2);
     218            } else {
     219              val[Xb + Yb*Nx] += fGauss*exp(-fSigma*r2);
     220            }
    176221          }
    177222        }
Note: See TracChangeset for help on using the changeset viewer.