基于python的无线电干涉仪综合仿真软件包

pyuvsim的Python项目详细描述


pyuvsim

Build statuscovercoverstatus

pyuvsim是python中无线电干涉仪的综合仿真包。

有许多分析工具可用于模拟收音机的输出 干涉仪(casa、oskar、fhd、prisim等),但每一个都是数值型的 用于加速的近似值。pyuvsim的目标是提供一个 仪表输出,强调准确性和可扩展性,并能代表 通用模拟器设计。

与其他模拟器的比较可以在readthedocs

动机和方法

pyuvsim的两个主要目标是干涉仪模拟精度达到21cm宇宙学所需的精度水平,以及在用例中的最大灵活性。这种方法的关键要素包括:

  1. 高水平的测试覆盖率,包括准确性(设计目标为97%)。
  2. 在单元测试中包括分析测试。
  3. 与外部模拟进行比较。
  4. 设计跨多个CPU的可扩展性。
  5. 全极化仪器响应、浮点源位置精度、全天空视野和精确天线位置。
  6. 支持阵列中的各种波束模型。
  7. 为模拟设计定义清晰、用户友好的标准。

安装

  • 对于简单的安装,最新的稳定版本可通过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

依赖关系

  • numpyastropyscipympi4pypyyamlsixpyuvdata
  • 如果您想进行评测(内置了对评测的支持),也可以选择line\u profiler
  • 或者,需要h5py来支持写入新的uvh5文件格式。

输入

模拟需要一组时间、频率、源位置和亮度、天线位置和与方向相关的主波束响应。pyuvsim通过uvdata对象(来自pyuvdata包)指定时间、频率和阵列配置,通过源对象指定源位置和亮度,通过uvbeam或analyticbeam对象指定主光束。

  • 所有源都被视为点源,其通量在stokes参数中指定,并在国际天体参考系(相当于j2000历元)中的赤经/赤纬位置中指定。
  • 主光束被指定为全电场分量,并在角度和频率。这允许为每个所需的震源位置构造精确的琼斯矩阵。
  • 阵列中可以使用多个波束模型,以便对更复杂的仪器响应进行建模。

这些输入对象可以由数据文件或一组yaml配置文件生成。请参见运行模拟

输出

模拟运行中的数据将以pyuvdata可访问的任何格式写入文件。这包括:

  • uvfits
  • 米里亚德
  • uvh5

当读取到一个uvdata对象时,历史记录字符串将包含该运行所使用的pyuvsim和pyuvdata版本的信息(包括最新的git散列(如果可用))以及所使用的目录的详细信息。

快速入门指南

示例obsparam配置文件可以在reference\u simulations目录中找到。

  1. 从github或pip安装。
  2. 运行具有20 MPI列组的参数文件:
mpirun -n 20 run_param_pyuvsim.py reference_simulations/obsparam_1.1.yaml

文档

有关如何运行模拟和开发人员API文档的文档位于readthedocs

测试

pyuvsim使用nose包进行单元测试。如果您已将源代码克隆到目录pyuvsim/中,则可以按如下方式进行验证:

  1. 从水蟒或琵琶中安装鼻
  2. pyuvsim/
  3. 运行鼻测试
nosetests pyuvsim/tests/

您需要安装所有依赖项。

哪里可以找到支持

请随时向问题日志提交新问题,以请求新功能、记录新错误或提出问题。

如何贡献

为该包添加新功能或解决任何 非常欢迎在问题日志中出现问题。 请在确认以下情况后,将改进作为对回购协议的请求提交 现有的测试通过了,任何新代码都被单元测试很好地覆盖。

也欢迎错误报告或功能请求,请将它们添加到 验证问题不存在后的问题日志。 也欢迎对现有问题发表评论。

版本控制方法

我们使用generation.major.minor格式。

  • 结合多种新的物理效果和/或主要计算改进的生成-释放。 测试:由单元测试、内部模型验证和重要的外部比较支持。
  • 主要-添加新的物理效果或主要的计算改进。每个版本都有少量的改进。 测试:由单元测试、内部模型验证和有限的外部比较支持。
  • 小错误修复和小的改进不会改变物理模型。 测试:由unittests支持

一些有用的定义

  • 物理效应:如极化效应、噪声、电离层模型或非大地观测位置。
  • 主要的计算改进:支持新的目录类型(例如,漫反射贴图)、新的分析工具、对并行化方案的更改
  • 小改进:更好的文档或示例代码,外部框架重新设计。

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

推荐PyPI第三方库


热门话题
java 安卓阻止编译的第三方库的特定网站   java如何使用带回调的send()方法返回元数据?   将双值数组从一个java类传递到另一个java类   java OracleJava7安装程序返回错误代码   smb共享上新创建的Java文件没有用户,也没有组   打印unicode值而不是字符串的Java程序   java将字符串放在括号中的语法意义   java将对象添加到arraylist,除非它已经存在   java正在尝试查找回文数   java如何解决“过时元素引用:导航到上一页时元素未附加到页面文档”   java从无关方法调用超级方法   用于java代码的socket网络设置,以便不同网络/位置上的两台计算机可以使用RMI   用Java字符数组处理C字符数组