事件分析模块
该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典 eventfunctions
,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。
Detect bright spots such as ions in an image. We use skimage.features.blob_dog
for bright spot detection.
Input:
Output:
np.array
: Mask containing ones on the locations where the bright spots aredict
: N_bright the number of bright spots detectedbloblist
: the locations of the bright spotsdict
: N_bright the number of bright spots detectedProperties:
imagestreams
([str]): Input streamsmax_sigma
(float): Parameter from blob_dog
threshold
(float): Parameter from blob_dog
Hint: Use the output stream as a mask in the image monitor.
quatm.analysis.bright_spots.BrightSpots(name)
Bases: object
run()
quatm.analysis.bright_spots.main_run(name)
Simulate a crashed analysis routine.
Perform a 1D Gaussian fit on a dataset.
Fit function: [ f(x) = \frac{A_0}{\sqrt{2\pi}\sigma} e^{\frac{-(x-\mu)^2}{2\sigma^2}} + C ]
Output: The output is a datastream containing a dictionary with the fit results and a 2D array containing the fitted curve.
Fit parameter nomenclature:
A0
: ( A_0 )sigma
: ( \sigma )pos
: ( \mu )offset
: ( C )height
: ( \frac{A_0}{\sqrt{2\pi}\sigma} )In older versions some of the parameters were named differently:
area
: ( A_0 )height
: ( A_0 )Format of the input datastream: The fit can handle two types of data:
numpy.array
(data.ndim == 1): the y-values are taken from the data, and the x values are a linear spaced index from 0 to ny.numpy.array
:x = data[0]
y = data[1]
Properties controlling the program:
datastreams
: list of input datastreamsquatm.analysis.gaussfit.Gaussfit(name)
Bases: object
run()
quatm.analysis.gaussfit.main_run(name)
Handle absorption imaging data. According to Beer’s Law, light travelling through an atomic cloud is attenuated by:
[ I = I_0 e^{-n(x,y)\sigma} ]
where ( I_0 ) is the intensity before the cloud (Imaging beam without atoms) and ( I ) is the attenuated intensity (Image with atoms), ( \sigma ) is the absorption cross section, and ( n(x,y) ) is the column density of the atoms. Transforming this equation allows us to determine the column density of the atoms from the import two images.
[ n(x,y) = \frac{ln(I_0/I)}{\sigma} ]
where ( \sigma ) is given by:
[ N_{atoms} = \frac{ln(I_0/I)}{\frac{\sigma_0}{1+(2\Delta/\Gamma)^2}} ]
where effscale
rescales the value from atoms per ( m^2 ) to atoms per pixel.
[ \sigma_0 = \frac{\hbar\omega\Gamma}{2 I_{sat}/C_2} ]
where ( \omega ) is the angular frequency of the laser, ( \Gamma ) is the linewidth of the transition in angular frequencies, ( I_{sat} ) is the saturation intensity in SI units, and ( C_2 ) is the Clebsh-Gordon coefficient for the dipole transition.
Properties:
imagestreams
: input datastreamsimageWithAtoms
: index of the image containing the image data with atoms (0 being the first image in each run)imageWithoutAtoms
: the image containing the image without atomsabsorptionCrossection
: defaults to ( \sigma_0 )detuning_rad
: detuning of the imaging laser from resonancelinewidth_rad
: linewidth of the transitionquatm.analysis.imagedivider.ImageSlice(name)
Bases: object
C_2 = 0.6666666666666666
gamma = 36897377.3978814
h_bar = 1.0545716346179718e-34
isat = 25.4
omega = 2807325165778985.0
run()
sig0 = 1.4335384024006802e-13
quatm.analysis.imagedivider.main_run(name)
Select one single image per shot from the stream using the imgindex
.
Input:
Output:
Properties:
imagestreams
: ([str]) input image streamsSelectedImage
: (int) the number of the image to be selected counting from 0.quatm.analysis.imageselector.ImageSlice(name)
Bases: object
run()
quatm.analysis.imageselector.main_run(name)
Create linear traces and small subregions from image stream.
![Imageslice]
Input:
Output:
colsum_
(datastream): summation in the direction of columns (use only row that lie within the region of interest. (gray area))rowsum_
(datastream): summation along rowscolsumcut_
, rowsumcut_
: use only data within the region of interestcolint
, rowint
, colintcut
, rowintcut
: Perform numeric integration (which means the sum is multiplied by the metric pixel size)Properties:
cutimg
: (bool) send the image inside the ROIcolsum
: send the column sumrowsum
: send the sum over the rowscolsumcut
, rowsumcut
: (bool) send the corresponding data restricted to the region of interestcolint
, rowint
, colintcut
, rowintcut
: similar to the sum version but taking into account the scale. Therefore these versions can be treated as integralsquatm.analysis.imageslice.ImageSlice(name)
Bases: object
run()
quatm.analysis.imageslice.main_run(name)
该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典 eventfunctions
,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。
table_parameterItem
和 table_parameter
类扩展了 pyqtgraph
参数树的功能,使其能够以表格形式显示和编辑 NumPy 记录数组。通过注册自定义参数类型,这些类可以轻松地集成到现有的 pyqtgraph
应用程序中,提供灵活且强大的数据编辑功能。
这段代码实现了一个复杂的图形用户界面应用,用于科学实验数据的管理、分析和可视化。
这段代码实现了能够动态订阅、显示和更新数据流的数据可视化界面。
SubscriptionEditor
类提供了一个直观的界面,用户可以方便地管理数据和图像流的订阅。通过灵活的属性管理和用户交互,确保用户能够轻松地添加、删除和更新订阅,从而适应不断变化的需求和数据源。
这个脚本可以用于需要实时监控和展示数据流的应用程序,例如科学实验、工业监控和实时数据分析等。用户可以通过 GUI 配置数据流的订阅和绘图属性,实时查看和分析数据变化。
这个类适用于需要在图形界面中显示和管理多个兴趣区域的应用程序,特别是那些需要通过中心属性类来通信和管理属性的场景。例如,科学实验中的图像处理和分析,实时监控中的区域选择和管理等。
这个代码实现了一个属性编辑器 GUI,用于管理和编辑属性树。
该代码实现了一个用于检查属性更新的 GUI 应用程序。通过 PropertiesChecker
类,用户可以定期检查属性是否更新,并在属性未更新时发出警报,使用了 PyQt6 的多种控件和信号槽机制来实现用户交互和数据更新。
该代码实现了一个数据/图像分析管理器,通过图形用户界面(GUI)来启动、停止和配置分析脚本。使用PyQt6库来构建界面,包括树视图、按钮、文本框和下拉菜单。代码主要包括四个类:checkableModel
、TreeViewWidget
、addAnalysisWidget
和 AnalysisManager
。
该代码定义了一些用于拟合和分析物理实验数据的数学函数。它包括一系列函数和常量,用于描述各种物理现象,例如多项式、指数衰减、高斯分布等。这些函数可以用于数据拟合和模型化实验结果。
该代码使用 PyQt6 库构建了一个 GUI 应用,用于显示和编辑数据流、图像数据和相机属性。代码主要定义了一些自定义窗口小部件(widgets),包括参数显示框、图像数据框和相机属性框,并实现了上下文菜单、订阅管理和数据选择对话框等功能。
该代码实现了一个基于 PyQt6 的应用程序,用于订阅和显示数据流或图像流。应用程序提供了一个可滚动的绘图窗口,用户可以通过多种交互方式来管理数据源和配置绘图属性。
该模块是一个用于在科学实验中实时绘制和分析数据的 PyQt6 控件。该控件集成了 pyqtgraph 库,用于高效地绘制和更新图表。
该代码实现了一个基于 PyQt6
的图像查看器应用,名为 ImageWindow
。这个应用包含一个中心图像显示区域和两个用于显示线图的侧边栏。用户可以通过该应用实时查看和分析图像数据,并调整图像的显示参数。
该代码实现了一个基于 PyQt6
的图像监控器应用,名为 ImageDisplay
。这个应用能够接收并实时显示图像数据,并提供多种工具来调整和保存图像。用户可以通过该应用监控图像流,应用滤波器,调整显示参数,并保存当前图像。