Python的Cutout库
项目描述
使用Astropy API编写的Python Cutout库
安装
可以使用Python 2.7或3.X中的pip install cadccutout进行安装。
API
执行单向cutout,这意味着库假定一个只能读取一次的输入流,而不是查找。如果请求了多个HDU,则将依次迭代每个HDU并进行比较。使用Astropy的astropy.io.fits.getdata()函数短路单个HDU请求。
Python 3.x在追加到输出流时可能存在潜在问题,因为Astropy错误地将模式设置为防止追加(参见Astropy GitHub 7856)。
示例1
使用cfitsio cutout字符串格式对文件执行cutout。
import tempfile
from cadccutout import OpenCADCCutout
test_subject = OpenCADCCutout()
output_file = tempfile.mkstemp(suffix='.fits')
input_file = '/path/to/file.fits'
# Cutouts are in cfitsio format.
cutout_region_string = '[300:800,810:1000]' # HDU 0 along two axes.
# Needs to have 'append' flag set. The cutout() method will write out the data.
with open(output_file, 'ab+') as output_writer, open(input_file, 'rb') as input_reader:
test_subject.cutout(input_reader, output_writer, cutout_region_string, 'FITS')
示例2(CADC)
从HTTP请求的输入流中执行cutout。
import tempfile
from cadccutout import OpenCADCCutout
from cadcdata import CadcDataClient
test_subject = OpenCADCCutout()
anonSubject = net.Subject()
data_client = CadcDataClient(anonSubject)
output_file = tempfile.mkstemp(suffix='.fits')
archive = 'HST'
file_name = 'n8i311hiq_raw.fits'
input_stream = data_client.get_file(archive, file_name)
# Cutouts are in cfitsio format.
cutout_region_string = '[SCI,10][80:220,100:150]' # SCI version 10, along two axes.
# Needs to have 'append' flag set. The cutout() method will write out the data.
with open(output_file, 'ab+') as output_writer:
test_subject.cutout(input_stream, output_writer, cutout_region_string, 'FITS')
命令行访问
默认安装了可执行文件cadccutout,或者可以使用python -m cadccutout运行模块。
运行
cadccutout -d --infile path/to/source.fits --outfile path/to/output.fits [100:400]
cadccutout -d --infile path/to/source.fits --outfile path/to/output.fits "CIRCLE=10 60 0.5"
在Docker中运行
提供的 Dockerfile 可以用来根据所需的 Python 版本构建镜像。
构建 Python 2.7 的镜像
docker build --build-arg PYTHON_VERSION=2.7 -t opencadc/cadccutout:2.7-alpine .
然后执行它(/usr/src/data 是源文件的存放位置)。这将输出到标准输出
docker run --rm -v $(pwd):/usr/src/data opencadc/cadccutout:2.7-alpine cadccutout --infile /usr/src/data/myfile.fits [100:400]
或者
docker run --rm --mount type=bind,source=$(pwd),target=/usr/src/data opencadc/cadccutout:2.7-alpine cadccutout --infile /usr/src/data/myfile.fits [100:400]
构建 Python 3.6 的镜像
docker build --build-arg PYTHON_VERSION=3.6 -t opencadc/cadccutout:3.6-alpine .
然后执行它(/usr/src/data 是源文件的存放位置)。这将输出到 FITS 文件
docker run --rm -v $(pwd):/usr/src/data opencadc/cadccutout:3.6-alpine cadccutout --infile /usr/src/data/myfile.fits --outfile /usr/src/data/mycutout_0_100_400.fits [100:400]
或者
docker run --rm --mount type=bind,source=$(pwd,target=/usr/src/data opencadc/cadccutout:3.6-alpine cadccutout --infile /usr/src/data/myfile.fits --outfile /usr/src/data/mycutout_0_100_400.fits [100:400]
测试
Docker
最简单的方法是使用 docker 运行它。OpenCADC 提供了 Python 2.7、3.5、3.6 和 3.7 可用的 AstroQuery docker 镜像。
在 Docker 中运行测试
您可以将本地开发目录挂载到镜像中,并通过这种方式运行 Python 测试。从 dev(工作)目录内部
Python 3.7
docker run --rm -v $(pwd):/usr/src/app opencadc/astroquery:3.7-alpine python setup.py test
或者
docker run --rm --mount type=bind,source=$(pwd),target=/usr/src/app opencadc/astroquery:3.7-alpine python setup.py test
Python 2.7
docker run --rm -v $(pwd):/usr/src/app opencadc/astroquery:2.7-alpine python setup.py test
或者
docker run --rm --mount type=bind,source=$(pwd),target=/usr/src/app opencadc/astroquery:2.7-alpine python setup.py test
项目详情
cadccutout-0.4.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 707ad1314bb5f286a54c58c27369b6a9da66741f339e3e8ceb5659849e827883 |
|
MD5 | 2b0ac8f78690a36802bc833bc8b91a16 |
|
BLAKE2b-256 | cb6f43d9fe14fbf10a586e0ece630eb8d10d409460d6ca6234b07222bfcecbc2 |