source: sasview/src/examples/data_generator/testdata_generator.py @ c721b1a

Last change on this file since c721b1a was 5777106, checked in by Mathieu Doucet <doucetm@…>, 11 years ago

Moving things around. Will definitely not build.

  • Property mode set to 100644
File size: 4.1 KB
RevLine 
[82a54b8]1"""
2    Generate two correlated sets of data
3        1- A line: y = ax + b
4        2- A constant equal to a of set #1
5       
6"""
7
8def get_x(x, y=0, dx=0, dy=0):
9    return x
10
11def get_err_x(x, y=0, dx=0, dy=0):
12    return dx
13
14
15class Generator:
16    ## Parameter A
17    constant_a = 2.5
18    ## Parameter B
19    constant_b = 4.0
20    ## Randomness factor
21    randomness = 0.07
22   
23    def __init__(self):
24        pass
25   
26    def create(self, filename, xmin=0.01, xmax=10.0, npts=50, 
27               xfunc=get_x, yfunc=get_x, errfunc=get_err_x):
28        """
29            Create files with the generate data
30            The file names will be:
31                - Set #1: [filename]_line.txt
32                - Set #2: [filename]_cst.txt
33               
34            @param filename: string to prepend to the file name
35            @param xmin: minimum x-value
36            @param xmax: maximum x-value
37            @param npts: number of points to generate
38        """
39        import random, time
40        random.seed(time.time())
41       
42        # Write line data set
43        fd = open(filename, 'w')
44        print "Creating ", filename
45        fd.write("#y=A*x+B\n#A=%g\n#B=%g\n" % (self.constant_a, self.constant_b))
46       
47        for i in range(npts):
48            x = xmin+(xmax-xmin)/(npts-1)*i
49            mu = self.constant_a*x+self.constant_b
50            err = self.randomness*mu
51            y = random.gauss(mu, err)
52            fd.write("%g  %g  %g\n" % (xfunc(x, y), yfunc(y, xfunc(x, 0)), errfunc(y, xfunc(x,y), err, 0)))
53           
54        fd.close()
55       
56       
57       
58
59if __name__ == "__main__": 
60    from test_transfo import *
61    gen = Generator()
62   
63    # Linear x series
64    gen.create("linear.txt")
65    gen.create("x_y2.txt", yfunc=from_x2, errfunc=err_x2)
66    gen.create("x_inv_y.txt", yfunc=from_inv_x, errfunc=err_inv_x)
67    gen.create("x_inv_sqrty.txt", yfunc=from_inv_sqrtx, errfunc=err_inv_sqrtx)
68    gen.create("x_lny.txt", xmin=0.0001, xmax=3.0, yfunc=from_lnx, errfunc=err_lnx)
69    gen.create("x_logy.txt", xmin=0.0001, xmax=3.0, yfunc=from_log10, errfunc=err_log10)
70    gen.create("x_lnxy.txt", yfunc=from_lnxy, errfunc=err_lnxy)
71    gen.create("x_lnyx2.txt", xmin=0.0001, xmax=10.0, yfunc=from_lnx2y, errfunc=err_lnx2y)
72    gen.create("x_lnyx4.txt", xmin=0.0001, xmax=10.0, yfunc=from_lnx4y, errfunc=err_lnx4y)
73   
74    # Log10(x)
75    gen.create("logx_y.txt", xmax=3.0, xfunc=from_log10)
76    gen.create("logx_y2.txt", xmax=3.0, xfunc=from_log10, yfunc=from_x2, errfunc=err_x2)
77    gen.create("logx_inv_y.txt", xmax=3.0, xfunc=from_log10, yfunc=from_inv_x, errfunc=err_inv_x)
78    gen.create("logx_inv_sqrty.txt", xmax=3.0, xfunc=from_log10, yfunc=from_inv_sqrtx, errfunc=err_inv_sqrtx)
79    gen.create("logx_lny.txt", xfunc=from_log10, xmin=0.0001, xmax=3.0, yfunc=from_lnx, errfunc=err_lnx)
80    gen.create("logx_logy.txt", xfunc=from_log10, xmin=0.0001, xmax=3.0, yfunc=from_log10, errfunc=err_log10)
81    gen.create("logx_lnxy.txt", xfunc=from_log10, yfunc=from_lnxy, errfunc=err_lnxy)
82    gen.create("logx_lnyx2.txt", xfunc=from_log10, xmin=0.0001, xmax=10.0, yfunc=from_lnx2y, errfunc=err_lnx2y)
83    gen.create("logx_lnyx4.txt", xfunc=from_log10, xmin=0.0001, xmax=10.0, yfunc=from_lnx4y, errfunc=err_lnx4y)
84   
85    # x^2
86    gen.create("x2_y.txt", xfunc=from_x2)
87    gen.create("x2_y2.txt", xfunc=from_x2, yfunc=from_x2, errfunc=err_x2)
88    gen.create("x2_inv_y.txt", xfunc=from_x2, yfunc=from_inv_x, errfunc=err_inv_x)
89    gen.create("x2_inv_sqrty.txt", xfunc=from_x2, yfunc=from_inv_sqrtx, errfunc=err_inv_sqrtx)
90    gen.create("x2_lny.txt", xfunc=from_x2, xmin=0.0001, xmax=3.0, yfunc=from_lnx, errfunc=err_lnx)
91    gen.create("x2_logy.txt", xfunc=from_x2, xmin=0.0001, xmax=3.0, yfunc=from_log10, errfunc=err_log10)
92    gen.create("x2_lnxy.txt", xfunc=from_x2, yfunc=from_lnxy, errfunc=err_lnxy)
93    gen.create("x2_lnyx2.txt", xfunc=from_x2, xmin=0.0001, xmax=10.0, yfunc=from_lnx2y, errfunc=err_lnx2y)
94    gen.create("x2_lnyx4.txt", xfunc=from_x2, xmin=0.0001, xmax=10.0, yfunc=from_lnx4y, errfunc=err_lnx4y)
95
96           
97           
Note: See TracBrowser for help on using the repository browser.