Changeset 34584
- Timestamp:
- Oct 25, 2012, 10:26:16 AM (14 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 2 deleted
- 28 edited
- 6 copied
-
cmd.astro (modified) (1 prop)
-
cmd.astro/cgrid.c (modified) (1 diff)
-
cmd.astro/cplot.c (modified) (3 diffs)
-
cmd.astro/czplot.c (modified) (1 diff)
-
cmd.data/Makefile (modified) (1 diff)
-
cmd.data/dbconnect.c (modified) (1 diff)
-
cmd.data/dbselect.c (modified) (1 diff)
-
cmd.data/grid.c (modified) (1 diff)
-
cmd.data/imspline_apply.c (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/cmd.data/imspline_apply.c )
-
cmd.data/imspline_construct.c (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/cmd.data/imspline_construct.c )
-
cmd.data/init.c (modified) (2 diffs)
-
cmd.data/plot.c (modified) (4 diffs)
-
cmd.data/spline.c (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/cmd.data/spline.c )
-
cmd.data/spline_apply.c (deleted)
-
cmd.data/spline_commands.c (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/cmd.data/spline_commands.c )
-
cmd.data/spline_construct.c (deleted)
-
cmd.data/write_vectors.c (modified) (1 diff)
-
cmd.data/zplot.c (modified) (10 diffs)
-
doc/pantasks.controller.txt (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/doc/pantasks.controller.txt )
-
dvo/fitcolors.c (modified) (1 diff)
-
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) (1 diff)
-
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/data.h (modified) (2 diffs)
-
include/display.h (modified) (1 diff)
-
lib.data/Makefile (modified) (1 diff)
-
lib.data/PlotVectors.c (modified) (4 diffs)
-
lib.data/SplineOps.c (copied) (copied from branches/eam_branches/ipp-20120905/Ohana/src/opihi/lib.data/SplineOps.c )
-
lib.data/spline.c (modified) (3 diffs)
-
lib.shell/VectorIO.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20120905/Ohana/src/opihi/cmd.astro merged: 34468,34490,34521,34569,34575
- Property svn:mergeinfo changed
-
trunk/Ohana/src/opihi/cmd.astro/cgrid.c
r30611 r34584 279 279 graphmode.ptype = 100; /* connect a pair */ 280 280 graphmode.etype = 0; 281 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);281 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 282 282 283 283 free (Xvec.elements.Ptr); -
trunk/Ohana/src/opihi/cmd.astro/cplot.c
r21153 r34584 3 3 int cplot (int argc, char **argv) { 4 4 5 double ra_prev; 5 6 int i, kapa, Npts, status, leftside; 6 7 opihi_flt *x, *y, *r, *d, Rmin, Rmax, Rmid; … … 41 42 Npts = 0; 42 43 for (i = 0; i < Xvec.Nelements; i++, r++, d++) { 43 *r= ohana_normalize_angle (*r);44 while ( *r < Rmin) *r+= 360.0;45 while ( *r > Rmax) *r-= 360.0;44 double ra = ohana_normalize_angle (*r); 45 while (ra < Rmin) ra += 360.0; 46 while (ra > Rmax) ra -= 360.0; 46 47 47 48 // for pair-by-pair connections, check on second point if we straddle the back midline 48 if ((graphmode.ptype == 100) && (i % 2)) { 49 leftside = (r[-1] < Rmid); // if first of the pair is left, second must be as well 50 if ( leftside && (r[0] > Rmid + 90)) { r[0] -= 360.0; } 51 if (!leftside && (r[0] < Rmid - 90)) { r[0] += 360.0; } 49 if (graphmode.ptype == 100) { 50 if (i % 2) { 51 leftside = (ra_prev < Rmid); // if first of the pair is left, second must be as well 52 if ( leftside && (ra > Rmid + 90)) { ra -= 360.0; } 53 if (!leftside && (ra < Rmid - 90)) { ra += 360.0; } 54 } else { 55 ra_prev = ra; 56 } 52 57 } 53 status = RD_to_XY (x, y, *r, *d, &graphmode.coords);58 status = RD_to_XY (x, y, ra, *d, &graphmode.coords); 54 59 55 60 // if we fail on one of the points, drop the corresponding pair … … 78 83 79 84 graphmode.etype = 0; 80 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);85 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 81 86 82 87 free (Xvec.elements.Ptr); -
trunk/Ohana/src/opihi/cmd.astro/czplot.c
r31667 r34584 76 76 graphmode.size = -1; /* point size determined by Zvec */ 77 77 graphmode.etype = 0; 78 PlotVectorTriplet (kapa, &Xvec, &Yvec, &Zvec, &graphmode);78 PlotVectorTriplet (kapa, &Xvec, &Yvec, &Zvec, NULL, &graphmode); 79 79 80 80 free (Xvec.elements.Flt); -
trunk/Ohana/src/opihi/cmd.data/Makefile
r33662 r34584 114 114 $(SRC)/shift.$(ARCH).o \ 115 115 $(SRC)/sort.$(ARCH).o \ 116 $(SRC)/spline_apply.$(ARCH).o \ 117 $(SRC)/spline_construct.$(ARCH).o \ 116 $(SRC)/spline.$(ARCH).o \ 117 $(SRC)/spline_commands.$(ARCH).o \ 118 $(SRC)/imspline_apply.$(ARCH).o \ 119 $(SRC)/imspline_construct.$(ARCH).o \ 118 120 $(SRC)/imstats.$(ARCH).o \ 119 121 $(SRC)/style.$(ARCH).o \ -
trunk/Ohana/src/opihi/cmd.data/dbconnect.c
r27435 r34584 33 33 password[i] = 0; 34 34 # endif 35 36 // XXX do I need to call mysql_library_init()? 35 37 36 38 mysql_init (&mysql); -
trunk/Ohana/src/opihi/cmd.data/dbselect.c
r20936 r34584 61 61 ALLOCATE (vec, Vector *, Ncols); 62 62 for (i = 0; i < Ncols; i++) { 63 char *name = fields[i].name ? fields[i].name : fields[i].org_name; 63 64 if ((vec[i] = SelectVector (fields[i].name, ANYVECTOR, TRUE)) == NULL) { 64 65 gprint (GP_ERR, "trouble creating vector named %s\n", fields[i].name); -
trunk/Ohana/src/opihi/cmd.data/grid.c
r26258 r34584 178 178 graphmode.ptype = 100; /* connect a pair */ 179 179 graphmode.etype = 0; 180 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);180 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 181 181 182 182 free (Xvec.elements.Flt); -
trunk/Ohana/src/opihi/cmd.data/init.c
r33662 r34584 102 102 int shift PROTO((int, char **)); 103 103 int sort_vectors PROTO((int, char **)); 104 int spline_apply_cmd PROTO((int, char **)); 105 int spline_construct_cmd PROTO((int, char **)); 104 int spline_command PROTO((int, char **)); 105 int imspline_apply PROTO((int, char **)); 106 int imspline_construct PROTO((int, char **)); 106 107 int stats PROTO((int, char **)); 107 108 int imstats PROTO((int, char **)); … … 254 255 {1, "shift", shift, "shift data in an image"}, 255 256 {1, "sort", sort_vectors, "sort list of vectors"}, 256 {1, "spline.apply", spline_apply_cmd, "apply spline fit to generate an image"}, 257 {1, "spline.const", spline_construct_cmd, "create spline 2nd deriv. terms"}, 257 {1, "spline", spline_command, "shift data in an image"}, 258 {1, "imspline.apply", imspline_apply, "apply spline fit to generate an image"}, 259 {1, "imspline.const", imspline_construct, "create spline 2nd deriv. terms"}, 258 260 {1, "stats", imstats, "statistics on a portion of an image"}, 259 261 {1, "style", style, "set the style for graph plots"}, -
trunk/Ohana/src/opihi/cmd.data/plot.c
r32346 r34584 3 3 int plot (int argc, char **argv) { 4 4 5 int kapa, N, Npts; 5 char *out; 6 int kapa, N, Npts, valid, size, i; 6 7 Graphdata graphmode; 7 8 Vector *xvec, *yvec, *dxmvec, *dxpvec, *dymvec, *dypvec; … … 32 33 } 33 34 34 if (argc != 3) { 35 valid = (argc == 3); 36 valid |= (argc > 4) && !strcmp (argv[3], "where"); 37 if (!valid) { 35 38 gprint (GP_ERR, "USAGE: plot <x> <y> [style]\n"); 39 gprint (GP_ERR, " OR: plot <x> <y> [style] where (condition)\n"); 36 40 return (FALSE); 41 } 42 43 // tvec is used for logical test (truth vector) 44 Vector *tvec = NULL; 45 char *mask = NULL; 46 if (argc > 4) { 47 out = dvomath (argc - 4, &argv[4], &size, 1); 48 if (out == NULL) { 49 print_error (); 50 return FALSE; 51 } 52 if ((tvec = SelectVector (out, OLDVECTOR, TRUE)) == NULL) { 53 gprint (GP_ERR, " invalid logic result\n"); 54 DeleteNamedVector (out); 55 free (out); 56 return (FALSE); 57 } 37 58 } 38 59 … … 53 74 return (FALSE); 54 75 } 76 if (tvec && tvec[0].Nelements != yvec[0].Nelements) { 77 gprint (GP_ERR, "logic test vector not the same length as data vectors\n"); 78 return (FALSE); 79 } 55 80 if (dypvec && (dypvec->Nelements != xvec->Nelements)) goto mismatch; 56 81 if (dymvec && (dymvec->Nelements != xvec->Nelements)) goto mismatch; … … 59 84 60 85 Npts = xvec[0].Nelements; 61 if (Npts == 0) return (TRUE); 86 if (Npts == 0) { 87 if (tvec) DeleteVector (tvec); 88 return (TRUE); 89 } 90 91 if (tvec) { 92 Npts = 0; 93 ALLOCATE (mask, char, tvec->Nelements); 94 for (i = 0; i < tvec->Nelements; i++) { 95 mask[i] = (tvec->type == OPIHI_FLT) ? (tvec->elements.Flt[i] == 0.0) : (tvec->elements.Int[i] == 0.0); 96 if (!mask[i]) Npts ++; 97 } 98 if (Npts == 0) { 99 DeleteVector (tvec); 100 free (mask); 101 return TRUE; 102 } 103 } 62 104 63 105 if (!KapaPrepPlot (kapa, Npts, &graphmode)) return (FALSE); 64 106 65 PlotVectorSingle (kapa, xvec, "x");66 PlotVectorSingle (kapa, yvec, "y");107 PlotVectorSingle (kapa, xvec, mask, "x"); 108 PlotVectorSingle (kapa, yvec, mask, "y"); 67 109 if (graphmode.etype & 0x01) { 68 PlotVectorSingle (kapa, dymvec, "dym");69 PlotVectorSingle (kapa, dypvec, "dyp");110 PlotVectorSingle (kapa, dymvec, mask, "dym"); 111 PlotVectorSingle (kapa, dypvec, mask, "dyp"); 70 112 } 71 113 if (graphmode.etype & 0x02) { 72 PlotVectorSingle (kapa, dxmvec, "dxm"); 73 PlotVectorSingle (kapa, dxpvec, "dxp"); 114 PlotVectorSingle (kapa, dxmvec, mask, "dxm"); 115 PlotVectorSingle (kapa, dxpvec, mask, "dxp"); 116 } 117 118 if (tvec) { 119 free (mask); 120 DeleteVector (tvec); 74 121 } 75 122 return (TRUE); -
trunk/Ohana/src/opihi/cmd.data/write_vectors.c
r33963 r34584 99 99 } 100 100 101 /* open file for out uput */101 /* open file for output */ 102 102 if (append) { 103 103 f = fopen (argv[1], "a"); -
trunk/Ohana/src/opihi/cmd.data/zplot.c
r31667 r34584 3 3 int zplot (int argc, char **argv) { 4 4 5 int i, kapa; 5 char *outname; 6 int i, kapa, valid, size; 6 7 opihi_flt *out; 7 8 double min, range; … … 11 12 if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE); 12 13 13 if (argc != 6) { 14 valid = (argc == 6); 15 valid |= (argc > 7) && !strcmp (argv[6], "where"); 16 if (!valid) { 14 17 gprint (GP_ERR, "USAGE: zplot <x> <y> <z> min max\n"); 18 gprint (GP_ERR, " OR: zplot <x> <y> <z> min max where (condition)\n"); 15 19 return (FALSE); 16 20 } … … 18 22 min = atof(argv[4]); 19 23 range = atof(argv[5]) - min; 24 25 // tvec is used for logical test (truth vector) 26 Vector *tvec = NULL; 27 char *mask = NULL; 28 if (argc > 7) { 29 outname = dvomath (argc - 7, &argv[7], &size, 1); 30 if (outname == NULL) { 31 print_error (); 32 return FALSE; 33 } 34 if ((tvec = SelectVector (outname, OLDVECTOR, TRUE)) == NULL) { 35 gprint (GP_ERR, " invalid logic result\n"); 36 DeleteNamedVector (outname); 37 free (outname); 38 return (FALSE); 39 } 40 } 20 41 21 42 /* find vectors */ … … 29 50 if (xvec[0].Nelements != zvec[0].Nelements) { 30 51 gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[3]); 52 return (FALSE); 53 } 54 if (tvec && tvec[0].Nelements != yvec[0].Nelements) { 55 gprint (GP_ERR, "logic test vector not the same length as data vectors\n"); 31 56 return (FALSE); 32 57 } … … 46 71 } 47 72 73 if (tvec) { 74 ALLOCATE (mask, char, tvec->Nelements); 75 for (i = 0; i < tvec->Nelements; i++) { 76 mask[i] = (tvec->type == OPIHI_FLT) ? (tvec->elements.Flt[i] == 0.0) : (tvec->elements.Int[i] == 0.0); 77 } 78 } 79 48 80 /* point size determined by Zvec */ 49 81 graphmode.style = 2; /* plot points */ 50 82 graphmode.size = -1; /* point size determined by Zvec */ 51 83 graphmode.etype = 0; /* no errorbars */ 52 PlotVectorTriplet (kapa, xvec, yvec, &Zvec, &graphmode);84 PlotVectorTriplet (kapa, xvec, yvec, &Zvec, mask, &graphmode); 53 85 54 86 free (Zvec.elements.Ptr); 87 if (mask) free (mask); 88 DeleteNamedVector (outname); 55 89 56 90 return (TRUE); … … 60 94 int zcplot (int argc, char **argv) { 61 95 62 int i, kapa; 96 char *outname; 97 int i, kapa, valid, size; 63 98 opihi_flt *out; 64 99 double min, range; … … 68 103 if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE); 69 104 70 if (argc != 6) { 71 gprint (GP_ERR, "USAGE: zplot <x> <y> <z> min max\n"); 105 valid = (argc == 6); 106 valid |= (argc > 7) && !strcmp (argv[6], "where"); 107 if (!valid) { 108 gprint (GP_ERR, "USAGE: zcplot <x> <y> <z> min max\n"); 109 gprint (GP_ERR, " OR: zcplot <x> <y> <z> min max where (condition)\n"); 72 110 return (FALSE); 73 111 } … … 75 113 min = atof(argv[4]); 76 114 range = atof(argv[5]) - min; 115 116 // tvec is used for logical test (truth vector) 117 Vector *tvec = NULL; 118 char *mask = NULL; 119 if (argc > 7) { 120 outname = dvomath (argc - 7, &argv[7], &size, 1); 121 if (outname == NULL) { 122 print_error (); 123 return FALSE; 124 } 125 if ((tvec = SelectVector (outname, OLDVECTOR, TRUE)) == NULL) { 126 gprint (GP_ERR, " invalid logic result\n"); 127 DeleteNamedVector (outname); 128 free (outname); 129 return (FALSE); 130 } 131 } 77 132 78 133 /* find vectors */ … … 86 141 if (xvec[0].Nelements != zvec[0].Nelements) { 87 142 gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[3]); 143 return (FALSE); 144 } 145 if (tvec && tvec[0].Nelements != yvec[0].Nelements) { 146 gprint (GP_ERR, "logic test vector not the same length as data vectors\n"); 88 147 return (FALSE); 89 148 } … … 103 162 } 104 163 164 if (tvec) { 165 ALLOCATE (mask, char, tvec->Nelements); 166 for (i = 0; i < tvec->Nelements; i++) { 167 mask[i] = (tvec->type == OPIHI_FLT) ? (tvec->elements.Flt[i] == 0.0) : (tvec->elements.Int[i] == 0.0); 168 } 169 } 170 105 171 /* point size determined by Zvec */ 106 172 graphmode.style = 2; /* plot points */ 107 173 graphmode.color = -1; /* point color determined by Zvec */ 108 174 graphmode.etype = 0; /* no errorbars */ 109 PlotVectorTriplet (kapa, xvec, yvec, &Zvec, &graphmode);175 PlotVectorTriplet (kapa, xvec, yvec, &Zvec, mask, &graphmode); 110 176 111 177 free (Zvec.elements.Ptr); 178 if (mask) free (mask); 179 DeleteNamedVector (outname); 112 180 113 181 return (TRUE); -
trunk/Ohana/src/opihi/dvo/fitcolors.c
r28241 r34584 311 311 KapaBox (kapa, &graphdata); 312 312 313 PlotVectorPair (kapa, xvec, yvec, &graphdata);313 PlotVectorPair (kapa, xvec, yvec, NULL, &graphdata); 314 314 315 315 for (i = 0; i < 11; i++) { -
trunk/Ohana/src/opihi/dvo/images.c
r34088 r34584 350 350 graphmode.ptype = 100; /* connect pairs of points */ 351 351 graphmode.etype = 0; 352 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);352 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 353 353 } 354 354 -
trunk/Ohana/src/opihi/dvo/imbox.c
r27435 r34584 123 123 graphmode.ptype = 100; /* connect pairs of points */ 124 124 graphmode.etype = 0; 125 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);125 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 126 126 } 127 127 -
trunk/Ohana/src/opihi/dvo/imdense.c
r31635 r34584 65 65 graphmode.style = 2; /* points */ 66 66 graphmode.etype = 0; 67 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);67 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 68 68 } 69 69 -
trunk/Ohana/src/opihi/dvo/imstats.c
r31635 r34584 54 54 graphmode.style = 2; 55 55 graphmode.etype = 0; 56 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);56 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 57 57 58 58 free (Xvec.elements.Flt); -
trunk/Ohana/src/opihi/dvo/lcurve.c
r34088 r34584 160 160 PlotVectorPairErrors (kapa, &Xvec, &Yvec, &dYvec, &graphmode); 161 161 } else { 162 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);162 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 163 163 } 164 164 -
trunk/Ohana/src/opihi/dvo/procks.c
r20936 r34584 113 113 graphmode.style = 2; /* set style to points */ 114 114 graphmode.etype = 0; /* no errorbars */ 115 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);115 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 116 116 117 117 /* now plot vectors between two extrema */ … … 146 146 graphmode.etype = 0; /* no errorbars */ 147 147 148 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);148 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 149 149 150 150 free (Xvec.elements.Flt); -
trunk/Ohana/src/opihi/dvo/showtile.c
r20936 r34584 86 86 graphmode.ptype = 100; /* connect pairs of points */ 87 87 graphmode.etype = 0; 88 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);88 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 89 89 } 90 90 -
trunk/Ohana/src/opihi/dvo/simage.c
r34088 r34584 151 151 graphmode.etype = 0; 152 152 153 PlotVectorTriplet (kapa, &Xvec, &Yvec, &Zvec, &graphmode);153 PlotVectorTriplet (kapa, &Xvec, &Yvec, &Zvec, NULL, &graphmode); 154 154 155 155 free (Xvec.elements.Flt); -
trunk/Ohana/src/opihi/dvo/skycat.c
r34088 r34584 100 100 graphmode.ptype = 100; /* connect pairs of points */ 101 101 graphmode.etype = 0; 102 PlotVectorPair (kapa, &Xvec, &Yvec, &graphmode);102 PlotVectorPair (kapa, &Xvec, &Yvec, NULL, &graphmode); 103 103 } 104 104 -
trunk/Ohana/src/opihi/include/data.h
r31636 r34584 84 84 85 85 /* in spline.c */ 86 void spline_construct (float *x, float *y, int N, float *y2); 87 float spline_apply (float *x, float *y, float *y2, int N, float X); 86 void spline_construct_flt (float *x, float *y, int N, float *y2); 87 float spline_apply_flt (float *x, float *y, float *y2, int N, float X); 88 void spline_construct_dbl (opihi_flt *x, opihi_flt *y, int N, opihi_flt *y2); 89 opihi_flt spline_apply_dbl (opihi_flt *x, opihi_flt *y, opihi_flt *y2, int N, opihi_flt X); 88 90 89 91 /* in svdcmp.c */ … … 168 170 void FreeQueues (void); 169 171 void FreeBooks (void); 172 173 // the interpolating spline has valu 174 typedef struct { 175 int Nknots; 176 opihi_flt *xk; 177 opihi_flt *yk; 178 opihi_flt *y2; 179 char *name; 180 } Spline; 181 182 /* in SplineOps.c */ 183 void InitSplines (); 184 void FreeSplines (); 185 void InitSpline (Spline *spline, char *name, int Nknots); 186 void FreeSpline (Spline *spline); 187 Spline *GetSpline (int where); 188 Spline *FindSpline (char *name); 189 Spline *CreateSpline (char *name, int Nknots); 190 int DeleteSpline (Spline *spline); 191 void ListSplines (); 192 int SaveSpline (char *filename, char *name, int append); 193 int LoadSpline (char *filename, char *name); 170 194 171 195 /* hermitian functions */ -
trunk/Ohana/src/opihi/include/display.h
r31636 r34584 7 7 8 8 /*** kapa graph functions ***/ 9 int PlotVectorSingle PROTO((int kapa, Vector *vec, char *m ode));10 int PlotVectorPair PROTO((int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode));9 int PlotVectorSingle PROTO((int kapa, Vector *vec, char *mask, char *mode)); 10 int PlotVectorPair PROTO((int kapa, Vector *xVec, Vector *yVec, char *mask, Graphdata *graphmode)); 11 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)); 12 13 int PlotVectorTriplet PROTO((int kapa, Vector *xVec, Vector *yVec, Vector *zValues, char *mask, Graphdata *graphmode)); 13 14 // int GetGraphData PROTO((Graphdata *data, int *kapa, char *name)); 14 15 int GetGraph PROTO((Graphdata *data, int *kapa, char *name)); -
trunk/Ohana/src/opihi/lib.data/Makefile
r31635 r34584 23 23 $(SDIR)/bracket.$(ARCH).o \ 24 24 $(SDIR)/spline.$(ARCH).o \ 25 $(SDIR)/SplineOps.$(ARCH).o \ 25 26 $(SDIR)/mrqmin.$(ARCH).o \ 26 27 $(SDIR)/mrq2dmin.$(ARCH).o \ -
trunk/Ohana/src/opihi/lib.data/PlotVectors.c
r20936 r34584 1 1 # include "display.h" 2 2 3 int PlotVectorSingle (int kapa, Vector *vec, char *m ode) {4 5 int i, Npts ;3 int PlotVectorSingle (int kapa, Vector *vec, char *mask, char *mode) { 4 5 int i, Npts, Nout; 6 6 float *temp; 7 7 … … 9 9 ALLOCATE (temp, float, Npts); 10 10 11 Nout = 0; 11 12 if (vec->type == OPIHI_FLT) { 12 13 opihi_flt *value = vec->elements.Flt; 13 14 for (i = 0; i < Npts; i++) { 14 temp[i] = value[i]; 15 if (mask && mask[i]) continue; 16 temp[Nout] = value[i]; 17 Nout ++; 15 18 } 16 19 } else { 17 20 opihi_int *value = vec->elements.Int; 18 21 for (i = 0; i < Npts; i++) { 19 temp[i] = value[i]; 20 } 21 } 22 KapaPlotVector (kapa, Npts, temp, mode); 23 24 free (temp); 25 26 return (TRUE); 27 } 28 29 int PlotVectorPair (int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode) { 30 31 int i, Npts; 22 if (mask && mask[i]) continue; 23 temp[Nout] = value[i]; 24 Nout ++; 25 } 26 } 27 KapaPlotVector (kapa, Nout, temp, mode); 28 29 free (temp); 30 31 return (TRUE); 32 } 33 34 int PlotVectorPair (int kapa, Vector *xVec, Vector *yVec, char *mask, Graphdata *graphmode) { 35 36 int i, Npts, Nout; 32 37 float *temp; 33 38 … … 37 42 ALLOCATE (temp, float, Npts); 38 43 39 KapaPrepPlot (kapa, Npts, graphmode); 40 44 Nout = 0; 41 45 if (xVec->type == OPIHI_FLT) { 42 46 opihi_flt *value = xVec->elements.Flt; 43 47 for (i = 0; i < Npts; i++) { 44 temp[i] = value[i]; 48 if (mask && mask[i]) continue; 49 temp[Nout] = value[i]; 50 Nout ++; 45 51 } 46 52 } else { 47 53 opihi_int *value = xVec->elements.Int; 48 54 for (i = 0; i < Npts; i++) { 49 temp[i] = value[i]; 50 } 51 } 52 KapaPlotVector (kapa, Npts, temp, "x"); 53 55 if (mask && mask[i]) continue; 56 temp[Nout] = value[i]; 57 Nout ++; 58 } 59 } 60 KapaPrepPlot (kapa, Nout, graphmode); 61 KapaPlotVector (kapa, Nout, temp, "x"); 62 63 Nout = 0; 54 64 if (yVec->type == OPIHI_FLT) { 55 65 opihi_flt *value = yVec->elements.Flt; 56 66 for (i = 0; i < Npts; i++) { 57 temp[i] = value[i]; 67 if (mask && mask[i]) continue; 68 temp[Nout] = value[i]; 69 Nout ++; 58 70 } 59 71 } else { 60 72 opihi_int *value = yVec->elements.Int; 61 73 for (i = 0; i < Npts; i++) { 62 temp[i] = value[i]; 63 } 64 } 65 KapaPlotVector (kapa, Npts, temp, "y"); 66 67 free (temp); 68 69 return (TRUE); 70 } 71 72 int PlotVectorTriplet (int kapa, Vector *xVec, Vector *yVec, Vector *zVec, Graphdata *graphmode) { 73 74 int i, Npts; 74 if (mask && mask[i]) continue; 75 temp[Nout] = value[i]; 76 Nout ++; 77 } 78 } 79 KapaPlotVector (kapa, Nout, temp, "y"); 80 81 free (temp); 82 83 return (TRUE); 84 } 85 86 int PlotVectorTriplet (int kapa, Vector *xVec, Vector *yVec, Vector *zVec, char *mask, Graphdata *graphmode) { 87 88 int i, Npts, Nout; 75 89 float *temp; 76 90 … … 81 95 ALLOCATE (temp, float, Npts); 82 96 83 KapaPrepPlot (kapa, Npts, graphmode); 84 97 Nout = 0; 85 98 if (xVec->type == OPIHI_FLT) { 86 99 opihi_flt *value = xVec->elements.Flt; 87 100 for (i = 0; i < Npts; i++) { 88 temp[i] = value[i]; 101 if (mask && mask[i]) continue; 102 temp[Nout] = value[i]; 103 Nout ++; 89 104 } 90 105 } else { 91 106 opihi_int *value = xVec->elements.Int; 92 107 for (i = 0; i < Npts; i++) { 93 temp[i] = value[i]; 94 } 95 } 96 KapaPlotVector (kapa, Npts, temp, "x"); 97 108 if (mask && mask[i]) continue; 109 temp[Nout] = value[i]; 110 Nout ++; 111 } 112 } 113 KapaPrepPlot (kapa, Nout, graphmode); 114 KapaPlotVector (kapa, Nout, temp, "x"); 115 116 Nout = 0; 98 117 if (yVec->type == OPIHI_FLT) { 99 118 opihi_flt *value = yVec->elements.Flt; 100 119 for (i = 0; i < Npts; i++) { 101 temp[i] = value[i]; 120 if (mask && mask[i]) continue; 121 temp[Nout] = value[i]; 122 Nout ++; 102 123 } 103 124 } else { 104 125 opihi_int *value = yVec->elements.Int; 105 126 for (i = 0; i < Npts; i++) { 106 temp[i] = value[i]; 107 } 108 } 109 KapaPlotVector (kapa, Npts, temp, "y"); 110 127 if (mask && mask[i]) continue; 128 temp[Nout] = value[i]; 129 Nout ++; 130 } 131 } 132 KapaPlotVector (kapa, Nout, temp, "y"); 133 134 Nout = 0; 111 135 if (zVec->type == OPIHI_FLT) { 112 136 opihi_flt *value = zVec->elements.Flt; 113 137 for (i = 0; i < Npts; i++) { 114 temp[i] = value[i]; 138 if (mask && mask[i]) continue; 139 temp[Nout] = value[i]; 140 Nout ++; 115 141 } 116 142 } else { 117 143 opihi_int *value = zVec->elements.Int; 118 144 for (i = 0; i < Npts; i++) { 119 temp[i] = value[i]; 120 } 121 } 122 KapaPlotVector (kapa, Npts, temp, "z"); 145 if (mask && mask[i]) continue; 146 temp[Nout] = value[i]; 147 Nout ++; 148 } 149 } 150 KapaPlotVector (kapa, Nout, temp, "z"); 123 151 124 152 free (temp); -
trunk/Ohana/src/opihi/lib.data/spline.c
r16119 r34584 2 2 3 3 /* construct the natural spline for x, y in y2 */ 4 void spline_construct (float *x, float *y, int N, float *y2) {4 void spline_construct_flt (float *x, float *y, int N, float *y2) { 5 5 6 6 int i; … … 27 27 28 28 /* evaluate spline for x, y, y2 at X */ 29 float spline_apply (float *x, float *y, float *y2, int N, float X) {29 float spline_apply_flt (float *x, float *y, float *y2, int N, float X) { 30 30 31 31 int i, lo, hi; … … 58 58 59 59 } 60 61 /* construct the natural spline for x, y in y2 */ 62 void spline_construct_dbl (opihi_flt *x, opihi_flt *y, int N, opihi_flt *y2) { 63 64 int i; 65 opihi_flt dy, dx, *tmp; 66 67 ALLOCATE (tmp, opihi_flt, N); 68 69 y2[0] = tmp[0] = 0.0; 70 71 for (i = 1; i < N-1; i++) { 72 dx = (x[i+0] - x[i-1]) / (x[i+1] - x[i-1]); 73 dy = dx * y2[i-1] + 2.0; 74 y2[i] = (dx - 1.0) / dy; 75 tmp[i] = (y[i+1] - y[i+0]) / (x[i+1] - x[i+0]) - (y[i+0] - y[i-1]) / (x[i+0] - x[i-1]); 76 tmp[i] = (6.0 * tmp[i] / (x[i+1] - x[i-1]) - dx*tmp[i-1]) / dy; 77 } 78 79 y2[N-1] = 0; 80 for (i = N-2; i >= 1; i--) 81 y2[i] = y2[i]*y2[i+1] + tmp[i]; 82 83 free (tmp); 84 } 85 86 /* evaluate spline for x, y, y2 at X */ 87 opihi_flt spline_apply_dbl (opihi_flt *x, opihi_flt *y, opihi_flt *y2, int N, opihi_flt X) { 88 89 int i, lo, hi; 90 opihi_flt dx, a, b, value; 91 92 /* find correct element in array (x must be sorted) */ 93 lo = 0; 94 hi = N-1; 95 while (hi - lo > 1) { 96 i = 0.5*(hi+lo); 97 if (x[i] > X) { 98 hi = i; 99 } else { 100 lo = i; 101 } 102 } 103 104 /* error condition: duplicate abssisca */ 105 dx = x[hi] - x[lo]; 106 if (dx == 0.0) { 107 return (HUGE_VAL); 108 } 109 110 /* evaluate spline */ 111 a = (x[hi] - X) / dx; 112 b = (X - x[lo]) / dx; 113 114 value = a*y[lo] + b*y[hi] + ((a*a*a - a)*y2[lo] + (b*b*b - b)*y2[hi])*(dx*dx) / 6.0; 115 return (value); 116 117 } -
trunk/Ohana/src/opihi/lib.shell/VectorIO.c
r33963 r34584 2 2 3 3 // write a set of vectors to a FITS file (vectors names become fits column names) 4 int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, char *format) { 5 4 int WriteVectorTable (Header *theader, FTable *ftable, char *extname, Vector **vec, int Nvec, char *format) { 5 6 int j; 7 6 8 char *tformat = NULL; 7 Header header; 8 Matrix matrix; 9 Header theader; 10 FTable ftable; 11 12 int j; 13 FILE *f = NULL; 14 15 /* open file for outuput */ 16 if (append) { 17 f = fopen (filename, "a"); 18 } else { 19 f = fopen (filename, "w"); 20 } 21 if (f == (FILE *) NULL) { 22 gprint (GP_ERR, "can't open file for write : %s\n", filename); 23 return (FALSE); 24 } 25 26 if (!append) { 27 gfits_init_header (&header); 28 header.extend = TRUE; 29 gfits_create_header (&header); 30 gfits_create_matrix (&header, &matrix); 31 } 32 33 gfits_create_table_header (&theader, "BINTABLE", extname); 9 10 gfits_create_table_header (theader, "BINTABLE", extname); 34 11 35 12 ALLOCATE (tformat, char, 2*Nvec); … … 71 48 // this somehow 72 49 for (j = 0; j < Nvec; j++) { 73 gfits_define_bintable_column ( &theader, &tformat[2*j], vec[j][0].name, NULL, NULL, 1.0, 0.0);50 gfits_define_bintable_column (theader, &tformat[2*j], vec[j][0].name, NULL, NULL, 1.0, 0.0); 74 51 } 75 52 free (tformat); 76 53 77 54 // generate the output array that carries the data 78 gfits_create_table ( &theader, &ftable);55 gfits_create_table (theader, ftable); 79 56 80 57 // add the vectors to the output array 81 58 for (j = 0; j < Nvec; j++) { 82 59 if (vec[j][0].type == OPIHI_FLT) { 83 gfits_set_bintable_column_reformat ( &theader, &ftable, vec[j][0].name, "double", vec[j][0].elements.Flt, vec[j][0].Nelements);60 gfits_set_bintable_column_reformat (theader, ftable, vec[j][0].name, "double", vec[j][0].elements.Flt, vec[j][0].Nelements); 84 61 } else { 85 gfits_set_bintable_column_reformat (&theader, &ftable, vec[j][0].name, "int", vec[j][0].elements.Int, vec[j][0].Nelements); 86 } 87 } 62 gfits_set_bintable_column_reformat (theader, ftable, vec[j][0].name, "int", vec[j][0].elements.Int, vec[j][0].Nelements); 63 } 64 } 65 return (TRUE); 66 67 escape: 68 if (tformat) free (tformat); 69 return (FALSE); 70 } 71 72 // write a set of vectors to a FITS file (vectors names become fits column names) 73 int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, char *format) { 74 75 Header header; 76 Matrix matrix; 77 Header theader; 78 FTable ftable; 79 80 FILE *f = NULL; 81 82 /* open file for outuput */ 83 if (append) { 84 f = fopen (filename, "a"); 85 } else { 86 f = fopen (filename, "w"); 87 } 88 if (f == (FILE *) NULL) { 89 gprint (GP_ERR, "can't open file for write : %s\n", filename); 90 return (FALSE); 91 } 92 93 if (!WriteVectorTable (&theader, &ftable, extname, vec, Nvec, format)) goto escape; 88 94 89 95 if (!append) { 96 gfits_init_header (&header); 97 header.extend = TRUE; 98 gfits_create_header (&header); 99 gfits_create_matrix (&header, &matrix); 90 100 gfits_fwrite_header (f, &header); 91 101 gfits_fwrite_matrix (f, &matrix); … … 111 121 gfits_free_table (&ftable); 112 122 113 if (tformat) free (tformat);114 123 fclose (f); 115 124 fflush (f);
Note:
See TracChangeset
for help on using the changeset viewer.
