'''
A general pressure controller class
'''
import collections
from time import time
from holypipette.controller.base import TaskController
all = ['PressureController', 'FakePressureController']
[docs]class PressureController(TaskController):
def __init__(self):
super(PressureController, self).__init__()
self._pressure = collections.defaultdict(int)
[docs] def measure(self, port = 0):
'''
Measures the instantaneous pressure, on designated port.
'''
pass
[docs] def set_pressure(self, pressure, port = 0):
'''
Sets the pressure, on designated port.
'''
self._pressure[port] = pressure
[docs] def get_pressure(self, port=0):
'''
Gets the pressure on the designated port. Note that this does not refer
to any measurement, but simply to the pressure as set via
`.set_pressure`.
'''
return self._pressure[port]
[docs] def ramp(self,amplitude = -230., duration = 1.5, port = 0):
'''
Makes a ramp of pressure
'''
t0 = time()
t = t0
while t-t0<duration:
self.set_pressure(amplitude*(t-t0)/duration,port)
t = time()
self.set_pressure(0., port)
[docs]class FakePressureController(PressureController):
def __init__(self):
super(FakePressureController, self).__init__()
self.pressure = 0
[docs] def measure(self, port=0):
'''
Measures the instantaneous pressure, on designated port.
'''
return self.pressure
[docs] def set_pressure(self, pressure, port=0):
'''
Sets the pressure, on designated port.
'''
self.debug('Pressure set to: {}'.format(pressure))
self.pressure = pressure
[docs] def get_pressure(self, port=0):
return self.pressure