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