From dbc517271fa74d811b3a80ffbae1f55edffb46d5 Mon Sep 17 00:00:00 2001 From: sfop Date: Mon, 29 Aug 2016 11:30:46 +0200 Subject: [PATCH] Script execution --- script/BpmStats.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 script/BpmStats.py diff --git a/script/BpmStats.py b/script/BpmStats.py new file mode 100644 index 0000000..106f999 --- /dev/null +++ b/script/BpmStats.py @@ -0,0 +1,84 @@ +from startup import * +from ijutils import * +from ch.psi.pshell.imaging.Overlays import * +import ch.psi.pshell.imaging.Pen as Pen +import java.awt.Color as Color +import random + + + +class BpmStats(DeviceBase): + def __init__(self, name, prefix ): + DeviceBase.__init__(self, name, read_interval = 0.1) + self.prefix = prefix + self.read_interval = read_interval + self.bpm_x = Channel(prefix + ":X1", type = 'd', name + " x") + self.bpm_y = Channel(prefix + ":Y1", type = 'd', name + " y") + self.com_x_samples, self.com_y_samples = [], [] + class ComX(Readable): + def read(self): + if len(self.image_stats.com_x_samples)==0: return None + return mean(self.image_stats.com_x_samples) + self.com_x_mean = ComX(); self.com_x_mean.image_stats = self + class ComY(Readable): + def read(self): + if len(self.image_stats.com_y_samples)==0: return None + return mean(self.image_stats.com_y_samples) + self.com_y_mean = ComY(); self.com_y_mean.image_stats = self + class ComXVar(Readable): + def read(self): + if len(self.image_stats.com_x_samples)==0: return None + return stdev(self.image_stats.com_x_samples) + self.com_x_stdev = ComXVar(); self.com_x_stdev.image_stats = self + class ComXVar(Readable): + def read(self): + if len(self.image_stats.com_y_samples)==0: return None + return stdev(self.image_stats.com_y_samples) + self.com_y_stdev = ComXVar(); self.com_y_stdev.image_stats = self + set_device_alias(self.com_x_mean, name + " x mean") + set_device_alias(self.com_y_mean, name + " y mean") + set_device_alias(self.com_x_stdev, name + " x stdev") + set_device_alias(self.com_y_stdev, name + " y stdev") + self.num_images = 1 + self.initialize() + + + def doUpdate(self): + self.com_x_samples, self.com_y_samples = [], [] + for i in range(self.num_images): + time.sleep(self.read_interval) + cx = self.bpm_x.read() + cy = self.bpm_y.read() + print "centroid ",[cx,cy] + if centroid is not None: + self.com_x_samples.append(cx) + self.com_y_samples.append(cy) + + def setNumberOfImages(self, value): + self.num_images = value + + def enableBackground(self, value): + pass + + def captureBackground(self, images): + pass + + def doClose(self): + pass + + def start(self): + pass + + def stop(self): + pass + + + +if __name__ == "__builtin__": + add_device(BpmStats("bpm com", "SINEG01-DBPM340")) + bpm_stats.setNumberOfImages(5) + for i in range (10): + bpm_stats.update() + print bpm_stats.take(), bpm_stats.com_x_mean.read(), bpm_stats.com_y_mean.read() + time.sleep(1) +