快速的莱曼阿尔法辐射传输为每个人!
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-->;错误。人死了。错配!!< /代码>
别担心。之所以会出现此错误,唯一的原因是此算法尚未实现。然后函数将生成一些图。如果您想在不打印的情况下运行测试,只需在调用 这应该是安装的全部内容。如果您在使用过程中发现任何问题/错误,请通过 (假设安装过程中一切顺利…) 恭喜!!您刚刚成为人类历史上为数不多的几个有幸使用 单位:此代码使用以km/s为单位的速度、以cm^{-2}为单位的列密度和以米为单位的波长。 首先,让我们看看 让我们转到 理论上,对于展开速度(v)为200km/s,柱密度(lognh)为19.5,尘埃光学深度(ta)为0.1的薄壳几何体,只需一条直线即可预测逸出分数: 这样,f_esc_arr是一个一维长度为1的数组,其中包含此配置的预测转义分数。 但是, 变量lya.test_安装时设置
。
make_plots=false
sidgurung@cefca.es
与我们联系。感谢您的耐心。lyartu grid
的人之一。
lyart;grid
所涵盖的不同参数的动态范围。为此,我们只需执行以下操作:importLyaRT_GridasLyaLya.Print_the_grid_edges()
预测数千个莱曼α逃逸分数。
lyart;grid
最强大的产品之一:预测大量lymanα逃逸分数。f_esc_Arr=Lya.RT_f_esc('Thin_Shell',[200],[19.5],[0.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_arr
,lognh_arr
otta_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_平板"
)也被实现。特别是,在双锥几何中,也可以选择视线观测。这与转义分数的实现方式相同。
与逸出分数计算相反,线轮廓现在只支持预计算网格之间的线性插值。未来可能会实施机器学习或深度学习。