基于面的射电天文学连续成像仪
项目描述
基于面的射电成像软件包
版权 (C) 2013-2024 Cyril Tasse,巴黎天文台,南非SKA,南非射电天文台,罗德大学
本程序是自由软件;您可以重新分配它并/或修改它,具体请参阅由自由软件基金会发布的GNU通用公共许可证的条款;许可证的第2版,或者(根据您的选择)任何后续版本。
本程序的分发是希望它将是有用的,但没有任何保证;甚至没有对适销性或特定用途适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。
(用户/推荐 - 基于 Docker)通过 Stimela >= 0.2.9 运行
我们建议通过Stimela框架运行成像软件包 <https://github.com/SpheMakh/Stimela>,该框架基于广泛支持的容器化框架Docker构建。这个软件包位于PiPY,纯Python编写,除了Docker之外无需其他依赖。它为用户提供了即时访问其他常用软件包,如Meqtrees、CASA等。
从Docker PPA安装最新的Docker:<https://docs.dockerd.com.cn/engine/installation/linux/ubuntu/>。如果您不运行Debian,请选择合适的发行版。
确保将您的用户添加到docker组中。在基于Debian的系统上,可以按以下方式操作
$ sudo usermod -aG docker $USER
设置虚拟环境,激活它,并将pip、setuptools和wheel升级到最新的PyPI版本
$ virtualenv stimelavenv $ source stimelavenv/bin/activate (stimelavenv)$ pip install -U pip wheel setuptools (stimelavenv)$ pip install stimela
运行stimela pull和stimela build以从DockerHub拉取所有最新的天文学软件(这可能需要一些时间,大小为几个GiB,所以请确保您有一个快速的连接)
(stimelavenv)$ stimela pull (stimelavenv)$ stimela build
stimela cabs -i ddfacet列出了成像器的所有可用选项。
然后,您可以将DDFacet作为更大减少脚本的一部分添加,例如
1 import stimela 2 3 INPUT="input" 4 OUTPUT="output" 5 MSDIR="msdir" 6 7 recipe = stimela.Recipe("Test DDFacet imaging", ms_dir=MSDIR) 8 # ...any other calibration steps here... 9 recipe.add("cab/ddfacet", "ddfacet_test", 10 { 11 "Data-MS": ["3C147.MS/SUBMSS/D147-LO-NOIFS-NOPOL-4M5S.MS"], 12 "Output-Name": "testimg", 13 "Image-NPix": 2048, 14 "Image-Cell": 2, 15 "Cache-Reset": True, 16 "Freq-NBand": 3, 17 "Weight-ColName": "WEIGHT", 18 "Beam-Model": "FITS", 19 "Beam-FITSFile": "'beams/JVLA-L-centred_$(corr)_$(reim).fits'", 20 "Data-ChunkHours": 0.5, 21 "Data-Sort": True 22 }, 23 input=INPUT, output=OUTPUT, shared_memory="14gb", 24 label="test_image:: Make a test image using ddfacet") 25 # ... any post imaging / additional calibration steps here ... 26 recipe.run()
使用以下命令运行脚本
(stimelavenv)$ stimela run myscriptname.py
完成成像业务后,请取消激活虚拟环境
(stimelavenv)$ deactivate
(用户/PyPI替代)虚拟环境和pip
我们希望用户通过Docker使用DDFacet。然而,如果这不可用(例如集群环境),我们建议您使用虚拟环境。如果您将其直接安装到系统软件包中,那么您将自行负责——警告!!
警告:如果您之前已在环境中安装了numpy,可能会遇到问题——如果安装的numpy版本早于在隔离过程中拉取的构建系统版本,则构建隔离将失败。您可能需要在安装时使用–no-build-isolation,或者更好的方法是确保在空的新虚拟环境中安装DDF和KillMS。
安装每个Debian依赖项。最新的apt依赖项完整列表可以在Dockerfile <https://github.com/saopicc/DDFacet/blob/master/docker.2204>中找到
在您的系统上的某个位置创建虚拟环境并激活它
virtualenv ddfacet source ddfacet/bin/activate
然后,使用pip直接从Python包索引(PyPI)安装 - 确保您的venv已激活
pip install -U pip pip install DDFacet
完成成像业务后
deactivate
(用户/可选)FitsBeam、Montblanc、Moresane、Killms支持
可选要求,如FITS波束,可以通过在括号中指定它们来安装。例如,pip install “/src/DDFacet/[dft-support,moresane-support,testing-requirements,fits-beam-support,kms-support]”
(开发者/注意):架构相关二进制文件
默认构建系统配置不会产生可移植的二进制文件,这会略微提高运行时间。您必须在编译软件包之前修改pyproject.toml并设置以下行
` cmake.define = {ENABLE_NATIVE_TUNING = "ON", ENABLE_FAST_MATH = "ON", ENABLE_PYTHON_2 = "OFF", ENABLE_PYTHON_3 = "ON"} `
(开发者/推荐):设置您的开发环境
注意:请按照上面用户部分中指定的方式设置您的虚拟环境。确保您激活了! 警告:如果您之前在该环境中安装了numpy,可能会遇到问题 - 构建隔离 如果您的numpy版本比构建系统在隔离过程中拉取的版本旧,构建将失败。 您可能需要在使用时使用–no-build-isolation选项,甚至更好的方法是确保您在一个全新的虚拟环境中安装DDF和KillMS。
要设置您的本地开发环境,请克隆DDFacet并运行
(ddfvenv) $ git clone https://github.com/cyriltasse/DDFacet (ddfvenv) $ pip install -e DDFacet/
重要提示:在安装时,您可能需要先删除开发版本,然后再运行PIP。如果您 在后台版本的发布和调试版本之间切换 - 或者在不同的配置下重新编译 - 应该删除DDFacet/DDFacet/cbuild目录及其所有内容
请注意,Python3.8的支持已被弃用,并且可编辑的安装仅在Python 3.10上进行了测试。
(开发者/测试) 基于Docker的构建
简单地拉取最新的DDFacet并构建Docker镜像
git clone git@github.com:cyriltasse/DDFacet.git cd DDFacet docker build -t ddf -f docker.2204 .
现在您应该能够在容器中运行DDFacet。请注意,您的parsets必须具有相对于容器内挂载卷的相对文件名,例如
docker run --shm-size 6g -v /scratch/TEST_DATA:/mnt ddf /mnt/test-master1.parset
重要:如果您在构建Docker镜像之前运行了“git submodule update –init –recursive”,则可能需要删除缓存的SkyModel,可以使用“git rm –cached SkyModel”
(开发者/调试) 构建一些库(通过手动使用自定义标志)
您可以对库的定制版本进行构建,例如libPython和定制的numpy版本。为此,修改pyproject.toml。找到并修改以下行:: ` cmake.build-type = "ReleaseWithDebugSymbols" # 可以设置为 Debug e.g. cmake.define = {ENABLE_NATIVE_TUNING = "OFF", ENABLE_FAST_MATH = "ON", ENABLE_PYTHON_2 = "OFF", ENABLE_PYTHON_3 = "ON"} # 可以调整以启用处理器特定的优化 ` 您还可以通过这些 `cmake.define` 指定其他库的路径设置,如果您已经自定义构建了,例如通过这些 `cmake.define`
(开发者/验收测试)
路径
将此添加到您的 .bashrc
export DDFACET_TEST_DATA_DIR=[folder where you keep the acceptance test data and images] export DDFACET_TEST_OUTPUT_DIR=[folder where you want the acceptance test output to be dumped]
要使用Jenkins测试您的分支与master分支
大多数核心用例将在不久的将来具有参考图像和自动化的验收测试。
请 不要 对cyriltasse/master进行提交。正确的策略是分支/分叉,并在GitHub上创建一个拉取请求以合并更改到master。一旦打开了拉取请求,请添加以下评论:“ok to test”。这将让Jenkins服务器知道开始测试。您应该看到拉取请求和提交状态显示“挂起”。如果测试成功,您应该在绿色合并按钮上方看到“所有检查都通过”。一旦代码被审查,它将被合并到master分支。
在本地机器上运行测试
您可以通过从网络获取最新的测量集和参考图像并将它们提取到您在环境变量DDFACET_TEST_DATA_DIR中设置的目录中来运行自动测试。您可以通过进入DDFacet目录并运行nosetests来运行自动测试。
每个测试用例都有一个类名标签,并具有相同名称的参考图像和parset文件,例如,如果失败的测试用例名为“TestWidefieldDirty”,则参考图像也将同名。您应该调查测试用例的输出与您的更改代码库生成的图像之间任何严重差异的原因。查看类ClassCompareFITSImage顶部文档字符串以获取帮助和文件名约定。
验收测试数据可以在Jenkins服务器上的 /var/lib/jenkins/test-data 目录中找到。
添加更多测试和创建新的参考图像。
要重新模拟图像并添加更多测试
在Jenkins服务器数据目录中,向makefile中添加一个配方来模拟和/或设置新的参考图像。这只能在origin/master分支上完成 - 不要使用您的分支或分叉!使用ddfacet-generate-refims任务来完成此操作。当您重新生成它们时,应手动验证所有参考图像是否正确。每次您向DDFacet添加一个新选项时,也请在此目录的makefile中添加一个选项。一旦在makefile中设置了选项,您就可以在Jenkins上构建参考图像。
项目详情
ddfacet-0.8.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 795c1b392fa1112917f41dfff291f9b7e001173f995d1091aff2fc6a4083ef22 |
|
MD5 | a84302b4eeda1145e506382f7532966d |
|
BLAKE2b-256 | c7ad68f404daef95ee36ca8439ad4bf1859bc11c077c8d3cd86c42986017dfa7 |