未知

galanyl的Python项目详细描述


#Galaxy分析工具包

我的论文研究中使用的脚本和分析工具的集合。

这还包括两篇尚未发表的论文的文本和版本历史 这是代码的主要研究结果。

代码分为两大部分。"图书馆"住在 galanyl目录,而helper\u脚本包含许多脚本 利用ytgalanyl处理模拟数据。

#使用这些脚本

首先,必须下载要分析的数据。现在 帮助程序脚本的编写方式应使它们能够预期完整的模拟 数据集要存在,但如果您 只想查看一个或几个模拟输出。

论文I的数据可在https://hub.yt/data/goldbaum2015a/" rel="nofollow">https://hub.yt/data/goldbaum2015a/

论文II的数据可在https://hub.yt/data/goldbaum2016a" rel="nofollow">https://hub.yt/data/goldbaum2016a

##生成统一分辨率的网格板

注意:如果要下载已处理的数据,可以跳过此步骤。这个 仅当您希望从 原始模拟输出。

例如,如果要重新生成 无反馈电脑模拟,您需要下载一个或多个 模拟输出,解压缩tarball,并放置模拟输出 在名为nofeedback\u20pc的目录中

下载了要分析的模拟输出后 需要分两步创建所需的辅助数据:

TT> $python generate_covering_grids.py无反馈_20pc

此脚本使用yt将原始模拟输出转换为统一的 后续分析脚本需要的分辨率"覆盖网格"。这将 仅为模拟中的字段生成覆盖网格数据 输出。要生成重力势覆盖网格,需要 要做:

TT> $python generate_gravity_covering_grid.py无反馈_20pc

此脚本需要可执行文件的副本(请参见 [此处](https://enzo.readthedocs.org/en/latest/tutorials/building_enzo.html" rel="nofollow">https://enzo.readthedocs.org/en/latest/tutorials/building_enzo.html)的 有关编译enzo代码的信息),因为脚本使用-g选项 用于求解泊松方程的可执行文件。

最后,您可以运行validate_covering_grid.py脚本来验证完整性 覆盖网格数据写入磁盘后。这个脚本只是检查 要确保所有hdf5文件具有相同的内部结构,请不要 完全信任它,防止所有可能的数据损坏。我创造了它 最初是为了避免在创建不完整的覆盖网格文件后出现错误 生成脚本崩溃或文件系统挂起。

注意,如果对完整的模拟数据集执行此操作,则需要 即使在多个内核上运行,也会很长时间。注意两个 生成覆盖网格。py生成覆盖网格的重力网格。py是 MPI并行化,因此您可以在多个内核上使用例如mpirun来 在多个数据集上并行化分析。请注意,这个比例不会太大 除非你在一个并行文件系统上运行,因为两个脚本 很大程度上是IO绑定的。

##生成最终处理的数据

最后,生成最终处理的数据,包括表面图 密度、速度色散和Toomre Q参数,您应该使用 分析数据.py脚本。此脚本使用生成的覆盖网格数据 在crea的前一步teGalaxyAnalyzer对象–主要分析 由Galaxy分析工具包提供的类。GalaxyAnalyzer课程提供 处理可备份数据子集的许多分析选项 提供一个接口来计算它知道如何 计算。这是analyze_data.py使用的接口。脚本可以 如果不需要,可以很容易地修改为只计算数据的一个子集 所有处理过的数据。要运行脚本,只需执行以下操作:

TT> $python analyze_data.py分析

与覆盖网格生成器一样,这个脚本也是mpi并行的,所以运行它 使用mpirun加速分析。这个脚本在很大程度上也是IO绑定的,所以 除非你在平行线上跑步,否则你很难看到很好的缩放效果。 文件系统。

还要注意,一些昂贵的计算是使用openmp并行化的。 只要你的操作系统和编译器支持它。现在,这意味着 您需要gcc,尽管llvm/clang也得到了openmp支持。 不久。我优化了在单个节点上迭代数据,使用mpi 并行性在数据集上迭代,但会中断 使用openmp处理给定的数据集。根据经验,我使用了一个节点 核心并使用了4个MPI任务,因此每个MPI任务在 OpenMP分析的并行部分。

#加载和使用数据

可以通过开源的python分析访问可用的数据 环境。原始模拟数据以enzo的hdf5为基础写入磁盘 数据格式。处理后的数据以目录结构写入磁盘 包含许多包含单个数据集的简单HDF5文件。

##模拟输出

对于原始模拟输出,建议的方法是加载它们进行分析 可视化使用的是yt。您需要使用 安装脚本、conda或pip,具体取决于您是否有python 环境设置和设置方式。见 http://yt project.org/doc/installing.html了解更多详细信息。

安装yt后,下载其中一个原始数据集,解压缩,然后 载入:

TT> $wgethttps://hub.yt/data/goldbaum2015b/feedback-20pc/simulation-outputs/dd0600.tar.gz $焦油xzvf dd0600.tar.gz $Python >>>>进口YT >;gt;gt;ds=yt.load('dd0600/dd0600')

然后,您可以将ds对象传递给yt的绘图命令或访问yt数据 通过它获取任何磁盘上或派生字段的对象。

##处理数据

处理处理数据的最简单方法是通过星系分析 工具包。这可以通过pip或源代码安装。通过 皮普:

< Buff行情> $pip安装galanyl

从源代码安装:

TT> $hg clonehttps://bitbucket.org/ngoldbaum/galaxy\u分析 $cd星系分析 $python setup.py开发

注意,后一个版本将使源代码成为 python解释器导入,因此那里的编辑将立即可用 下次导入工具包时。

要加载其中一个示例数据集,您需要下载它,解压缩它,然后 然后将其加载到内存中:

TT> $wgethttps://hub.yt/data/goldbaum2015b/feedback\u 20pc/processed\u data/dd0600\u toomre.tar.gz $tar xzvf dd0600_toomre.tar.gz $Python >>>>来自Galanyl进口GalaxyAnalyzer >>>>从matplotlib导入pyplot作为plt >>>g=GalaxyAnalyzer.from_hdf5_file('dd0600_toomre') >>>>打印气体表面密度 >>>>打印g.stars.velocity_色散 >;gt;gt;PLT.IMSHOW(燃气总量)

所有的数据将通过GalaxyAnalyzer实例的属性提供, 如上例所示。所有数量均以cgs单位表示。最简单的方法 通过ipython中的tab completion来探索这些对象的各种属性 或者阅读GalaxyAnalyzer的源代码。

或者,数据也被分割成每个数据集一个hdf5文件,因此 HDF5读卡器应该能够访问数据而不必经过 GalaxyAnalyzer.

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

推荐PyPI第三方库


热门话题
如何在Java中超时Future而不使用Future。get()是阻塞操作吗?   使用CXF 2.7.17部署到WebSphere 8.5.5.6的java问题   为什么是布尔。类是java。lang.课堂和字符串。类是java。串?   java是验收测试SOAP Web服务的最佳方法?   java如何替换kotlin中的::new?   字符串LastIndexOf和java。lang.IndexOutOfBoundsException   java移动游戏窗口在其他窗口前面LibGDX   java如何构建真正本地的ApacheSpark“胖”jar。JRE内存问题?   JavaGSON更新json文件   java如何替换字符串中的所有#{key}?   java应用程序没有在Android Pie中获取MySQL数据库   java是否可以在JavaDoc中重用@param描述?   java在MangedBean clsass中的任何@Autowired注入都不起作用,它总是等于NULL吗?   java当我为登录用户创建会话时,如何在struts2中维护hibernate会话?   按反向日期排列的java排序适配器ArrayList   Mockito中带doNothing()的java非类方法?