def updateFullFrameImage(self, parameters): p = parameters if p["imageCategory"] == "ROI": p["fullFrame"] = apogee.singleImage(p["filenames"][0], self.maxImageSize) x, y = shape(p["fullFrame"]) p["part"] = array([0, x, 0, y]) else: p["fullFrame"] = apogee.odTriple(p["filenames"], self.maxImageSize, p["partLumCorr"], p["partAtomCount"]) self.updateADwinID(parameters)
def analyseShot(shotPath, returnTemplate, image=[], filenames=['li_roi.fit', 'rb_roi.fit'], insituSizeLi=40e-6, insituSizeRb=40e-6): """ returns measurment data of a single shot. Posible values for returnTemplate: * ID: ADwin ID * ADwin varname: ADwin code value * N_Li/N_Rb: atomnumber Li/Rb * e.g. fwhmH_Li: cloud width h/v * T_Li/T_Rb: temperature * etc... """ import os import adwin import apogee if image != []: image_Li = image image_Rb = image adwinFilename = shotPath else: if 'N_Li' in returnTemplate or 'fwhmH_Li' in returnTemplate or 'fwhmV_Li' in returnTemplate or 'T_Li' in returnTemplate: image_Li = apogee.singleImage(os.path.join(shotPath, filenames[0])) if 'N_Rb' in returnTemplate or 'fwhmH_Rb' in returnTemplate or 'fwhmV_Rb' in returnTemplate or 'T_Rb' in returnTemplate: image_Rb = apogee.singleImage(os.path.join(shotPath, filenames[1])) adwinFilename = os.path.join(shotPath, 'adwin_code.acm') if 'AmpH_Li' in returnTemplate or 'OffH_Li' in returnTemplate or 'PosH_Li' in returnTemplate or 'fwhmH_Li' in returnTemplate or 'N_Li_Gauss' in returnTemplate or 'T_Li' in returnTemplate: gaussfitCoffLiH = gaussfit(image_Li) if 'AmpV_Li' in returnTemplate or 'OffV_Li' in returnTemplate or 'PosV_Li' in returnTemplate or 'fwhmV_Li' in returnTemplate or 'N_Li_Gauss' in returnTemplate or 'T_Li' in returnTemplate: gaussfitCoffLiV = gaussfit(image_Li, dir = 1) if 'AmpH_Rb' in returnTemplate or 'OffH_Rb' in returnTemplate or 'PosH_Rb' in returnTemplate or 'fwhmH_Rb' in returnTemplate or 'N_Rb_Gauss' in returnTemplate or 'T_Rb' in returnTemplate: gaussfitCoffRbH = gaussfit(image_Rb) if 'AmpV_Rb' in returnTemplate or 'OffV_Rb' in returnTemplate or 'PosV_Rb' in returnTemplate or 'fwhmV_Rb' in returnTemplate or 'N_Rb_Gauss' in returnTemplate or 'T_Rb' in returnTemplate: gaussfitCoffRbV = gaussfit(image_Rb, dir = 1) returnList = empty([0, 0], dtype=object) for request in returnTemplate: if request == 'N_Li': returnList = append(returnList, atomCount(image_Li)) elif request == 'N_Rb': returnList = append(returnList, atomCount(image_Rb)) elif request == 'ID': returnList = append(returnList, os.path.split(shotPath)[-1]) elif request == 'N_Rb_Gauss': returnList = append(returnList, atomCountGaussfit(gaussfitCoffRbH, gaussfitCoffRbV)) elif request == 'N_Li_Gauss': returnList = append(returnList, atomCountGaussfit(gaussfitCoffLiH, gaussfitCoffLiV)) elif request == 'fwhmH_Li': returnList = append(returnList, fwhm(gaussfitCoffLiH[1][2])) elif request == 'fwhmV_Li': returnList = append(returnList, fwhm(gaussfitCoffLiV[1][2])) elif request == 'fwhmH_Rb': returnList = append(returnList, fwhm(gaussfitCoffRbH[1][2])) elif request == 'fwhmV_Rb': returnList = append(returnList, fwhm(gaussfitCoffRbV[1][2])) elif request == 'OffH_Li': returnList = append(returnList, gaussfitCoffLiH[1][3]) elif request == 'OffV_Li': returnList = append(returnList, gaussfitCoffLiV[1][3]) elif request == 'OffH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][3]) elif request == 'OffV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][3]) elif request == 'PosH_Li': returnList = append(returnList, gaussfitCoffLiH[1][1]) elif request == 'PosV_Li': returnList = append(returnList, gaussfitCoffLiV[1][1]) elif request == 'PosH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][1]) elif request == 'PosV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][1]) elif request == 'AmpH_Li': returnList = append(returnList, gaussfitCoffLiH[1][0]) elif request == 'AmpV_Li': returnList = append(returnList, gaussfitCoffLiV[1][0]) elif request == 'AmpH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][0]) elif request == 'AmpV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][0]) elif request == 'T_Li': if abs(gaussfitCoffLiH[1][2] - gaussfitCoffLiV[1][2]) > (gaussfitCoffLiH[1][2]+gaussfitCoffLiV[1][2])/4: sigma = nan #max([gaussfitCoffLiV[1][2], gaussfitCoffLiH[1][2]]) print 'T_Li not well determined!' else: sigma = (gaussfitCoffLiH[1][2]+gaussfitCoffLiV[1][2]) / 2 returnList = append(returnList, temperatur(adwin.GetValue('ABB_TOF_LI', adwinFilename)*1e-6, sigma, 7, insituSizeLi)) elif request == 'T_Rb': if abs(gaussfitCoffRbH[1][2] - gaussfitCoffRbV[1][2]) > (gaussfitCoffRbH[1][2]+gaussfitCoffRbV[1][2])/4: sigma = nan #max([gaussfitCoffRbV[1][2], gaussfitCoffRbH[1][2]]) print 'T_Rb not well determined!' else: sigma = (gaussfitCoffRbH[1][2]+gaussfitCoffRbV[1][2]) / 2 returnList = append(returnList, temperatur(adwin.GetValue('ABB_TOF_RB', adwinFilename)*1e-6, sigma, 87, insituSizeRb)) else: returnList = append(returnList, adwin.GetValue(request, adwinFilename)) return returnList
def drawImageArea(self, parameters): p = parameters ImageScale = array(p["part"]) * p["pixelSize"] * p["axScale"] data = pd.Series(zeros(len(p["values2calc"])), index=p["indexLst"], dtype=float) # image field if p["imageCategory"] == "opt. Dichte" or p["imageCategory"] == "ROI": image = p["fullFrame"][p["part"][0] : p["part"][1], p["part"][2] : p["part"][3]] if (p["part"][1] - p["part"][0] < 800 and p["part"][3] - p["part"][2] < 800) or p["imageCategory"] == "ROI": data = pd.Series( imageAnalyse.analyseShot(p["adwinfile"], p["values2calc"], image), index=p["indexLst"], dtype=float ) imageAtomCount = p["fullFrame"][ p["partAtomCount"][0] : p["partAtomCount"][1], p["partAtomCount"][2] : p["partAtomCount"][3] ] data["n"] = imageAnalyse.analyseShot(p["adwinfile"], [p["values2calc"][0]], imageAtomCount) if p["ODmaxAuto"].get_active(): p["ODmax"].set_value(imageAtomCount.max()) if data["n"] < 1e6: title1 = p["imageAx"].set_title( (r"N(" + p["species"] + r") = ${:,.2f}\,\times\,10^3$").format(data["n"] / 1e3) ) if ( self.MessageType == "N_Li" and p["species"] == "Li" or self.MessageType == "N_Rb" and p["species"] == "Rb" ): self.windowMessage.set_markup( u'<span font="120">N(' + p["species"] + r")= " + u"%.2f\u00d710\u00b3</span>" % (data["n"] / 1e3) ) else: title1 = p["imageAx"].set_title( (r"N(" + p["species"] + r") = ${:,.2f}\,\times\,10^6$").format(data["n"] / 1e6) ) if ( self.MessageType == "N_Li" and p["species"] == "Li" or self.MessageType == "N_Rb" and p["species"] == "Rb" ): self.windowMessage.set_markup( u'<span font="120">N(' + p["species"] + r")= " + u"%.2f\u00d710\u2076</span>" % (data["n"] / 1e6) ) else: if p["imageCategory"] == "Atomrohbild": image = apogee.singleImage(p["filenames"][0], p["part"]) elif p["imageCategory"] == "Hellrohbild": image = apogee.singleImage(p["filenames"][1], p["part"]) elif p["imageCategory"] == "Dunkelrohbild": image = apogee.singleImage(p["filenames"][2], p["part"]) title1 = p["imageAx"].set_title(p["species"] + r": " + p["imageCategory"]) if p["ODmaxAuto"].get_active(): p["ODmax"].set_value(image.max()) p["imageObj"].set_data(image) p["imageObj"].set_extent([ImageScale[2], ImageScale[3], ImageScale[1], ImageScale[0]]) p["imageObj"].set_clim(0, p["ODmax"].get_value()) title1.set_fontsize(32) title1.set_y(1.04) if not data["t"] == 0 and not math.isnan(float(data["t"] * 1e6)): self.drawCrosshair( p["lineFitH"], p["lineFitV"], [ data["posh"] * p["pixelSize"] * p["axScale"] + ImageScale[2], data["posv"] * p["pixelSize"] * p["axScale"] + ImageScale[0], ], ) else: self.drawCrosshair(p["lineFitH"], p["lineFitV"], [-1e5, -1e5]) # linescan gaussian fit p["linescanAx"].cla() p["linescanAx"].plot(linspace(ImageScale[2], ImageScale[3], size(image, 1)), imageAnalyse.linescan(image)) p["linescanAx"].plot( linspace(ImageScale[2], ImageScale[3], size(image, 0)), imageAnalyse.linescan(image, dir=1), color="0.85" ) if math.isnan(float(data["t"] * 1e6)): title3 = p["linescanAx"].set_title(u"T(" + p["species"] + r") uneindeutig") p["linescanAx"].text( 0.02, 0.05, u"TOF = {:.2f}ms".format(data["abb_tof"] / 1e3), transform=p["linescanAx"].transAxes ) elif data["t"] == 0: title3 = p["linescanAx"].set_title("") else: title3 = p["linescanAx"].set_title(u"T(" + p["species"] + u") = {:.2f}\u00b5K".format(data["t"] * 1e6)) p["linescanAx"].text( 0.02, 0.85, u"H-Pos: {:.2f}\u00b5m".format(data["posh"] * p["pixelSize"] * p["axScale"] + ImageScale[2]), transform=p["linescanAx"].transAxes, ) p["linescanAx"].text( 0.02, 0.7, u"H-FWHM: {:.2f}\u00b5m".format(data["fwhmh"] * p["axScale"]), transform=p["linescanAx"].transAxes, ) p["linescanAx"].text( 0.98, 0.85, u"V-Pos: {:.2f}\u00b5m".format(data["posv"] * p["pixelSize"] * p["axScale"] + ImageScale[0]), transform=p["linescanAx"].transAxes, color="0.7", horizontalalignment="right", ) p["linescanAx"].text( 0.98, 0.7, u"V-FWHM: {:.2f}\u00b5m".format(data["fwhmv"] * p["axScale"]), transform=p["linescanAx"].transAxes, color="0.7", horizontalalignment="right", ) p["linescanAx"].plot( linspace(ImageScale[2], ImageScale[3], size(image, 1)), imageAnalyse.gauss( range(0, size(image.conj().transpose(), 0)), data["amph"], data["posh"], imageAnalyse.fwhm(data["fwhmh"], reverse=1), data["offh"], ), "--", ) p["linescanAx"].plot( linspace(ImageScale[2], ImageScale[3], size(image, 0)), imageAnalyse.gauss( range(0, size(image.conj().transpose(), 1)), data["ampv"], data["posv"], imageAnalyse.fwhm(data["fwhmv"], reverse=1), data["offv"], ), "--", color="0.85", ) p["linescanAx"].plot( [ data["posh"] * p["pixelSize"] * p["axScale"] + ImageScale[2], data["posh"] * p["pixelSize"] * p["axScale"] + ImageScale[2], ], p["linescanAx"].get_ylim(), "k:", ) posVrelAxH = (data["posv"] * p["pixelSize"] * p["axScale"]) / (ImageScale[1] - ImageScale[0]) * ( ImageScale[3] - ImageScale[2] ) + ImageScale[2] p["linescanAx"].plot([posVrelAxH, posVrelAxH], p["linescanAx"].get_ylim(), ":", color="0.5") p["linescanAx"].plot([p["Marker1Pos"][0], p["Marker1Pos"][0]], p["linescanAx"].get_ylim(), "k-") posVrelAxHMarker1 = (p["Marker1Pos"][1] - ImageScale[0]) / (ImageScale[1] - ImageScale[0]) * ( ImageScale[3] - ImageScale[2] ) + ImageScale[2] p["linescanAx"].plot([posVrelAxHMarker1, posVrelAxHMarker1], p["linescanAx"].get_ylim(), "-", color="0.85") p["linescanAx"].text( 0.02, 0.05, u"TOF = {:.2f}ms".format(data["abb_tof"] / 1e3), transform=p["linescanAx"].transAxes ) if not data["automatisierung"] == 0: p["linescanAx"].text( 0.98, 0.05, u"auto: {:.0f}/{:.0f} #{:.0f}".format( data["auto_step_pos"], abs(data["auto_break"]), data["auto_n_pos"] ), transform=p["linescanAx"].transAxes, horizontalalignment="right", ) p["linescanAx"].set_xlim((ImageScale[2], ImageScale[3])) p["linescanAx"].grid(True, color="0.5") p["linescanAx"].set_xlabel(u"\u00b5m") p["linescanAx"].ticklabel_format(style="sci", axis="y", scilimits=(0, 3)) title3.set_fontsize(18) title3.set_y(1.06) p["canvasObj"].draw_idle() return data
def analyseShot(shotPath, returnTemplate, image=[], filenames=['li_roi.fit', 'rb_roi.fit'], insituSizeLi=40e-6, insituSizeRb=40e-6): """ returns measurment data of a single shot. Posible values for returnTemplate: * ID: ADwin ID * ADwin varname: ADwin code value * N_Li/N_Rb: atomnumber Li/Rb * e.g. fwhmH_Li: cloud width h/v * T_Li/T_Rb: temperature * etc... """ import os import adwin import apogee if image != []: image_Li = image image_Rb = image adwinFilename = shotPath else: if 'N_Li' in returnTemplate or 'fwhmH_Li' in returnTemplate or 'fwhmV_Li' in returnTemplate or 'T_Li' in returnTemplate: image_Li = apogee.singleImage(os.path.join(shotPath, filenames[0])) if 'N_Rb' in returnTemplate or 'fwhmH_Rb' in returnTemplate or 'fwhmV_Rb' in returnTemplate or 'T_Rb' in returnTemplate: image_Rb = apogee.singleImage(os.path.join(shotPath, filenames[1])) adwinFilename = os.path.join(shotPath, 'adwin_code.acm') if 'AmpH_Li' in returnTemplate or 'OffH_Li' in returnTemplate or 'PosH_Li' in returnTemplate or 'fwhmH_Li' in returnTemplate or 'N_Li_Gauss' in returnTemplate or 'T_Li' in returnTemplate: gaussfitCoffLiH = gaussfit(image_Li) if 'AmpV_Li' in returnTemplate or 'OffV_Li' in returnTemplate or 'PosV_Li' in returnTemplate or 'fwhmV_Li' in returnTemplate or 'N_Li_Gauss' in returnTemplate or 'T_Li' in returnTemplate: gaussfitCoffLiV = gaussfit(image_Li, dir=1) if 'AmpH_Rb' in returnTemplate or 'OffH_Rb' in returnTemplate or 'PosH_Rb' in returnTemplate or 'fwhmH_Rb' in returnTemplate or 'N_Rb_Gauss' in returnTemplate or 'T_Rb' in returnTemplate: gaussfitCoffRbH = gaussfit(image_Rb) if 'AmpV_Rb' in returnTemplate or 'OffV_Rb' in returnTemplate or 'PosV_Rb' in returnTemplate or 'fwhmV_Rb' in returnTemplate or 'N_Rb_Gauss' in returnTemplate or 'T_Rb' in returnTemplate: gaussfitCoffRbV = gaussfit(image_Rb, dir=1) returnList = empty([0, 0], dtype=object) for request in returnTemplate: if request == 'N_Li': returnList = append(returnList, atomCount(image_Li)) elif request == 'N_Rb': returnList = append(returnList, atomCount(image_Rb)) elif request == 'ID': returnList = append(returnList, os.path.split(shotPath)[-1]) elif request == 'N_Rb_Gauss': returnList = append( returnList, atomCountGaussfit(gaussfitCoffRbH, gaussfitCoffRbV)) elif request == 'N_Li_Gauss': returnList = append( returnList, atomCountGaussfit(gaussfitCoffLiH, gaussfitCoffLiV)) elif request == 'fwhmH_Li': returnList = append(returnList, fwhm(gaussfitCoffLiH[1][2])) elif request == 'fwhmV_Li': returnList = append(returnList, fwhm(gaussfitCoffLiV[1][2])) elif request == 'fwhmH_Rb': returnList = append(returnList, fwhm(gaussfitCoffRbH[1][2])) elif request == 'fwhmV_Rb': returnList = append(returnList, fwhm(gaussfitCoffRbV[1][2])) elif request == 'OffH_Li': returnList = append(returnList, gaussfitCoffLiH[1][3]) elif request == 'OffV_Li': returnList = append(returnList, gaussfitCoffLiV[1][3]) elif request == 'OffH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][3]) elif request == 'OffV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][3]) elif request == 'PosH_Li': returnList = append(returnList, gaussfitCoffLiH[1][1]) elif request == 'PosV_Li': returnList = append(returnList, gaussfitCoffLiV[1][1]) elif request == 'PosH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][1]) elif request == 'PosV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][1]) elif request == 'AmpH_Li': returnList = append(returnList, gaussfitCoffLiH[1][0]) elif request == 'AmpV_Li': returnList = append(returnList, gaussfitCoffLiV[1][0]) elif request == 'AmpH_Rb': returnList = append(returnList, gaussfitCoffRbH[1][0]) elif request == 'AmpV_Rb': returnList = append(returnList, gaussfitCoffRbV[1][0]) elif request == 'T_Li': if abs(gaussfitCoffLiH[1][2] - gaussfitCoffLiV[1][2]) > ( gaussfitCoffLiH[1][2] + gaussfitCoffLiV[1][2]) / 4: sigma = nan #max([gaussfitCoffLiV[1][2], gaussfitCoffLiH[1][2]]) print 'T_Li not well determined!' else: sigma = (gaussfitCoffLiH[1][2] + gaussfitCoffLiV[1][2]) / 2 returnList = append( returnList, temperatur( adwin.GetValue('ABB_TOF_LI', adwinFilename) * 1e-6, sigma, 7, insituSizeLi)) elif request == 'T_Rb': if abs(gaussfitCoffRbH[1][2] - gaussfitCoffRbV[1][2]) > ( gaussfitCoffRbH[1][2] + gaussfitCoffRbV[1][2]) / 4: sigma = nan #max([gaussfitCoffRbV[1][2], gaussfitCoffRbH[1][2]]) print 'T_Rb not well determined!' else: sigma = (gaussfitCoffRbH[1][2] + gaussfitCoffRbV[1][2]) / 2 returnList = append( returnList, temperatur( adwin.GetValue('ABB_TOF_RB', adwinFilename) * 1e-6, sigma, 87, insituSizeRb)) else: returnList = append(returnList, adwin.GetValue(request, adwinFilename)) return returnList