[PYTHON] Je veux faire des crises de ma tête

introduction

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 ajustements

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. スクリーンショット 2019-11-28 0.05.13.png

Mettons dans l'en-tête. Vous pouvez maintenant ajouter des en-têtes.

Ajouter un en-tête

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. スクリーンショット 2019-11-28 0.48.52.png

Précautions pour faire des ajustements (commandement à vous-même)

Si vous faites une erreur dans l'en-tête, les données seront incorrectes, assurez-vous donc de les vérifier.

Recommended Posts

Je veux faire des crises de ma tête
Je veux créer du code C ++ à partir de code Python!
Je veux faire un programme d'automatisation!
Je souhaite créer une liste de paramètres à partir du code CloudFormation (yaml)
Je veux faire de matplotlib un thème sombre
Je souhaite me connecter à PostgreSQL à partir de plusieurs langues
Je veux pouvoir penser à la récurrence
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
Je veux faire un jeu avec Python
Je veux utiliser le solveur ceres de python
[Python] Je veux gérer 7DaysToDie depuis Discord! 2/3
[Ansible] Je souhaite appeler ma propre fonction à partir du module de modèle (macro)
Je veux voir le nom de fichier de DataLoader
[Python] Je veux faire d'une liste imbriquée un taple
Je veux résoudre SUDOKU
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux démarrer beaucoup de processus à partir de python
Je souhaite calculer le temps d'arrêt autorisé à partir du taux de fonctionnement
Je veux faire une macro de clic avec pyautogui (Outlook)
Je veux installer le package de requirements.txt avec poésie
Je souhaite envoyer un message de Python à LINE Bot
Je veux rendre le type de dictionnaire dans la liste unique
Je veux ajouter un joli complément à input () en python
Je veux comprendre à peu près systemd
Je veux gratter des images et les former
Je veux faire ○○ avec les Pandas
Je veux copier l'annotation de yolo
Je veux déboguer avec Python
Je veux trouver automatiquement des pièces de haute qualité à partir des vidéos que j'ai tournées
J'ai essayé de faire la reconnaissance de caractères manuscrits de Kana Partie 1/3 D'abord à partir de MNIST
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Je veux jouer avec le groupe de sécurité par défaut d'ALB à partir de CDK
Je veux vérifier la position de mon visage avec OpenCV!
[Twitter] Je veux faire des tweets téléchargés (de mon compte) dans un beau CSV
Je veux épingler Spyder à la barre des tâches
Je veux me mettre en colère contre ma mère quand la mémoire est serrée
Je veux détecter des objets avec OpenCV
Je veux sortir froidement sur la console
Pourquoi je suis passé de Java à Dart
Je veux imprimer dans la notation d'inclusion
Je souhaite utiliser DB en utilisant l'ORM de Django à partir d'une application externe
Je veux les gratter tous ensemble.
Je veux gérer la rime part1
Je souhaite envoyer un signal uniquement du sous-thread au thread principal
Conseils pour manipuler numpy.ndarray à partir de c ++ -Je veux utiliser un itérateur-
Je veux écrire un blog avec Jupyter Notebook
Je veux gérer la rime part3
Je veux créer un environnement Python
Je veux utiliser Linux sur mac
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.
Je veux installer Python avec PythonAnywhere
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Je souhaite utiliser Django Debug Toolbar dans les applications Ajax
Je veux exprimer mes sentiments avec les paroles de Mr. Children
Je souhaite utiliser la console IPython Qt
Je veux afficher la barre de progression