python中的cutout库
cadccutout的Python项目详细描述
使用astropyapi的python编写的cutout库。
安装
可以使用python 2.7或3.x中的pip install cadccutout安装。
API
断流是单向执行的,这意味着库假定 只能读取一次而不是查找的输入流。如果更多 超过一个hdu被请求,然后对每个hdu进行迭代和比较 从上到下。使用 astropyastropy.io.fits.getdata()函数
python 3.x在附加到输出流时有一个潜在的问题 astropy错误地设置了防止追加的模式(请参见Astropy GitHub 7856)。
例1
使用cfitsiocutout字符串格式执行文件的剪切。
importtempfilefromcadccutoutimportOpenCADCCutouttest_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.withopen(output_file,'ab+')asoutput_writer,open(input_file,'rb')asinput_reader:test_subject.cutout(input_reader,output_writer,cutout_region_string,'FITS')
例2(CADC)
从http请求的输入流执行剪切。
importtempfilefromcadccutoutimportOpenCADCCutoutfromcadcdataimportCadcDataClienttest_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.withopen(output_file,'ab+')asoutput_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版本。
为Python2.7构建映像:
docker build --build-arg PYTHON_VERSION=2.7 -topencadc/cadccutout:2.7-alpine .
然后执行它(/usr/src/data是源文件的位置)。这会将输出发送到标准输出:
docker run --rm-v$(pwd):/usr/src/dataopencadc/cadccutout:2.7-alpine cadccutout --infile /usr/src/data/myfile.fits [100:400]
或
docker run --rm--mounttype=bind,source=$(pwd),target=/usr/src/dataopencadc/cadccutout:2.7-alpine cadccutout --infile /usr/src/data/myfile.fits [100:400]
为python 3.6构建一个映像:
docker build --build-arg PYTHON_VERSION=3.6 -topencadc/cadccutout:3.6-alpine .
然后执行它(/usr/src/data是源文件的位置)。这会将输出发送到fits文件:
docker run --rm-v$(pwd):/usr/src/dataopencadc/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--mounttype=bind,source=$(pwd,target=/usr/src/dataopencadc/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有一个 AstroQuery docker image可用于python中的运行时 2.7、3.5、3.6和3.7。
在Docker中运行测试
您可以将本地dev目录装载到映像并运行python 这样测试。在dev(工作)目录中:
Python3.7:
docker run --rm-v$(pwd):/usr/src/appopencadc/astroquery:3.7-alpine python setup.py test
或
docker run --rm--mounttype=bind,source=$(pwd),target=/usr/src/appopencadc/astroquery:3.7-alpine python setup.py test
Python2.7:
docker run --rm-v$(pwd):/usr/src/appopencadc/astroquery:2.7-alpine python setup.py test
或
docker run --rm--mounttype=bind,source=$(pwd),target=/usr/src/appopencadc/astroquery:2.7-alpine python setup.py test