蟒蛇ABC采样器
cosmoabc的Python项目详细描述
…图片::nstatic/coin.jpg
cosmoabc-宇宙学的无似然推理
==
``cosmoabc``是一个使用近似贝叶斯计算(abc)算法进行参数推理的包,如` Ishida等人,2015<;http://arxiv.org/abs/1504.06129>;` `.
该代码最初设计用于根据Sunyaev-Zel'Dovich测量结果从星系团数计数推断宇宙学参数。在这种情况下,宇宙学模拟是使用"numcosmo库"进行的,http://www.nongu.org/numcosmo/>;` `.
尽管如此,用户可以很容易地利用abc采样器和自己的模拟器,以及测试个性化的先验分布和d距离函数。
马上开始!
********
使用:
$test_abc_algorithm.py
…警告:
以上测试将生成大量输出数据文件和带有图形表示的pdf文件。
选择此选项是为了便于识别错误。
确保在它们自己的目录中运行测试。
测试输出一个文件,说明后验的演变。image::nstatic/results_gaussian_sim.gif
input参数文件
*****************
>中的示例input可以在``~cosmoabc/examples``中找到。本节中提到的所有示例文件都可以在该目录中找到。
用户输入文件应包含模拟和ABC采样器所需的所有变量。
uld如下所示:
path_to_obs=none path to obs
param_to_fit=mean std parameters to_sim=mean std n模拟所需的参数
previor_func=my_previor flat_ prior每个参数的一个prior函数
考虑中
r分布
std_prior_par_name=pmin pmax先验分布的参数
std_prior_par_val=0.15.0先验分布的值
mean_lim=-2.0 4.0参数的极限
std_lim=0.15.0
mean=2.0需要模拟的参数值
std=1.0
n=1000
m=100_粒子数在每个粒子系统中
mini=200第一个粒子系统的绘制次数
delta=0.25收敛准则
qthreshold=0.75距离阈值分位数#根到输出文件名
screen=0,而不是(1)或不(0)到屏幕输出=我的模拟模拟函数
距离函数=我的距离函数
输入文件中的变量。
*变量"path_to_obs"可以设置为"none",在这种情况下,"cosmoabc"将从模拟器生成一个目录,并将其视为"已观察"目录。它还将把这个目录输出到一个数据文件中,这样就可以用于进一步的检查。
*如果您使用自己的previor函数,您可以随心所欲地命名先前的参数,您只需要定义`<;您的`变量`>;`您的`变量``和`<;您的`变量`>;` previor_相应地。如果您对变量名有疑问,快速比较两个示例输入文件(toy model和numcosmo)可能会有所帮助。
*参数"split_output"确定要为每个粒子系统生成多少子粒子集。它的目标是避免在处理非常复杂且耗时的模拟器时,因环境问题而丢失部分结果。如果您只是做一个快速测试,无意保留部分结果,只需设置"split_output=1"。
ORS PDF为:
*高斯
*平坦
*贝塔
模拟的内置选项为:
*numcosmo模拟
>距离函数的内置选项为:
*基于分位数的距离和对象数标准
*高斯径向基函数距离(如"Ishida et al.,2015<;http://arxiv.org/abs/1504.06129>;"附录B所述,``CosmoABC`还能够处理所有三个元素的用户定义函数。
您将找到示例文件,这些文件将帮助您为ABC采样器定制功能。
确定所有函数定义后,可以从命令行调用ABC采样器:
$run_abc.py-i<;user_input_file>;-f<;user_function_file>;
这将运行算法,直到达到收敛条件。包含每个粒子系统结果的图形表示的pdf文件
作为输出以及数值数据文件给出。
如果获得的结果不令人满意,或者由于某种原因在达到收敛标准之前停止了计算,则可以从最后完成的粒子系统"n"开始运行ABC采样器。
从命令行:
$continue_abc.py-i<;user_input_file>;-f<;user_function_file>;-p n
继续之前。
在任何时候都可以绘制"n"粒子系统的结果,这些粒子系统的计算已经完成,使用:
$plot_abc.py-i<;user_input_file>;-pn
距离函数,
…代码块::python
from cosmoabc.priors import flat_prior
from cosmoabc.abc_sampler import abc
from cosmoabc.abc_函数import read_input
from cosmoabc.plots import plot_2d
import numpy as np
er.输入'
=abc(params=参数)
您正在使用自己的函数,请记住更新参数字典并手动确定其输出的维度,
…代码块:python
from cosmoabc.priors import flat_prior
from cosmoabc.abc_sampler import abc
from cosmoabc.abc_函数import read_input
from cosmoabc.plots import plot_2d
import numpy as np
from my_函数import my_distance,my_ sim,my_prior
]=我的SIM
#计算两个目录之间的距离
dtemp=我的距离(参数['dataset1',参数)
#构建第一个粒子系统
sys1=sampler_abc.buildfirstpsystem()
警告:
当使用自己的**距离函数**时,请记住它必须作为输入:
-目录和
-输入参数字典
当使用自己的**先前函数**时,它必须作为输入:
-输入参数字典rs
-布尔变量``func`(可选):
"Ishida et al.,2015<;http://arxiv.org/abs/1504.06129>;"的结果,首先您需要确保Numcosmo库运行顺利。
有关完整安装和测试的说明,请访问"numcosmo网站"http://www.nongu.org/numcosmo/>;` `.
相应目录中提供了numcosmo模拟的输入文件示例。
安装模拟器后,运行完整的abc sampler+numcosmo集群模拟命令行:
$run_abc_numcosmo.py-i<;user_input_file>;
粒子系统"n"的numcosmo计算,其中:
$continue-abc-numcosmo.py-i<;user-input-file>;-p n
mcosmo.py-i<;用户输入文件>;-f<;用户功能文件>;
你面临的问题。
您需要确保所采用的距离定义为越来越不同的目录提供了越来越大的距离UE。
``cosmoabc``有一个内置脚本,允许您直观地测试所选内容的性能。
要使用它,请准备适当的用户输入和函数文件,并在命令行中执行以下操作:
$test_abc_distance.py-i<;用户输入文件>;-f<;用户功能文件>;-o<;输出文件>;
将绘制不同参数值集的aviour。
一如既往,必须提供"用户输入文件"。
如果您使用的是内置的``cosmoabc``函数,则不需要`-f``选项,如果您忘记提供输出文件名,``cosmoabc``将要求您提供它。
它还将要求您输入要从参数空间绘制的点数,以便构建网格。
以下是使用内置工具检查论文第3.1节中描述的距离函数的适用性的示例:
$test_abc_distance.py-i user_input_file.dat-f user_function_file.dat
$distance between idential catalogs=[0.]
$新参数值=[0.41054026 0.6364732]
$观测数据和模拟数据之间的距离=[804.38711094885957]
$在参数网格中输入绘制次数:5000
$粒子索引:1
$粒子索引:2
$粒子索引:3
$粒子dex:4
$…
$粒子索引:5000
$包含距离结果的图形存储在输出中。pdf
输出文件将包含这样的绘图:
……图片::nstatic/distance_toy_model.png
构造距离函数。
应该根据每个特定问题和目标来决定与此之间的偏差有多大。
bibtex entry
*****
如果您在研究中使用"cosmoabc",请引用原始论文。
代码包含一个内置的引文函数,输出bibtex entry
。代码块::python
cosmobabc。
>这将返回:
>@article{2015a&;c….13….1i,
author={{ishida},e.~e.~e.~o.和{vitenti},s.~d.~p.~和{penna lima},m.和
{{ciswski},j.和{de sosoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudZa},R.~S.和{trindade},a.~m.~m.和
{cameron},e.和{bustin},v.~c.},
title={cosmoabc:通过总体蒙特卡罗近似贝叶斯计算的无似然推理,
journal={atheromy and computing},
archiveprefix="arxiv",
eprint={1504.06129},
关键词{星系:统计,(宇宙学:)宇宙大尺度结构},
年=2015,
月=11月,
体积=13,
页=1-11},
doi={10.1016/j.ascom.2015.09.001},
adsurl={http://adsabs.harvard.edu/abs/2015a%26c….13….1i},
由SAO/NASA天体物理学数据系统提供的ADSNOTE={SAO/NASA天体物理学数据系统提供的}
*python 2.7
*numpy>;=1.8.2
*scpy>;=0.14.0
*stattsmodels>;=0.5.0
*matplotlib>;=1.3.1
*argargargarg>
解析=1.1
*多处理>;=0.70a1
*************************************
IAA宇宙统计倡议(Coin<;https://asaip.psu.edu/organizations/IAA/IAA宇宙统计工作组)是一个非营利组织,其宗旨是培养天体物理学、宇宙学、统计学和机器学习社区之间的协同作用。
这项工作是2014年8月里斯本市第一个Coin Summer Residence计划的成果。
是工作,我们在下面列出了主要的网站,forun和blog,它们在其开发的不同部分被使用。**我们非常感谢所有为开放式学习平台做出贡献的人**。
`Multiprocessing and keyboarinterrupt<;http://bryceboe.com/2010/08/26/python Multiprocessing and keyboarinterupt/>;`<
`Ordering gif<;http://stackoverflow.com/questions/12339330/定义ImageMagick Convert的文件顺序>;`<
`Plotting<;http://nbviewer.ipython.org/gist/tillahoffmann/f844bce2ec264c1c8cb5>;`
`记住git命令<;https://www.atlassian.com/git/tutorials/setting-up-a-repository/git init>;`
cosmoabc-宇宙学的无似然推理
==
``cosmoabc``是一个使用近似贝叶斯计算(abc)算法进行参数推理的包,如` Ishida等人,2015<;http://arxiv.org/abs/1504.06129>;` `.
该代码最初设计用于根据Sunyaev-Zel'Dovich测量结果从星系团数计数推断宇宙学参数。在这种情况下,宇宙学模拟是使用"numcosmo库"进行的,http://www.nongu.org/numcosmo/>;` `.
尽管如此,用户可以很容易地利用abc采样器和自己的模拟器,以及测试个性化的先验分布和d距离函数。
马上开始!
********
使用:
$test_abc_algorithm.py
…警告:
以上测试将生成大量输出数据文件和带有图形表示的pdf文件。
选择此选项是为了便于识别错误。
确保在它们自己的目录中运行测试。
测试输出一个文件,说明后验的演变。image::nstatic/results_gaussian_sim.gif
input参数文件
*****************
>中的示例input可以在``~cosmoabc/examples``中找到。本节中提到的所有示例文件都可以在该目录中找到。
用户输入文件应包含模拟和ABC采样器所需的所有变量。
uld如下所示:
path_to_obs=none path to obs
param_to_fit=mean std parameters to_sim=mean std n模拟所需的参数
previor_func=my_previor flat_ prior每个参数的一个prior函数
考虑中
r分布
std_prior_par_name=pmin pmax先验分布的参数
std_prior_par_val=0.15.0先验分布的值
mean_lim=-2.0 4.0参数的极限
std_lim=0.15.0
mean=2.0需要模拟的参数值
std=1.0
n=1000
m=100_粒子数在每个粒子系统中
mini=200第一个粒子系统的绘制次数
delta=0.25收敛准则
qthreshold=0.75距离阈值分位数#根到输出文件名
screen=0,而不是(1)或不(0)到屏幕输出=我的模拟模拟函数
距离函数=我的距离函数
输入文件中的变量。
*变量"path_to_obs"可以设置为"none",在这种情况下,"cosmoabc"将从模拟器生成一个目录,并将其视为"已观察"目录。它还将把这个目录输出到一个数据文件中,这样就可以用于进一步的检查。
*如果您使用自己的previor函数,您可以随心所欲地命名先前的参数,您只需要定义`<;您的`变量`>;`您的`变量``和`<;您的`变量`>;` previor_相应地。如果您对变量名有疑问,快速比较两个示例输入文件(toy model和numcosmo)可能会有所帮助。
*参数"split_output"确定要为每个粒子系统生成多少子粒子集。它的目标是避免在处理非常复杂且耗时的模拟器时,因环境问题而丢失部分结果。如果您只是做一个快速测试,无意保留部分结果,只需设置"split_output=1"。
ORS PDF为:
*高斯
*平坦
*贝塔
模拟的内置选项为:
*numcosmo模拟
>距离函数的内置选项为:
*基于分位数的距离和对象数标准
*高斯径向基函数距离(如"Ishida et al.,2015<;http://arxiv.org/abs/1504.06129>;"附录B所述,``CosmoABC`还能够处理所有三个元素的用户定义函数。
您将找到示例文件,这些文件将帮助您为ABC采样器定制功能。
确定所有函数定义后,可以从命令行调用ABC采样器:
$run_abc.py-i<;user_input_file>;-f<;user_function_file>;
这将运行算法,直到达到收敛条件。包含每个粒子系统结果的图形表示的pdf文件
作为输出以及数值数据文件给出。
如果获得的结果不令人满意,或者由于某种原因在达到收敛标准之前停止了计算,则可以从最后完成的粒子系统"n"开始运行ABC采样器。
从命令行:
$continue_abc.py-i<;user_input_file>;-f<;user_function_file>;-p n
继续之前。
在任何时候都可以绘制"n"粒子系统的结果,这些粒子系统的计算已经完成,使用:
$plot_abc.py-i<;user_input_file>;-pn
距离函数,
…代码块::python
from cosmoabc.priors import flat_prior
from cosmoabc.abc_sampler import abc
from cosmoabc.abc_函数import read_input
from cosmoabc.plots import plot_2d
import numpy as np
er.输入'
=abc(params=参数)
您正在使用自己的函数,请记住更新参数字典并手动确定其输出的维度,
…代码块:python
from cosmoabc.priors import flat_prior
from cosmoabc.abc_sampler import abc
from cosmoabc.abc_函数import read_input
from cosmoabc.plots import plot_2d
import numpy as np
from my_函数import my_distance,my_ sim,my_prior
]=我的SIM
#计算两个目录之间的距离
dtemp=我的距离(参数['dataset1',参数)
#构建第一个粒子系统
sys1=sampler_abc.buildfirstpsystem()
警告:
当使用自己的**距离函数**时,请记住它必须作为输入:
-目录和
-输入参数字典
当使用自己的**先前函数**时,它必须作为输入:
-输入参数字典rs
-布尔变量``func`(可选):
"Ishida et al.,2015<;http://arxiv.org/abs/1504.06129>;"的结果,首先您需要确保Numcosmo库运行顺利。
有关完整安装和测试的说明,请访问"numcosmo网站"http://www.nongu.org/numcosmo/>;` `.
相应目录中提供了numcosmo模拟的输入文件示例。
安装模拟器后,运行完整的abc sampler+numcosmo集群模拟命令行:
$run_abc_numcosmo.py-i<;user_input_file>;
粒子系统"n"的numcosmo计算,其中:
$continue-abc-numcosmo.py-i<;user-input-file>;-p n
mcosmo.py-i<;用户输入文件>;-f<;用户功能文件>;
你面临的问题。
您需要确保所采用的距离定义为越来越不同的目录提供了越来越大的距离UE。
``cosmoabc``有一个内置脚本,允许您直观地测试所选内容的性能。
要使用它,请准备适当的用户输入和函数文件,并在命令行中执行以下操作:
$test_abc_distance.py-i<;用户输入文件>;-f<;用户功能文件>;-o<;输出文件>;
将绘制不同参数值集的aviour。
一如既往,必须提供"用户输入文件"。
如果您使用的是内置的``cosmoabc``函数,则不需要`-f``选项,如果您忘记提供输出文件名,``cosmoabc``将要求您提供它。
它还将要求您输入要从参数空间绘制的点数,以便构建网格。
以下是使用内置工具检查论文第3.1节中描述的距离函数的适用性的示例:
$test_abc_distance.py-i user_input_file.dat-f user_function_file.dat
$distance between idential catalogs=[0.]
$新参数值=[0.41054026 0.6364732]
$观测数据和模拟数据之间的距离=[804.38711094885957]
$在参数网格中输入绘制次数:5000
$粒子索引:1
$粒子索引:2
$粒子索引:3
$粒子dex:4
$…
$粒子索引:5000
$包含距离结果的图形存储在输出中。pdf
输出文件将包含这样的绘图:
……图片::nstatic/distance_toy_model.png
构造距离函数。
应该根据每个特定问题和目标来决定与此之间的偏差有多大。
bibtex entry
*****
如果您在研究中使用"cosmoabc",请引用原始论文。
代码包含一个内置的引文函数,输出bibtex entry
。代码块::python
cosmobabc。
>这将返回:
>@article{2015a&;c….13….1i,
author={{ishida},e.~e.~e.~o.和{vitenti},s.~d.~p.~和{penna lima},m.和
{{ciswski},j.和{de sosoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudsoudZa},R.~S.和{trindade},a.~m.~m.和
{cameron},e.和{bustin},v.~c.},
title={cosmoabc:通过总体蒙特卡罗近似贝叶斯计算的无似然推理,
journal={atheromy and computing},
archiveprefix="arxiv",
eprint={1504.06129},
关键词{星系:统计,(宇宙学:)宇宙大尺度结构},
年=2015,
月=11月,
体积=13,
页=1-11},
doi={10.1016/j.ascom.2015.09.001},
adsurl={http://adsabs.harvard.edu/abs/2015a%26c….13….1i},
由SAO/NASA天体物理学数据系统提供的ADSNOTE={SAO/NASA天体物理学数据系统提供的}
*python 2.7
*numpy>;=1.8.2
*scpy>;=0.14.0
*stattsmodels>;=0.5.0
*matplotlib>;=1.3.1
*argargargarg>
解析=1.1
*多处理>;=0.70a1
*************************************
IAA宇宙统计倡议(Coin<;https://asaip.psu.edu/organizations/IAA/IAA宇宙统计工作组)是一个非营利组织,其宗旨是培养天体物理学、宇宙学、统计学和机器学习社区之间的协同作用。
这项工作是2014年8月里斯本市第一个Coin Summer Residence计划的成果。
是工作,我们在下面列出了主要的网站,forun和blog,它们在其开发的不同部分被使用。**我们非常感谢所有为开放式学习平台做出贡献的人**。
`Multiprocessing and keyboarinterrupt<;http://bryceboe.com/2010/08/26/python Multiprocessing and keyboarinterupt/>;`<
`Ordering gif<;http://stackoverflow.com/questions/12339330/定义ImageMagick Convert的文件顺序>;`<
`Plotting<;http://nbviewer.ipython.org/gist/tillahoffmann/f844bce2ec264c1c8cb5>;`
`记住git命令<;https://www.atlassian.com/git/tutorials/setting-up-a-repository/git init>;`