快速的莱曼阿尔法辐射传输为每个人!

LyaRT-Grid的Python项目详细描述


lyart;网格

在这个宇宙中,一切都是整洁的,甚至是随机的。

莱曼-阿尔法共振散射主要由随机过程控制。

虽然有混乱,但也有秩序。

警告:这是测试版!到处都是虫子,注意!

起源和动机

由于lyman-alpha辐射传输的复杂性,人们对它的理解从单纯的解析研究转向了模拟任意几何气体中lyman-alpha光子的辐射传输monte carlo(rtmc)程序。这些代码提供了有关设法逃逸的光子的分数以及由此产生的莱曼阿尔法线轮廓的有用信息。rtmc方法再现了lae的观测特性。

lyart;grid是基于rtmc(orsi et al.2012年)能够以高精度预测大量莱曼α线剖面和逃逸分数。我们设计这段代码是希望它能帮助全世界的研究人员更好地了解宇宙。

lyart;grid快速的简单的

  • 快速:此代码能够在前所未有的短时间内预测Lyman Alpha转义分数和线条轮廓。特别是,在不到一秒钟的计算时间内,可以计算出数千个逸出分数和线轮廓。

  • 简单:此代码是一行。每个人,从一只训练有素的猴子,经过本科学生,到掌握基本python知识的研究人员,都应该能够使用lyart;grid

尽管lyart;grid是完全开放源码的,而且每个人都可以使用,但是,如果您正在使用此代码(无论出于什么原因),我们将非常高兴听到您和您如何使用它。只是好奇和效率的问题。或许我们可以帮助您在lyart;grid中获得更流畅的体验。如有任何问题或建议,请联系sidgurung@cefca.es。谢谢。

安装

在您的机器中获取lyart;网格的最简单方法是通过pip

pip安装lyart网格

这应该能起到作用。但是,您也可以安装lyart_grid下载此存储库并运行

PIP安装。

在里面。

为了完成安装并检查一切是否正常,请打开python/ipython终端并执行:

importLyaRT_GridasLyaLya.Test_Installation(Make_Plots=True)

此函数检查pip安装是否下载了所有内容。然后,如果找不到数据文件,它会尝试下载它们。请注意,您的计算机中应该有大约1GB的可用内存,以便安装lyart嫒u grid。还要注意的是,由于需要下载大约1GB的数据,因此可能需要一些时间,具体取决于您的Internet连接。

在检查您的机器中是否有数据之后,lyart_grid将检查每个软件是否正常工作。为此,将计算一些转义分数和线轮廓。操作状态应出现在屏幕上。一切都应该成功!!< /代码>。唯一的例外是

运行:bicone_x_slab analysis-->;错误。人死了。错配!!< /代码>

别担心。之所以会出现此错误,唯一的原因是此算法尚未实现。然后函数将生成一些图。如果您想在不打印的情况下运行测试,只需在调用lya.test_安装时设置make_plots=false

这应该是安装的全部内容。如果您在使用过程中发现任何问题/错误,请通过sidgurung@cefca.es与我们联系。感谢您的耐心。

H2>手关于代码。

(假设安装过程中一切顺利…)

恭喜!!您刚刚成为人类历史上为数不多的几个有幸使用lyartu grid的人之一。

单位:此代码使用以km/s为单位的速度、以cm^{-2}为单位的列密度和以米为单位的波长。

首先,让我们看看lyart;grid所涵盖的不同参数的动态范围。为此,我们只需执行以下操作:

importLyaRT_GridasLyaLya.Print_the_grid_edges()

预测数千个莱曼α逃逸分数。

让我们转到lyart;grid最强大的产品之一:预测大量lymanα逃逸分数。

理论上,对于展开速度(v)为200km/s,柱密度(lognh)为19.5,尘埃光学深度(ta)为0.1的薄壳几何体,只需一条直线即可预测逸出分数:

f_esc_Arr=Lya.RT_f_esc('Thin_Shell',[200],[19.5],[0.1])

这样,f_esc_arr是一个一维长度为1的数组,其中包含此配置的预测转义分数。

但是,lyart;grid实现了几个气体几何结构,并且经过优化,只需一行代码就可以获得大量逸出分数,所以让我们再进一步展开。如果我们想计算具有{v,lognh,ta},{200,19.5,0.1},{300,20.0,0.01}和{400,20.5,0.001}结构的薄壳外流的逃逸分数,我们可以做

Geometry='Thin Shell'# Other options: 'Galactic Wind' or 'Bicone_X_Slab'V_Arr=[200,300,400]# Expansion velocity array in km/slogNH_Arr=[19.5,20.0,20.5]# Logarithmic of column densities array in cm**-2ta_Arr=[0.1,0.01,0.001]# Dust optical depth Arrayf_esc_Arr=Lya.RT_f_esc(Geometry,V_Arr,logNH_Arr,ta_Arr)

变量f_esc_arr是一个一维、长度为3的数组,包含配置的转义分数。特别是,使用v_arr[i]lognh arr[i]ta_arr[i]计算f_esc_arr[i]

如果用户要更改流出气体的几何结构,则只需这样做

Geometry='Galactic Wind'# Other options: 'Thin Shell' or 'Bicone_X_Slab'f_esc_Arr=Lya.RT_f_esc(Geometry,V_Arr,logNH_Arr,ta_Arr)

请注意,只能同时使用一个几何图形。如果要为不同的配置计算不同的转义分数(或线条轮廓),则需要为每个几何体调用一次lyart;grid

这些例子展示了"薄壳"和"银河风"几何的工作原理。这些几何结构具有球面对称性,因此在输出逃逸分数或线形中不存在视线依赖性。然而,lyart;grid实现了一个非球面对称几何体,即"bicone_x_u slab"几何体(有关详细信息,请参阅演示信)。在这种特殊的几何结构中,逃逸分数(和线形)取决于服务水平。特别是,如果观察到面开(通过双锥流出),则光学深度低于观察到的边开(通过静态致密板)。

为了告诉lyart;grid观察的方向(边上或面上),用户在调用代码时需要提供另一个变量:在arr内部。如果没有给出这一点,则假定它总是面朝上观察。此变量必须是一个布尔数组,其大小与v_arrlognh_arrotta_arr相同。此外,双光子的孔径角为45度,因此要在双光子几何中生成一组具有随机方向的逃逸分数,您应该使用:

importnumpyasnpGeometry='Bicone_X_Slab'Area_in_bicone=1.-np.cos(np.pi/4.)# the apperture angle is pi/4Inside_Bicone_Arr=np.random.rand(len(V_Arr))<Area_in_biconef_esc_Arr=Lya.RT_f_esc(Geometry,V_Arr,logNH_Arr,ta_Arr,Inside_Bicone_Arr=Inside_Bicone_Arr)

预测逃逸分数的更深入的选择(无用部分?)

有许多算法被实现来计算。默认情况下,lyart;grid使用机器学习决策树回归器和逃逸分数的参数方程作为尘埃光学深度的函数(转到lyart;grid演示文稿gurung lopez et al.准备了解更多信息)。这些设置被选为默认设置,因为它们提供了最佳性能。但是,用户可能希望更改计算算法,因此请在此处留下一个包含所有可用选项的指南。

  • 模式变量是指计算转义分数的模式。有三种方法可以计算这个值。i)'raw'使用来自rtmc的原始数据(orsi等人2012)。ii)"参数化"假设逸出分数和尘埃光学深度之间的参数方程,允许以最高精度将计算扩展到网格之外(在lyart;网格中)。iii)'analytic'使用gurung lopez等人提出的重新校准的分析方程。2018。请注意,在双光子几何体中未启用分析模式,尽管它位于'thin_shel''galactic_wind'

  • 算法varible确定所使用的技术。这可以是i)"intrepation":使用线性插入。ii)"机器学习"使用机器学习。若要确定要使用哪种机器学习算法,请提供变量machine-learning\u algorithm。所实现的机器学习算法有决策树回归器('tree')、随机森林回归器('forest')和kn回归器('kn')。机器学习由sci kit learn实现,请访问他们的网站以获取更多信息(http://scikit learn.org/stable/)。

MODE='Raw'# Other : 'Parametrization' , 'Analytic'Algorithm='Intrepolation'# Other : 'Machine_Learning'Machine_Learning_Algorithm='KN'# Other 'Tree' , 'Forest'f_esc_Arr=Lya.RT_f_esc(Geometry,V_Arr,logNH_Arr,ta_Arr,MODE=MODE)

最后,允许模式算法机器学习算法的任何组合。但是,请注意,如果algorithm='intrepolation',则变量machine\u learning\u algorithm是无用的。

预测数千个莱曼α逃逸分数。

在本节中,我们将解释如何快速获得任意数量的lymanα线porfiles。语法与escape fraction函数非常相似。主要区别在于,用户必须提供波长阵列(以米为单位),用于评估线条轮廓。对于膨胀速度(v)为200km/s、柱密度(lognh)为19.5对数、尘埃光学深度(ta)为0.1/20amstrong的薄壳排水口,lyman alpha附近的线剖面计算公式为

wavelength_Arr=np.linspace(1215.68-20,1215.68+20,1000)*1e-10# meters, please!Line_profile_Arr=Lya.RT_Line_Profile('Thin_Shell',wavelength_Arr,[200],[19.5],[0.1])

对于逸出分数,为了同时计算多个线轮廓,只需使

wavelength_Arr=np.linspace(1215.68-20,1215.68+20,1000)*1e-10# meters, please!V_Arr=[200,300,400]# Expansion velocity array in km/slogNH_Arr=[19.5,20.0,20.5]# Logarithmic of column densities array in cm**-2ta_Arr=[0.1,0.01,0.001]# Dust optical depth ArrayLine_profile_Arr=Lya.RT_Line_Profile('Thin_Shell',wavelength_Arr,V_Arr,logNH_Arr,ta_Arr)

在这种情况下,line_profile_arr是一个具有形状(31000)的数组,其中包含计算的行配置文件。尤其是line arr[i,:]是在wavelength arr中计算的行配置文件,用v arr[i]lognh arr[i]ta arr[i]计算。

其他的几何结构("银河风""双光子x_平板")也被实现。特别是,在双锥几何中,也可以选择视线观测。这与转义分数的实现方式相同。

与逸出分数计算相反,线轮廓现在只支持预计算网格之间的线性插值。未来可能会实施机器学习或深度学习。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen