Work I did in: /home/sco/tmp/samples/p3/S
Initial README
-------------------------------------------------------------------------------
Here I grab some data from a table file, then setup plot and fit files:
Make_XY # make initial data files
clcf_line.sh X.dat Y.dat 40 # fit a line
Make a curve file (line)
echo "line b - 10 Fit" > xy_from_table.input
xy_from_table clcf_line.fitcurve 1 2
cat XY.plot > STYLE
View the plot:
pxy_SM_plot.py STYLE 0 360 -50 10 SHOW
-------------------------------------------------------------------------------
==================================================================
Then I made the script do it all:
% cat Make_XY
#!/bin/bash
colget.py ../hetAZindo_dec01.dat 2 X.dat N
printf "\nX data: "
calstats.py -v X.dat
colget.py ../hetAZindo_dec01.dat 6 Y.dat N
printf "\nY data: "
calstats.py -v Y.dat
printf "# data\n" > XY.table_data
paste X.dat Y.dat >> XY.table_data
# make file for xyplotter
echo "Test daya" > list.axes
echo "0 360 X" >> list.axes
echo "-50 10 Y" >> list.axes
echo "XY.table_data 1 2 point r o 10 Set1" >list.data
# run xyplotter
xyplotter list.data list.axes
#
# printf "\nTo run fit:\n"
# printf " clcf_line.sh X.dat Y.dat 40\n"
# printf " echo \"line b - 10 Fit\" > xy_from_table.input \n"
# printf " xy_from_table clcf_line.fitcurve 1 2 \n"
# printf " echo \"XY.plot\" >> STYLE \n"
# printf " pxy_SM_plot.py STYLE 0 360 -50 10 SHOW \n"
clcf_line.sh X.dat Y.dat 40
echo "line b - 10 Fit" > xy_from_table.input
xy_from_table clcf_line.fitcurve 1 2
echo "XY.plot" >> STYLE
printf "\nTo view fit:\n"
printf " pxy_SM_plot.py STYLE 0 360 -50 10 SHOW \n"
==================================================================
Herer are more example where I start computing values from the
fit results (in prep fro residuals).
Generate and fit a line
To make line data:
% cat c.line
0.0
1.00
% make_fit_data line c.line 8 1.0 10.0 0.3
% ls
c.line make_fit_data.out
% mv make_fit_data.out line_1.table
----------------------------------------------------
I make the Axes.1 and List.1 files:
% cat Axes.1
Test data
0 10 "X axis title"
-10 20 "Y-axis"
% cat List.1
line_1.table 1 2 point r o 30 Line_1
----------------------------------------------------
To plot the data:
% xyplotter List.1 Axes.1
% pxy_SM_plot.py STYLE 0 10 -10 20 SHOW
**** Get a good plot of line data
To fit the data:
% colget.py line_1.table 1 X.dat N
% colget.py line_1.table 2 Y.dat N
# Now we have our X,Y data files for fitting
# we fit a line and generate a fitted curve of 40 points
% clcf_line.sh X.dat Y.dat 40
% cat clcf_line.explain
Line fit: y = a0 + a1*x
Coefficients and erros in clcf_line.out:
a0 err_a0
a1 err_a1
% cat clcf_line.out
0.0282969 0.0500399
1.2471875 0.0090982
# These are very close to our input values
The fitted curve is in clcf_line.fitcurve. Since this is
a table file, we can just add a line to "List.1" and get
the fitted line into our plot.
% cat List.1
line_1.table 1 2 point r o 30 Line 1
clcf_line.fitcurve 1 2 line b - 30 Fit 1
% xyplotter List.1 Axes.1
% pxy_SM_plot.py STYLE 0 10 -10 20 SHOW
# Now I have data points and a fitted line.
NEXT: I want to compute Y residuals (O-C) and statistics based
on these residuals.
Remember:
1) the fitted coefficients are in: clcf_line.out
2) The observed X values are in: X.dat (no header)
**** I modified gen_curve so that it will generate the value from
a file of X values
So I can do:
gen_curve.sh line clcf_line.out 30 file X.dat Y > AA
**** This generates the values for my original X values in X.dat
(what I would want for residuals)
But I could generate values at any points:
% cat X.any
2.0
4.0
6.0
8.0
% gen_curve.sh line clcf_line.out 30 file X.any Y > XY.any.3
% cat XY.any.3
# func = line
# N terms = 2
0.028296901
1.247187495
# data
2.00000 2.52267
4.00000 5.01705
6.00000 7.51142
8.00000 10.00580
*** I just add a line in List.1 to use XY.any.3
% cat List.1
line_1.table 1 2 point r o 30 Line 1
clcf_line.fitcurve 1 2 line b - 30 Fit 1
XY.any.3 1 2 pointopen g h 70 AnyX
% xyplotter List.1 Axes.1
% pxy_SM_plot.py STYLE 0 10 -10 20 SHOW
**** This seems to work great!