def convertSQLtoEulerTree(self, results): t0 = time.time() eulertree = [] for row in results: if len(row) < 11: apDisplay.printError("delete MySQL cache file and run again") try: eulerpair = { 'part1': {}, 'part2': {} } eulerpair['part1']['partid'] = int(row[0]) eulerpair['part1']['dbid'] = int(row[1]) eulerpair['part1']['euler1'] = float(row[2]) eulerpair['part1']['euler2'] = float(row[3]) eulerpair['part1']['euler3'] = float(row[4]) eulerpair['part1']['mirror'] = self.nullOrValue(row[5]) eulerpair['part1']['reject'] = not self.nullOrValue(row[6]) eulerpair['part1']['tilt'] = apStack.getStackParticleTilt(eulerpair['part1']['dbid']) eulerpair['part2']['partid'] = int(row[7]) eulerpair['part2']['dbid'] = int(row[8]) eulerpair['part2']['euler1'] = float(row[9]) eulerpair['part2']['euler2'] = float(row[10]) eulerpair['part2']['euler3'] = float(row[11]) eulerpair['part2']['mirror'] = self.nullOrValue(row[12]) eulerpair['part2']['reject'] = not self.nullOrValue(row[13]) eulerpair['part2']['tilt'] = apStack.getStackParticleTilt(eulerpair['part2']['dbid']) eulertree.append(eulerpair) except: print row apDisplay.printError("bad row entry") apDisplay.printMsg("Converted "+str(len(eulertree))+" eulers in "+apDisplay.timeString(time.time()-t0)) return eulertree
def convertSQLtoEulerTree(self, results): t0 = time.time() eulertree = [] for row in results: if len(row) < 11: apDisplay.printError("delete MySQL cache file and run again") try: eulerpair = {'part1': {}, 'part2': {}} eulerpair['part1']['partid'] = int(row[0]) eulerpair['part1']['dbid'] = int(row[1]) eulerpair['part1']['euler1'] = float(row[2]) eulerpair['part1']['euler2'] = float(row[3]) eulerpair['part1']['euler3'] = float(row[4]) eulerpair['part1']['mirror'] = self.nullOrValue(row[5]) eulerpair['part1']['reject'] = not self.nullOrValue(row[6]) eulerpair['part1']['tilt'] = apStack.getStackParticleTilt( eulerpair['part1']['dbid']) eulerpair['part2']['partid'] = int(row[7]) eulerpair['part2']['dbid'] = int(row[8]) eulerpair['part2']['euler1'] = float(row[9]) eulerpair['part2']['euler2'] = float(row[10]) eulerpair['part2']['euler3'] = float(row[11]) eulerpair['part2']['mirror'] = self.nullOrValue(row[12]) eulerpair['part2']['reject'] = not self.nullOrValue(row[13]) eulerpair['part2']['tilt'] = apStack.getStackParticleTilt( eulerpair['part2']['dbid']) eulertree.append(eulerpair) except: print row apDisplay.printError("bad row entry") apDisplay.printMsg("Converted " + str(len(eulertree)) + " eulers in " + apDisplay.timeString(time.time() - t0)) return eulertree
def getEulersForIteration2(self, reconid, tiltrunid, stackid, iteration=1): """ returns all classdata for a particular refinement iteration """ #get mirror and good/bad t0 = time.time() cachefile = "mysql_cache-recon"+str(reconid)+"-iter"+str(iteration)+".pickle" if os.path.isfile(cachefile): apDisplay.printColor("Using cached MySQL query data at "+time.asctime(), "cyan") cachef = open(cachefile, 'r') eulertree = cPickle.load(cachef) cachef.close() apDisplay.printMsg("\nFetched "+str(len(eulertree))+" rows in "+apDisplay.timeString(time.time()-t0)) return eulertree query = ( "SELECT \n" +" tiltd.`REF|ApParticleData|particle1` AS partnum1, \n" +" tiltd.`REF|ApParticleData|particle2` AS partnum2 \n" +"FROM `ApTiltParticlePairData` AS tiltd \n" +"LEFT JOIN `ApImageTiltTransformData` as transform \n" +" ON tiltd.`REF|ApImageTiltTransformData|transform` = transform.`DEF_id` \n" +"LEFT JOIN `ApStackParticleData` AS stpart1 \n" +" ON stpart1.`REF|ApParticleData|particle` = tiltd.`REF|ApParticleData|particle1` \n" +"LEFT JOIN `ApStackParticleData` AS stpart2 \n" +" ON stpart2.`REF|ApParticleData|particle` = tiltd.`REF|ApParticleData|particle2` \n" +"WHERE \n" #+" transform.`REF|ApSelectionRunData|tiltrun` = "+str(tiltrunid)+" \n" #+"AND \n" +" stpart1.`REF|ApStackData|stack` = "+str(stackid)+" \n" +"AND \n" +" stpart2.`REF|ApStackData|stack` = "+str(stackid)+" \n" #+"LIMIT 50 \n" ) #print query apDisplay.printColor("Getting all particles via MySQL query at "+time.asctime(), "yellow") self.cursor.execute(query) numrows = int(self.cursor.rowcount) results = self.cursor.fetchall() apDisplay.printMsg("Fetched "+str(len(results))+" rows in "+apDisplay.timeString(time.time()-t0)) if len(results) < 3: print query apDisplay.printError("No tilt pairs found in this stackid="+str(stackid)) t0 = time.time() eulertree = [] apDisplay.printColor("Getting individual particle info at "+time.asctime(), "yellow") count = 0 for row in results: count += 1 if count % 500 == 0: sys.stderr.write(".") eulerpair = { 'part1': {}, 'part2': {} } partid1 = int(row[0]) partid2 = int(row[1]) query = ( "SELECT \n" +" stpart.`particleNumber` AS partnum, \n" +" stpart.`DEF_id` AS dbid, \n" +" partclass.`euler1` AS alt, partclass.`euler2` AS az, partclass.`euler3` AS phi, \n" +" partclass.`mirror` AS mirror, partclass.`refine_keep` AS reject \n" +"FROM `ApStackParticleData` AS stpart \n" +"LEFT JOIN `ApRefineParticleData` AS partclass \n" +" ON partclass.`REF|ApStackParticleData|particle` = stpart.`DEF_id` \n" +"LEFT JOIN `ApRefineIterData` AS refd \n" +" ON partclass.`REF|ApRefineIterData|refineIter` = refd.`DEF_id` \n" +"WHERE " +" stpart.`REF|ApParticleData|particle` = "+str(partid1)+" \n" +"AND \n" +" refd.`REF|ApRefineRunData|refineRun` = "+str(reconid)+" \n" +"AND \n" +" refd.`iteration` = "+str(iteration)+" \n" +"LIMIT 1 \n" ) #print query self.cursor.execute(query) row = self.cursor.fetchone() if not row: continue eulerpair['part1']['partid'] = int(row[0]) eulerpair['part1']['dbid'] = int(row[1]) eulerpair['part1']['euler1'] = float(row[2]) eulerpair['part1']['euler2'] = float(row[3]) eulerpair['part1']['euler3'] = float(row[4]) eulerpair['part1']['mirror'] = self.nullOrValue(row[5]) eulerpair['part1']['reject'] = not self.nullOrValue(row[6]) eulerpair['part1']['tilt'] = apStack.getStackParticleTilt(eulerpair['part1']['dbid']) query = ( "SELECT \n" +" stpart.`particleNumber` AS partnum, \n" +" stpart.`DEF_id` AS dbid, \n" +" partclass.`euler1` AS alt, partclass.`euler2` AS az, partclass.`euler3` AS phi, \n" +" partclass.`mirror` AS mirror, partclass.`refine_keep` AS reject \n" +"FROM `ApStackParticleData` AS stpart \n" +"LEFT JOIN `ApRefineParticleData` AS partclass \n" +" ON partclass.`REF|ApStackParticleData|particle` = stpart.`DEF_id` \n" +"LEFT JOIN `ApRefineIterData` AS refd \n" +" ON partclass.`REF|ApRefineIterData|refineIter` = refd.`DEF_id` \n" +"WHERE " +" stpart.`REF|ApParticleData|particle` = "+str(partid2)+" \n" +"AND \n" +" refd.`REF|ApRefineRunData|refineRun` = "+str(reconid)+" \n" +"AND \n" +" refd.`iteration` = "+str(iteration)+" \n" +"LIMIT 1 \n" ) #print query self.cursor.execute(query) row = self.cursor.fetchone() if not row: continue eulerpair['part2']['partid'] = int(row[0]) eulerpair['part2']['dbid'] = int(row[1]) eulerpair['part2']['euler1'] = float(row[2]) eulerpair['part2']['euler2'] = float(row[3]) eulerpair['part2']['euler3'] = float(row[4]) eulerpair['part2']['mirror'] = self.nullOrValue(row[5]) eulerpair['part2']['reject'] = not self.nullOrValue(row[6]) eulerpair['part2']['tilt'] = apStack.getStackParticleTilt(eulerpair['part2']['dbid']) eulertree.append(eulerpair) #end loop cachef = open(cachefile, 'w', 0666) cPickle.dump(eulertree, cachef) cachef.close() apDisplay.printMsg("\nFetched "+str(len(eulertree))+" rows in "+apDisplay.timeString(time.time()-t0)) return eulertree
def getEulersForIteration2(self, reconid, tiltrunid, stackid, iteration=1): """ returns all classdata for a particular refinement iteration """ #get mirror and good/bad t0 = time.time() cachefile = "mysql_cache-recon" + str(reconid) + "-iter" + str( iteration) + ".pickle" if os.path.isfile(cachefile): apDisplay.printColor( "Using cached MySQL query data at " + time.asctime(), "cyan") cachef = open(cachefile, 'r') eulertree = cPickle.load(cachef) cachef.close() apDisplay.printMsg("\nFetched " + str(len(eulertree)) + " rows in " + apDisplay.timeString(time.time() - t0)) return eulertree query = ( "SELECT \n" + " tiltd.`REF|ApParticleData|particle1` AS partnum1, \n" + " tiltd.`REF|ApParticleData|particle2` AS partnum2 \n" + "FROM `ApTiltParticlePairData` AS tiltd \n" + "LEFT JOIN `ApImageTiltTransformData` as transform \n" + " ON tiltd.`REF|ApImageTiltTransformData|transform` = transform.`DEF_id` \n" + "LEFT JOIN `ApStackParticleData` AS stpart1 \n" + " ON stpart1.`REF|ApParticleData|particle` = tiltd.`REF|ApParticleData|particle1` \n" + "LEFT JOIN `ApStackParticleData` AS stpart2 \n" + " ON stpart2.`REF|ApParticleData|particle` = tiltd.`REF|ApParticleData|particle2` \n" + "WHERE \n" #+" transform.`REF|ApSelectionRunData|tiltrun` = "+str(tiltrunid)+" \n" #+"AND \n" + " stpart1.`REF|ApStackData|stack` = " + str(stackid) + " \n" + "AND \n" + " stpart2.`REF|ApStackData|stack` = " + str(stackid) + " \n" #+"LIMIT 50 \n" ) #print query apDisplay.printColor( "Getting all particles via MySQL query at " + time.asctime(), "yellow") self.cursor.execute(query) numrows = int(self.cursor.rowcount) results = self.cursor.fetchall() apDisplay.printMsg("Fetched " + str(len(results)) + " rows in " + apDisplay.timeString(time.time() - t0)) if len(results) < 3: print query apDisplay.printError("No tilt pairs found in this stackid=" + str(stackid)) t0 = time.time() eulertree = [] apDisplay.printColor( "Getting individual particle info at " + time.asctime(), "yellow") count = 0 for row in results: count += 1 if count % 500 == 0: sys.stderr.write(".") eulerpair = {'part1': {}, 'part2': {}} partid1 = int(row[0]) partid2 = int(row[1]) query = ( "SELECT \n" + " stpart.`particleNumber` AS partnum, \n" + " stpart.`DEF_id` AS dbid, \n" + " partclass.`euler1` AS alt, partclass.`euler2` AS az, partclass.`euler3` AS phi, \n" + " partclass.`mirror` AS mirror, partclass.`refine_keep` AS reject \n" + "FROM `ApStackParticleData` AS stpart \n" + "LEFT JOIN `ApRefineParticleData` AS partclass \n" + " ON partclass.`REF|ApStackParticleData|particle` = stpart.`DEF_id` \n" + "LEFT JOIN `ApRefineIterData` AS refd \n" + " ON partclass.`REF|ApRefineIterData|refineIter` = refd.`DEF_id` \n" + "WHERE " + " stpart.`REF|ApParticleData|particle` = " + str(partid1) + " \n" + "AND \n" + " refd.`REF|ApRefineRunData|refineRun` = " + str(reconid) + " \n" + "AND \n" + " refd.`iteration` = " + str(iteration) + " \n" + "LIMIT 1 \n") #print query self.cursor.execute(query) row = self.cursor.fetchone() if not row: continue eulerpair['part1']['partid'] = int(row[0]) eulerpair['part1']['dbid'] = int(row[1]) eulerpair['part1']['euler1'] = float(row[2]) eulerpair['part1']['euler2'] = float(row[3]) eulerpair['part1']['euler3'] = float(row[4]) eulerpair['part1']['mirror'] = self.nullOrValue(row[5]) eulerpair['part1']['reject'] = not self.nullOrValue(row[6]) eulerpair['part1']['tilt'] = apStack.getStackParticleTilt( eulerpair['part1']['dbid']) query = ( "SELECT \n" + " stpart.`particleNumber` AS partnum, \n" + " stpart.`DEF_id` AS dbid, \n" + " partclass.`euler1` AS alt, partclass.`euler2` AS az, partclass.`euler3` AS phi, \n" + " partclass.`mirror` AS mirror, partclass.`refine_keep` AS reject \n" + "FROM `ApStackParticleData` AS stpart \n" + "LEFT JOIN `ApRefineParticleData` AS partclass \n" + " ON partclass.`REF|ApStackParticleData|particle` = stpart.`DEF_id` \n" + "LEFT JOIN `ApRefineIterData` AS refd \n" + " ON partclass.`REF|ApRefineIterData|refineIter` = refd.`DEF_id` \n" + "WHERE " + " stpart.`REF|ApParticleData|particle` = " + str(partid2) + " \n" + "AND \n" + " refd.`REF|ApRefineRunData|refineRun` = " + str(reconid) + " \n" + "AND \n" + " refd.`iteration` = " + str(iteration) + " \n" + "LIMIT 1 \n") #print query self.cursor.execute(query) row = self.cursor.fetchone() if not row: continue eulerpair['part2']['partid'] = int(row[0]) eulerpair['part2']['dbid'] = int(row[1]) eulerpair['part2']['euler1'] = float(row[2]) eulerpair['part2']['euler2'] = float(row[3]) eulerpair['part2']['euler3'] = float(row[4]) eulerpair['part2']['mirror'] = self.nullOrValue(row[5]) eulerpair['part2']['reject'] = not self.nullOrValue(row[6]) eulerpair['part2']['tilt'] = apStack.getStackParticleTilt( eulerpair['part2']['dbid']) eulertree.append(eulerpair) #end loop cachef = open(cachefile, 'w', 0666) cPickle.dump(eulertree, cachef) cachef.close() apDisplay.printMsg("\nFetched " + str(len(eulertree)) + " rows in " + apDisplay.timeString(time.time() - t0)) return eulertree