mkogg.py: Fix 'self.get_mp4_metadata(self, source)'
[blog.git] / posts / plotpick / random-data.py
1 #!/usr/bin/env python
2 #
3 """Generate random data for testing plotpick.py
4
5 For example::
6
7   $ random-data.py | plotpick.py
8 """
9
10 import random as _random
11
12 import numpy as _numpy
13
14
15 __version__ = '0.1'
16
17
18 class Linear (object):
19     def __init__(self, a=1, b=1):
20         self.a = a
21         self.b = b
22
23     def __call__(self, x):
24         return self.a*x + self.b
25
26 def random_data(xmin=0, xmax=1, n=2**15, dx=0.1, dy=0.1, model=Linear()):
27     for x in _numpy.linspace(xmin, xmax, n):
28         y = model(x)
29         rx = _random.gauss(mu=x, sigma=dx)
30         ry = _random.gauss(mu=y, sigma=dy)
31         yield (rx, ry)
32
33
34 if __name__ == '__main__':
35     from argparse import ArgumentParser as _ArgumentParser
36
37     parser = _ArgumentParser(
38         description=__doc__, version=__version__)
39     parser.add_argument(
40         '-n', type=int, default=100,
41         help='Number of random points to generate')
42
43     args = parser.parse_args()
44
45     for data in random_data(n=args.n):
46         print('\t'.join(str(x) for x in data))