astropy_healpix
개요
나는 HEALPix를 그릴 때 HEALPy를 사용하는 것이 좋다고 생각한다(참고문: "파이톤으로 HEALPix 그리기". 그러나 astropy는 현재 HEALPix에 대응하는 도구를 개발하고 있다.그래서 이번에는 이 도구로 데이터를 그리는 것을 목표로 하는 글을 쓸 것이다.
install
PyPI에 로그인되어 다음 명령을 사용하여 간단하게 설치할 수 있습니다.pip install astropy-healpix
공식 문서에서도 conda를 사용하는 설치 방법을 소개했으니 적당히 참고하시기 바랍니다.
각본
이번에는 다음과 같은 스크립트를 사용했습니다.#!/usr/bin/env python3
from astropy import units as u
from astropy.coordinates import Galactic
from astropy.coordinates import SkyCoord
from astropy_healpix import HEALPix
from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
# read Planck data
planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
# get fits info
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
# set map data
ttype = planck_map[1].header['TTYPE1']
tmap = planck_map[1].data[ttype]
hp = HEALPix(nside=nside, order=order, frame=Galactic())
# sample a 360, 180 grid in RA/Dec
ra = np.linspace(180., -180., 360) * u.deg
dec = np.linspace(90., -90., 180) * u.deg
ra_grid, dec_grid = np.meshgrid(ra, dec)
# set up astropy coordinate objects
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
# interpolate values
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
# make a plot of the interpolated temperatures
plt.figure(figsize=(9, 4.5))
im = plt.imshow(tmap, extent=[-180, 180, -90, 90], cmap='jet', aspect='auto', vmin=0, vmax=1e-3)
plt.colorbar(im)
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
이 작업을 수행하면 다음 그래픽이 작성됩니다.
스크립트 세부 정보
fits.open
다음 줄에서 읽기Planeck의 종일 데이터 맵.planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
[1].header
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
ttype = planck_map[1].header['TTYPE1']
참조"astropy.io를 통해fits 파일에 대한 정보를 얻습니다."N_side
,Ordering
등fits파일의 정보를 얻습니다.여기TTYPE1
를 선택했기 때문에 IStokes 데이터가 그려집니다.
HEALPix()
hp = HEALPix(nside=nside, order=order, frame=Galactic())
여기에 HEALPix가 설정되어 있습니다.frame=Galactic()
에서 이것은 은하 좌표계의 데이터라고 성명하였다.
SkyCoord()
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
여기에 은하수 좌표ra_grid
, dec_grid
범위의 각도도를 설정했다.시험해 보다coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='icrs')
표시되는 데이터는 다음과 같습니다.
interpolate_bilinear_skycoord()
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
interpolate_bilinear_skycoord
함수를 사용하여 이전에 설정한 coords
좌표ttype
에 입력한 데이터 집합tmap
을 변환하고 reshape
함수를 사용하여 데이터의 크기를 성형한다.
잘못
잘못된 문장
만약 astropy의 버전이 낡았다면 다음과 같은interpolatebilinear_스카이코드에서 오류가 있었던 것 같습니다.Traceback (most recent call last):
File "example5.py", line 33, in <module>
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 362, in interpolate_bilinear_skycoord
return self.interpolate_bilinear_lonlat(lon, lat, values)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 201, in interpolate_bilinear_lonlat
return interpolate_bilinear_lonlat(lon, lat, values, order=self.order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 551, in interpolate_bilinear_lonlat
indices, weights = bilinear_interpolation_weights(lon, lat, nside, order=order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 512, in bilinear_interpolation_weights
lon = lon.to_value(u.rad)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy/units/quantity.py", line 888, in __getattr__
self.__class__.__name__, attr))
AttributeError: Longitude instance has no attribute 'to_value'
해결책
다음 명령으로 astropy를 업데이트하면 오류가 발생하지 않습니다.pip install -U astropy
결어
각종 우주 물리의 편의 라이브러리를 사용할 수 있는 astropy를 사용하여fits를 읽고 데이터를 그려봅니다.단순히 HEALPix를 그리는 것만으로도 힐피의 군배가 상승할 수 있다.그러나 가장 중요한 것은astropy와fits파일의 읽기, 데이터 가공을 연합할 수 있는astropy이다힐픽스의 강점인 것 같아서요.
Reference
이 문제에 관하여(astropy_healpix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github-nakasho/items/0c79353f920bb523ec92
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PyPI에 로그인되어 다음 명령을 사용하여 간단하게 설치할 수 있습니다.
pip install astropy-healpix
공식 문서에서도 conda를 사용하는 설치 방법을 소개했으니 적당히 참고하시기 바랍니다.각본
이번에는 다음과 같은 스크립트를 사용했습니다.#!/usr/bin/env python3
from astropy import units as u
from astropy.coordinates import Galactic
from astropy.coordinates import SkyCoord
from astropy_healpix import HEALPix
from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
# read Planck data
planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
# get fits info
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
# set map data
ttype = planck_map[1].header['TTYPE1']
tmap = planck_map[1].data[ttype]
hp = HEALPix(nside=nside, order=order, frame=Galactic())
# sample a 360, 180 grid in RA/Dec
ra = np.linspace(180., -180., 360) * u.deg
dec = np.linspace(90., -90., 180) * u.deg
ra_grid, dec_grid = np.meshgrid(ra, dec)
# set up astropy coordinate objects
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
# interpolate values
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
# make a plot of the interpolated temperatures
plt.figure(figsize=(9, 4.5))
im = plt.imshow(tmap, extent=[-180, 180, -90, 90], cmap='jet', aspect='auto', vmin=0, vmax=1e-3)
plt.colorbar(im)
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
이 작업을 수행하면 다음 그래픽이 작성됩니다.
스크립트 세부 정보
fits.open
다음 줄에서 읽기Planeck의 종일 데이터 맵.planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
[1].header
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
ttype = planck_map[1].header['TTYPE1']
참조"astropy.io를 통해fits 파일에 대한 정보를 얻습니다."N_side
,Ordering
등fits파일의 정보를 얻습니다.여기TTYPE1
를 선택했기 때문에 IStokes 데이터가 그려집니다.
HEALPix()
hp = HEALPix(nside=nside, order=order, frame=Galactic())
여기에 HEALPix가 설정되어 있습니다.frame=Galactic()
에서 이것은 은하 좌표계의 데이터라고 성명하였다.
SkyCoord()
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
여기에 은하수 좌표ra_grid
, dec_grid
범위의 각도도를 설정했다.시험해 보다coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='icrs')
표시되는 데이터는 다음과 같습니다.
interpolate_bilinear_skycoord()
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
interpolate_bilinear_skycoord
함수를 사용하여 이전에 설정한 coords
좌표ttype
에 입력한 데이터 집합tmap
을 변환하고 reshape
함수를 사용하여 데이터의 크기를 성형한다.
잘못
잘못된 문장
만약 astropy의 버전이 낡았다면 다음과 같은interpolatebilinear_스카이코드에서 오류가 있었던 것 같습니다.Traceback (most recent call last):
File "example5.py", line 33, in <module>
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 362, in interpolate_bilinear_skycoord
return self.interpolate_bilinear_lonlat(lon, lat, values)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 201, in interpolate_bilinear_lonlat
return interpolate_bilinear_lonlat(lon, lat, values, order=self.order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 551, in interpolate_bilinear_lonlat
indices, weights = bilinear_interpolation_weights(lon, lat, nside, order=order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 512, in bilinear_interpolation_weights
lon = lon.to_value(u.rad)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy/units/quantity.py", line 888, in __getattr__
self.__class__.__name__, attr))
AttributeError: Longitude instance has no attribute 'to_value'
해결책
다음 명령으로 astropy를 업데이트하면 오류가 발생하지 않습니다.pip install -U astropy
결어
각종 우주 물리의 편의 라이브러리를 사용할 수 있는 astropy를 사용하여fits를 읽고 데이터를 그려봅니다.단순히 HEALPix를 그리는 것만으로도 힐피의 군배가 상승할 수 있다.그러나 가장 중요한 것은astropy와fits파일의 읽기, 데이터 가공을 연합할 수 있는astropy이다힐픽스의 강점인 것 같아서요.
Reference
이 문제에 관하여(astropy_healpix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github-nakasho/items/0c79353f920bb523ec92
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/usr/bin/env python3
from astropy import units as u
from astropy.coordinates import Galactic
from astropy.coordinates import SkyCoord
from astropy_healpix import HEALPix
from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
# read Planck data
planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
# get fits info
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
# set map data
ttype = planck_map[1].header['TTYPE1']
tmap = planck_map[1].data[ttype]
hp = HEALPix(nside=nside, order=order, frame=Galactic())
# sample a 360, 180 grid in RA/Dec
ra = np.linspace(180., -180., 360) * u.deg
dec = np.linspace(90., -90., 180) * u.deg
ra_grid, dec_grid = np.meshgrid(ra, dec)
# set up astropy coordinate objects
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
# interpolate values
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
# make a plot of the interpolated temperatures
plt.figure(figsize=(9, 4.5))
im = plt.imshow(tmap, extent=[-180, 180, -90, 90], cmap='jet', aspect='auto', vmin=0, vmax=1e-3)
plt.colorbar(im)
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
planck_map = fits.open('./LFI_SkyMap_030_1024_R2.01_full.fits')
nside = planck_map[1].header['NSIDE']
order = planck_map[1].header['ORDERING']
ttype = planck_map[1].header['TTYPE1']
hp = HEALPix(nside=nside, order=order, frame=Galactic())
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='galactic')
coords = SkyCoord(ra_grid.ravel(), dec_grid.ravel(), frame='icrs')
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
tmap = tmap.reshape((180, 360))
잘못된 문장
만약 astropy의 버전이 낡았다면 다음과 같은interpolatebilinear_스카이코드에서 오류가 있었던 것 같습니다.
Traceback (most recent call last):
File "example5.py", line 33, in <module>
tmap = hp.interpolate_bilinear_skycoord(coords, tmap)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 362, in interpolate_bilinear_skycoord
return self.interpolate_bilinear_lonlat(lon, lat, values)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/high_level.py", line 201, in interpolate_bilinear_lonlat
return interpolate_bilinear_lonlat(lon, lat, values, order=self.order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 551, in interpolate_bilinear_lonlat
indices, weights = bilinear_interpolation_weights(lon, lat, nside, order=order)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy_healpix/core.py", line 512, in bilinear_interpolation_weights
lon = lon.to_value(u.rad)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/astropy/units/quantity.py", line 888, in __getattr__
self.__class__.__name__, attr))
AttributeError: Longitude instance has no attribute 'to_value'
해결책
다음 명령으로 astropy를 업데이트하면 오류가 발생하지 않습니다.
pip install -U astropy
결어
각종 우주 물리의 편의 라이브러리를 사용할 수 있는 astropy를 사용하여fits를 읽고 데이터를 그려봅니다.단순히 HEALPix를 그리는 것만으로도 힐피의 군배가 상승할 수 있다.그러나 가장 중요한 것은astropy와fits파일의 읽기, 데이터 가공을 연합할 수 있는astropy이다힐픽스의 강점인 것 같아서요.
Reference
이 문제에 관하여(astropy_healpix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/github-nakasho/items/0c79353f920bb523ec92
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(astropy_healpix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/github-nakasho/items/0c79353f920bb523ec92텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)