def recordToggled(self, rec): if self.storageFile is not None: self.storageFile.close() self.storageFile = None self.resetHistory() if rec is True: man = getManager() sdir = man.getCurrentDir() self.storageFile = open( sdir.createFile('MultiPatch.log', autoIncrement=True).name(), 'ab') self.writeRecords(self.eventHistory)
def setTargetToggled(self, b): cammod = getManager().getModule('Camera') self._cammod = cammod pips = self.selectedPipettes() if b is True: self.ui.calibrateBtn.setChecked(False) if len(pips) == 0: self.ui.setTargetBtn.setChecked(False) return # start calibration of selected pipettes cammod.window().getView().scene().sigMouseClicked.connect( self.cameraModuleClicked_setTarget) self._setTargetPips = pips else: # stop calibration pg.disconnect(cammod.window().getView().scene().sigMouseClicked, self.cameraModuleClicked_setTarget) self._setTargetPips = []
def __init__(self, module): self.storageFile = None self._calibratePips = [] self._calibrateStagePositions = [] self._setTargetPips = [] QtGui.QWidget.__init__(self) self.module = module self.ui = Ui_MultiPatch() self.ui.setupUi(self) self.setWindowTitle('Multipatch') self.setWindowIcon( QtGui.QIcon(os.path.join(os.path.dirname(__file__), 'icon.png'))) man = getManager() pipNames = man.listInterfaces('pipette') self.pips = [man.getDevice(name) for name in pipNames] self.pips.sort(key=lambda p: int(re.sub(r'[^\d]+', '', p.name()))) microscopeNames = man.listInterfaces('microscope') if len(microscopeNames) == 1: self.microscope = man.getDevice(microscopeNames[0]) self.microscope.sigSurfaceDepthChanged.connect( self.surfaceDepthChanged) elif len(microscopeNames) == 0: # flying blind? self.microscope = None else: raise AssertionError("Currently only 1 microscope is supported") self.pipCtrls = [] for i, pip in enumerate(self.pips): pip.sigTargetChanged.connect(self.pipetteTargetChanged) if isinstance(pip, PatchPipette): pip.sigStateChanged.connect(self.pipetteStateChanged) ctrl = PipetteControl(pip) ctrl.sigMoveStarted.connect(self.pipetteMoveStarted) ctrl.sigMoveFinished.connect(self.pipetteMoveFinished) self.ui.matrixLayout.addWidget(ctrl, i, 0) ctrl.ui.selectBtn.clicked.connect(self.selectBtnClicked) ctrl.ui.soloBtn.clicked.connect(self.soloBtnClicked) ctrl.ui.lockBtn.clicked.connect(self.lockBtnClicked) ctrl.ui.tipBtn.clicked.connect(self.focusTipBtnClicked) ctrl.ui.targetBtn.clicked.connect(self.focusTargetBtnClicked) self.pipCtrls.append(ctrl) ctrl.leftPlot.setXLink(self.pipCtrls[0].leftPlot.getViewBox()) self.ui.stepSizeSpin.setOpts(value=10e-6, suffix='m', siPrefix=True, bounds=[5e-6, None], step=5e-6) self.ui.calibrateBtn.toggled.connect(self.calibrateToggled) self.ui.setTargetBtn.toggled.connect(self.setTargetToggled) self.ui.moveInBtn.clicked.connect(self.moveIn) self.ui.stepInBtn.clicked.connect(self.stepIn) self.ui.stepOutBtn.clicked.connect(self.stepOut) self.ui.aboveTargetBtn.clicked.connect(self.moveAboveTarget) self.ui.approachBtn.clicked.connect(self.moveApproach) self.ui.toTargetBtn.clicked.connect(self.moveToTarget) self.ui.homeBtn.clicked.connect(self.moveHome) self.ui.idleBtn.clicked.connect(self.moveIdle) self.ui.coarseSearchBtn.clicked.connect(self.coarseSearch) self.ui.fineSearchBtn.clicked.connect(self.fineSearch) self.ui.hideMarkersBtn.toggled.connect(self.hideBtnToggled) self.ui.sealBtn.clicked.connect(self.sealClicked) self.ui.recordBtn.toggled.connect(self.recordToggled) self.ui.resetBtn.clicked.connect(self.resetHistory) self.ui.reSealBtn.clicked.connect(self.reSeal) self.ui.fastBtn.clicked.connect( lambda: self.ui.slowBtn.setChecked(False)) self.ui.slowBtn.clicked.connect( lambda: self.ui.fastBtn.setChecked(False)) xkdevname = module.config.get('xkeysDevice', None) if xkdevname is not None: self.xkdev = getManager().getDevice(xkdevname) self.xkdev.sigStateChanged.connect(self.xkeysStateChanged) self.xkdev.dev.setIntensity(255, 255) else: self.xkdev = None self.resetHistory() for i, pip in enumerate(self.pips): if isinstance(pip, PatchPipette): self.pipetteStateChanged(pip) if self.microscope: d = self.microscope.getSurfaceDepth() if d is not None: self.surfaceDepthChanged(d)
def __init__(self, dev, mod): CameraModuleInterface.__init__(self, dev, mod) self._haveTarget = False self.ui = CamModTemplate() self.ctrl = QtGui.QWidget() self.ui.setupUi(self.ctrl) cal = dev._stageOrientation self.calibrateAxis = Axis([0, 0], 0, inverty=cal['inverty']) self.calibrateAxis.setZValue(5000) mod.addItem(self.calibrateAxis) self.calibrateAxis.setVisible(False) self.centerArrow = pg.ArrowItem() self.centerArrow.setZValue(5000) mod.addItem(self.centerArrow) self.target = Target() self.target.setZValue(5000) mod.addItem(self.target) self.target.setVisible(False) # decide how / whether to add a label for the target basename = dev.name().rstrip('0123456789') showLabel = False if basename != dev.name(): # If this device looks like "Name00" and another device has the same # prefix, then we will label all targets with their device numbers. for devname in getManager().listDevices(): if devname.startswith(basename): showLabel = True break if showLabel: num = dev.name()[len(basename):] self.target.setLabel(num) self.target.setLabelAngle(dev.getYawAngle()) self.depthTarget = Target(movable=False) mod.getDepthView().addItem(self.depthTarget) self.depthTarget.setVisible(False) self.depthArrow = pg.ArrowItem(angle=-dev.pitch * 180 / np.pi) mod.getDepthView().addItem(self.depthArrow) self.ui.setOrientationBtn.toggled.connect(self.setOrientationToggled) mod.window().getView().scene().sigMouseClicked.connect( self.sceneMouseClicked) dev.sigGlobalTransformChanged.connect(self.transformChanged) dev.scopeDevice().sigGlobalTransformChanged.connect(self.focusChanged) dev.sigTargetChanged.connect(self.targetChanged) self.calibrateAxis.sigRegionChangeFinished.connect( self.calibrateAxisChanged) self.calibrateAxis.sigRegionChanged.connect(self.calibrateAxisChanging) self.ui.homeBtn.clicked.connect(self.homeClicked) self.ui.searchBtn.clicked.connect(self.searchClicked) self.ui.idleBtn.clicked.connect(self.idleClicked) self.ui.setTargetBtn.toggled.connect(self.setTargetToggled) self.ui.targetBtn.clicked.connect(self.targetClicked) self.ui.approachBtn.clicked.connect(self.approachClicked) self.ui.autoCalibrateBtn.clicked.connect(self.autoCalibrateClicked) self.ui.getRefBtn.clicked.connect(self.getRefFramesClicked) self.ui.aboveTargetBtn.clicked.connect(self.aboveTargetClicked) self.target.sigDragged.connect(self.targetDragged) self.transformChanged()