def commitToDatabase(self, imgdata):
        # if a kept mask was created in a previous mask run and the
        # assess flag was used (basically combining the 2 runs) there is
        # nothing new to commit.
        if self.useAcceptedMask: return

        sessiondata = imgdata['session']
        rundir = self.params['rundir']
        maskname = self.params['runname']
        assessname = self.params['assessname']
        bin = self.params['bin']
        maskdir = os.path.join(rundir, "masks")
        maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
            maskname, sessiondata)
        if not maskrundata:
            apMask.insertManualMaskRun(sessiondata, rundir, maskname, bin)
            maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
                maskname, sessiondata)
            try:
                apParam.createDirectory(maskdir)
            except:
                apDisplay.printWarning('can not create mask directory')
        massessrundata, exist = apMask.insertMaskAssessmentRun(
            sessiondata, maskrundata, assessname)

        mask = self.maskimg
        maskfilename = imgdata['filename'] + '_mask.png'

        image = self.image
        labeled_regions, clabels = nd.label(mask)
        testlog = [False, 0, ""]
        infos = {}
        infos, testlog = apCrud.getLabeledInfo(image, mask, labeled_regions,
                                               range(1, clabels + 1), False,
                                               infos, testlog)
        offset = 1
        for l1 in range(0, len(infos)):

            l = l1 + offset
            info = infos[l]
            info.append(l)
            regiondata = apMask.insertMaskRegion(maskrundata, imgdata, info)
            print "Inserting mask region in database"

        # PIL alpha channel read does not work
        #apImage.arrayMaskToPngAlpha(mask, os.path.join(maskdir,maskfilename))
        apImage.arrayMaskToPng(mask, os.path.join(maskdir, maskfilename))

        allregiondata = apMask.getMaskRegions(maskrundata, imgdata)

        for regiondata in allregiondata:
            apMask.insertMaskAssessment(massessrundata, regiondata, 1)
            print "Inserting mask assessment in database."

        if self.assess != self.assessold and self.assess is not None:
            #imageaccessor run is always named run1
            apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
        return
	def commitToDatabase(self,imgdata):
        # if a kept mask was created in a previous mask run and the 
        # assess flag was used (basically combining the 2 runs) there is 
        # nothing new to commit.  
		if self.useAcceptedMask: return
        
		sessiondata = imgdata['session']
		rundir = self.params['rundir']
		maskname = self.params['runname']
		assessname = self.params['assessname']
		bin = self.params['bin']
		maskdir=os.path.join(rundir,"masks")
		maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
		if not maskrundata:
			apMask.insertManualMaskRun(sessiondata,rundir,maskname,bin)
			maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
			try:
				apParam.createDirectory(maskdir)
			except:
				apDisplay.printWarning('can not create mask directory')
		massessrundata,exist = apMask.insertMaskAssessmentRun(sessiondata,maskrundata,assessname)
		
		mask = self.maskimg
		maskfilename = imgdata['filename']+'_mask.png'
		
		image = self.image
		labeled_regions,clabels=nd.label(mask)
		testlog = [False,0,""]
		infos={}
		infos,testlog=apCrud.getLabeledInfo(image,mask,labeled_regions,range(1,clabels+1),False,infos,testlog)
		offset=1
		for l1 in range(0,len(infos)):

			l=l1+offset
			info=infos[l]
			info.append(l)
			regiondata= apMask.insertMaskRegion(maskrundata,imgdata,info)
			print "Inserting mask region in database"
		
		# PIL alpha channel read does not work
		#apImage.arrayMaskToPngAlpha(mask, os.path.join(maskdir,maskfilename))
		apImage.arrayMaskToPng(mask, os.path.join(maskdir,maskfilename))

		allregiondata = apMask.getMaskRegions(maskrundata,imgdata)
			
		for regiondata in allregiondata:
			apMask.insertMaskAssessment(massessrundata,regiondata,1)
			print "Inserting mask assessment in database."

		if self.assess != self.assessold and self.assess is not None:
			#imageaccessor run is always named run1
			apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
		return
Пример #3
0
    def commitToDatabase(self, imgdata):
        # if a kept mask was created in a previous mask run and the
        # assess flag was used (basically combining the 2 runs) there is
        # nothing new to commit.
        if self.useAcceptedMask: return

        sessiondata = imgdata['session']
        rundir = self.params['rundir']
        maskname = self.params['runname']
        assessname = self.params['assessname']
        bin = self.params['bin']
        maskdir = os.path.join(rundir, "masks")
        maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
            maskname, sessiondata)
        if not maskrundata:
            apMask.insertManualMaskRun(sessiondata, rundir, maskname, bin)
            maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
                maskname, sessiondata)
        massessrundata, exist = apMask.insertMaskAssessmentRun(
            sessiondata, maskrundata, assessname)

        mask = self.maskimg
        maskfilename = imgdata['filename'] + '_mask.png'

        image = self.image
        labeled_regions, clabels = nd.label(mask)
        testlog = [False, 0, ""]
        infos = {}
        infos, testlog = apCrud.getLabeledInfo(image, mask, labeled_regions,
                                               range(1, clabels + 1), False,
                                               infos, testlog)
        offset = 1
        for l1 in range(0, len(infos)):

            l = l1 + offset
            info = infos[l]
            info.append(l)
            regiondata = apMask.insertMaskRegion(maskrundata, imgdata, info)
            print "Inserting mask region in database"

        allregiondata = apMask.getMaskRegions(maskrundata, imgdata)

        for regiondata in allregiondata:
            apMask.insertMaskAssessment(massessrundata, regiondata, 1)
            print "Inserting mask assessment in database."
        return
	def commitToDatabase(self,imgdata):
        # if a kept mask was created in a previous mask run and the 
        # assess flag was used (basically combining the 2 runs) there is 
        # nothing new to commit.  
		if self.useAcceptedMask: return
        
		sessiondata = imgdata['session']
		rundir = self.params['rundir']
		maskname = self.params['runname']
		assessname = self.params['assessname']
		bin = self.params['bin']
		maskdir=os.path.join(rundir,"masks")
		maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
		if not maskrundata:
			apMask.insertManualMaskRun(sessiondata,rundir,maskname,bin)
			maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
		massessrundata,exist = apMask.insertMaskAssessmentRun(sessiondata,maskrundata,assessname)
		
		mask = self.maskimg
		maskfilename = imgdata['filename']+'_mask.png'
		
		image = self.image
		labeled_regions,clabels=nd.label(mask)
		testlog = [False,0,""]
		infos={}
		infos,testlog=apCrud.getLabeledInfo(image,mask,labeled_regions,range(1,clabels+1),False,infos,testlog)
		offset=1
		for l1 in range(0,len(infos)):

			l=l1+offset
			info=infos[l]
			info.append(l)
			regiondata= apMask.insertMaskRegion(maskrundata,imgdata,info)
			print "Inserting mask region in database"
		
		allregiondata = apMask.getMaskRegions(maskrundata,imgdata)
			
		for regiondata in allregiondata:
			apMask.insertMaskAssessment(massessrundata,regiondata,1)
			print "Inserting mask assessment in database."
		return
    def commitToDatabase(self, imgdata):
        sessiondata = imgdata['session']
        rundir = self.params['rundir']
        maskname = self.params['runname']
        assessname = self.params['runname']
        bin = self.params['bin']
        maskdir = os.path.join(rundir, "masks")

        maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
            maskname, sessiondata)

        if not maskrundata:
            apMask.insertManualMaskRun(sessiondata, rundir, maskname, bin)
            maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
                maskname, sessiondata)
            try:
                apParam.createDirectory(maskdir)
            except:
                apDisplay.printWarning('can not create mask directory')

        massessrundata, exist = apMask.insertMaskAssessmentRun(
            sessiondata, maskrundata, assessname)

        # The mask file should only exist if the em_hole_finder found a region to mask.
        # If it does not exist, do not insert anything to the DB.
        if (os.path.exists(self.outfile)):
            apDisplay.printMsg("Writing results to database: " +
                               time.asctime())

            # Set black pixels to white and anything else to 0
            img1 = Image.open(self.outfile)
            img2 = Image.eval(img1, lambda px: 255 if px == 0 else 0)

            # make sure the images have the same shape
            imgshape = numpy.asarray(imgdata['image'].shape)
            apDisplay.printMsg("MRC Image Shape:")
            print imgshape
            imgsize = imgshape[0] * imgshape[1]
            apDisplay.printMsg("MRC Image Size:")
            print imgsize

            maskshape = numpy.shape(img2)
            apDisplay.printMsg("Mask Image Shape:")
            print maskshape

            apDisplay.printMsg("resizing mask image with scale:")
            scaleFactorx = float(imgshape[0]) / float(maskshape[0])
            scaleFactory = float(imgshape[1]) / float(maskshape[1])
            scale = scaleFactorx, scaleFactory
            print scale

            img3 = imagefun.scale(img2, scale)
            maskshape = numpy.shape(img3)
            apDisplay.printMsg("Mask Image Shape:")
            print maskshape
            #img3 = numpy.resize(img2, imgshape) # not working
            img3path = self.outfile + "_tmp.jpg"
            scipy.misc.imsave(img3path, img3)

            labeled_regions, clabels = ndimage.label(img3)

            testlog = [False, 0, ""]
            infos = {}

            apDisplay.printMsg("getting mask region info.")
            infos, testlog = apCrud.getLabeledInfo(imgdata['image'], img3,
                                                   labeled_regions,
                                                   range(1, clabels + 1),
                                                   False, infos, testlog)

            apDisplay.printMsg("inserting mask regions to DB.")
            print len(infos)

            area_max = imgsize * .9
            offset = 1
            for l1 in range(0, len(infos)):
                l = l1 + offset
                info = infos[l]
                area = info[0]
                print area
                if (area > 400 and area < area_max):
                    apDisplay.printMsg("saving a region of size:")
                    print area
                    info.append(l)
                    regiondata = apMask.insertMaskRegion(
                        maskrundata, imgdata, info)

        # Insert mask assessment regions. This keeps track of the mask regions that the user wants to reject.
        allregiondata = apMask.getMaskRegions(maskrundata, imgdata)

        for regiondata in allregiondata:
            apMask.insertMaskAssessment(massessrundata, regiondata, True)

#               if self.assess != self.assessold and self.assess is not None:
#                       #imageaccessor run is always named run1
#                       apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
        return
	def commitToDatabase(self,imgdata):
		sessiondata   = imgdata['session']
		rundir        = self.params['rundir']
		maskname      = self.params['runname']
		assessname    = self.params['runname']
		bin           = self.params['bin']
		maskdir       = os.path.join(rundir,"masks")
		
		maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
		
		if not maskrundata:
			apMask.insertManualMaskRun(sessiondata,rundir,maskname,bin)
			maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
			try:
				apParam.createDirectory(maskdir)
			except:
				apDisplay.printWarning('can not create mask directory')
		
		massessrundata,exist = apMask.insertMaskAssessmentRun(sessiondata,maskrundata,assessname)
		
		# The mask file should only exist if the em_hole_finder found a region to mask.
		# If it does not exist, do not insert anything to the DB.
		if ( os.path.exists(self.outfile) ):
			apDisplay.printMsg("Writing results to database: " + time.asctime())
			
			# Set black pixels to white and anything else to 0
			img1 = Image.open(self.outfile)
			img2 = Image.eval(img1, lambda px: 255 if px==0 else 0)

			# make sure the images have the same shape
			imgshape = numpy.asarray(imgdata['image'].shape)
			apDisplay.printMsg("MRC Image Shape:")
			print imgshape
			imgsize = imgshape[0]*imgshape[1]
			apDisplay.printMsg("MRC Image Size:")
			print imgsize

			maskshape = numpy.shape(img2)
			apDisplay.printMsg("Mask Image Shape:")
			print maskshape
			
			apDisplay.printMsg("resizing mask image with scale:")
			scaleFactorx = float(imgshape[0])/float(maskshape[0])
			scaleFactory = float(imgshape[1])/float(maskshape[1])
			scale = scaleFactorx, scaleFactory
			print scale

			img3 = imagefun.scale( img2, scale )
			maskshape = numpy.shape(img3)
			apDisplay.printMsg("Mask Image Shape:")
			print maskshape
			#img3 = numpy.resize(img2, imgshape) # not working
			img3path = self.outfile + "_tmp.jpg"
			scipy.misc.imsave(img3path, img3)			
			
			labeled_regions,clabels = ndimage.label(img3)
				
			testlog = [False,0,""]
			infos={}
			
			apDisplay.printMsg("getting mask region info.")
			infos,testlog = apCrud.getLabeledInfo( imgdata['image'], img3, labeled_regions, range(1,clabels+1), False, infos, testlog)
	
			apDisplay.printMsg("inserting mask regions to DB.")
			print len(infos)
			
			area_max = imgsize*.9
			offset = 1
			for l1 in range(0,len(infos)):
				l = l1 + offset
				info = infos[l]
				area=info[0]
				print area
				if (area > 400 and area < area_max):
					apDisplay.printMsg("saving a region of size:")
					print area
					info.append(l)
					regiondata = apMask.insertMaskRegion( maskrundata, imgdata, info )

		# Insert mask assessment regions. This keeps track of the mask regions that the user wants to reject.
		allregiondata = apMask.getMaskRegions(maskrundata,imgdata)
		
		for regiondata in allregiondata:
			apMask.insertMaskAssessment(massessrundata,regiondata,True)

#		if self.assess != self.assessold and self.assess is not None:
#			#imageaccessor run is always named run1
#			apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
		return