Changeset 20857
- Timestamp:
- Nov 30, 2008, 7:45:21 AM (17 years ago)
- Location:
- branches/eam_branch_20081124/Ohana/src/opihi
- Files:
-
- 58 edited
-
cmd.astro/cgrid.c (modified) (1 diff)
-
cmd.astro/cplot.c (modified) (3 diffs)
-
cmd.astro/czplot.c (modified) (4 diffs)
-
cmd.data/grid.c (modified) (1 diff)
-
cmd.data/interpolate.c (modified) (1 diff)
-
cmd.data/lookup.c (modified) (2 diffs)
-
cmd.data/medacc.c (modified) (2 diffs)
-
cmd.data/mget.c (modified) (2 diffs)
-
cmd.data/mset.c (modified) (3 diffs)
-
cmd.data/peak.c (modified) (1 diff)
-
cmd.data/periodogram.c (modified) (3 diffs)
-
cmd.data/plot.c (modified) (1 diff)
-
cmd.data/read_vectors.c (modified) (8 diffs)
-
cmd.data/select.c (modified) (1 diff)
-
cmd.data/sort.c (modified) (3 diffs)
-
cmd.data/subset.c (modified) (2 diffs)
-
cmd.data/svd.c (modified) (1 diff)
-
cmd.data/ungridify.c (modified) (4 diffs)
-
cmd.data/uniq.c (modified) (2 diffs)
-
cmd.data/vbin.c (modified) (1 diff)
-
cmd.data/vclip.c (modified) (3 diffs)
-
cmd.data/vgauss.c (modified) (2 diffs)
-
cmd.data/vgrid.c (modified) (2 diffs)
-
cmd.data/vload.c (modified) (1 diff)
-
cmd.data/vmaxwell.c (modified) (1 diff)
-
cmd.data/vpop.c (modified) (1 diff)
-
cmd.data/vroll.c (modified) (1 diff)
-
cmd.data/vsmooth.c (modified) (5 diffs)
-
cmd.data/vstat.c (modified) (3 diffs)
-
cmd.data/vzload.c (modified) (1 diff)
-
cmd.data/write_vectors.c (modified) (2 diffs)
-
cmd.data/zplot.c (modified) (3 diffs)
-
dvo/Makefile (modified) (1 diff)
-
dvo/avextract.c (modified) (4 diffs)
-
dvo/dbBooleanCond.c (modified) (1 diff)
-
dvo/dbExtractAverages.c (modified) (11 diffs)
-
dvo/dbExtractMeasures.c (modified) (16 diffs)
-
dvo/dbFields.c (modified) (6 diffs)
-
dvo/fitcolors.c (modified) (5 diffs)
-
dvo/images.c (modified) (1 diff)
-
dvo/imbox.c (modified) (1 diff)
-
dvo/imdense.c (modified) (1 diff)
-
dvo/imstats.c (modified) (1 diff)
-
dvo/lcurve.c (modified) (2 diffs)
-
dvo/mextract.c (modified) (5 diffs)
-
dvo/mmextract.c (modified) (9 diffs)
-
dvo/paverage.c (modified) (5 diffs)
-
dvo/pmeasure.c (modified) (4 diffs)
-
dvo/procks.c (modified) (2 diffs)
-
dvo/showtile.c (modified) (1 diff)
-
dvo/simage.c (modified) (1 diff)
-
dvo/skycat.c (modified) (1 diff)
-
include/display.h (modified) (1 diff)
-
include/dvomath.h (modified) (1 diff)
-
include/dvoshell.h (modified) (2 diffs)
-
lib.data/PlotVectors.c (modified) (4 diffs)
-
lib.shell/expand_vectors.c (modified) (2 diffs)
-
lib.shell/parse.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/cgrid.c
r20839 r20857 391 391 graphmode.ptype = 100; /* connect a pair */ 392 392 graphmode.etype = 0; 393 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);393 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 394 394 395 395 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/cplot.c
r20839 r20857 23 23 if ((yvec = SelectVector (argv[2], OLDVECTOR, TRUE)) == NULL) return (FALSE); 24 24 25 REQUIRE_VECTOR_FLT (xvec, FALSE); 26 REQUIRE_VECTOR_FLT (yvec, FALSE); 27 25 28 if (xvec[0].Nelements != yvec[0].Nelements) { 26 29 gprint (GP_ERR, "vectors are not the same length\n"); … … 41 44 Npts = 0; 42 45 for (i = 0; i < Xvec.Nelements; i++, r++, d++) { 43 *r = ohana_normalize_angle (*r);46 *r = ohana_normalize_angle (*r); 44 47 while (*r < Rmin) *r += 360.0; 45 48 while (*r > Rmax) *r -= 360.0; … … 77 80 78 81 graphmode.etype = 0; 79 PlotVectorPair (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);82 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 80 83 81 84 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/czplot.c
r20839 r20857 3 3 int czplot (int argc, char **argv) { 4 4 5 int i, kapa , Npts;5 int i, kapa; 6 6 double min, range, Rmin, Rmax; 7 opihi_flt * in, *out, *r, *d, *x, *y;7 opihi_flt *out, *r, *d, *x, *y; 8 8 Vector Xvec, Yvec, Zvec, *xvec, *yvec, *zvec; 9 9 Graphdata graphmode; … … 26 26 if ((zvec = SelectVector (argv[3], OLDVECTOR, TRUE)) == NULL) return (FALSE); 27 27 28 REQUIRE_VECTOR_FLT (xvec, FALSE); 29 REQUIRE_VECTOR_FLT (yvec, FALSE); 30 28 31 if (xvec[0].Nelements != yvec[0].Nelements) { 29 32 gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[2]); … … 43 46 r = xvec[0].elements.Flt; 44 47 d = yvec[0].elements.Flt; 45 in = zvec[0].elements.Flt;46 48 x = Xvec.elements.Flt; 47 49 y = Yvec.elements.Flt; 48 out = Zvec.elements.Flt; 49 for (i = 0; i < Zvec.Nelements; i++, in++, out++, r++, d++, x++, y++) { 50 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 50 for (i = 0; i < Zvec.Nelements; i++, r++, d++, x++, y++) { 51 51 *r = ohana_normalize_angle (*r); 52 52 RD_to_XY (x, y, *r, *d, &graphmode.coords); 53 } 54 55 out = Zvec.elements.Flt; 56 if (zvec->type == OPIHI_FLT) { 57 opihi_flt *in = zvec[0].elements.Flt; 58 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 59 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 60 } 61 } else { 62 opihi_int *in = zvec[0].elements.Int; 63 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 64 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 65 } 53 66 } 54 67 … … 56 69 graphmode.size = -1; /* point size determined by Zvec */ 57 70 graphmode.etype = 0; 58 Npts = Xvec.Nelements; 59 PlotVectorTriplet (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, Zvec.elements.Flt, &graphmode); 71 PlotVectorTriplet (kapa, Xvec, Yvec, Zvec, &graphmode); 60 72 61 73 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/grid.c
r20839 r20857 193 193 graphmode.ptype = 100; /* connect a pair */ 194 194 graphmode.etype = 0; 195 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);195 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 196 196 197 197 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/interpolate.c
r20839 r20857 21 21 if ((yout = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE); 22 22 23 yout[0].Nelements = xout[0].Nelements; 24 REALLOCATE (yout[0].elements.Flt, opihi_flt, yout[0].Nelements); 23 REQUIRE_VECTOR_FLT (in, FALSE); 24 REQUIRE_VECTOR_FLT (xv, FALSE); 25 REQUIRE_VECTOR_FLT (yv, FALSE); 26 ResetVector (yout, OPIHI_FLT, xout[0].Nelements); 25 27 26 28 dx = xin[0].elements.Flt[1] - xin[0].elements.Flt[0]; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/lookup.c
r20839 r20857 17 17 if ((yv = SelectVector (argv[4], OLDVECTOR, TRUE)) == NULL) return (FALSE); 18 18 19 REQUIRE_VECTOR_FLT (in, FALSE); 20 REQUIRE_VECTOR_FLT (xv, FALSE); 21 REQUIRE_VECTOR_FLT (yv, FALSE); 22 19 23 if (xv[0].Nelements != yv[0].Nelements) { 20 24 gprint (GP_ERR, "unmatched lookup table lengths\n"); … … 22 26 } 23 27 24 out[0].Nelements = in[0].Nelements; 25 REALLOCATE (out[0].elements.Flt, opihi_flt, out[0].Nelements); 28 ResetVector (out, OPIHI_FLT, in[0].Nelements); 26 29 27 30 ip = in[0].elements.Flt; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/medacc.c
r20839 r20857 21 21 if ((out = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE); 22 22 23 REQUIRE_VECTOR_FLT (val, FALSE); 24 REQUIRE_VECTOR_FLT (key, FALSE); 25 23 26 start = atof (argv[4]); 24 27 end = atof (argv[5]); … … 34 37 Nbins = 1 + (int)((end - start) / delta); 35 38 36 out[0].Nelements = Nbins; 37 REALLOCATE (out[0].elements.Flt, opihi_flt, out[0].Nelements); 39 ResetVector (out, OPIHI_FLT, Nbins); 38 40 bzero (out[0].elements.Flt, sizeof(opihi_flt)*out[0].Nelements); 39 41 -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/mget.c
r20839 r20857 33 33 34 34 if (xdir) { 35 vec[0].Nelements =Npix = Nx;36 R EALLOCATE (vec[0].elements.Flt, opihi_flt, Npix);35 Npix = Nx; 36 ResetVector (vec, OPIHI_FLT, Nx); 37 37 if (Nset >= Ny) { 38 38 gprint (GP_ERR, "row out of range\n"); … … 45 45 } 46 46 } else { 47 vec[0].Nelements =Npix = Ny;48 R EALLOCATE (vec[0].elements.Flt, opihi_flt, Npix);47 Npix = Ny; 48 ResetVector (vec, OPIHI_FLT, Ny); 49 49 if (Nset >= Nx) { 50 50 gprint (GP_ERR, "column out of range\n"); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/mset.c
r20839 r20857 4 4 5 5 int i, Nx, Ny, Npix, xdir, Nset; 6 opihi_flt *in;7 6 float *out; 8 7 Buffer *buf; … … 43 42 } 44 43 out = (float *) buf[0].matrix.buffer + Nx*Nset; 45 in = vec[0].elements.Flt; 46 for (i = 0; i < Npix; i++, in++, out++) { 47 *out = *in; 44 45 if (vec[0].type == OPIHI_FLT) { 46 opihi_flt *in = vec[0].elements.Flt; 47 for (i = 0; i < Npix; i++, in++, out++) { 48 *out = *in; 49 } 50 } else { 51 opihi_int *in = vec[0].elements.Int; 52 for (i = 0; i < Npix; i++, in++, out++) { 53 *out = *in; 54 } 48 55 } 49 56 return (TRUE); 57 50 58 } else { 51 59 if (Ny != Npix) { … … 58 66 } 59 67 out = (float *) buf[0].matrix.buffer + Nset; 60 in = vec[0].elements.Flt; 61 for (i = 0; i < Npix; i++, in++, out+=Nx) { 62 *out = *in; 68 69 if (vec[0].type == OPIHI_FLT) { 70 opihi_flt *in = vec[0].elements.Flt; 71 for (i = 0; i < Npix; i++, in++, out+=Nx) { 72 *out = *in; 73 } 74 } else { 75 opihi_int *in = vec[0].elements.Int; 76 for (i = 0; i < Npix; i++, in++, out+=Nx) { 77 *out = *in; 78 } 63 79 } 64 80 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/peak.c
r20839 r20857 26 26 end = atof (argv[4]); 27 27 } else { 28 start = vecx[0].elements.Flt[0];29 end = vecx[0].elements.Flt[vecx[0].Nelements - 1];28 start = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[0] : vecx[0].elements.Int[0]; 29 end = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[vecx[0].Nelements - 1] : vecx[0].elements.Int[vecx[0].Nelements - 1]; 30 30 } 31 31 32 X = vecx[0].elements.Flt; 33 Y = vecy[0].elements.Flt; 32 imax = -1; 34 33 35 imax = -1; 36 xmax = *X; 37 ymax = *Y; 38 for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) { 39 if ((*X >= start) && (*X <= end)) { 40 if ((imax == -1) || (*Y > ymax)) { 41 xmax = *X; 42 ymax = *Y; 43 imax = i; 34 if (vecx[0].type == OPIHI_FLT) { 35 opihi_flt *X = vecx[0].elements.Flt; 36 xmax = X[start]; 37 ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[start] : vecy[0].elements.Int[start]; 38 for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) { 39 if ((*X >= start) && (*X <= end)) { 40 if ((imax == -1) || (*Y > ymax)) { 41 xmax = *X; 42 ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i]; 43 imax = i; 44 } 44 45 } 45 } 46 } 46 } 47 } else { 48 opihi_int *X = vecx[0].elements.Int; 49 xmax = X[start]; 50 ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[start] : vecy[0].elements.Int[start]; 51 for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) { 52 if ((*X >= start) && (*X <= end)) { 53 if ((imax == -1) || (*Y > ymax)) { 54 xmax = *X; 55 ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i]; 56 imax = i; 57 } 58 } 59 } 60 } 47 61 48 62 set_variable ("peakval", ymax); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/periodogram.c
r20839 r20857 28 28 if ((power = SelectVector (argv[6], ANYVECTOR, TRUE)) == NULL) return (FALSE); 29 29 30 REQUIRE_VECTOR_FLT (time, FALSE); 31 REQUIRE_VECTOR_FLT (flux, FALSE); 32 30 33 /* find the max baseline, mean, and variance */ 31 34 minT = maxT = time[0].elements.Flt[0]; … … 56 59 Np = 0; 57 60 NP = 100; 58 R EALLOCATE (power[0].elements.Flt, opihi_flt, NP);59 R EALLOCATE (period[0].elements.Flt, opihi_flt, NP);61 ResetVector (power, OPIHI_FLT, NP); 62 ResetVector (period, OPIHI_FLT, NP); 60 63 61 64 P = minP; … … 106 109 } 107 110 108 power[0].Nelements = Np; 109 period[0].Nelements = Np; 110 REALLOCATE (power[0].elements.Flt, opihi_flt, Np); 111 REALLOCATE (period[0].elements.Flt, opihi_flt, Np); 111 ResetVector (power, OPIHI_FLT, Np); 112 ResetVector (period, OPIHI_FLT, Np); 112 113 113 114 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/plot.c
r20839 r20857 58 58 if (!KapaPrepPlot (kapa, Npts, &graphmode)) return (FALSE); 59 59 60 PlotVectorSingle (kapa, Npts, xvec[0].elements.Flt, "x");61 PlotVectorSingle (kapa, Npts, yvec[0].elements.Flt, "y");60 PlotVectorSingle (kapa, xvec, "x"); 61 PlotVectorSingle (kapa, yvec, "y"); 62 62 if (graphmode.etype & 0x01) { 63 PlotVectorSingle (kapa, Npts, dymvec[0].elements.Flt, "dym");64 PlotVectorSingle (kapa, Npts, dypvec[0].elements.Flt, "dyp");63 PlotVectorSingle (kapa, dymvec, "dym"); 64 PlotVectorSingle (kapa, dypvec, "dyp"); 65 65 } 66 66 if (graphmode.etype & 0x02) { 67 PlotVectorSingle (kapa, Npts, dxmvec[0].elements.Flt, "dxm");68 PlotVectorSingle (kapa, Npts, dxpvec[0].elements.Flt, "dxp");67 PlotVectorSingle (kapa, dxmvec, "dxm"); 68 PlotVectorSingle (kapa, dxpvec, "dxp"); 69 69 } 70 70 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/read_vectors.c
r20839 r20857 70 70 return (FALSE); 71 71 } 72 // XXX we could allow flags (eg, N.i) to specify INT vs FLT types vectors... 72 73 colstr = argv[2*i+2]; 73 74 for (j = 0; j < strlen (colstr); j++) { … … 81 82 col[i] = atof (colstr); 82 83 } 83 84 85 // currently, all read vectors are forced to be type FLT 84 86 NELEM = 1000; 85 87 for (i = 0; i < Nvec; i++) { 86 R EALLOCATE (vec[i][0].elements.Flt, opihi_flt, NELEM);88 ResetVector (vec[i], OPIHI_FLT, NELEM); 87 89 } 88 90 … … 122 124 status = dparse (&value, col[i], c0); 123 125 vec[i][0].elements.Flt[N] = value; 124 if (!status) vec[i][0].elements.Flt[N] = 0.0/0.0;126 if (!status) vec[i][0].elements.Flt[N] = NAN; 125 127 } 126 128 if (status) N++; … … 260 262 } 261 263 if (Nval == 0) ESCAPE ("no data for field in table"); 262 264 265 vecType = OPIHI_INT; 266 if (!strcmp (type, "double") || !strcmp (type, "float")) { 267 vecType = OPIHI_FLT; 268 } 269 270 // define the multifield vector names 263 271 ALLOCATE (vec, Vector *, Nval); 264 272 for (j = 0; j < Nval; j++) { … … 268 276 sprintf (name, "%s:%d", argv[i], j); 269 277 if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) ESCAPE ("bad vector name"); 270 REALLOCATE (vec[j][0].elements.Flt, opihi_flt, MAX (Ny,1)); 271 vec[j][0].Nelements = Ny; 278 ResetVector (vec[j], vecType, MAX (Ny,1)); 272 279 } 273 280 … … 292 299 for (j = 0; j < Ny; j++) { 293 300 for (k = 0; k < Nval; k++, Pi++) { 294 vec[k][0].elements. Flt[j] = *Pi;301 vec[k][0].elements.Int[j] = *Pi; 295 302 } 296 303 } … … 300 307 for (j = 0; j < Ny; j++) { 301 308 for (k = 0; k < Nval; k++, Ps++) { 302 vec[k][0].elements. Flt[j] = *Ps;309 vec[k][0].elements.Int[j] = *Ps; 303 310 } 304 311 } … … 308 315 for (j = 0; j < Ny; j++) { 309 316 for (k = 0; k < Nval; k++, Pc++) { 310 vec[k][0].elements. Flt[j] = *Pc;317 vec[k][0].elements.Int[j] = *Pc; 311 318 } 312 319 } -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/select.c
r20839 r20857 27 27 /* check size of in1, in2, tvec: must match */ 28 28 29 REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (tvec[0].Nelements, 1)); 30 for (i = 0; i < tvec[0].Nelements; i++) { 31 ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i]; 29 if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT)) { 30 ResetVector (ovec, OPIHI_INT, MAX (tvec[0].Nelements, 1)); 31 } else { 32 ResetVector (ovec, OPIHI_FLT, MAX (tvec[0].Nelements, 1)); 32 33 } 33 ovec[0].Nelements = tvec[0].Nelements; 34 REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (ovec[0].Nelements, 1)); 34 35 // (in1 and in2) == (flt or int) and tvec == (flt or int) 36 if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) { 37 for (i = 0; i < tvec[0].Nelements; i++) { 38 ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i]; 39 } 40 } 41 if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) { 42 for (i = 0; i < tvec[0].Nelements; i++) { 43 ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i]; 44 } 45 } 46 if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) { 47 for (i = 0; i < tvec[0].Nelements; i++) { 48 ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Int[i] : in2[0].elements.Flt[i]; 49 } 50 } 51 if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) { 52 for (i = 0; i < tvec[0].Nelements; i++) { 53 ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Int[i] : in2[0].elements.Flt[i]; 54 } 55 } 56 if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) { 57 for (i = 0; i < tvec[0].Nelements; i++) { 58 ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Int[i]; 59 } 60 } 61 if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) { 62 for (i = 0; i < tvec[0].Nelements; i++) { 63 ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Flt[i] : in2[0].elements.Int[i]; 64 } 65 } 66 if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) { 67 for (i = 0; i < tvec[0].Nelements; i++) { 68 ovec[0].elements.Int[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Int[i] : in2[0].elements.Int[i]; 69 } 70 } 71 if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) { 72 for (i = 0; i < tvec[0].Nelements; i++) { 73 ovec[0].elements.Int[i] = tvec[0].elements.Int[i] ? in1[0].elements.Int[i] : in2[0].elements.Int[i]; 74 } 75 } 35 76 36 77 DeleteVector (tvec); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/sort.c
r20839 r20857 1 1 # include "data.h" 2 2 3 void sortindex (double*X, int *IDX, int N) {3 void fsortindex (opihi_flt *X, int *IDX, int N) { 4 4 5 # define SWAPFUNC(A,B){ double tmp; int itmp; \ 5 # define SWAPFUNC(A,B){ opihi_flt tmp; int itmp; \ 6 tmp = X[A]; X[A] = X[B]; X[B] = tmp; \ 7 itmp = IDX[A]; IDX[A] = IDX[B]; IDX[B] = itmp; \ 8 } 9 # define COMPARE(A,B)(X[A] < X[B]) 10 11 OHANA_SORT (N, COMPARE, SWAPFUNC); 12 13 # undef SWAPFUNC 14 # undef COMPARE 15 16 } 17 18 void isortindex (opihi_int *X, int *IDX, int N) { 19 20 # define SWAPFUNC(A,B){ opihi_int tmp; int itmp; \ 6 21 tmp = X[A]; X[A] = X[B]; X[B] = tmp; \ 7 22 itmp = IDX[A]; IDX[A] = IDX[B]; IDX[B] = itmp; \ … … 19 34 20 35 int i, j, Nvec, Nval; 21 opihi_flt *temp, *T, *V; 36 opihi_flt *ftemp; 37 opihi_int *itemp; 22 38 int *index, *I; 23 39 Vector **vec; … … 51 67 } 52 68 53 /* create index (use float to use sortpair)*/69 /* create index */ 54 70 ALLOCATE (index, int, Nval); 55 71 for (i = 0; i < Nval; i++) index[i] = i; 56 72 57 73 /* sort key & index */ 58 sortindex (vec[0][0].elements.Flt, index, Nval); 74 if (vec[0][0].type == OPIHI_FLT) { 75 fsortindex (vec[0][0].elements.Flt, index, Nval); 76 } else { 77 isortindex (vec[0][0].elements.Int, index, Nval); 78 } 59 79 60 ALLOCATE (temp, opihi_flt, Nval); 80 ALLOCATE (ftemp, opihi_flt, Nval); 81 ALLOCATE (itemp, opihi_int, Nval); 82 61 83 for (i = 1; i < Nvec; i++) { 62 T = temp; 63 V = vec[i][0].elements.Flt; 64 I = index; 65 for (j = 0; j < Nval; j++, T++, I++) { 66 *T = V[*I]; 84 if (vec[i][0].type == OPIHI_FLT) { 85 opihi_flt *T = ftemp; 86 opihi_flt *V = vec[i][0].elements.Flt; 87 I = index; 88 for (j = 0; j < Nval; j++, T++, I++) { 89 *T = V[*I]; 90 } 91 /* swap .elements.Flt (== V) and ftemp */ 92 vec[i][0].elements.Flt = ftemp; 93 ftemp = V; 94 } else { 95 opihi_int *T = itemp; 96 opihi_int *V = vec[i][0].elements.Int; 97 I = index; 98 for (j = 0; j < Nval; j++, T++, I++) { 99 *T = V[*I]; 100 } 101 /* swap .elements.Flt (== V) and itemp */ 102 vec[i][0].elements.Flt = itemp; 103 itemp = V; 67 104 } 68 /* swap .elements.Flt (== V) and temp */69 vec[i][0].elements.Flt = temp;70 temp = V;71 105 } 72 106 free (temp); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/subset.c
r20839 r20857 6 6 7 7 char *out; 8 int i, j, size;8 int i, Npts, size; 9 9 Vector *ivec, *ovec, *tvec; 10 10 … … 28 28 /* check size of ivec, tvec: must match */ 29 29 30 REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (tvec[0].Nelements, 1)); 31 for (j = i = 0; i < tvec[0].Nelements; i++) { 32 if (tvec[0].elements.Flt[i]) { 33 ovec[0].elements.Flt[j] = ivec[0].elements.Flt[i]; 34 j++; 30 // ovec matches ivec in type 31 ResetVector (ovec, ivec->type, MAX (tvec[0].Nelements, 1)); 32 33 // we have four cases: (ivec == flt or int) and (tvec == flt or int) 34 if ((ivec->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) { 35 opihi_flt *vi = ivec[0].elements.Flt; 36 opihi_flt *vt = tvec[0].elements.Flt; 37 for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) { 38 if (!*vt) continue; 39 ovec[0].elements.Flt[Npts] = *vi; 40 Npts++; 35 41 } 36 42 } 37 ovec[0].Nelements = j; 38 REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (ovec[0].Nelements, 1)); 43 if ((ivec->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) { 44 opihi_flt *vi = ivec[0].elements.Flt; 45 opihi_int *vt = tvec[0].elements.Int; 46 for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) { 47 if (!*vt) continue; 48 ovec[0].elements.Flt[Npts] = *vi; 49 Npts++; 50 } 51 } 52 if ((ivec->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) { 53 opihi_int *vi = ivec[0].elements.Int; 54 opihi_flt *vt = tvec[0].elements.Flt; 55 for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) { 56 if (!*vt) continue; 57 ovec[0].elements.Int[Npts] = *vi; 58 Npts++; 59 } 60 } 61 if ((ivec->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) { 62 opihi_int *vi = ivec[0].elements.Int; 63 opihi_int *vt = tvec[0].elements.Int; 64 for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) { 65 if (!*vt) continue; 66 ovec[0].elements.Int[Npts] = *vi; 67 Npts++; 68 } 69 } 70 71 // free up unused memory 72 ResetVector (ovec, ivec->type, MAX (Npts, 1)); 39 73 40 74 DeleteVector (tvec); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/svd.c
r20839 r20857 43 43 44 44 /* w is Nx */ 45 Vw[0].Nelements = Nx; 46 REALLOCATE (Vw[0].elements.Flt, opihi_flt, Nx); 45 ResetVector (Vw, OPIHI_FLT, Nx); 47 46 48 47 /* pointers to the various arrays */ -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/ungridify.c
r20839 r20857 1 1 # include "data.h" 2 2 3 // XXX adapt this to accept an optional region to limit the areas, otherwise use the whole image 3 4 int ungridify (int argc, char **argv) { 4 5 … … 13 14 if (argc != 9) { 14 15 gprint (GP_ERR, "USAGE: ungridify buffer Xmin Xmax Ymin Ymax x y z\n"); 16 gprint (GP_ERR, " convert a portion of an image to a collection a triplet of vectors\n"); 15 17 return (FALSE); 16 18 } … … 30 32 if ((vy = SelectVector (argv[7], ANYVECTOR, TRUE)) == NULL) return (FALSE); 31 33 if ((vz = SelectVector (argv[8], ANYVECTOR, TRUE)) == NULL) return (FALSE); 32 REALLOCATE (vx[0].elements.Flt, opihi_flt, Nx*Ny); 33 REALLOCATE (vy[0].elements.Flt, opihi_flt, Nx*Ny); 34 REALLOCATE (vz[0].elements.Flt, opihi_flt, Nx*Ny); 34 35 ResetVector (vx, OPIHI_FLT, Nx*Ny); 36 ResetVector (vy, OPIHI_FLT, Nx*Ny); 37 ResetVector (vz, OPIHI_FLT, Nx*Ny); 35 38 36 39 x = vx[0].elements.Flt; … … 52 55 if (n != Nx*Ny) { 53 56 gprint (GP_ERR, "error in ungrid: %d vs %d (%d x %d)\n", n, Nx*Ny, Nx, Ny); 57 gprint (GP_ERR, "(this is probably a programming error in ungridify)\n"); 54 58 } 55 59 vx[0].Nelements = vy[0].Nelements = vz[0].Nelements = n; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/uniq.c
r20839 r20857 4 4 5 5 int Nnew, i, j, found; 6 opihi_flt *v1, *v2;7 6 Vector *ivec, *ovec; 8 7 … … 16 15 17 16 /* allocate the maximum possible needed */ 18 ALLOCATE (ovec[0].elements.Flt, opihi_flt, ivec[0].Nelements);17 ResetVector (out, ivec->type, ivec->Nelements); 19 18 20 19 Nnew = 0; 21 v1 = ivec[0].elements.Flt; 22 for (i = 0; i < ivec[0].Nelements; i++, v1++) { 23 v2 = ovec[0].elements.Flt; 24 found = FALSE; 25 for (j = 0; !found && (j < Nnew); j++, v2++) { 26 if (*v1 == *v2) found = TRUE; 20 21 if (ivec->type == OPIHI_FLT) { 22 opihi_flt *v1 = ivec[0].elements.Flt; 23 for (i = 0; i < ivec[0].Nelements; i++, v1++) { 24 opihi_flt *v2 = ovec[0].elements.Flt; 25 found = FALSE; 26 for (j = 0; !found && (j < Nnew); j++, v2++) { 27 if (*v1 == *v2) found = TRUE; 28 } 29 if (!found) { 30 ovec[0].elements.Flt[Nnew] = *v1; 31 Nnew ++; 32 } 27 33 } 28 if (!found) { 29 ovec[0].elements.Flt[Nnew] = *v1; 30 Nnew ++; 34 } else { 35 opihi_int *v1 = ivec[0].elements.Int; 36 for (i = 0; i < ivec[0].Nelements; i++, v1++) { 37 opihi_int *v2 = ovec[0].elements.Int; 38 found = FALSE; 39 for (j = 0; !found && (j < Nnew); j++, v2++) { 40 if (*v1 == *v2) found = TRUE; 41 } 42 if (!found) { 43 ovec[0].elements.Int[Nnew] = *v1; 44 Nnew ++; 45 } 31 46 } 32 47 } 33 48 34 ovec[0].Nelements = Nnew;35 R EALLOCATE (ovec[0].elements.Flt, opihi_flt, ovec[0].Nelements);49 // free up extra memory 50 ResetVector (out, ivec->type, Nnew); 36 51 37 52 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vbin.c
r20839 r20857 42 42 Nout = Nin / scale; 43 43 44 REALLOCATE (out[0].elements.Flt, opihi_flt, Nout);45 out[0].Nelements = Nout;44 // re-binning creates a float vector 45 ResetVector (out, OPIHI_FLT, in[0].Nelements); 46 46 47 Vin = in[0].elements.Flt;48 47 Vout = out[0].elements.Flt; 49 for (n = j = 0; j < Nout; j++, Vout++) { 50 *Vout = 0; 51 for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) { 52 if (!finite (*Vin)) continue; 53 if (Ignore && (*Vin == IgnoreValue)) continue; 54 *Vout += *Vin; 55 N ++; 56 } 57 if (Normalize) { 58 if (N > 0) { 59 *Vout /= (opihi_flt) N; 60 } else { 61 *Vout = 0; 48 49 if (in[0].type == OPIHI_FLT) { 50 opihi_flt *Vin = in[0].elements.Flt; 51 for (n = j = 0; j < Nout; j++, Vout++) { 52 *Vout = 0; 53 for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) { 54 if (!finite (*Vin)) continue; 55 if (Ignore && (*Vin == IgnoreValue)) continue; 56 *Vout += *Vin; 57 N ++; 58 } 59 if (Normalize) { 60 if (N > 0) { 61 *Vout /= (opihi_flt) N; 62 } else { 63 *Vout = 0; 64 } 65 } 66 } 67 } else { 68 opihi_int *Vin = in[0].elements.Int; 69 for (n = j = 0; j < Nout; j++, Vout++) { 70 *Vout = 0; 71 for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) { 72 if (!finite (*Vin)) continue; 73 if (Ignore && (*Vin == IgnoreValue)) continue; 74 *Vout += *Vin; 75 N ++; 76 } 77 if (Normalize) { 78 if (N > 0) { 79 *Vout /= (opihi_flt) N; 80 } else { 81 *Vout = 0; 82 } 62 83 } 63 84 } -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vclip.c
r20839 r20857 3 3 int vclip (int argc, char **argv) { 4 4 5 int i, Npix, DO_NAN, DO_INF, N;5 int i, Npix, DO_NAN, DO_INF, DO_CLIP, N; 6 6 double min, Vmin, max, Vmax, nan_val, inf_val; 7 7 opihi_flt *in; … … 33 33 if ((vec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE); 34 34 35 DO_CLIP = FALSE; 35 36 if (argc == 6) { 36 37 min = atof (argv[2]); … … 38 39 max = atof (argv[4]); 39 40 Vmax = atof (argv[5]); 41 DO_CLIP = TRUE; 40 42 } 41 43 44 if (DO_NAN && vec[0].type == OPIHI_INT) { 45 gprint (GP_ERR, " warning : clipping on NAN is invalid for INT vectors\n"); 46 return (FALSE); 47 } 48 49 if (DO_INF && vec[0].type == OPIHI_INT) { 50 gprint (GP_ERR, " warning : clipping on INF is invalid for INT vectors\n"); 51 return (FALSE); 52 } 53 42 54 Npix = vec[0].Nelements; 43 in = vec[0].elements.Flt;44 55 45 if (argc == 6) { 56 if (vec[0].type == OPIHI_FLT) { 57 opihi_flt *in = vec[0].elements.Flt; 46 58 for (i = 0; i < Npix; i++, in++) { 47 if ( *in < min)59 if (DO_CLIP && (*in < min)) { 48 60 *in = Vmin; 49 if (*in > max) 61 } 62 if (DO_CLIP && (*in > max)) { 50 63 *in = Vmax; 51 } 52 } 53 in = vec[0].elements.Flt; 54 if (DO_NAN) { 55 for (i = 0; i < Npix; i++, in++) { 56 if (isnan (*in)) { 64 } 65 if (!finite (*in) && DO_INF) { 66 *in = inf_val; 67 } 68 if (isnan (*in) && DO_NAN) { 57 69 *in = nan_val; 58 70 } 59 71 } 60 } 61 in = vec[0].elements.Flt; 62 if (DO_INF) { 72 } else { 73 opihi_int *in = vec[0].elements.Int; 63 74 for (i = 0; i < Npix; i++, in++) { 64 if (!finite (*in)) { 65 *in = inf_val; 75 if (DO_CLIP && (*in < min)) { 76 *in = Vmin; 77 } 78 if (DO_CLIP && (*in > max)) { 79 *in = Vmax; 66 80 } 67 81 } 68 82 } 69 83 return (TRUE); 70 71 84 } 72 73 -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vgauss.c
r20839 r20857 42 42 if ((ovec = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE); 43 43 44 REQUIRE_VECTOR_FLT (xvec, FALSE); 45 REQUIRE_VECTOR_FLT (yvec, FALSE); 46 REQUIRE_VECTOR_FLT (svec, FALSE); 47 44 48 Npts = xvec[0].Nelements; 49 ResetVector (ovec, OPIHI_FLT, Npts); 50 45 51 ALLOCATE (dy, opihi_flt, Npts); 46 REALLOCATE (ovec[0].elements.Flt, opihi_flt, Npts);47 52 48 53 GET_VAR (par[0], "C0"); … … 52 57 Npar = 4; 53 58 59 // mrqmin takes the inverse variance (do not generate NANs) 54 60 v1 = svec[0].elements.Flt; 55 61 v2 = dy; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vgrid.c
r20839 r20857 13 13 if (argc != 11) { 14 14 gprint (GP_ERR, "USAGE: vgrid x y z buffer Xmin Xmax dX Ymin Ymax dY\n"); 15 gprint (GP_ERR, " re-grid values from a triplet of vectors (x,y,z) into an image\n"); 16 gprint (GP_ERR, " the vectors must be floating-point type\n"); 15 17 return (FALSE); 16 18 } … … 23 25 if (vx[0].Nelements != vy[0].Nelements) return (FALSE); 24 26 if (vx[0].Nelements != vz[0].Nelements) return (FALSE); 27 28 REQUIRE_VECTOR_FLT (vx, FALSE); 29 REQUIRE_VECTOR_FLT (vy, FALSE); 30 REQUIRE_VECTOR_FLT (vz, FALSE); 25 31 26 32 Xmin = atof (argv[5]); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vload.c
r20839 r20857 82 82 overlay[i].type = type; 83 83 overlay[i].text = NULL; 84 overlay[i].x = vecx[0].elements.Flt[i]+0.5; 85 overlay[i].y = vecy[0].elements.Flt[i]+0.5; 84 overlay[i].x = (vec[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[i] : vecx[0].elements.Int[i]; 85 overlay[i].y = (vec[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i]; 86 overlay[i].x += 0.5; 87 overlay[i].y += 0.5; 86 88 overlay[i].dx = dx; 87 89 overlay[i].dy = dy; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vmaxwell.c
r20839 r20857 42 42 if ((ovec = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE); 43 43 44 REQUIRE_VECTOR_FLT (xvec, FALSE); 45 REQUIRE_VECTOR_FLT (yvec, FALSE); 46 REQUIRE_VECTOR_FLT (svec, FALSE); 47 44 48 Npts = xvec[0].Nelements; 45 49 ALLOCATE (dy, opihi_flt, Npts); 46 R EALLOCATE (ovec[0].elements.Flt, opihi_flt, Npts);50 ResetVector (ovec, OPIHI_FLT, Npts); 47 51 48 52 GET_VAR (par[0], "C0"); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vpop.c
r20839 r20857 17 17 18 18 if (Npix > 1) { 19 memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt)); 19 if (vec[0].type == OPIHI_FLT) { 20 memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt)); 21 } else { 22 memmove (&vec[0].elements.Int[0], &vec[0].elements.Int[1], Npix*sizeof(opihi_int)); 23 } 20 24 } 21 25 vec[0].Nelements = Npix - 1; -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vroll.c
r20839 r20857 17 17 if (Npix < 2) return (TRUE); 18 18 19 first = vec[0].elements.Flt[0]; 20 memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt)); 21 vec[0].elements.Flt[Npix-1] = first; 19 if (vec[0].type == OPIHI_FLT) { 20 first = vec[0].elements.Flt[0]; 21 memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt)); 22 vec[0].elements.Flt[Npix-1] = first; 23 } else { 24 first = vec[0].elements.Int[0]; 25 memmove (&vec[0].elements.Int[0], &vec[0].elements.Int[1], Npix*sizeof(opihi_int)); 26 vec[0].elements.Int[Npix-1] = first; 27 } 22 28 return (TRUE); 23 29 } -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vsmooth.c
r20839 r20857 3 3 int vsmooth (int argc, char **argv) { 4 4 5 int i, n, N, Nx, Ns, Ngauss; 6 opihi_flt *vi, *vo, *gauss, *gaussnorm; 7 float g, s, sigma, Nsigma; 5 int i, n, N, Nx, Ns, Ngauss, isFloat; 6 opihi_flt *vf, *vo, *gauss, *gaussnorm; 7 opihi_int *vi; 8 float g, s, sigma, Nsigma, value; 8 9 Vector *in; 9 10 … … 23 24 sigma = atof (argv[2]); 24 25 Nx = in[0].Nelements; 25 vi = in[0].elements.Flt;26 26 27 27 /* build a 1D gaussian */ … … 36 36 ALLOCATE (vo, opihi_flt, Nx); 37 37 38 isFloat = (in[0].type == OPIHI_FLT); 39 vf = in[0].elements.Flt; 40 vi = in[0].elements.Int; 41 38 42 for (i = 0; i < Nx; i++) { 39 43 g = s = 0; … … 41 45 if (i+n < 0) continue; 42 46 if (i+n >= Nx) continue; 43 s += gauss[n]*vi[i+n]; 47 value = isFloat ? vf[i+n] : vi[i+n]; 48 s += gauss[n]*value; 44 49 g += gauss[n]; 45 50 } … … 47 52 } 48 53 49 free (in[0].elements.Flt);50 54 free (gaussnorm); 51 55 56 if (isFloat) { 57 free (in[0].elements.Flt); 58 } else { 59 free (in[0].elements.Int); 60 } 61 62 // smoothing an int vector results in a float vector 63 in[0].type = OPIHI_FLT; 52 64 in[0].elements.Flt = vo; 53 65 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vstat.c
r20839 r20857 5 5 int i, N; 6 6 double max, min, sum, var, dvar, mean, stdev; 7 opihi_flt *X,IgnoreValue;7 float IgnoreValue; 8 8 int Ignore, Quiet; 9 9 … … 41 41 42 42 /* calculate max, min, mean, sum, npix */ 43 X = vec[0].elements.Flt;44 43 max = -HUGE_VAL; 45 44 min = HUGE_VAL; 46 45 sum = N = 0; 47 for (i = 0; i < vec[0].Nelements; i++, X++) { 48 if (!finite (*X)) continue; 49 if (Ignore && (*X == IgnoreValue)) continue; 50 max = MAX (*X, max); 51 min = MIN (*X, min); 52 sum += *X; 53 N++; 54 } 46 if (vec[0].type == OPIHI_FLT) { 47 opihi_flt *X = vec[0].elements.Flt; 48 for (i = 0; i < vec[0].Nelements; i++, X++) { 49 if (!finite (*X)) continue; 50 if (Ignore && (*X == IgnoreValue)) continue; 51 max = MAX (*X, max); 52 min = MIN (*X, min); 53 sum += *X; 54 N++; 55 } 56 } else { 57 opihi_int *X = vec[0].elements.Int; 58 for (i = 0; i < vec[0].Nelements; i++, X++) { 59 if (!finite (*X)) continue; 60 if (Ignore && (*X == IgnoreValue)) continue; 61 max = MAX (*X, max); 62 min = MIN (*X, min); 63 sum += *X; 64 N++; 65 } 66 } 55 67 mean = sum / N; 56 68 … … 65 77 ALLOCATE (Nval, int, 1002); 66 78 bzero (Nval, 1000*sizeof(int)); 67 X = vec[0].elements.Flt;68 79 var = 0; 69 for (i = 0; i < vec[0].Nelements; i++, X++) { 70 if (!finite (*X)) continue; 71 if (Ignore && (*X == IgnoreValue)) continue; 72 bin = MAX (0, MIN (1000, (*X - min) / dx)); 73 Nval[bin] ++; 74 dvar = (*X - mean); 75 var += dvar*dvar; 76 } 80 if (vec[0].type == OPIHI_FLT) { 81 opihi_flt *X = vec[0].elements.Flt; 82 for (i = 0; i < vec[0].Nelements; i++, X++) { 83 if (!finite (*X)) continue; 84 if (Ignore && (*X == IgnoreValue)) continue; 85 bin = MAX (0, MIN (1000, (*X - min) / dx)); 86 Nval[bin] ++; 87 dvar = (*X - mean); 88 var += dvar*dvar; 89 } 90 } else { 91 opihi_int *X = vec[0].elements.Int; 92 for (i = 0; i < vec[0].Nelements; i++, X++) { 93 if (!finite (*X)) continue; 94 if (Ignore && (*X == IgnoreValue)) continue; 95 bin = MAX (0, MIN (1000, (*X - min) / dx)); 96 Nval[bin] ++; 97 dvar = (*X - mean); 98 var += dvar*dvar; 99 } 100 } 77 101 stdev = sqrt (var / N); 78 102 -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vzload.c
r20839 r20857 58 58 59 59 for (i = N = 0; i < Noverlay; i++) { 60 size = MIN (MAX_OUTPUT_SIZE, (vecz[0].elements.Flt[i] - min) / range); 60 float z = (vecz[0].type == OPIHI_FLT) ? vecz[0].elements.Flt[i] : vecz[0].elements.Int[i]; 61 size = MIN (MAX_OUTPUT_SIZE, (z - min) / range); 61 62 if (size < 0.1) continue; 62 63 63 64 overlay[N].type = type; 64 65 overlay[N].text = NULL; 65 overlay[N].x = vecx[0].elements.Flt[i]+0.5; 66 overlay[N].y = vecy[0].elements.Flt[i]+0.5; 66 overlay[N].x = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[i] : vecx[0].elements.Int[i]; 67 overlay[N].y = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i]; 68 69 overlay[N].x += 0.5; 70 overlay[N].y += 0.5; 71 67 72 overlay[N].angle = 0.0; 68 73 -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/write_vectors.c
r20839 r20857 78 78 for (i = 0; i < vec[0][0].Nelements; i++) { 79 79 for (j = 0; j < Nvec; j++) { 80 fprintf (f, "%.10g ", vec[j][0].elements.Flt[i]); 80 if (vec[j][0].type == OPIHI_FLT) { 81 fprintf (f, "%.12g ", vec[j][0].elements.Flt[i]); 82 } else { 83 fprintf (f, "%d ", vec[j][0].elements.Int[i]); 84 } 81 85 } 82 86 fprintf (f, "\n"); … … 135 139 for (j = 0; j < Nvec; j++) { 136 140 if (fmttype[j] == 'd') { 137 fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Flt[i])); 141 if (vec[j][0].type == OPIHI_FLT) { 142 fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Flt[i])); 143 } else { 144 fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Int[i])); 145 } 138 146 } 139 147 if (fmttype[j] == 'f') { 140 fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Flt[i])); 148 if (vec[j][0].type == OPIHI_FLT) { 149 fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Flt[i])); 150 } else { 151 fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Int[i])); 152 } 141 153 } 142 154 } -
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/zplot.c
r20839 r20857 3 3 int zplot (int argc, char **argv) { 4 4 5 int i, kapa , Npts;6 opihi_flt * in, *out;5 int i, kapa; 6 opihi_flt *out; 7 7 double min, range; 8 8 Graphdata graphmode; … … 33 33 Zvec.Nelements = zvec[0].Nelements; 34 34 ALLOCATE (Zvec.elements.Flt, opihi_flt, Zvec.Nelements); 35 out = Zvec.elements.Flt; 35 36 36 in = zvec[0].elements.Flt; 37 out = Zvec.elements.Flt; 38 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 39 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 37 if (zvec[0].type == OPIHI_FLT) { 38 opihi_flt *in = zvec[0].elements.Flt; 39 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 40 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 41 } 42 } else { 43 opihi_int *in = zvec[0].elements.Flt; 44 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 45 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 46 } 40 47 } 41 48 … … 44 51 graphmode.size = -1; /* point size determined by Zvec */ 45 52 graphmode.etype = 0; /* no errorbars */ 46 Npts = xvec[0].Nelements; 47 PlotVectorTriplet (kapa, Npts, xvec[0].elements.Flt, yvec[0].elements.Flt, Zvec.elements.Flt, &graphmode); 53 PlotVectorTriplet (kapa, xvec, yvec, Zvec, &graphmode); 48 54 49 55 free (Zvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/Makefile
r20820 r20857 113 113 114 114 # deprecated functions: verify & delete 115 #$(SRC)/catalog.$(ARCH).o \116 115 #$(SRC)/abszero.$(ARCH).o \ 117 116 #$(SRC)/cals.$(ARCH).o \ -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c
r20839 r20857 7 7 int Nsecfilt, mode, VERBOSE; 8 8 char **cstack, name[1024]; 9 float*values;9 dbValue *values; 10 10 void *Signal; 11 11 … … 117 117 if (!dbBooleanCond (stack, Nstack, values)) continue; 118 118 for (n = 0; n < Nreturn; n++) { 119 vec[n][0].elements.Flt[Npts] = values[n]; 119 if (vec[n][0].type == OPIHI_FLT) { 120 vec[n][0].elements.Flt[Npts] = values[n].Flt; 121 } else { 122 vec[n][0].elements.Int[Npts] = values[n].Int; 123 } 120 124 } 121 125 Npts++; … … 136 140 } 137 141 142 free (values); 138 143 dbFreeFields (fields, Nfields); 139 144 dbFreeStack (stack, Nstack); … … 144 149 145 150 escape: 151 free (values); 146 152 dbFreeFields (fields, Nfields); 147 153 dbFreeStack (stack, Nstack); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbBooleanCond.c
r15717 r20857 3 3 // evaluate the expression in inStack as a boolean; necessary db field values are 4 4 // supplied by fields, in order 0 - Nfields (validate before calling) 5 // XXX fields needs to be typed (dbValue), stack math needs to deal with the type cases 5 6 int dbBooleanCond (dbStack *inStack, int NinStack, float *fields) { 6 7 -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractAverages.c
r17201 r20857 40 40 41 41 /* return average.field based on the selection */ 42 d ouble dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {42 dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) { 43 43 44 44 int i, Nsec; 45 double value; 46 47 value = NAN; 45 dbValue value; 46 47 value.Flt = NAN; 48 value.Int = 0; 48 49 49 50 /* assign vector values */ 50 51 switch (field->ID) { 51 52 case AVE_RA: 52 value = average[0].R;53 value.Flt = average[0].R; 53 54 break; 54 55 case AVE_DEC: 55 value = average[0].D;56 value.Flt = average[0].D; 56 57 break; 57 58 case AVE_GLON: … … 60 61 haveGalactic = TRUE; 61 62 } 62 value = GLON;63 value.Flt = GLON; 63 64 break; 64 65 case AVE_GLAT: … … 67 68 haveGalactic = TRUE; 68 69 } 69 value = GLAT;70 value.Flt = GLAT; 70 71 break; 71 72 case AVE_ELON: … … 74 75 haveEcliptic = TRUE; 75 76 } 76 value = ELON;77 value.Flt = ELON; 77 78 break; 78 79 case AVE_ELAT: … … 81 82 haveEcliptic = TRUE; 82 83 } 83 value = ELAT;84 value.Flt = ELAT; 84 85 break; 85 86 case AVE_RA_ERR: 86 value = average[0].dR;87 value.Flt = average[0].dR; 87 88 break; 88 89 case AVE_DEC_ERR: 89 value = average[0].dD;90 value.Flt = average[0].dD; 90 91 break; 91 92 92 93 case AVE_U_RA: 93 value = average[0].uR;94 value.Flt = average[0].uR; 94 95 break; 95 96 case AVE_U_DEC: 96 value = average[0].uD;97 value.Flt = average[0].uD; 97 98 break; 98 99 case AVE_U_RA_ERR: 99 value = average[0].duR;100 value.Flt = average[0].duR; 100 101 break; 101 102 case AVE_U_DEC_ERR: 102 value = average[0].duD;103 value.Flt = average[0].duD; 103 104 break; 104 105 105 106 case AVE_PAR: 106 value = average[0].P;107 value.Flt = average[0].P; 107 108 break; 108 109 case AVE_PAR_ERR: 109 value = average[0].dP;110 value.Flt = average[0].dP; 110 111 break; 111 112 112 113 case AVE_NMEAS: 113 value = average[0].Nmeasure;114 value.Int = average[0].Nmeasure; 114 115 break; 115 116 case AVE_NMISS: 116 value = average[0].Nmissing;117 value.Int = average[0].Nmissing; 117 118 break; 118 119 case AVE_Xp: 119 value = 0.01*average[0].Xp;120 value.Flt = 0.01*average[0].Xp; 120 121 break; 121 122 case AVE_FLAG: 122 value = average[0].code;123 value.Int = average[0].code; 123 124 break; 124 125 … … 126 127 switch (field->magMode) { 127 128 case MAG_AVE: 128 value = PhotAve (field->photcode, average, secfilt);129 value.Flt = PhotAve (field->photcode, average, secfilt); 129 130 break; 130 131 case MAG_REF: 131 value = PhotRef (field->photcode, average, secfilt, measure);132 value.Flt = PhotRef (field->photcode, average, secfilt, measure); 132 133 break; 133 134 case MAG_INST: … … 137 138 case MAG_CAL: 138 139 // XXX need to code this correctly: this returns just the first matching value 139 value = NAN;140 value.Flt = NAN; 140 141 for (i = 0; i < average[0].Nmeasure; i++) { 141 142 if (field->photcode->code != measure[i].photcode) continue; 142 value = measure[i].M;143 value.Flt = measure[i].M; 143 144 break; 144 145 } … … 146 147 case MAG_CHISQ: 147 148 // GetPhotcodeEquivCodebyCode (field->photcode) 148 value = PhotXm (field->photcode, average, secfilt);149 value.Flt = PhotXm (field->photcode, average, secfilt); 149 150 break; 150 151 case MAG_ERR: 151 152 // GetPhotcodeEquivCodebyCode (field->photcode) 152 if ( field->photcode->type == PHOT_REF) {153 if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) { 153 154 for (i = 0; i < average[0].Nmeasure; i++) { 154 155 if (field->photcode->code != measure[i].photcode) continue; 155 value = measure[i].dM;156 value.Flt = measure[i].dM; 156 157 break; 157 158 } 158 159 } else { 159 value = PhotdM (field->photcode, average, secfilt);160 value.Flt = PhotdM (field->photcode, average, secfilt); 160 161 } 161 162 break; … … 165 166 Nsec = GetPhotcodeNsec (field->photcode->code); 166 167 if (Nsec == -1) break; 167 value = secfilt[Nsec].Ncode;168 value.Int = secfilt[Nsec].Ncode; 168 169 break; 169 170 case MAG_NPHOT: 170 171 Nsec = GetPhotcodeNsec (field->photcode->code); 171 172 if (Nsec == -1) break; 172 value = secfilt[Nsec].Nused;173 value.Int = secfilt[Nsec].Nused; 173 174 break; 174 175 … … 176 177 break; 177 178 case AVE_dMAG: 178 value = PhotdM (field->photcode, average, secfilt);179 value.Flt = PhotdM (field->photcode, average, secfilt); 179 180 break; 180 181 case AVE_Xm: 181 value = PhotXm (field->photcode, average, secfilt);182 value.Flt = PhotXm (field->photcode, average, secfilt); 182 183 break; 183 184 case AVE_TYPE: … … 187 188 /* 188 189 case AVE_NCODE: 189 value = 0;190 value.Int = 0; 190 191 for (i = 0; i < average[0].Nm; i++) { 191 192 if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue; 192 value ++;193 value.Int ++; 193 194 } 194 195 break; 195 196 case AVE_NPHOT: 196 value = 0;197 value.Int = 0; 197 198 for (i = 0; i < average[0].Nm; i++) { 198 199 if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue; 199 200 if (measure[i].flags & (ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM)) continue; 200 value ++;201 value.Int ++; 201 202 } 202 203 break; -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractMeasures.c
r18221 r20857 70 70 71 71 /* return measure.field based on the selection */ 72 d ouble dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {72 dbValue dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) { 73 73 74 74 int Nsec; 75 d ouble value;75 dbValue value; 76 76 double ra, dec, x, y, dT; 77 77 … … 79 79 PhotCode *equiv; 80 80 81 value = NAN; 81 value.Flt = NAN; 82 value.Int = 0; 82 83 83 84 switch (field->ID) { … … 96 97 switch (field->magMode) { 97 98 case MAG_INST: 98 value = PhotInst (measure);99 value.Flt = PhotInst (measure); 99 100 break; 100 101 case MAG_CAT: 101 value = PhotCat (measure);102 value.Flt = PhotCat (measure); 102 103 break; 103 104 case MAG_SYS: 104 value = PhotSys (measure, average, secfilt);105 value.Flt = PhotSys (measure, average, secfilt); 105 106 break; 106 107 case MAG_REL: 107 value = PhotRel (measure, average, secfilt);108 value.Flt = PhotRel (measure, average, secfilt); 108 109 break; 109 110 case MAG_CAL: 110 value = PhotCal (measure, average, secfilt, measure, equiv);111 value.Flt = PhotCal (measure, average, secfilt, measure, equiv); 111 112 break; 112 113 case MAG_AVE: 113 value = PhotAve (equiv, average, secfilt);114 value.Flt = PhotAve (equiv, average, secfilt); 114 115 break; 115 116 case MAG_REF: 116 value = PhotRef (equiv, average, secfilt, measure);117 value.Flt = PhotRef (equiv, average, secfilt, measure); 117 118 break; 118 119 case MAG_ERR: 119 120 if (field->photcode->type == PHOT_SEC) { 120 value = PhotdM (equiv, average, secfilt);121 value.Flt = PhotdM (equiv, average, secfilt); 121 122 } else { 122 value = measure[0].dM;123 value.Flt = measure[0].dM; 123 124 } 124 125 break; 125 126 case MAG_CHISQ: 126 value = PhotXm (equiv, average, secfilt);127 value.Flt = PhotXm (equiv, average, secfilt); 127 128 break; 128 129 case MAG_NCODE: 129 130 if (equiv == NULL) { 130 value = NAN;131 value.Int = 0; 131 132 break; 132 133 } 133 134 Nsec = GetPhotcodeNsec (equiv->code); 134 135 if (Nsec == -1) break; 135 value = secfilt[Nsec].Ncode;136 value.Int = secfilt[Nsec].Ncode; 136 137 break; 137 138 case MAG_NPHOT: 138 139 if (equiv == NULL) { 139 value = NAN;140 value.Int = NAN; 140 141 break; 141 142 } 142 143 Nsec = GetPhotcodeNsec (equiv->code); 143 144 if (Nsec == -1) break; 144 value = secfilt[Nsec].Nused;145 value.Int = secfilt[Nsec].Nused; 145 146 break; 146 147 } 147 148 break; 148 149 case MEAS_RA: /* OK */ 149 value = average[0].R - measure[0].dR / 3600.0;150 value.Flt = average[0].R - measure[0].dR / 3600.0; 150 151 break; 151 152 case MEAS_DEC: /* OK */ 152 value = average[0].D - measure[0].dD / 3600.0;153 value.Flt = average[0].D - measure[0].dD / 3600.0; 153 154 break; 154 155 case MEAS_RA_AVE: /* OK */ 155 value = average[0].R;156 value.Flt = average[0].R; 156 157 break; 157 158 case MEAS_DEC_AVE: /* OK */ 158 value = average[0].D;159 value.Flt = average[0].D; 159 160 break; 160 161 … … 164 165 haveGalacticMeas = TRUE; 165 166 } 166 value = GLON_MEAS;167 value.Flt = GLON_MEAS; 167 168 break; 168 169 case MEAS_GLAT: … … 171 172 haveGalacticMeas = TRUE; 172 173 } 173 value = GLAT_MEAS;174 value.Flt = GLAT_MEAS; 174 175 break; 175 176 case MEAS_ELON: … … 178 179 haveEclipticMeas = TRUE; 179 180 } 180 value = ELON_MEAS;181 value.Flt = ELON_MEAS; 181 182 break; 182 183 case MEAS_ELAT: … … 185 186 haveEclipticMeas = TRUE; 186 187 } 187 value = ELAT_MEAS;188 value.Flt = ELAT_MEAS; 188 189 break; 189 190 … … 193 194 haveGalacticAve = TRUE; 194 195 } 195 value = GLON_AVE;196 value.Flt = GLON_AVE; 196 197 break; 197 198 case MEAS_GLAT_AVE: … … 200 201 haveGalacticAve = TRUE; 201 202 } 202 value = GLAT_AVE;203 value.Flt = GLAT_AVE; 203 204 break; 204 205 case MEAS_ELON_AVE: … … 207 208 haveEclipticAve = TRUE; 208 209 } 209 value = ELON_AVE;210 value.Flt = ELON_AVE; 210 211 break; 211 212 case MEAS_ELAT_AVE: … … 214 215 haveEclipticAve = TRUE; 215 216 } 216 value = ELAT_AVE;217 value.Flt = ELAT_AVE; 217 218 break; 218 219 219 220 case MEAS_RA_AVE_ERR: /* OK */ 220 value = average[0].dR;221 value.Flt = average[0].dR; 221 222 break; 222 223 case MEAS_DEC_AVE_ERR: /* OK */ 223 value = average[0].dD;224 value.Flt = average[0].dD; 224 225 break; 225 226 case MEAS_U_RA: /* OK */ 226 value = average[0].uR;227 value.Flt = average[0].uR; 227 228 break; 228 229 case MEAS_U_DEC: /* OK */ 229 value = average[0].uD;230 value.Flt = average[0].uD; 230 231 break; 231 232 case MEAS_U_RA_ERR: /* OK */ 232 value = average[0].duR;233 value.Flt = average[0].duR; 233 234 break; 234 235 case MEAS_U_DEC_ERR: /* OK */ 235 value = average[0].duD;236 value.Flt = average[0].duD; 236 237 break; 237 238 case MEAS_PAR: /* OK */ 238 value = average[0].R;239 value.Flt = average[0].R; 239 240 break; 240 241 case MEAS_PAR_ERR: /* OK */ 241 value = average[0].D;242 value.Flt = average[0].D; 242 243 break; 243 244 case MEAS_XP: /* OK */ 244 value = average[0].Xp;245 value.Flt = average[0].Xp; 245 246 break; 246 247 case MEAS_NMEAS: /* OK */ 247 value = average[0].Nmeasure;248 value.Int = average[0].Nmeasure; 248 249 break; 249 250 case MEAS_NMISS: /* OK */ 250 value = average[0].Nmissing;251 value.Int = average[0].Nmissing; 251 252 break; 252 253 case MEAS_OBJFLAGS: /* OK */ 253 value = average[0].code;254 value.Int = average[0].code; 254 255 break; 255 256 // note that these represent the ra displacement relative to the average, not 256 257 // the error. 257 258 case MEAS_RA_OFFSET: /* OK */ 258 value = measure[0].dR;259 value.Flt = measure[0].dR; 259 260 break; 260 261 case MEAS_DEC_OFFSET: /* OK */ 261 value = measure[0].dD;262 value.Flt = measure[0].dD; 262 263 break; 263 264 case MEAS_RA_FIT_OFFSET: /* OK */ 264 265 dT = (measure[0].t - TimeRefPM) / (86400*365.25); 265 value = average[0].uR * dT + measure[0].dR;266 value.Flt = average[0].uR * dT + measure[0].dR; 266 267 break; 267 268 case MEAS_DEC_FIT_OFFSET: /* OK */ 268 269 dT = (measure[0].t - TimeRefPM) / (86400*365.25); 269 value = average[0].uD * dT + measure[0].dD;270 value.Flt = average[0].uD * dT + measure[0].dD; 270 271 break; 271 272 case MEAS_RA_OFFSET_ERR: /* OK */ 272 value = NAN;273 value.Flt = NAN; 273 274 break; 274 275 case MEAS_DEC_OFFSET_ERR: /* OK */ 275 value = NAN;276 value.Flt = NAN; 276 277 break; 277 278 case MEAS_AIRMASS: /* OK */ 278 value = measure[0].airmass;279 value.Flt = measure[0].airmass; 279 280 break; 280 281 case MEAS_AZ: /* OK */ 281 value = measure[0].az;282 value.Flt = measure[0].az; 282 283 break; 283 284 case MEAS_EXPTIME: /* OK */ 284 value = pow (10.0, measure[0].dt * 0.4);285 value.Flt = pow (10.0, measure[0].dt * 0.4); 285 286 break; 286 287 case MEAS_PHOTCODE: /* OK */ 287 value = measure[0].photcode;288 value.Int = measure[0].photcode; 288 289 break; 289 290 case MEAS_TIME: /* OK */ 290 value = TimeValue (measure[0].t, TimeReference, TimeFormat);291 value.Flt = TimeValue (measure[0].t, TimeReference, TimeFormat); 291 292 break; 292 293 case MEAS_FWHM: /* OK */ 293 value = 0.01*(measure[0].FWx + measure[0].FWy) / 2.0;294 value.Flt = 0.01*(measure[0].FWx + measure[0].FWy) / 2.0; 294 295 break; 295 296 case MEAS_FWHM_MAJ: /* OK */ 296 value = 0.01*measure[0].FWx;297 value.Flt = 0.01*measure[0].FWx; 297 298 break; 298 299 case MEAS_FWHM_MIN: /* OK */ 299 value = 0.01*measure[0].FWy;300 value.Flt = 0.01*measure[0].FWy; 300 301 break; 301 302 case MEAS_THETA: /* OK */ 302 value = measure[0].theta;303 value.Flt = measure[0].theta; 303 304 break; 304 305 case MEAS_DOPHOT: /* OK */ 305 value = measure[0].dophot;306 value.Flt = measure[0].dophot; 306 307 break; 307 308 case MEAS_DB_FLAGS: /* ? */ 308 value = measure[0].dbFlags;309 value.Int = measure[0].dbFlags; 309 310 break; 310 311 case MEAS_PHOT_FLAGS: /* ? */ 311 value = measure[0].photFlags;312 value.Int = measure[0].photFlags; 312 313 break; 313 314 case MEAS_XCCD: /* OK */ 314 315 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */ 315 316 # if 1 316 value = measure[0].Xccd;317 value.Flt = measure[0].Xccd; 317 318 # else 318 319 { … … 323 324 if (image == NULL) break; 324 325 RD_to_XY (&x, &y, ra, dec, &image[0].coords); 325 value = x;326 value.Flt = x; 326 327 } 327 328 # endif … … 330 331 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */ 331 332 # if 1 332 value = measure[0].Yccd;333 value.Flt = measure[0].Yccd; 333 334 # else 334 335 { … … 339 340 if (image == NULL) break; 340 341 RD_to_XY (&x, &y, ra, dec, &image[0].coords); 341 value = y;342 value.Flt = y; 342 343 } 343 344 # endif … … 349 350 if (mosaic == NULL) break; 350 351 RD_to_XY (&x, &y, ra, dec, mosaic); 351 value = x;352 value.Flt = x; 352 353 break; 353 354 case MEAS_YMOSAIC: /* OK */ … … 357 358 if (mosaic == NULL) break; 358 359 RD_to_XY (&x, &y, ra, dec, mosaic); 359 value = y;360 value.Flt = y; 360 361 break; 361 362 362 363 case MEAS_SKY: /* OK */ 363 value = measure[0].Sky;364 value.Flt = measure[0].Sky; 364 365 break; 365 366 case MEAS_dSKY: /* OK */ 366 value = measure[0].dSky;367 value.Flt = measure[0].dSky; 367 368 break; 368 369 case MEAS_DET_ID: /* OK */ 369 value = measure[0].detID;370 value.Int = measure[0].detID; 370 371 break; 371 372 case MEAS_OBJ_ID: /* OK */ 372 value = measure[0].averef;373 value.Int = measure[0].averef; 373 374 break; 374 375 case MEAS_IMAGE_ID: /* OK */ 375 value = measure[0].imageID;376 value.Int = measure[0].imageID; 376 377 break; 377 378 case MEAS_PSF_QF: /* OK */ 378 value = measure[0].qPSF;379 value.Flt = measure[0].qPSF; 379 380 break; 380 381 case MEAS_PSF_CHISQ: /* OK */ 381 value = measure[0].psfChisq;382 value.Flt = measure[0].psfChisq; 382 383 break; 383 384 case MEAS_CR_NSIGMA: /* OK */ 384 value = measure[0].crNsigma;385 value.Flt = measure[0].crNsigma; 385 386 break; 386 387 case MEAS_EXT_NSIGMA: /* OK */ 387 value = measure[0].extNsigma;388 value.Flt = measure[0].extNsigma; 388 389 break; 389 390 case MEAS_STARGAL: /* OK */ 390 value = measure[0].stargal; 391 break; 391 value.Flt = measure[0].stargal; 392 break; 393 394 // add the star/galaxy sep -- 392 395 } 393 396 return (value); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbFields.c
r17199 r20857 23 23 field->table = 0; 24 24 field->ID = 0; 25 field->type = OPIHI_FLT; 25 26 field->magMode = 0; 26 27 field->photcode = NULL; … … 89 90 } 90 91 91 # define ESCAPE(F,M ) { \92 # define ESCAPE(F,M,T) { \ 92 93 field->ID = (F); \ 93 94 field->magMode = (M); \ 95 field->type = (T); \ 94 96 field->photcode = NULL; \ 95 97 return (TRUE); } … … 137 139 } 138 140 139 if (!strcasecmp (fieldName, "RA")) ESCAPE (MEAS_RA, MAG_NONE); 140 if (!strcasecmp (fieldName, "DEC")) ESCAPE (MEAS_DEC, MAG_NONE); 141 if (!strcasecmp (fieldName, "RA:AVE")) ESCAPE (MEAS_RA_AVE, MAG_NONE); 142 if (!strcasecmp (fieldName, "DEC:AVE")) ESCAPE (MEAS_DEC_AVE, MAG_NONE); 143 if (!strcasecmp (fieldName, "RA:ERR")) ESCAPE (MEAS_RA_AVE_ERR, MAG_NONE); 144 if (!strcasecmp (fieldName, "DEC:ERR")) ESCAPE (MEAS_DEC_AVE_ERR, MAG_NONE); 145 146 if (!strcasecmp (fieldName, "uRA")) ESCAPE (MEAS_U_RA, MAG_NONE); 147 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (MEAS_U_DEC, MAG_NONE); 148 if (!strcasecmp (fieldName, "duRA")) ESCAPE (MEAS_U_RA_ERR, MAG_NONE); 149 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (MEAS_U_DEC_ERR, MAG_NONE); 150 if (!strcasecmp (fieldName, "PAR")) ESCAPE (MEAS_PAR, MAG_NONE); 151 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (MEAS_PAR_ERR, MAG_NONE); 152 if (!strcasecmp (fieldName, "dR")) ESCAPE (MEAS_RA_OFFSET, MAG_NONE); 153 if (!strcasecmp (fieldName, "dD")) ESCAPE (MEAS_DEC_OFFSET, MAG_NONE); 154 if (!strcasecmp (fieldName, "dR:FIT")) ESCAPE (MEAS_RA_FIT_OFFSET, MAG_NONE); 155 if (!strcasecmp (fieldName, "dD:FIT")) ESCAPE (MEAS_DEC_FIT_OFFSET, MAG_NONE); 156 if (!strcasecmp (fieldName, "dR:ERR")) ESCAPE (MEAS_RA_OFFSET_ERR, MAG_NONE); 157 if (!strcasecmp (fieldName, "dD:ERR")) ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE); 158 if (!strcasecmp (fieldName, "xp")) ESCAPE (MEAS_XP, MAG_NONE); 159 if (!strcasecmp (fieldName, "nmeas")) ESCAPE (MEAS_NMEAS, MAG_NONE); 160 if (!strcasecmp (fieldName, "nmiss")) ESCAPE (MEAS_NMISS, MAG_NONE); 161 if (!strcasecmp (fieldName, "objflags")) ESCAPE (MEAS_OBJFLAGS, MAG_NONE); 162 if (!strcasecmp (fieldName, "AIRMASS")) ESCAPE (MEAS_AIRMASS, MAG_NONE); 163 if (!strcasecmp (fieldName, "ALT")) ESCAPE (MEAS_ALT, MAG_NONE); 164 if (!strcasecmp (fieldName, "AZ")) ESCAPE (MEAS_AZ, MAG_NONE); 165 if (!strcasecmp (fieldName, "EXPTIME")) ESCAPE (MEAS_EXPTIME, MAG_NONE); 166 if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE, MAG_NONE); 167 if (!strcasecmp (fieldName, "TIME")) ESCAPE (MEAS_TIME, MAG_NONE); 168 if (!strcasecmp (fieldName, "FWHM")) ESCAPE (MEAS_FWHM, MAG_NONE); 169 if (!strcasecmp (fieldName, "FWHM_MAJ")) ESCAPE (MEAS_FWHM_MAJ, MAG_NONE); 170 if (!strcasecmp (fieldName, "FWHM_MIN")) ESCAPE (MEAS_FWHM_MIN, MAG_NONE); 171 if (!strcasecmp (fieldName, "THETA")) ESCAPE (MEAS_THETA, MAG_NONE); 172 if (!strcasecmp (fieldName, "DOPHOT")) ESCAPE (MEAS_DOPHOT, MAG_NONE); 173 if (!strcasecmp (fieldName, "DB_FLAGS")) ESCAPE (MEAS_DB_FLAGS, MAG_NONE); 174 if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS, MAG_NONE); 175 if (!strcasecmp (fieldName, "XCCD")) ESCAPE (MEAS_XCCD, MAG_NONE); 176 if (!strcasecmp (fieldName, "YCCD")) ESCAPE (MEAS_YCCD, MAG_NONE); 177 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, MAG_NONE); 178 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, MAG_NONE); 179 if (!strcasecmp (fieldName, "XCHIP")) ESCAPE (MEAS_XCCD, MAG_NONE); 180 if (!strcasecmp (fieldName, "YCHIP")) ESCAPE (MEAS_YCCD, MAG_NONE); 181 if (!strcasecmp (fieldName, "XFPA")) ESCAPE (MEAS_XMOSAIC, MAG_NONE); 182 if (!strcasecmp (fieldName, "YFPA")) ESCAPE (MEAS_YMOSAIC, MAG_NONE); 183 if (!strcasecmp (fieldName, "DETID")) ESCAPE (MEAS_DET_ID, MAG_NONE); 184 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (MEAS_OBJ_ID, MAG_NONE); 185 if (!strcasecmp (fieldName, "IMAGEID")) ESCAPE (MEAS_IMAGE_ID, MAG_NONE); 186 if (!strcasecmp (fieldName, "PSF_QF")) ESCAPE (MEAS_PSF_QF, MAG_NONE); 187 if (!strcasecmp (fieldName, "PSF_CHISQ")) ESCAPE (MEAS_PSF_CHISQ, MAG_NONE); 188 if (!strcasecmp (fieldName, "CR_NSIGMA")) ESCAPE (MEAS_CR_NSIGMA, MAG_NONE); 189 if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA, MAG_NONE); 190 if (!strcasecmp (fieldName, "SKY")) ESCAPE (MEAS_SKY, MAG_NONE); 191 if (!strcasecmp (fieldName, "SKY_ERR")) ESCAPE (MEAS_dSKY, MAG_NONE); 192 if (!strcasecmp (fieldName, "STARGAL")) ESCAPE (MEAS_STARGAL, MAG_NONE); 141 if (!strcasecmp (fieldName, "RA")) ESCAPE (MEAS_RA, MAG_NONE, OPIHI_FLT); 142 if (!strcasecmp (fieldName, "DEC")) ESCAPE (MEAS_DEC, MAG_NONE, OPIHI_FLT); 143 if (!strcasecmp (fieldName, "RA:AVE")) ESCAPE (MEAS_RA_AVE, MAG_NONE, OPIHI_FLT); 144 if (!strcasecmp (fieldName, "DEC:AVE")) ESCAPE (MEAS_DEC_AVE, MAG_NONE, OPIHI_FLT); 145 if (!strcasecmp (fieldName, "RA:ERR")) ESCAPE (MEAS_RA_AVE_ERR, MAG_NONE, OPIHI_FLT); 146 if (!strcasecmp (fieldName, "DEC:ERR")) ESCAPE (MEAS_DEC_AVE_ERR, MAG_NONE, OPIHI_FLT); 147 if (!strcasecmp (fieldName, "uRA")) ESCAPE (MEAS_U_RA, MAG_NONE, OPIHI_FLT); 148 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (MEAS_U_DEC, MAG_NONE, OPIHI_FLT); 149 if (!strcasecmp (fieldName, "duRA")) ESCAPE (MEAS_U_RA_ERR, MAG_NONE, OPIHI_FLT); 150 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (MEAS_U_DEC_ERR, MAG_NONE, OPIHI_FLT); 151 if (!strcasecmp (fieldName, "PAR")) ESCAPE (MEAS_PAR, MAG_NONE, OPIHI_FLT); 152 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (MEAS_PAR_ERR, MAG_NONE, OPIHI_FLT); 153 if (!strcasecmp (fieldName, "dR")) ESCAPE (MEAS_RA_OFFSET, MAG_NONE, OPIHI_FLT); 154 if (!strcasecmp (fieldName, "dD")) ESCAPE (MEAS_DEC_OFFSET, MAG_NONE, OPIHI_FLT); 155 if (!strcasecmp (fieldName, "dR:FIT")) ESCAPE (MEAS_RA_FIT_OFFSET, MAG_NONE, OPIHI_FLT); 156 if (!strcasecmp (fieldName, "dD:FIT")) ESCAPE (MEAS_DEC_FIT_OFFSET, MAG_NONE, OPIHI_FLT); 157 if (!strcasecmp (fieldName, "dR:ERR")) ESCAPE (MEAS_RA_OFFSET_ERR, MAG_NONE, OPIHI_FLT); 158 if (!strcasecmp (fieldName, "dD:ERR")) ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE, OPIHI_FLT); 159 if (!strcasecmp (fieldName, "xp")) ESCAPE (MEAS_XP, MAG_NONE, OPIHI_FLT); 160 if (!strcasecmp (fieldName, "nmeas")) ESCAPE (MEAS_NMEAS, MAG_NONE, OPIHI_INT); 161 if (!strcasecmp (fieldName, "nmiss")) ESCAPE (MEAS_NMISS, MAG_NONE, OPIHI_INT); 162 if (!strcasecmp (fieldName, "objflags")) ESCAPE (MEAS_OBJFLAGS, MAG_NONE, OPIHI_INT); 163 if (!strcasecmp (fieldName, "AIRMASS")) ESCAPE (MEAS_AIRMASS, MAG_NONE, OPIHI_FLT); 164 if (!strcasecmp (fieldName, "ALT")) ESCAPE (MEAS_ALT, MAG_NONE, OPIHI_FLT); 165 if (!strcasecmp (fieldName, "AZ")) ESCAPE (MEAS_AZ, MAG_NONE, OPIHI_FLT); 166 if (!strcasecmp (fieldName, "EXPTIME")) ESCAPE (MEAS_EXPTIME, MAG_NONE, OPIHI_FLT); 167 if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE, MAG_NONE, OPIHI_INT); 168 if (!strcasecmp (fieldName, "TIME")) ESCAPE (MEAS_TIME, MAG_NONE, OPIHI_FLT); 169 if (!strcasecmp (fieldName, "FWHM")) ESCAPE (MEAS_FWHM, MAG_NONE, OPIHI_FLT); 170 if (!strcasecmp (fieldName, "FWHM_MAJ")) ESCAPE (MEAS_FWHM_MAJ, MAG_NONE, OPIHI_FLT); 171 if (!strcasecmp (fieldName, "FWHM_MIN")) ESCAPE (MEAS_FWHM_MIN, MAG_NONE, OPIHI_FLT); 172 if (!strcasecmp (fieldName, "THETA")) ESCAPE (MEAS_THETA, MAG_NONE, OPIHI_FLT); 173 if (!strcasecmp (fieldName, "DOPHOT")) ESCAPE (MEAS_DOPHOT, MAG_NONE, OPIHI_FLT); 174 if (!strcasecmp (fieldName, "DB_FLAGS")) ESCAPE (MEAS_DB_FLAGS, MAG_NONE, OPIHI_INT); 175 if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS, MAG_NONE, OPIHI_INT); 176 if (!strcasecmp (fieldName, "XCCD")) ESCAPE (MEAS_XCCD, MAG_NONE, OPIHI_FLT); 177 if (!strcasecmp (fieldName, "YCCD")) ESCAPE (MEAS_YCCD, MAG_NONE, OPIHI_FLT); 178 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 179 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); 180 if (!strcasecmp (fieldName, "XCHIP")) ESCAPE (MEAS_XCCD, MAG_NONE, OPIHI_FLT); 181 if (!strcasecmp (fieldName, "YCHIP")) ESCAPE (MEAS_YCCD, MAG_NONE, OPIHI_FLT); 182 if (!strcasecmp (fieldName, "XFPA")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 183 if (!strcasecmp (fieldName, "YFPA")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); 184 if (!strcasecmp (fieldName, "DETID")) ESCAPE (MEAS_DET_ID, MAG_NONE, OPIHI_INT); 185 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (MEAS_OBJ_ID, MAG_NONE, OPIHI_INT); 186 if (!strcasecmp (fieldName, "IMAGEID")) ESCAPE (MEAS_IMAGE_ID, MAG_NONE, OPIHI_INT); 187 if (!strcasecmp (fieldName, "PSF_QF")) ESCAPE (MEAS_PSF_QF, MAG_NONE, OPIHI_FLT); 188 if (!strcasecmp (fieldName, "PSF_CHISQ")) ESCAPE (MEAS_PSF_CHISQ, MAG_NONE, OPIHI_FLT); 189 if (!strcasecmp (fieldName, "CR_NSIGMA")) ESCAPE (MEAS_CR_NSIGMA, MAG_NONE, OPIHI_FLT); 190 if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA, MAG_NONE, OPIHI_FLT); 191 if (!strcasecmp (fieldName, "SKY")) ESCAPE (MEAS_SKY, MAG_NONE, OPIHI_FLT); 192 if (!strcasecmp (fieldName, "SKY_ERR")) ESCAPE (MEAS_dSKY, MAG_NONE, OPIHI_FLT); 193 if (!strcasecmp (fieldName, "STARGAL")) ESCAPE (MEAS_STARGAL, MAG_NONE, OPIHI_FLT); 193 194 194 195 // for words that don't parse, try a photcode … … 200 201 field->ID = MEAS_MAG; 201 202 field->magMode = mode; 203 field->type = OPIHI_FLT; 202 204 field->photcode = code; 203 205 return (TRUE); … … 234 236 } 235 237 236 if (!strcasecmp (fieldName, "RA")) ESCAPE (AVE_RA, MAG_NONE );237 if (!strcasecmp (fieldName, "DEC")) ESCAPE (AVE_DEC, MAG_NONE );238 if (!strcasecmp (fieldName, "dRA")) ESCAPE (AVE_RA_ERR, MAG_NONE );239 if (!strcasecmp (fieldName, "dDEC")) ESCAPE (AVE_DEC_ERR, MAG_NONE );240 if (!strcasecmp (fieldName, "uRA")) ESCAPE (AVE_U_RA, MAG_NONE );241 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (AVE_U_DEC, MAG_NONE );242 if (!strcasecmp (fieldName, "duRA")) ESCAPE (AVE_U_RA_ERR, MAG_NONE );243 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE );244 if (!strcasecmp (fieldName, "PAR")) ESCAPE (AVE_PAR, MAG_NONE );245 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (AVE_PAR_ERR, MAG_NONE );246 if (!strcasecmp (fieldName, "Xp")) ESCAPE (AVE_Xp, MAG_NONE );247 if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS, MAG_NONE );248 if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS, MAG_NONE );249 if (!strcasecmp (fieldName, "FLAG")) ESCAPE (AVE_FLAG, MAG_NONE );250 if (!strcasecmp (fieldName, "TYPE")) ESCAPE (AVE_TYPE, MAG_NONE );251 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID, MAG_NONE );238 if (!strcasecmp (fieldName, "RA")) ESCAPE (AVE_RA, MAG_NONE, OPIHI_FLT); 239 if (!strcasecmp (fieldName, "DEC")) ESCAPE (AVE_DEC, MAG_NONE, OPIHI_FLT); 240 if (!strcasecmp (fieldName, "dRA")) ESCAPE (AVE_RA_ERR, MAG_NONE, OPIHI_FLT); 241 if (!strcasecmp (fieldName, "dDEC")) ESCAPE (AVE_DEC_ERR, MAG_NONE, OPIHI_FLT); 242 if (!strcasecmp (fieldName, "uRA")) ESCAPE (AVE_U_RA, MAG_NONE, OPIHI_FLT); 243 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (AVE_U_DEC, MAG_NONE, OPIHI_FLT); 244 if (!strcasecmp (fieldName, "duRA")) ESCAPE (AVE_U_RA_ERR, MAG_NONE, OPIHI_FLT); 245 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE, OPIHI_FLT); 246 if (!strcasecmp (fieldName, "PAR")) ESCAPE (AVE_PAR, MAG_NONE, OPIHI_FLT); 247 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (AVE_PAR_ERR, MAG_NONE, OPIHI_FLT); 248 if (!strcasecmp (fieldName, "Xp")) ESCAPE (AVE_Xp, MAG_NONE, OPIHI_FLT); 249 if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS, MAG_NONE, OPIHI_INT); 250 if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS, MAG_NONE, OPIHI_INT); 251 if (!strcasecmp (fieldName, "FLAG")) ESCAPE (AVE_FLAG, MAG_NONE, OPIHI_INT); 252 if (!strcasecmp (fieldName, "TYPE")) ESCAPE (AVE_TYPE, MAG_NONE, OPIHI_INT); 253 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID, MAG_NONE, OPIHI_INT); 252 254 253 255 // for words that don't parse, try a photcode … … 264 266 field->ID = AVE_MAG; 265 267 field->magMode = mode; 268 field->type = OPIHI_FLT; 266 269 field->photcode = code; 267 270 return (TRUE); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/fitcolors.c
r20839 r20857 18 18 double *M1, *M2; 19 19 float *out; 20 opihi_flt *colorFit, *deltaFit, dColor, C0, C1;20 float *colorFit, *deltaFit, dColor, C0, C1; 21 21 opihi_flt minDelta, maxDelta, minColor, maxColor; 22 22 int kapa, Npx, Npy, NPX, NPY, Nplot, PLOT; … … 100 100 KapaSetFont (kapa, "helvetica", 14); 101 101 102 ALLOCATE (colorFit, opihi_flt, 11);103 ALLOCATE (deltaFit, opihi_flt, 11);102 ALLOCATE (colorFit, float, 11); 103 ALLOCATE (deltaFit, float, 11); 104 104 dColor = (maxColor - minColor) / 10.0; 105 105 for (i = 0; i < 11; i++) { … … 177 177 /* vectors to save data */ 178 178 Npts = 0; 179 NPTS = 1;179 NPTS = 64; 180 180 if ((xvec = SelectVector ("tmp_x", ANYVECTOR, TRUE)) == NULL) goto escape; 181 181 if ((yvec = SelectVector ("tmp_y", ANYVECTOR, TRUE)) == NULL) goto escape; 182 183 ResetVector (xvec, OPIHI_FLT, NPTS); 184 ResetVector (yvec, OPIHI_FLT, NPTS); 182 185 183 186 // set up basic windows … … 307 310 KapaBox (kapa, &graphdata); 308 311 309 PlotVectorPair (kapa, Npts, xvec[0].elements.Flt, yvec[0].elements.Flt, &graphdata);312 PlotVectorPair (kapa, xvec, yvec, &graphdata); 310 313 311 314 for (i = 0; i < 11; i++) { … … 315 318 graphdata.color = KapaColorByName ("red"); 316 319 317 PlotVectorPair (kapa, 11, colorFit, deltaFit, &graphdata); 320 KapaPrepPlot (kapa, 11, graphmode); 321 KapaPlotVector (kapa, 11, colorFit, "x"); 322 KapaPlotVector (kapa, 11, deltaFit, "y"); 318 323 319 324 KapaSetFont (kapa, "helvetica", 8); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/images.c
r20839 r20857 280 280 graphmode.ptype = 100; /* connect pairs of points */ 281 281 graphmode.etype = 0; 282 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);282 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 283 283 } 284 284 -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/imbox.c
r20839 r20857 104 104 graphmode.ptype = 100; /* connect pairs of points */ 105 105 graphmode.etype = 0; 106 PlotVectorPair (kapa, 8, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);106 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 107 107 } 108 108 skip: -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/imdense.c
r20839 r20857 63 63 graphmode.style = 2; /* points */ 64 64 graphmode.etype = 0; 65 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);65 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 66 66 } 67 67 -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/imstats.c
r20839 r20857 54 54 graphmode.style = 2; 55 55 graphmode.etype = 0; 56 PlotVectorPair (kapa, Nimage, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);56 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 57 57 58 58 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/lcurve.c
r20839 r20857 155 155 156 156 if (ErrorBars) { 157 PlotVectorPairErrors (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, dYvec.elements.Flt, &graphmode);157 PlotVectorPairErrors (kapa, Xvec, Yvec, dYvec, &graphmode); 158 158 } else { 159 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);159 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 160 160 } 161 161 … … 173 173 174 174 if (SaveVectors) { 175 xvec->type = OPIHI_FLT; 176 yvec->type = OPIHI_FLT; 175 177 free (xvec[0].elements.Flt); 176 178 free (yvec[0].elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/mextract.c
r20856 r20857 6 6 int Nsecfilt, VERBOSE, loadImages, mosaicMode; 7 7 char **cstack, name[1024]; 8 float*values;8 dbValue *values; 9 9 void *Signal; 10 10 … … 88 88 89 89 /* create storage vector */ 90 ALLOCATE (values, float, Nfields);90 ALLOCATE (values, dbValue, Nfields); 91 91 ALLOCATE (vec, Vector *, Nreturn); 92 92 for (i = 0; i < Nreturn; i++) { … … 140 140 if (!dbBooleanCond (stack, Nstack, values)) continue; 141 141 for (n = 0; n < Nreturn; n++) { 142 vec[n][0].elements.Flt[Npts] = values[n]; 142 if (vec[n][0].type == OPIHI_FLT) { 143 vec[n][0].elements.Flt[Npts] = values[n].Flt; 144 } else { 145 vec[n][0].elements.Int[Npts] = values[n].Int; 146 } 143 147 // fprintf (stderr, "keep : field: %s, value: %f\n", fields[n].name, values[n]); 144 148 } … … 166 170 } 167 171 172 free (values); 168 173 dbFreeFields (fields, Nfields); 169 174 dbFreeStack (stack, Nstack); … … 175 180 176 181 escape: 182 free (values); 177 183 dbFreeFields (fields, Nfields); 178 184 dbFreeStack (stack, Nstack); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/mmextract.c
r20856 r20857 8 8 int Nsecfilt, VERBOSE, loadImages, mosaicMode; 9 9 char **cstack1, **cstack2, name1[1024], name2[1024]; 10 float*values, **table1, **table2;10 dbValue *values, **table1, **table2; 11 11 void *Signal; 12 12 … … 139 139 140 140 /* create storage vector */ 141 ALLOCATE (values, float, Nfields);141 ALLOCATE (values, dbValue, Nfields); 142 142 ALLOCATE (vec, Vector *, Nreturn); 143 143 … … 152 152 if ((vec[2*i+0] = SelectVector (name1, ANYVECTOR, TRUE)) == NULL) goto escape; 153 153 if ((vec[2*i+1] = SelectVector (name2, ANYVECTOR, TRUE)) == NULL) goto escape; 154 ResetVector (vec[2*i+0], fields[i].type, NNN);155 ResetVector (vec[2*i+1], fields[i].type, NNN);154 ResetVector (vec[2*i+0], fields[i].type, fields[i].type); 155 ResetVector (vec[2*i+1], fields[i].type, fields[i].type); 156 156 } 157 157 … … 160 160 161 161 // we save the selected measures for each average to temporary tables 1 and 2 162 // XXX need to deal with the INT / DBL difference here... 162 163 NTABLE = 100; 163 ALLOCATE (table1, float*, Nreturn_base);164 ALLOCATE (table2, float*, Nreturn_base);164 ALLOCATE (table1, dbValue *, Nreturn_base); 165 ALLOCATE (table2, dbValue *, Nreturn_base); 165 166 for (i = 0; i < Nreturn_base; i++) { 166 ALLOCATE (table1[i], float, NTABLE);167 ALLOCATE (table2[i], float, NTABLE);167 ALLOCATE (table1[i], dbValue, NTABLE); 168 ALLOCATE (table2[i], dbValue, NTABLE); 168 169 } 169 170 … … 196 197 NTABLE = catalog.average[j].Nmeasure; 197 198 for (n = 0; n < Nreturn_base; n++) { 198 REALLOCATE (table1[n], float, NTABLE);199 REALLOCATE (table2[n], float, NTABLE);199 REALLOCATE (table1[n], dbValue, NTABLE); 200 REALLOCATE (table2[n], dbValue, NTABLE); 200 201 } 201 202 } … … 208 209 dbExtractMeasuresInitMeas (); // reset counters for saved fields 209 210 for (n = 0; n < Nfields; n++) { 211 // values needs to be a pointer to a type with FLT and INT (with a union, we would save a bit of memory...) 210 212 values[n] = dbExtractMeasures (&catalog.average[j], &catalog.secfilt[j*Nsecfilt], &catalog.measure[m], &fields[n]); 211 213 } … … 234 236 for (n2 = 0; n2 < Nt2; n2++) { 235 237 for (n = 0; n < Nreturn_base; n++) { 236 vec[2*n+0][0].elements.Flt[Npts] = table1[n][n1]; 237 vec[2*n+1][0].elements.Flt[Npts] = table2[n][n2]; 238 if (vec[2*n+0][0].type == OPIHI_FLT) { 239 vec[2*n+0][0].elements.Flt[Npts] = table1[n][n1].Flt; 240 vec[2*n+1][0].elements.Flt[Npts] = table2[n][n2].Flt; 241 } else { 242 vec[2*n+0][0].elements.Int[Npts] = table1[n][n1].Int; 243 vec[2*n+1][0].elements.Int[Npts] = table2[n][n2].Int; 244 } 238 245 } 239 246 Npts++; … … 241 248 NPTS += 2000; 242 249 for (n = 0; n < Nreturn; n++) { 243 REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS); 250 if (vec[n][0].type == OPIHI_FLT) { 251 REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS); 252 } else { 253 REALLOCATE (vec[n][0].elements.Int, opihi_int, NPTS); 254 } 244 255 } 245 256 } … … 257 268 interrupt = FALSE; 258 269 270 // free excess memory 259 271 for (n = 0; n < Nreturn; n++) { 260 272 vec[n][0].Nelements = Npts; 261 REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts)); 273 if (vec[n][0].type == OPIHI_FLT) { 274 REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts)); 275 } else { 276 REALLOCATE (vec[n][0].elements.Int, opihi_int, MAX(1,Npts)); 277 } 262 278 } 263 279 -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/paverage.c
r20839 r20857 10 10 double Radius, Rmin, Rmax, R, D; 11 11 unsigned IDclip, IDchoice, LimExclude; 12 opihi_flt *Xvec, *Yvec, *Zvec;12 float *Xvec, *Yvec, *Zvec; 13 13 void *Signal; 14 14 … … 38 38 photcode = GetPhotcodebyName (argv[Narg]); 39 39 if (!photcode) { 40 fprintf (stderr, "unknown photcode %s\n", argv[Narg]);41 return (FALSE);40 fprintf (stderr, "unknown photcode %s\n", argv[Narg]); 41 return (FALSE); 42 42 } 43 43 remove_argument (Narg, &argc, argv); 44 44 Nsec = GetPhotcodeNsec (photcode[0].code); 45 45 if (Nsec == -1) { 46 fprintf (stderr, "photcode %s is not an AVERAGE photcode\n", argv[Narg]);47 return (FALSE);46 fprintf (stderr, "photcode %s is not an AVERAGE photcode\n", argv[Narg]); 47 return (FALSE); 48 48 } 49 49 } … … 96 96 Npts = 0; 97 97 NPTS = 1000; 98 ALLOCATE (Xvec, opihi_flt, NPTS);99 ALLOCATE (Yvec, opihi_flt, NPTS);100 ALLOCATE (Zvec, opihi_flt, NPTS);98 ALLOCATE (Xvec, float, NPTS); 99 ALLOCATE (Yvec, float, NPTS); 100 ALLOCATE (Zvec, float, NPTS); 101 101 102 102 // prepare to handle interrupt signals … … 133 133 R = average[i].R; 134 134 D = average[i].D; 135 status = RD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);135 status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords); 136 136 if (!status) continue; 137 137 Npts ++; 138 138 139 139 if (Npts == NPTS - 1) { 140 NPTS += 1000;141 REALLOCATE (Xvec, opihi_flt, NPTS);142 REALLOCATE (Yvec, opihi_flt, NPTS);143 REALLOCATE (Zvec, opihi_flt, NPTS);140 NPTS += 1000; 141 REALLOCATE (Xvec, float, NPTS); 142 REALLOCATE (Yvec, float, NPTS); 143 REALLOCATE (Zvec, float, NPTS); 144 144 } 145 145 if ((Npts > NCHUNK) || (Nloaded >= 25)) { 146 PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode); 147 Npts = 0; 148 Nloaded = 0; 146 KapaPrepPlot (kapa, Npts, graphmode); 147 KapaPlotVector (kapa, Npts, Xvec, "x"); 148 KapaPlotVector (kapa, Npts, Yvec, "y"); 149 KapaPlotVector (kapa, Npts, Zvec, "z"); 150 Npts = 0; 151 Nloaded = 0; 149 152 } 150 153 } … … 152 155 dvo_catalog_free (&catalog); 153 156 } 154 if (Npts > 0) PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode); 157 if (Npts > 0) { 158 KapaPrepPlot (kapa, Npts, graphmode); 159 KapaPlotVector (kapa, Npts, Xvec, "x"); 160 KapaPlotVector (kapa, Npts, Yvec, "y"); 161 KapaPlotVector (kapa, Npts, Zvec, "z"); 162 } 155 163 156 164 free (Xvec); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/pmeasure.c
r20839 r20857 14 14 unsigned photFlagChoice, photFlagClip; 15 15 int PhotcodeClip; 16 opihi_flt *Xvec, *Yvec, *Zvec;16 float *Xvec, *Yvec, *Zvec; 17 17 time_t tzero, tend; 18 18 void *Signal; … … 169 169 Npts = 0; 170 170 NPTS = 1000; 171 ALLOCATE (Xvec, opihi_flt, NPTS);172 ALLOCATE (Yvec, opihi_flt, NPTS);173 ALLOCATE (Zvec, opihi_flt, NPTS);171 ALLOCATE (Xvec, float, NPTS); 172 ALLOCATE (Yvec, float, NPTS); 173 ALLOCATE (Zvec, float, NPTS); 174 174 175 175 // prepare to handle interrupt signals … … 218 218 free (date); 219 219 } 220 status = RD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);220 status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords); 221 221 if (!status) continue; 222 222 Npts ++; 223 223 224 224 if (Npts == NPTS - 1) { 225 NPTS += 1000;226 REALLOCATE (Xvec, opihi_flt, NPTS);227 REALLOCATE (Yvec, opihi_flt, NPTS);228 REALLOCATE (Zvec, opihi_flt, NPTS);225 NPTS += 1000; 226 REALLOCATE (Xvec, float, NPTS); 227 REALLOCATE (Yvec, float, NPTS); 228 REALLOCATE (Zvec, float, NPTS); 229 229 } 230 230 if ((Npts > NCHUNK) || (Nloaded >= 25)) { 231 PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode); 232 Npts = 0; 233 Nloaded = 0; 231 KapaPrepPlot (kapa, Npts, graphmode); 232 KapaPlotVector (kapa, Npts, Xvec, "x"); 233 KapaPlotVector (kapa, Npts, Yvec, "y"); 234 KapaPlotVector (kapa, Npts, Zvec, "z"); 235 Npts = 0; 236 Nloaded = 0; 234 237 } 235 238 } … … 238 241 dvo_catalog_free (&catalog); 239 242 } 240 if (Npts > 0) PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode); 241 243 if (Npts > 0) { 244 KapaPrepPlot (kapa, Npts, graphmode); 245 KapaPlotVector (kapa, Npts, Xvec, "x"); 246 KapaPlotVector (kapa, Npts, Yvec, "y"); 247 KapaPlotVector (kapa, Npts, Zvec, "z"); 248 } 242 249 free (Xvec); 243 250 free (Yvec); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/procks.c
r20839 r20857 114 114 graphmode.style = 2; /* set style to points */ 115 115 graphmode.etype = 0; /* no errorbars */ 116 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);116 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 117 117 118 118 /* now plot vectors between two extrema */ … … 147 147 graphmode.etype = 0; /* no errorbars */ 148 148 149 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);149 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 150 150 151 151 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/showtile.c
r20839 r20857 86 86 graphmode.ptype = 100; /* connect pairs of points */ 87 87 graphmode.etype = 0; 88 PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);88 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 89 89 } 90 90 -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/simage.c
r20839 r20857 155 155 Npts = Xvec.Nelements; 156 156 157 PlotVectorTriplet (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, Zvec.elements.Flt, &graphmode);157 PlotVectorTriplet (kapa, Xvec, Yvec, Zvec, &graphmode); 158 158 159 159 free (Xvec.elements.Flt); -
branches/eam_branch_20081124/Ohana/src/opihi/dvo/skycat.c
r20839 r20857 101 101 graphmode.ptype = 100; /* connect pairs of points */ 102 102 graphmode.etype = 0; 103 PlotVectorPair (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);103 PlotVectorPair (kapa, Xvec, Yvec, &graphmode); 104 104 } 105 105 -
branches/eam_branch_20081124/Ohana/src/opihi/include/display.h
r20839 r20857 7 7 8 8 /*** kapa graph functions ***/ 9 int PlotVectorSingle PROTO((int kapa, int Npts, opihi_flt *values, char *mode));10 int PlotVectorPair PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, Graphdata *graphmode));11 int PlotVectorPairErrors PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt*dyValues, Graphdata *graphmode));12 int PlotVectorTriplet PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt*zValues, Graphdata *graphmode));9 int PlotVectorSingle PROTO((int kapa, Vector *vec, char *mode)); 10 int PlotVectorPair PROTO((int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode)); 11 int PlotVectorPairErrors PROTO((int kapa, Vector *xVec, Vector *yVec, Vector *dyValues, Graphdata *graphmode)); 12 int PlotVectorTriplet PROTO((int kapa, Vector *xVec, Vector *yVec, Vector *zValues, Graphdata *graphmode)); 13 13 int GetGraphData PROTO((Graphdata *data, int *kapa, char *name)); 14 14 int GetGraph PROTO((Graphdata *data, int *kapa, char *name)); -
branches/eam_branch_20081124/Ohana/src/opihi/include/dvomath.h
r20856 r20857 9 9 # define opihi_flt double 10 10 # define opihi_int unsigned int 11 12 # define REQUIRE_VECTOR_FLT(VECT,RVAL) { \ 13 if (VECT->type != OPIHI_FLT) { \ 14 gprint (GP_ERR, "function requires vector of type FLT\n"); \ 15 return (RVAL); \ 16 } 17 18 # define REQUIRE_VECTOR_INT(VECT,RVAL) { \ 19 if (VECT->type != OPIHI_INT) { \ 20 gprint (GP_ERR, "function requires vector of type INT\n"); \ 21 return (RVAL); \ 22 } 11 23 12 24 enum {ANYVECTOR, NEWVECTOR, OLDVECTOR}; -
branches/eam_branch_20081124/Ohana/src/opihi/include/dvoshell.h
r20839 r20857 136 136 int ID; 137 137 int magMode; 138 char type; 138 139 PhotCode *photcode; 139 140 } dbField; … … 146 147 float Float; 147 148 } dbStack; 149 150 typedef struct { 151 opihi_flt Flt; 152 opihi_int Int; 153 } dbValue; 148 154 149 155 typedef struct { -
branches/eam_branch_20081124/Ohana/src/opihi/lib.data/PlotVectors.c
r20839 r20857 1 1 # include "display.h" 2 2 3 int PlotVectorSingle (int kapa, int Npts, opihi_flt *values, char *mode) {3 int PlotVectorSingle (int kapa, Vector *vec, char *mode) { 4 4 5 int i ;5 int i, Npts; 6 6 float *temp; 7 8 Npts = vec->Nelements; 7 9 ALLOCATE (temp, float, Npts); 8 10 9 for (i = 0; i < Npts; i++) { 10 temp[i] = values[i]; 11 if (vec->type == OPIHI_FLT) { 12 opihi_flt *value = vec->elements.Flt; 13 for (i = 0; i < Npts; i++) { 14 temp[i] = value[i]; 15 } 16 } else { 17 opihi_int *value = vec->elements.Int; 18 for (i = 0; i < Npts; i++) { 19 temp[i] = value[i]; 20 } 11 21 } 12 22 KapaPlotVector (kapa, Npts, temp, mode); … … 17 27 } 18 28 19 int PlotVectorPair (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, Graphdata *graphmode) {29 int PlotVectorPair (int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode) { 20 30 21 int i ;31 int i, Npts; 22 32 float *temp; 33 34 if (xVec->Nelements != yVec->Nelements) return (FALSE); 35 Npts = xVec->Nelements; 36 23 37 ALLOCATE (temp, float, Npts); 24 38 25 39 KapaPrepPlot (kapa, Npts, graphmode); 26 40 27 for (i = 0; i < Npts; i++) { 28 temp[i] = xValues[i]; 41 if (xVec->type == OPIHI_FLT) { 42 opihi_flt *value = xVec->elements.Flt; 43 for (i = 0; i < Npts; i++) { 44 temp[i] = value[i]; 45 } 46 } else { 47 opihi_int *value = xVec->elements.Int; 48 for (i = 0; i < Npts; i++) { 49 temp[i] = value[i]; 50 } 29 51 } 30 52 KapaPlotVector (kapa, Npts, temp, "x"); 31 53 32 for (i = 0; i < Npts; i++) { 33 temp[i] = yValues[i]; 54 if (yVec->type == OPIHI_FLT) { 55 opihi_flt *value = yVec->elements.Flt; 56 for (i = 0; i < Npts; i++) { 57 temp[i] = value[i]; 58 } 59 } else { 60 opihi_int *value = yVec->elements.Int; 61 for (i = 0; i < Npts; i++) { 62 temp[i] = value[i]; 63 } 34 64 } 35 65 KapaPlotVector (kapa, Npts, temp, "y"); … … 40 70 } 41 71 42 int PlotVectorTriplet (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *zValues, Graphdata *graphmode) {72 int PlotVectorTriplet (int kapa, Vector *xVec, Vector *yVec, Vector *zVec, Graphdata *graphmode) { 43 73 44 int i ;74 int i, Npts; 45 75 float *temp; 76 77 if (xVec->Nelements != yVec->Nelements) return (FALSE); 78 if (xVec->Nelements != zVec->Nelements) return (FALSE); 79 Npts = xVec->Nelements; 80 46 81 ALLOCATE (temp, float, Npts); 47 82 48 KapaPrepPlot (kapa, Npts, graphmode);83 KapaPrepPlot (kapa, Npts, graphmode); 49 84 50 for (i = 0; i < Npts; i++) { 51 temp[i] = xValues[i]; 85 if (xVec->type == OPIHI_FLT) { 86 opihi_flt *value = xVec->elements.Flt; 87 for (i = 0; i < Npts; i++) { 88 temp[i] = value[i]; 89 } 90 } else { 91 opihi_int *value = xVec->elements.Int; 92 for (i = 0; i < Npts; i++) { 93 temp[i] = value[i]; 94 } 52 95 } 53 96 KapaPlotVector (kapa, Npts, temp, "x"); 54 97 55 for (i = 0; i < Npts; i++) { 56 temp[i] = yValues[i]; 98 if (yVec->type == OPIHI_FLT) { 99 opihi_flt *value = yVec->elements.Flt; 100 for (i = 0; i < Npts; i++) { 101 temp[i] = value[i]; 102 } 103 } else { 104 opihi_int *value = yVec->elements.Int; 105 for (i = 0; i < Npts; i++) { 106 temp[i] = value[i]; 107 } 57 108 } 58 109 KapaPlotVector (kapa, Npts, temp, "y"); 59 110 60 for (i = 0; i < Npts; i++) { 61 temp[i] = zValues[i]; 111 if (zVec->type == OPIHI_FLT) { 112 opihi_flt *value = zVec->elements.Flt; 113 for (i = 0; i < Npts; i++) { 114 temp[i] = value[i]; 115 } 116 } else { 117 opihi_int *value = zVec->elements.Int; 118 for (i = 0; i < Npts; i++) { 119 temp[i] = value[i]; 120 } 62 121 } 63 122 KapaPlotVector (kapa, Npts, temp, "z"); … … 68 127 } 69 128 70 int PlotVectorPairErrors (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *dyValues, Graphdata *graphmode) {129 int PlotVectorPairErrors (int kapa, Vector *xVec, Vector *yVec, Vector *dyVec, Graphdata *graphmode) { 71 130 72 int i ;131 int i, Npts; 73 132 float *temp; 133 134 if (xVec->Nelements != yVec->Nelements) return (FALSE); 135 if (xVec->Nelements != dyVec->Nelements) return (FALSE); 136 Npts = xVec->Nelements; 137 74 138 ALLOCATE (temp, float, Npts); 75 139 76 140 KapaPrepPlot (kapa, Npts, graphmode); 77 141 78 for (i = 0; i < Npts; i++) { 79 temp[i] = xValues[i]; 142 if (xVec->type == OPIHI_FLT) { 143 opihi_flt *value = xVec->elements.Flt; 144 for (i = 0; i < Npts; i++) { 145 temp[i] = value[i]; 146 } 147 } else { 148 opihi_int *value = xVec->elements.Int; 149 for (i = 0; i < Npts; i++) { 150 temp[i] = value[i]; 151 } 80 152 } 81 153 KapaPlotVector (kapa, Npts, temp, "x"); 82 154 83 for (i = 0; i < Npts; i++) { 84 temp[i] = yValues[i]; 155 if (yVec->type == OPIHI_FLT) { 156 opihi_flt *value = yVec->elements.Flt; 157 for (i = 0; i < Npts; i++) { 158 temp[i] = value[i]; 159 } 160 } else { 161 opihi_int *value = yVec->elements.Int; 162 for (i = 0; i < Npts; i++) { 163 temp[i] = value[i]; 164 } 85 165 } 86 166 KapaPlotVector (kapa, Npts, temp, "y"); 87 167 88 for (i = 0; i < Npts; i++) { 89 temp[i] = dyValues[i]; 168 if (dyVec->type == OPIHI_FLT) { 169 opihi_flt *value = dyVec->elements.Flt; 170 for (i = 0; i < Npts; i++) { 171 temp[i] = value[i]; 172 } 173 } else { 174 opihi_int *value = dyVec->elements.Int; 175 for (i = 0; i < Npts; i++) { 176 temp[i] = value[i]; 177 } 90 178 } 91 179 KapaPlotVector (kapa, Npts, temp, "dym"); -
branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/expand_vectors.c
r20856 r20857 126 126 } 127 127 if (I < 0) I += vec[0].Nelements; 128 if (vec[0].type == OPIHI_FLT) { 129 f1 = vec[0].elements.Flt[I]; 130 } else { 131 f1 = vec[0].elements.Int[I]; 132 } 128 f1 = (vec[0].type == OPIHI_FLT) ? vec[0].elements.Flt[I] : vec[0].elements.Int[I]; 133 129 } 134 130 } … … 136 132 free (tmpline); 137 133 if ((int)f1 == f1) 138 snprintf (strValue, 128, "%.0f", f1); 134 snprintf (strValue, 128, "%.0f", f1); 139 135 else 140 snprintf (strValue, 128, "%. 9g", f1);136 snprintf (strValue, 128, "%.12g", f1); 141 137 142 138 /* interpolate vector element into newline (being accumulated) */ -
branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/parse.c
r20856 r20857 191 191 if (Nx < 0) Nx += vec[0].Nelements; 192 192 if (vec[0].type == OPIHI_FLT) { 193 vec[0].elements.Flt[Nx] = atof (val);193 vec[0].elements.Flt[Nx] = atof (val); 194 194 } else { 195 vec[0].elements.Int[Nx] = atol (val);195 vec[0].elements.Int[Nx] = atol (val); 196 196 } 197 197 }
Note:
See TracChangeset
for help on using the changeset viewer.
