지난 포스팅에서 말머리 성운(IC434)과 centaurus A를 파이썬으로 분석하였습니다. 그리고 원래 계획은 M87을 분석해 볼 예정이었으나, 은하 자체도 그렇고, 다소 내용이 어려울 것 같아, 우리에게 가장 친숙한 은하인 안드로메다 은하를 가지고 해 볼 예정입니다.
안드로메다 은하야 워낙 유명하고, 가장 잘 알려진 정상나선은하인 만큼 자세한 설명은 생략하겠습니다. 위 그럼과 같은 모습으로 보이는 것도 이미 잘 알려진 사실이구요. 바로 분석 시작해 보겠습니다.
코드에 관한 자세한 설명은 지난 포스팅에서 모두 다루었습니다. 사실 이건 전혀 어렵지 않습니다. 그냥 파일 네임에 fits 파일과 폴더 주소 바꾸고, 그래프 제목, 컬러바 제목 같은거만 바꾼뒤, imshow에서 vmin과 vmax값만 바꾸어 주면 됩니다. 처음 접하는 데이터이기 때문에, vmin이나 vmax를 추정하기 어렵습니다. 이런 경우 vmin과 vmax는 다 지워도 됩니다. 그러면 프로그램이 알아서 자동으로 잡아줍니다.
bar=plt.imshow(hdu.data, origin='lower', cmap=plt.cm.gist_heat, vmin=0, vmax=50)
라는 코드에서 vmin과 vmax를 삭제
bar=plt.imshow(hdu.data, origin='lower', cmap=plt.cm.gist_heat)
여기까지만 써 주는 겁니다.
저의 경우 미리 돌려보고, vmin=0, vmax=50임을 확인하였습니다. 이렇게 하여 완성된 전체 코드
import matplotlib.pyplot as plt
from astropy.wcs import WCS ##wcs-> world coordinate system
from astropy.io import fits
from astropy.utils.data import get_pkg_data_filename
import numpy as np
filename = get_pkg_data_filename('C:\\111\\herschel data\\M31_250.fits')
hdu = fits.open(filename)[1]
wcs = WCS(hdu.header)
fig = plt.figure(figsize=(18, 12))
plt.subplot(projection=wcs)
plt.grid(color='white', ls='dotted')
bar=plt.imshow(hdu.data, origin='lower', cmap=plt.cm.gist_heat, vmin=0, vmax=50)
plt.colorbar(bar, label='Herschel 250$\mu$m (MJy/sr)')
plt.xlabel('RA')
plt.ylabel('Dec')
plt.title('M31 dust continuum map(250'r'$\mu$m)', size=15)
plt.savefig('C:\\111\\M31.png', bbox_inches='tight', pad_inches=0.1, dpi=300)
plt.show()
이제 이렇게 짠 코드를 돌리면 아래와 같은 결과물이 나옵니다.
비교를 위해 가시광선에서 촬영한 영상과 나란히 둬 보겠습니다.
성간 티끌이 방출하는 근적외선을 통해 은하를 보니 은하의 구조가 좀 더 뚜렷하게 보이는 것을 확인할 수 있습니다.
이렇게 하여 파이썬을 활용해 허셜 우주망원경으로 관측한 FITS 파일을 분석하는 방법에 대해 알아 보았습니다. 파이썬을 가지고 하긴 했지만, SAO Image DS9이라는 프로그램을 이용하면 훨씬 더 쉽게 할 수는 있습니다. ㅎㅎㅎ ;;; 나중에 기회가 된다면, DS9에 대한 간단한 소개정도는 해 보겠습니다.
댓글