[PYTHON] Ich möchte Passungen aus meinem Kopf machen

Einführung

Ich werde ein Protokoll führen, wenn ich denke, dass ich mich mit Anfällen angefreundet habe, die häufig in astronomischen Daten verwendet werden. Ich habe das von Grund auf neu gemacht, um zu erfahren, was passt.

Erstens ist Fits ein Dateiformat, das häufig für astronomische Daten verwendet wird und aus zwei Teilen besteht: einem Header-Teil, in dem Informationen wie Koordinaten und Häufigkeit gespeichert sind, und einem Datenteil, in dem aus Beobachtungen gewonnene Informationen gespeichert sind. Weitere Informationen zu Wikipedia ... (Flucht) https://ja.wikipedia.org/wiki/FITS

Passungen erstellen

Erstellen von Anfällen, über die ich mir aus irgendeinem Grund Sorgen gemacht habe. Ist das wirklich der richtige Weg? .. .. Ich möchte glauben, dass es gut ist. Hier ist ein Skript, das vorerst Anpassungen mit einem Array von [100, 100] erstellt.

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

###Array erstellen###
#3D Zeit
data = np.zeros((z, y, x), dtype=np.float32)
#Zweidimensionale Zeit
#data = np.zeros((y, x), dtype=np.float32)

hdu = fits.PrimaryHDU(data = data)

#Speichern Sie die von Ihnen vorgenommenen Anpassungen
hdu.writeto('make_fits.fits',overwrite=True)

Ändern Sie beim Erstellen von Passungen für einen 3D-Würfel den Teil "** Array erstellen **". In diesem Zustand wurde der Header noch nicht eingefügt. Selbst wenn er mit ds9 usw. angezeigt wird, wird er nur als langweilig angezeigt. スクリーンショット 2019-11-28 0.05.13.png

Lassen Sie uns in die Kopfzeile setzen. Sie können jetzt Header hinzufügen.

Header hinzufügen

python


hdu.header['keyword'] = 'something' #Zum Zeitpunkt des Keywords
hdu.header['keyword'] = something   #Bei der Eingabe numerischer Informationen wie Koordinaten

Als Test hat es ein 100x100 Array, WCS: Galactic center position 00:00:00.00 00:00:00.00 gal beamsize 20.0 arcsec gridsize 10.0 arcsec Lass uns passen.

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

###Array erstellen###
#3D Zeit
data = np.zeros((z, y, x), dtype=np.float32)
#Zweidimensionale Zeit
data = np.zeros((y, x), dtype=np.float32)

hdu = fits.PrimaryHDU(data = data)

#Liste der Header, die Sie einfügen möchten
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     '          

#Speichern Sie die von Ihnen vorgenommenen Anpassungen
hdu.writeto('make_fits_2.fits',overwrite=True)

Jetzt haben Sie eine Anpassung, die die Koordinateninformationen richtig enthält. スクリーンショット 2019-11-28 0.48.52.png

Vorsichtsmaßnahmen für Anfälle (Gebot an sich selbst)

Wenn Sie einen Fehler in der Kopfzeile machen, sind die Daten falsch. Überprüfen Sie sie daher unbedingt.

Recommended Posts

Ich möchte Passungen aus meinem Kopf machen
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich möchte ein Automatisierungsprogramm erstellen!
Ich möchte eine Parameterliste aus CloudFormation-Code (yaml) erstellen.
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte an eine Wiederholung denken können
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte ein Spiel mit Python machen
Ich möchte Ceres Solver aus Python verwenden
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
[Ansible] Ich möchte meine eigene Funktion über das Vorlagenmodul (Makro) aufrufen.
Ich möchte den Dateinamen von DataLoader sehen
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte SUDOKU lösen
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte viele Prozesse von Python aus starten
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte systemd grob verstehen
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich möchte automatisch hochwertige Teile aus den von mir aufgenommenen Videos finden
Ich habe versucht, Kanas handschriftliche Zeichenerkennung Teil 1/3 zuerst von MNIST zu machen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Ich möchte mich mit der Standardsicherheitsgruppe von ALB von CDK anlegen
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
[Twitter] Ich möchte die heruntergeladenen vergangenen Tweets (meines Kontos) in eine schöne CSV verwandeln
Ich möchte Spyder an die Taskleiste anheften
Ich möchte wütend auf meine Mutter werden, wenn die Erinnerung knapp ist
Ich möchte Objekte mit OpenCV erkennen
Ich möchte kühl auf die Konsole ausgeben
Warum ich von Java zu Dart gewechselt bin
Ich möchte in der Einschlussnotation drucken
Ich möchte DB mit Djangos ORM von einer externen Anwendung aus betreiben
Ich möchte sie alle zusammen kratzen.
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte nur ein Signal vom Sub-Thread zum Haupt-Thread senden
Tipps zum Bearbeiten von numpy.ndarray aus c ++ - Ich möchte einen Iterator verwenden -
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte mit dem Reim part3 umgehen
Ich möchte eine Python-Umgebung erstellen
Ich möchte Linux auf dem Mac verwenden
Ich habe mir eine Möglichkeit ausgedacht, aus einem Foto ein 3D-Modell zu erstellen.
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte die Django Debug Toolbar in Ajax-Anwendungen verwenden
Ich möchte meine Gefühle mit den Texten von Mr. Children ausdrücken
Ich möchte IPython Qt Console verwenden
Ich möchte den Fortschrittsbalken anzeigen