Andrea Crotti <andrea.crott...@gmail.com> writes: [...]
I left the Timeline as before, but tried to rewrite some more classes. This is the abstract class for a metric, and below another class for the metric which involve only counting things. In the end an example on how to use this. I need to see synthetic values during my quick testings but also to reuse a lot of data to actually create graphs later... Any idea/suggestion is welcome, I would like finally to get it right... --8<---------------cut here---------------start------------->8--- class AbsMetric(object): def __init__(self, mode='all'): # mode can be 'all, avg, senders, landmarks, receivers, mobiles' self.mode = mode self.result = {} def __str__(self): res = [] for k, val in self.result.items(): res.append("%d: %f" % (k, val)) return '\n'.join(res) def __len__(self): return len(self.events) def filt_node(self, network): modes = { 'all': network.nodes, 'senders' : network.senders, 'landmarks' : network.lands, 'receivers' : network.receivers, 'mobiles' : network.mobiles } return modes[self.mode] --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- class CountingMetric(AbsMetric): def __init__(self, mode, to_count): super(CountingMetric, self).__init__(mode) self.to_count = to_count def compute(self, timeline, network): for n in self.filt_node(network): # there is a lot of computation going on every time evts = Timeline.filt(timeline.events, evt=self.to_count, node=n) if len(evts) > 0: self.result[n] = len(evts) addr_update = CountingMetric('all', 'ADDRESS_UPDATE_SENT') --8<---------------cut here---------------end--------------->8--- -- http://mail.python.org/mailman/listinfo/python-list