예제 #1
0
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
예제 #4
0
	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)
 def commitToDatabase(self, imgdata):
         apDefocalPairs.insertShift(imgdata, self.sibling, self.shiftpeak)