diff options
Diffstat (limited to 'priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py')
-rw-r--r-- | priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py b/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py new file mode 100644 index 0000000..f350eab --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py @@ -0,0 +1,56 @@ +import sys +from datetime import datetime, date, timedelta +import json +from random import random +import argparse + +parser = argparse.ArgumentParser(description="Fake data maker.") +parser.add_argument('-s', '--start', help="start date", nargs=1) +parser.add_argument('-d', '--small', help="allow decimal values", action="store_true") +parser.add_argument('-r', '--range', help="how many days from start date", nargs=1) +parser.add_argument('-m', '--magnitude', help="size of change", nargs=1) +parser.add_argument('-p', '--percentage', help="whether or not this is a percentage", action="store_true") +parser.add_argument('-n', '--let_negative', help="let the data values go negative", action="store_true") +parser.add_argument('-v', '--start_value', help='start value', nargs=1) +args = parser.parse_args() + +doy = { + 0: 1, + 1:.9, + 2:1, + 3:1.1, + 4:1.05, + 5:.7, + 6:.75 +} +if args.percentage: convert = lambda x: float(x) +elif args.small: convert = lambda x: float(x) +else: convert = lambda x: int(x) + +current_date = datetime.strptime(args.start[0], '%Y-%m-%d').date() +length = int(args.range[0]) + +baseline = convert(args.start_value[0]) + +if args.magnitude: magnitude = convert(args.magnitude[0]) +elif args.percentage: magnitude = baseline/50. +elif args.small: magnitude = baseline/20. +else: magnitude = baseline/5 +out = [] + +# Needed to automatically convert dates to strings in json. +dthandler = lambda obj: obj.isoformat() if isinstance(obj, date) else None + +for i in xrange(length): + out.append({'date': current_date, 'value': baseline}) + nb = convert(magnitude * (random()-.5)) + if args.percentage: + if (baseline+nb < 0 or baseline+nb > 1) and (not args.let_negative): pass + else: baseline += nb + else: + if baseline+nb < 0 and not args.let_negative: pass + else: baseline += nb + + current_date += timedelta(days=1) + +sys.stdout.write(json.dumps(out,default=dthandler, indent=4))
\ No newline at end of file |