def wrapup(self):
     for name, readings in zip(('x', 'y', 'z'), self.counts):
         self.output.write(name + ":\n")
         for i, count in enumerate(readings):
             if count:
                 self.output.write("  %d: %d\n" % (commands.signed(i), count))
     self.output.write("%d: overruns\n" % self.num_overruns)
 def process_time(self, time, delta, status, readings):
     self.output.write("%f(%f)ms: 0x%x " % (time, delta, status))
     sep = '('
     for i, reading in enumerate(readings):
         self.output.write("%s%d" % (sep, commands.signed(reading) - Offsets[i]))
         sep = ', '
     self.output.write(")\n")
 def process_time(self, time, delta, status, readings):
     self.time_since_output += delta
     if self.samples_seen > 1:
         dt = (self.last_delta + delta) / 2.0
         a = []
         adj = []
         for i, reading in enumerate(self.last_readings):
             a_n = in_per_sec2(commands.signed(reading) - Offsets[i])
             a.append(a_n)
             adj_n = -self.max_adj if self.v[i] >= 0 else self.max_adj
             if abs(adj_n) * dt > abs(self.v[i]): adj_n = -self.v[i] / dt
             adj.append(adj_n)
             self.v[i] += (a_n + adj_n) * dt
             self.s[i] += (self.v[i] + adj_n * dt) * dt
         self.report(time, dt, a, adj)
     self.last_delta = delta
     self.last_readings = readings
def avg(histogram):
    r'''
        >>> avg([3,2,3])
        1.0
        >>> avg([0,2,0])
        1.0
        >>> avg([2,0,0])
        0.0
        >>> avg([0,0,2])
        2.0
        >>> avg([0] * 128 + [2])
        -128.0
        >>> avg([0] * 255 + [2])
        -1.0
    '''
    total_count = sum = 0
    for i, count in enumerate(histogram):
        total_count += count
        sum += commands.signed(i) * count
    return sum / total_count