def getDefocPairParticles(imgdata, selectionid, particlelabel=None): ### get defocal pair if imgdata['preset'] is not None: defimgdata = apDefocalPairs.getDefocusPair(imgdata) else: # For pairs from Leginon Manual Application defimgdata = apDefocalPairs.getManualDefocusPair(imgdata) if defimgdata is None: apDisplay.printWarning( "Could not find defocal pair for image %s (id %d)" % (apDisplay.short(imgdata['filename']), imgdata.dbid)) return ([], {'shiftx': 0, 'shifty': 0, 'scale': 1}) apDisplay.printMsg( "Found defocus pair %s (id %d) for image %s (id %d)" % (apDisplay.short(defimgdata['filename']), defimgdata.dbid, apDisplay.short(imgdata['filename']), imgdata.dbid)) ### get particles partq = appiondata.ApParticleData() partq['image'] = defimgdata partq['selectionrun'] = appiondata.ApSelectionRunData.direct_query( selectionid) if particlelabel is not None: partq['label'] = particlelabel partdatas = partq.query() apDisplay.printMsg("Found %d particles for defocal pair %s (id %d)" % ( len(partdatas), apDisplay.short(defimgdata['filename']), defimgdata.dbid, )) if len(partdatas) == 0: return ([], {'shiftx': 0, 'shifty': 0, 'scale': 1}) ### get shift information has_tried = False while True: shiftq = appiondata.ApImageTransformationData() shiftq['image1'] = defimgdata shiftdatas = shiftq.query() if shiftdatas: shiftdata = shiftdatas[0] apDisplay.printMsg( "Shifting particles by %.1f,%.1f (%d X)" % (shiftdata['shiftx'], shiftdata['shifty'], shiftdata['scale'])) break else: if has_tried == True: apDisplay.printError( "No shift inserted to database after one try") apDisplay.printMsg("Calculating shift....") shiftpeak = apDefocalPairs.getShift(defimgdata, imgdata) apDefocalPairs.insertShift(defimgdata, imgdata, shiftpeak) has_tried = True return (partdatas, shiftdata)
def getDefocPairParticles(imgdata, selectionid, particlelabel=None): ### get defocal pair if imgdata['preset'] is not None: defimgdata = apDefocalPairs.getDefocusPair(imgdata) else: # For pairs from Leginon Manual Application defimgdata = apDefocalPairs.getManualDefocusPair(imgdata) if defimgdata is None: apDisplay.printWarning("Could not find defocal pair for image %s (id %d)" %(apDisplay.short(imgdata['filename']), imgdata.dbid)) return ([], {'shiftx':0, 'shifty':0, 'scale':1}) apDisplay.printMsg("Found defocus pair %s (id %d) for image %s (id %d)" %(apDisplay.short(defimgdata['filename']), defimgdata.dbid, apDisplay.short(imgdata['filename']), imgdata.dbid)) ### get particles partq = appiondata.ApParticleData() partq['image'] = defimgdata partq['selectionrun'] = appiondata.ApSelectionRunData.direct_query(selectionid) if particlelabel is not None: partq['label'] = particlelabel partdatas = partq.query() apDisplay.printMsg("Found %d particles for defocal pair %s (id %d)" %(len(partdatas), apDisplay.short(defimgdata['filename']), defimgdata.dbid,)) if len(partdatas) == 0: return ([], {'shiftx':0, 'shifty':0, 'scale':1}) ### get shift information has_tried = False while True: shiftq = appiondata.ApImageTransformationData() shiftq['image1'] = defimgdata shiftdatas = shiftq.query() if shiftdatas: shiftdata = shiftdatas[0] apDisplay.printMsg("Shifting particles by %.1f,%.1f (%d X)" %(shiftdata['shiftx'], shiftdata['shifty'], shiftdata['scale'])) break else: if has_tried == True: apDisplay.printError("No shift inserted to database after one try") apDisplay.printMsg("Calculating shift....") shiftpeak = apDefocalPairs.getShift(defimgdata, imgdata) apDefocalPairs.insertShift(defimgdata, imgdata, shiftpeak) has_tried = True return (partdatas, shiftdata)
def loopCommitToDatabase(self, imgdata): ### commit the run sessiondata = imgdata['session'] rundata = self.commitRunToDatabase(sessiondata, True) ### commit custom picker specific params value = self.commitToDatabase(imgdata, rundata) ### commit the particles apParticle.insertParticlePeaks(self.peaktree, imgdata, runname=self.params['runname'], msg=(not self.params['background'])) ### commit defocal pairs if self.params['defocpair'] is True: apDefocalPairs.insertShift(imgdata, self.sibling, self.shiftpeak) return value
def commitToDatabase(self, imgdata): apDefocalPairs.insertShift(imgdata, self.sibling, self.shiftpeak)