基于python的无线电干涉仪综合仿真软件包
pyuvsim的Python项目详细描述
pyuvsim
pyuvsim是python中无线电干涉仪的综合仿真包。
有许多分析工具可用于模拟收音机的输出 干涉仪(casa、oskar、fhd、prisim等),但每一个都是数值型的 用于加速的近似值。pyuvsim的目标是提供一个 仪表输出,强调准确性和可扩展性,并能代表 通用模拟器设计。
与其他模拟器的比较可以在readthedocs
动机和方法
pyuvsim的两个主要目标是干涉仪模拟精度达到21cm宇宙学所需的精度水平,以及在用例中的最大灵活性。这种方法的关键要素包括:
- 高水平的测试覆盖率,包括准确性(设计目标为97%)。
- 在单元测试中包括分析测试。
- 与外部模拟进行比较。
- 设计跨多个CPU的可扩展性。
- 全极化仪器响应、浮点源位置精度、全天空视野和精确天线位置。
- 支持阵列中的各种波束模型。
- 为模拟设计定义清晰、用户友好的标准。
安装
- 对于简单的安装,最新的稳定版本可通过pip(
pip install pyuvsim
) - 要安装开发版本:使用
git clone https://github.com/radioastronomysoftwaregroup/pyuvsim
克隆存储库,导航到pyuvsim目录并运行
pip install -r requirements.txt
pip install pyuvdata
pip install .
pyuvsim
用于在运行Linux操作系统的群集上运行。
注意mpi4py
模块作为现有mpi安装的包装器安装。最简单的安装方法是使用anaconda,它将安装兼容版本的mpi并配置mpi4py以使用它:
conda install -c conda-forge mpi4py
依赖关系
numpy
,astropy
,scipy
,mpi4py
,pyyaml
,six
,pyuvdata
- 如果您想进行评测(内置了对评测的支持),也可以选择
line\u profiler
。 - 或者,需要
h5py
来支持写入新的uvh5
文件格式。
输入
模拟需要一组时间、频率、源位置和亮度、天线位置和与方向相关的主波束响应。pyuvsim通过uvdata对象(来自pyuvdata包)指定时间、频率和阵列配置,通过源对象指定源位置和亮度,通过uvbeam或analyticbeam对象指定主光束。
- 所有源都被视为点源,其通量在stokes参数中指定,并在国际天体参考系(相当于j2000历元)中的赤经/赤纬位置中指定。
- 主光束被指定为全电场分量,并在角度和频率。这允许为每个所需的震源位置构造精确的琼斯矩阵。
- 阵列中可以使用多个波束模型,以便对更复杂的仪器响应进行建模。
这些输入对象可以由数据文件或一组yaml
配置文件生成。请参见运行模拟
输出
模拟运行中的数据将以pyuvdata
可访问的任何格式写入文件。这包括:
- uvfits
- 米里亚德
- uvh5
当读取到一个uvdata对象时,历史记录
字符串将包含该运行所使用的pyuvsim和pyuvdata版本的信息(包括最新的git散列(如果可用))以及所使用的目录的详细信息。
快速入门指南
示例obsparam
配置文件可以在reference\u simulations
目录中找到。
- 从github或pip安装。
- 运行具有20 MPI列组的参数文件:
mpirun -n 20 run_param_pyuvsim.py reference_simulations/obsparam_1.1.yaml
文档
有关如何运行模拟和开发人员API文档的文档位于readthedocs
测试
pyuvsim
使用nose
包进行单元测试。如果您已将源代码克隆到目录pyuvsim/
中,则可以按如下方式进行验证:
- 从水蟒或琵琶中安装鼻
- 从
pyuvsim/
运行鼻测试
nosetests pyuvsim/tests/
您需要安装所有依赖项。
哪里可以找到支持
请随时向问题日志提交新问题,以请求新功能、记录新错误或提出问题。
如何贡献
为该包添加新功能或解决任何 非常欢迎在问题日志中出现问题。 请在确认以下情况后,将改进作为对回购协议的请求提交 现有的测试通过了,任何新代码都被单元测试很好地覆盖。
也欢迎错误报告或功能请求,请将它们添加到 验证问题不存在后的问题日志。 也欢迎对现有问题发表评论。
版本控制方法
我们使用generation.major.minor
格式。
- 结合多种新的物理效果和/或主要计算改进的生成-释放。 测试:由单元测试、内部模型验证和重要的外部比较支持。
- 主要-添加新的物理效果或主要的计算改进。每个版本都有少量的改进。 测试:由单元测试、内部模型验证和有限的外部比较支持。
- 小错误修复和小的改进不会改变物理模型。 测试:由unittests支持
一些有用的定义
- 物理效应:如极化效应、噪声、电离层模型或非大地观测位置。
- 主要的计算改进:支持新的目录类型(例如,漫反射贴图)、新的分析工具、对并行化方案的更改
- 小改进:更好的文档或示例代码,外部框架重新设计。