def getImgAssessmentStatus(imgdata):
    """
        gets the assessment status (keep/reject) from the last assessment run
                keep = True
                reject = False
                unassessed = None
        """
    ### this function should be modified in the future to allow for a particular assessment run
    if imgdata is None:
        return None
    assessquery = appiondata.ApAssessmentData()
    assessquery['image'] = imgdata
    assessdata = assessquery.query()

    if assessdata:
        #check results of only most recent run
        if assessdata[0]['selectionkeep'] == 1:
            return True
        elif assessdata[0]['selectionkeep'] == 0:
            return False
    return None
def insertImgAssessmentStatus(imgdata,
                              runname="run1",
                              assessment=None,
                              msg=True):
    """
        Insert the assessment status
                keep = True
                reject = False
                unassessed = None
        """
    if assessment is True or assessment is False:
        assessrun = appiondata.ApAssessmentRunData()
        assessrun['session'] = imgdata['session']
        #override to ALWAYS be 'run1'
        #assessrun['name'] = runname
        assessrun['name'] = "run1"

        assessquery = appiondata.ApAssessmentData()
        assessquery['image'] = imgdata
        assessquery['assessmentrun'] = assessrun
        assessquery['selectionkeep'] = assessment
        assessquery.insert()
    else:
        apDisplay.printWarning("No image assessment made, invalid data: " +
                               str(assessment))

    #check assessment
    if msg is True:
        finalassess = getImgAssessmentStatus(imgdata)
        imgname = apDisplay.short(imgdata['filename'])
        if finalassess is True:
            astr = apDisplay.colorString("keep", "green")
        elif finalassess is False:
            astr = apDisplay.colorString("reject", "red")
        elif finalassess is None:
            astr = apDisplay.colorString("none", "yellow")
        apDisplay.printMsg("Final image assessment: " + astr + " (" + imgname +
                           ")")

    return True
示例#3
0
    # all particles
    particles = qpart.query()

    # Find assessment of image that each particle is from.
    # This is messy because we want to query images without reading MRCs.
    assessments = {}
    akeep = []
    areject = []
    anone = []
    for particle in particles:
        imgref = particle.special_getitem('image', dereference=False)
        imgid = imgref.dbid
        if imgid not in assessments:
            img = leginon.leginondata.AcquisitionImageData.direct_query(
                imgref.dbid, readimages=False)
            qassess = appiondata.ApAssessmentData(image=img)
            assessment = qassess.query(results=1)
            if assessment:
                assessments[imgid] = assessment[0]['selectionkeep']
            else:
                assessments[imgid] = None
        assessment = assessments[imgid]
        if assessment is None:
            anone.append(particle)
        elif assessment:
            akeep.append(particle)
        else:
            areject.append(particle)

    print ' Total Particles:', len(particles)
    print '         Rejected', len(areject)