事件分析模块
该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典
eventfunctions
,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。代码概述
该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典 eventfunctions
,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。
依赖库
numpy
:用于数值计算和数组操作。scipy.constants
:用于获取物理常数。scipy.special
:用于特殊函数的计算。pytiamo.odt.utils
:自定义工具库,用于计算 Wilson 误差。
物理常数
m_Li
:锂原子的质量。m_Ba
:钡原子的质量。kB
:玻尔兹曼常数。
函数
P_n(data, args)
计算每个 xval
中 args['n']
的概率,并排除 args['x']
中的值。
参数:
data
:包含 x 和 y 值的数组。args
:包含n
和x
的字典,n
是要计算的值,x
是要排除的值。
返回:
xvals
:唯一的 x 值数组。p
:每个 x 值对应的概率。[l, u]
:每个概率的 Wilson 误差。
def P_n(data, args):
n = float(args['n'])
x = args['x']
x = eval(x)
if type(x) == tuple:
x = list(x)
else:
x = [x]
xvals = np.array(list(set(data[0])))
yvals = [data[1][data[0] == i] for i in xvals]
k = np.array([len(np.where(i==n)[0]) for i in yvals])
N = np.array([len(i) for i in yvals])
Nx = np.zeros(len(xvals))
for j in x:
Nx += np.array([len(np.where(i==j)[0]) for i in yvals])
N = N - Nx
p, l, u = ut.wilson_err(N, k)
return xvals, p, [l,u]
freq(data, args)
计算每个 xval
中 args['n']
的频率和泊松误差。
参数:
data
:包含 x 和 y 值的数组。args
:包含n
的字典,n
是要计算的值。
返回:
xvals
:唯一的 x 值数组。yvals
:每个 x 值对应的频率。yerr
:每个频率的泊松误差。
def freq(data, args):
n = float(args['n'])
xvals = np.array(list(set(data[0])))
yvals = [data[1][data[0] == i] for i in xvals]
yvals = np.array([len(np.where(i==n)[0]) for i in yvals])
yerr = np.sqrt(yvals)
return xvals, yvals, yerr
getFilter(data, n)
根据给定的值 n
过滤数据集,返回过滤后的数据。
参数:
data
:包含 x 和 y 值的数组。n
:用于过滤数据的值。
返回:
filtdat
:过滤后的数据数组。
def getFilter(data, n):
dzip = [list(i) for i in zip(*data)]
filt = filter(lambda d: d[1] == n, dzip)
flist = list(filt)
filtdat = [np.array(i) for i in zip(*flist)]
return filtdat
事件函数字典 eventfunctions
包含预定义的事件函数及其相关信息,包括函数名称、公式、参数名和初始值。
eventfunctions = {
'--None--': {
'function_text': 'no Fitfunction',
'arg_names': [],
'start_values': [],
'function': None
},
'P_n': {
'name': 'P_n',
'function_text': 'N_n/(N_tot-N_x)',
'function': P_n,
'arg_names': ['n', 'x'],
'start_values': [1, 0]
},
'freq': {
'name': 'freq',
'function_text': 'N',
'function': freq,
'arg_names': ['n'],
'start_values': [1]
}
}
总结
该代码实现了一些用于物理实验数据处理的实用函数,包括计算概率、频率和数据过滤。事件函数字典 eventfunctions
提供了预定义的函数和其相关信息,方便在实验分析中使用。