没有合适的资源?快使用搜索试试~ 我知道了~
QExpy:简化本科物理实验数据分析的开源Python-3模块
软件X 10(2019)100273原始软件出版物QExpy:支持本科物理实验室的Python-3模块R.D. Martin,Q.蔡氏T.加罗角卡帕希1号加拿大安大略省金斯敦皇后大学物理系工程物理天文学ar t i cl e i nf o文章历史记录:收到2019年收到修订版2019年6月26日接受2019年6月26日关键词:物理不确定性误差作图拟合数据分析a b st ra ctQExpy是一个开源Python-3模块,旨在简化本科物理实验室的数据分析。通过使用这个模块,学生可以把时间集中在理解科学和实验数据上,而不是处理数据。特别是,该模块允许用户使用各种技术(导数,蒙特卡罗)轻松传播测量量的不确定性该界面的设计是教学性的,这样没有编程经验的学生就可以轻松地在他们的入门物理实验室中使用python©2019作者由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.0.4用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2019_142法律代码许可证GPL v3.0使用git的代码版本控制系统使用Python-3的软件代码语言、工具和服务编译要求,操作环境python-3,pip安装如果可用,链接到开发人员文档/手册http://qexpy.readthedocs.io/en/latest/intro.html问题支持电子邮件ryan. queensu.ca1. 动机和意义QExpy [1]是一个开源的Python-3模块,旨在促进本科物理实验室的数据分析物理系本科生往往不喜欢实验课.通过与学生的非正式讨论,很明显,他们不喜欢实验室的数据分析部分(误差传播,绘图,模型拟合),他们认为这既耗时又无趣。QExpy(皇后*通讯作者。电子邮件地址:ryan. queensu.ca(R.D. Martin)。1现住址:加拿大安大略省滑铁卢大学量子计算研究所和加拿大安大略省滑铁卢大学物理系。https://doi.org/10.1016/j.softx.2019.100273模块)是与我们物理系的学生一起开发的,以方便本科实验室的数据分析,并允许学生集中精力思考物理和实验结果由于QExpy被设计为易于使用(参见第3节中的示例),因此它被发现是在大学入门物理实验室向学生介绍计算机编程的有用工具。因此,该软件包非常适合越来越多的旨在提高计算机素养的努力在物理学生中,如计算整合到本科物理学的合作伙伴关系[2]和高级实验室物理协会[3]。QExpy允许学生:2352-7110/©2019作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx2R.D. Martin,Q.蔡氏T.Garrow等人粤ICP备10027730号-1±±2(年∼∼2=2)使用各种方法(导数、蒙特卡罗、最图数据(成对)X和y价值观)。将一组数据(成对的x和y值)拟合到内置或任意模型y(x)。一个名为'' Unexpress''的Python包虽然一些绘图和拟合功能只是由包装器提供给现有的Python模块,但错误传播功能是新颖的。当函数F取决于具有最佳估计和不确定性的测量量时,这些允许确定函数F值的不确定性。例如,一个人可能想要确定测量值xσx和yσy的F(x, y)值及其不确定度σF。QExpy实现了三种不同的方法来计算F和σF。下面将针对两个测量值(x和y)的情况进行描述,尽管扩展到更多参数是微不足道的。导数法:F值及其不确定度σF由下式给出:F=F(x,y)σF=1(Fmax−Fmin)这种2. 软件描述QExpy python-3模块可以通过pip安装程序和github [1]获得。QExpy模块分为三个子模块,分别关注:(1)误差传播(误差),(2)图形数据(绘图),(3)参数估计/曲线拟合(拟合),如图所示。1.一、Qexpy主模块自动导入错误、绘图和拟合子模块。2.1. 软件构架误差传播子模块是从第一性原理发展起来的。绘图子模块提供了一个易于使用的接口到现有的Python模块(matplotlib [5]和bokeh [6]),而拟合子模块提供了一个接口到scipy.optimize子模块的curve_fit函数[7]。这三个子模块的实施情况如下。图1显示了QExpy包是如何组织的。σF=(Fσ埃什基2000-2001年+2xyσxy2.1.1. 错误子模块在QExpy中,测量值存储在测量类,它可以在内部存储最佳估计值,其中σxy是量x和y之间的协方差。的通过在x和y的最佳估计值处评估F来找到F的最佳估计,并且在x和y的最佳估计值处评估F的偏导数。当函数F可用关于F的最佳估计值的一阶泰勒级数展开式很好地逼近时,这种方法是有效的。特别是x和y很小(通常小于10%)。请注意,如果F取决于两个以上的变量,则将一项添加到每个自变量的正交和中,以及任何其他协方差的相应协方差项。QExpy使用自动微分精确地实现导数蒙特卡罗方法:该实现假设测量值x和y的不确定性是“标准”的(即,它们对应于以测量的最佳估计为中心的高斯的标准偏差)。x和y的N个正态分布值使用其各自的最佳估计值和标准差生成。然后可以计算F的N个对应值,其中N很大(通常为N10000 ) 。 然 后, 可 以选 择使 用 F 的N 个 值的 平均 值和 标 准差(QExpy中的默认值)或用户定义的其他方法(例如,使用F值的模式作为最佳估计并确定给出所需覆盖范围的不确定性)来引用F的最佳估计和不确定性。此外,如果量x和y是相关的,并且指定了相关(或协方差)因子,则将生成具有正确相关性的随机数。最在允许的范围内,通过在对应于x和y值的网格上对函数F求值,得到F的最佳估计及其不确定度 他们的不确定性。在该范围内确定F的最大值Fmax和最小值Fmin,然后F的最佳估计值和不确定性由下式给出F=1(F最大值+F最小值)与度量值关联污点,以及值及其单位的可选名称。可以使用numpy模块[8]提供的大多数标准数学函数(例如sin、arc-tan、sqrt等)对Measure来获得新的物体。还可以在测量对象之间操作以创建新对象(例如通过数学加法)。在QExpy中,微分是通过将所有无法通过链式法则获得的主函数(例如sin当对测量对象进行操作时,使用所有三种方法传播不确定性,并且用户可以在显示结果时选择使用哪一种方法。默认情况下,显示导数方法的结果(在本科实验室中最常见)。提供MeasurementArray类是为了允许用户使用测量值的数组。MeasurementArray对象继承自numpy数组,并对应于Mea-surement对象的数组,这允许在向量化操作中使用数组。Measurement 对象包含一个内部名称变量, 用于从一个Measurement引用另一个Measurement。这用于指定不同数量之间的协方差,但也用于跟踪误差传播(例如,在应用自动微分时跟踪中间导数)。作为实现自动微分的副产品,QExpy模块可用于计算精确导数.2.1.2. 拟合子模块拟合子模块被设计成scipy.optimize子模块的curve_fit函数的易于使用的curve_fit用于应用非线性最小二乘(卡方)拟合(使用Levenberg-Marquardt方法[ 9 ])默认情况下)来确定模型的参数集ββyf(x,βf),其最佳拟合一组成对的x和y测量值。用户必须指定点的x和y坐标、y中的误差、模型(要拟合的函数)以及参数的初始猜测。··阿克斯R.D. Martin,Q.蔡氏T.Garrow等人粤ICP备10027730号-13−Fig. 1. QExpy python模块的架构。误差、绘图和拟合子模块提供主要功能。 plotting和fitting模块有效地为现有的python模块提供了包装器流行的numpy模块通过代码库使用XYDataSet类允许用户指定一组数据(x和y值,例如作为两个MeasurementArray对象),然后提供一个模型来拟合这些数据。在内部,数据存储在MeasurementArray对象中,不确定性由错误子模块处理。多个模型(函数)可以拟合到单个XY数据集。拟合模块还使用curve_fit返回的协方差矩阵来计算拟合参数之间的相关矩阵。拟合参数存储为测量对象,并考虑正确的协方差。这使得正确计算依赖于拟合参数的任何量变得简单,并且传播了不确定性和相关性拟合模块还根据所得拟合计算卡方和自由度。最后,在子模块内提供某些常见的拟合函数(例如,线性、多项式、高斯),使得用户在大多数常见情况下不需要指定拟合函数2.1.3. 绘图子模块绘图子模块的设计使其能够直接绘制实验数据并将其拟合到任何模型。Plot对象保存用于绘制和拟合数据的所有信息。数据(具有不确定性的x和y值)使用XYDataSet对象存储,允许与拟合子模块直接集成。数据可以使用Bokeh或matplotlib绘制,用户可以选择使用这两个“绘图引擎”中的哪一个绘图子模块被设计为使用良好的猜测作为默认值来使用Bokeh或matplotlib制作图形,尽管人们可以轻松访问内部Plot对象来微调图形的外观(例如更改字体大小,添加注释等)。当数据拟合到模型时,拟合子模块返回的拟合参数具有正确设置的它们之间的相关性。这允许绘制具有有意义的误差带的拟合函数(最佳拟合线),该误差带考虑参数之间的相关性。当使用绘图模块绘制拟合函数时,还绘制了对应于拟合参数的一个西格玛(默认)变化的误差带(使用蒙特卡罗误差传播)。据我们所知,没有现成的软件可以正确绘制误差带。QExpy中的误差带是简单计算的,因为只需要使用作为Measurement对象传递的拟合参数来计算拟合函数。2.2. 软件功能qexpy模块被设计为在一个xmlyter笔记本中轻松运行,并允许用户通过其子模块处理多个任务。错误子模块为用户提供以下功能:容易产生不确定性。从 最 佳 估 计 和 不 确 定 性 或 一 组 重 复 测 量 实 例 化Measurement对象(然后将均值和标准差用作最佳估计和不确定性)。选择不同类型的误差传播(导数,蒙特卡罗,正确处理测量量之间的相关性。有效地使用矢量化的测量对象阵列控制打印输出的有效数字的数量。• 求函数导数的精确值拟合和绘图子模块提供以下功能:使用matplotlib或散景轻松绘制成对数据(x和y轻松将数据适配到内置函数或自定义函数。拟合后在图上显示残差在拟合函数上正确显示Monte Carlo计算的误差带(包括拟合参数之间的相关性)。• 确定拟合参数及其相关性。这些功能将在下一节中说明。3. 说明性实例在本节中,我们将展示一些示例,说明用户如何传播不确定性,以及如何使用QExpy绘制和拟合数据。3.1. 错误传播示例下面的示例1显示了基于最佳估计和不确定性声明两个测量对象(x和y)并计算其总和中的最佳估计和不确定性是多么容易该示例突出显示了当两个变量之间的相关性被修改时不确定性如何变化,以及QExpy如何正确处理变量与自身相关的事实(因为数量x2xx的不确定性恰好为零)。最后,该示例还示出了如何从不确定性确定有效数字(在该示例中设置为2),以及如何将最佳估计格式化为相同的精度。QExpy示例1:不确定性和相关性的传播#导入的包装方式:进口克什皮为q#Set the s i g n i f i c an t f i g u r es至2(根据 不确定性)q. (2)第一个问题#基于最佳估计和不确定性创建两个测量对象:·········4R.D. Martin,Q.蔡氏T.Garrow等人粤ICP备10027730号-1=+∗∗∗∗- -−F−i−t−o−f−QExpy示例2:导数和蒙特卡罗方法的比较x = q。测量(10,1)# 10+ /1y = q。测量(4)五,零。 4)#4。5 +/0的情况。4#x和y的和,无相关性:print(“x+y(不相关):“,x+y)#如果x与y有很强的相关性,那么求和的不确定性就会增加X . set_corr el a t i o n(y,0 . 5)print(“x+y(相关):“,x+y)#消极相互关联,的不确定在的总和去向下X set_corr el a t io n(y,0.第五章)print(“x+y(反correlated):“,x+y)#检查变量是否与i t s e l f:print(“x2 xx:“,x2 x x)示例1的输出:x+y(不相关):14. 5+ /1. 1x+y(相关):14. 5+ /1. 2x+y(反相关):14.50+ /0. 87x 2 xx:0. 0+ /0。0例2显示了如何计算一个量F x2y2的不确定度,该量与测量值x和y有函数关系。在下面的例子中,x的值是作为一系列重复测量而不是作为最佳估计和不确定性提供的。该示例还强调了如何使用蒙特卡罗方法来确定F及其不确定性,以及提取蒙特卡罗生成的值以创建直方图(如图所示)。 2)的情况。#imports for plotting and ca l cu l a t i n g mean andstdimportmatplotlib . pyplot作为p l timportnumpy as npimportqexpy as q#Set the s i g n i f i c an t 菲古雷斯至2(基于不确定性)q。(2)第一个问题#创建两次测量#LetX 被从 一l s t的测量值x = q。测量(7)二,九,十,十一,十,十二,十四,十。五九5])print(“The值 的xi s:“,x)#而我们提供最好估计和不确定为y y = q。测量(4)五,零。4)#4。5 +/0的情况。4#使用qexpy中的数学函数sqrt创建一个依赖于x和y的量:F =Q . sqrt(x)2个以上y2)#P r int f的值:print(“The value of F with deriv ativ e errors is:“,F)#相反,l e t's使用MonteCarlo误差传播:q.set_error_method(“MC”)print(“The值的F 与MC错误i s:“,F)#And we canv i s u a l i z e 一 直方图的 MC生成值:p l t。h i s t(F .MC_list,bin =30)p l t。xlabel(“F“)p l t。 t i t l e(“平均值={:. 2 f},Std={:. 2 f}“。格式(np.平均值(F.MC_list),np . std(F . MC_list)p l t.显示()示例2的输出:的 值的X我是:10. 4 + /1. 9的 值的F 与教育错误我是:11. 3+ /1. 8 The值的F 与MC错误我是:11. 3+ /1. 73.2. 绘图和拟合示例示例3展示了如何轻松地在QExpy中输入数据以绘制它们并将其拟合到模型(在本例中为一阶多项式)。结果如图所示。3 .第三章。误差带也沿着最佳拟合线示出。特别是,请注意误差带在范围中间如何变窄,突出显示线性拟合的斜率和偏移是负相关的,除非拟合函数位于范围的中心。图二. 为 F生成的Monte Carlo样本的直方图。 默认情况下,这些值的平均值和标准差用作最佳估计值和不确定性。如果分布不是高斯分布,那么用户应该确定如何最好地定义最佳估计和不确定性(例如模式和68%覆盖率)。有许多方法可以使用下面说明的MakePlot函数填充Plot对象。在本例中,使用了Mea- surementArray对象,并且将相同的不确定性归因于y的所有值,尽管可以很容易地指定与每个点相关联的不同不确定性QExpy示例3:绘制和拟合直线进口克什皮为q#选择的matplotlib发动机:Q . plot_engine= ’ mpl#这里我们使用MeasurementArrays来指定点:#x值xdata = q。MeasurementArray([ 1,2,3,4,5,6,7 ],error =[ 0 ],name=“length“,units =“m”)#相同不确定在阿勒勒y值y数据= q。[1.五、三。五五0,7。五、八。六,十三,十六。6],误差=[0.3],name=“force“,units =“N”)#从数据中创建一个文件:f i g =Q . MakePlot(xdata,ydata,data_name= 'Spring#将 其 转 换 为 fi r s t 阶 多项式f g.f i t(“l i near“)#显示 的 f i t残油过滤器add_residuals()#显示文件f g.显示()示例3的输出:F i t 结果弹簧测量到输入参数:弹簧measurements_linear_fit 0_fitpars_intercept= 1.74 +/ 0。九十六岁,弹簧measurements_linear_fit 0 _fitpars_slope=2. 43正/负0. 21相关性矩阵:[ [1.-0.894][-0.8941.一、 - -chi2 / ndof=71. 十一月四日- −结束 f i t 结果−最后,示例4展示了如何将数据集拟合到自定义函数。使用与前一示例中相同的数据,并拟合为三阶多项式。我们不需要将数据绘制成图形,而是简单地将它们加载到XYDataset对象中并使用其fit函数。还要注意,拟合的结果(参数及其不确定性)可以通过图解法检索R.D. Martin,Q.蔡氏T.Garrow等人粤ICP备10027730号-15∗- − − − − − − − − − − − − − − − − − −图三. 线性数据拟合为直线和残差。注意最佳拟合线上的误差带,以及它如何在范围中间正确地变窄,斜率和偏移是反相关的。QExpy示例4:拟合自定义函数进口克什皮为q#定义 我们 f i t 功能(必须 被 在这是format)defmodel(x,par):#三阶多项式, 标准[ ] 是的参数我们要飞returnpar [0]+ par [1] x+par [2]x 2+par [3]x 3#创建一个XY数据集(与先前 例如)xydata = q。XYDataSet(xdata =[ 1,2,3,4,5,6,7 ],xerr =[ 0 ],ydata =[1.五、三。五五0,7。五、八。六,十三,十六。6],yerr = [ 0 . 3 ],data_name=#为了拟合自定义模型,我们必须为参数提供猜测:r e s u l ts =xydata。fit(model,parguess =[ 1,1,1,1 ])#返回f i t参数在一测量arrayprint(“可以使用的参数:“)print(r e s ul ts)示例4的输出:F i t结果F it of相同数据到自定义F i t参数:same_data_custom_fit0_fitpars_par 0=−0.9正/负1 .一、八,same_data_custom_fit0_fitpars_par 1=2. 8正/负1 .一、八,same_data_custom_fit0_fitpars_par 2=−0.43正/负0的情况。五十,same_data_custom_fit0_fitpars_par 3=0.056正/负0.041相关性矩阵:[ [1.-0.9550.896 -0.844][-0.9551.一、-0.9830. 952][0.896-0.9831.一、-0.991][-0.8440.952-0.9911.一、- -chi2 / ndof=12. 37/2- −结束 f i t 结果−F i t可以以图解方式使用的参数:same_data_custom_fit0_fitpars_par 0=−0.9正/负1 .一、八,same_data_custom_fit0_fitpars_par 1=2. 8正/负1 .一、八,same_data_custom_fit0_fitpars_par 2=−0.43正/负0的情况。五十,same_data_custom_fit0_fitpars_par 3=0.056正/负0.0414. 影响和结论我们开始开发QExpy,以便让学生更容易理解他们在实验中收集的数据,并为没有编程经验的学生提供有用的工具。我们系的几百名学生正在使用这个软件包在他们的实验室里分析数据。通过使用QExpy,学生能够花更多的时间专注于理解他们的数据,而不是传播不确定性,他们的实验物理教育因此受益。该部门和其他地方的研究人员也在使用QExpy进行简单的拟合和误差传播任务。在过去的三年里,我们还成功地将QExpy与Xueyter笔记本平台结合使用,用于我们的入门本科物理实验室。在那里,没有编程经验的学生被介绍给使用计算机编程和python语言,以方便在他们的实验室进行数据分析。这使学生能够进行更复杂的实验,因为他们发展了编程和分析数据的技能。确认我们要感谢物理系,工程- ING物理天文学在皇后大学为他们的支持学生开发这个软件。我们还要感谢A.B.教授。麦克莱恩为所有的宝贵支持和投入在开发QExpy,并为开发一个“教授批准”的错误传播Python模块的原始想法。我们也要感谢来自该部门的许多学生的宝贵反馈。竞合利益本出版物没有已知的利益冲突,也没有可能影响其结果的重大财务支持6R.D. Martin,Q.蔡氏T.Garrow等人粤ICP备10027730号-1引用[1] Martin RD,Cai Q,Garrow T,Kapahi C. QExpy github repository. 2016-2019年,https://github.com/Queens-Physics/qexpy/。[2] PICUP:将计算整合到入门物理学中的伙伴关系。2019年,https://www.compadre.org/PICUP/。[3] ALPhA:高级实验室物理协会。2019年,https://advlab.org/。[4] Lebigot EO. Uncertainty:一个用于不确定性计算的Python包。2017年,中国科学院出版社。http://pythonhosted.org/uncertainties/[5] 亨特JD。Matplotlib:一个二维图形环境。计算机科学与工程2007;9(3):90-5. http://dx.doi.org/10.1109/MCSE.2007.55网站。[6]Bokeh开发团队。Bokeh:用于交互式可视化的Python库。2018年12月28日,中国科学院出版社。https://bokeh.pydata.org/en/latest/[7]Jones E,Oliphant T,Peterson P,et al. SciPy:Python的开源科学工具。2001,http://www.scipy.org/[Online].[8]vander沃尔特S,克里斯科尔伯特S,瓦罗科G.的NumPy数组:一结构为高效数值计算Comput Sci Eng 2011;13(2):22-30.http://dx.doi.org/10.1109/MCSE.2011.37,https://aip.scitation.org/doi/abs/10.1109/MCSE.2011.37,arXiv:https://aip.scitation.org/doi/pdf/10.1109/MCSE.2011.37网站。[9]Marquardt DW.非线性参数的最小二乘估计算法。J Soc Ind Appl Math 1963;11(2):431-41. http://dx.doi.org/10的网站。1137/0111030。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功