Mercurial > code > home > repos > light9
view light9/chase.py @ 1491:c0742e710eeb
refactor collector json parsing
Ignore-this: ae540a86d86ff9a45e5b2b66ee5f82d4
author | drewp@bigasterisk.com |
---|---|
date | Mon, 13 Jun 2016 19:25:00 +0000 |
parents | 1c590824dd14 |
children | 7772cc48e016 |
line wrap: on
line source
from __future__ import division def chase(t, ontime=0.5, offset=0.2, onval=1.0, offval=0.0, names=None, combiner=max): names = names or [] # maybe this is better: # period = ontime + ((offset + ontime) * (len(names) - 1)) period = (offset + ontime) * len(names) outputs = {} for index, name in enumerate(names): # normalize our time local_offset = (offset + ontime) * index local_t = t - local_offset local_t %= period # see if we're still in the on part if local_t <= ontime: value = onval else: value = offval # it could be in there twice (in a bounce like (1, 2, 3, 2) if name in outputs: outputs[name] = combiner(value, outputs[name]) else: outputs[name] = value return outputs if __name__ == "__main__": # a little testing for x in range(80): x /= 20.0 output = chase(x, onval='x', offval=' ', ontime=0.1, offset=0.2, names=('a', 'b', 'c', 'd')) output = output.items() output.sort() print "%.2f\t%s" % (x, ' '.join([str(x) for x in output]))