Je garderai une trace quand je pense que je suis devenu ami avec des crises, qui sont souvent utilisées dans les données astronomiques. Je l'ai fait à partir de zéro pour savoir ce que sont les ajustements.
Premièrement, les ajustements sont un format de fichier souvent utilisé pour les données astronomiques et se compose de deux parties: une partie d'en-tête qui stocke des informations telles que les coordonnées et la fréquence, et une partie de données qui stocke les informations obtenues à partir d'observations. Pour plus d'informations sur wikipedia ... (échapper) https://ja.wikipedia.org/wiki/FITS
Créer des crises qui m'inquiétaient pour une raison quelconque. Est-ce vraiment la voie à suivre? .. .. Je veux croire que c'est bon. Voici un script qui crée des ajustements avec un tableau de [100, 100] pour le moment.
make_fits_1.py
import numpy as np
from astropy.io import fits
x = 100 #x_axis pixel number
y = 100 #y_axis pixel number
z = 100 #z_axis pixel number
###Créer un tableau###
#Temps 3D
data = np.zeros((z, y, x), dtype=np.float32)
#Temps bidimensionnel
#data = np.zeros((y, x), dtype=np.float32)
hdu = fits.PrimaryHDU(data = data)
#Enregistrez les coupes que vous avez faites
hdu.writeto('make_fits.fits',overwrite=True)
Lors de la création d'ajustements pour un cube 3D, modifiez la partie "** Créer un tableau **". Dans cet état, l'en-tête n'a pas encore été inséré, donc même s'il est affiché avec ds9 etc., il ne sera que terne.
Mettons dans l'en-tête. Vous pouvez maintenant ajouter des en-têtes.
python
hdu.header['keyword'] = 'something' #Au moment du mot-clé
hdu.header['keyword'] = something #Lors de la saisie d'informations numériques telles que les coordonnées
À titre d'essai, il dispose d'un tableau 100x100, WCS: Galactic center position 00:00:00.00 00:00:00.00 gal beamsize 20.0 arcsec gridsize 10.0 arcsec Faisons des ajustements.
make_fits_2.py
import numpy as np
from astropy.io import fits
x = 100 #x_axis pixel number
y = 100 #y_axis pixel number
z = 100 #z_axis pixel number
beamsize = 20.0 #arcsec
###Créer un tableau###
#Temps 3D
data = np.zeros((z, y, x), dtype=np.float32)
#Temps bidimensionnel
data = np.zeros((y, x), dtype=np.float32)
hdu = fits.PrimaryHDU(data = data)
#Liste des en-têtes que vous souhaitez mettre
hdu.header['BITPIX'] = -64
hdu.header['NAXIS'] = 2
hdu.header['NAXIS1'] = x
hdu.header['NAXIS2'] = y
hdu.header['BPA'] = 0.000000
hdu.header['BMAJ'] = beamsize/3600
hdu.header['BMIN'] = beamsize/3600
hdu.header['EPOCH'] = 2000
hdu.header['BUNIT'] = 'K '
hdu.header['CTYPE1'] = 'GLON-GLS'
hdu.header['CRVAL1'] = 0.0
hdu.header['CDELT1'] = -beamsize/2/3600
hdu.header['CRPIX1'] = x/2
hdu.header['CROTA1'] = 0.0
hdu.header['CUNIT1'] = 'deg '
hdu.header['CTYPE2'] = 'GLAT-GLS'
hdu.header['CRVAL2'] = 0.0
hdu.header['CDELT2'] = beamsize/2/3600
hdu.header['CRPIX2'] = y/2
hdu.header['CROTA2'] = 0.0
hdu.header['CUNIT2'] = 'deg '
#Enregistrez les coupes que vous avez faites
hdu.writeto('make_fits_2.fits',overwrite=True)
Vous avez maintenant un ajustement qui contient correctement les informations de coordonnées.
Si vous faites une erreur dans l'en-tête, les données seront incorrectes, assurez-vous donc de les vérifier.
Recommended Posts