Wie extrahiert man Galaxienspektren für verschiedene Radien in Python für Spektren, die mit einem Langspaltspektrografen aufgenommen wurden?

Ich versuche, die Kinematik aus der elliptischen Galaxie NGC 4697 mit dem von Bender beschriebenen Fourier Correlation Quotient (FCQ)-Algorithmus zu extrahieren ( http://adsabs.harvard.edu/full/1990A%26A...229..441B ). Ich arbeite mit dem Sternspektrum des K3-III-Sterns hd132345 als Vorlage und den Galaxienspektren entlang der Hauptachse von NGC 4697. Beide Spektren wurden mit einem Langspalt-Spektrographen aufgenommen. Ich habe eine erste Version des FCQ-Algorithmus implementiert, mein aktuelles Problem ist, dass ich nicht ganz sicher bin, wie ich die Galaxienspektren für verschiedene Radien extrahieren soll (ich bin neu in der Arbeit mit astrophysikalischen Spektren im Fits-Format). Darunter zeige ich meine ersten Codezeilen für die Datenerfassung.

file_temp = dir + '/hd132345.fits'              # template spectra: star hd132345 (K3-IIICN 2 B)
file_gal = dir + '/ngc_4697_major_axis.fits'    # galaxy spectra along major axis from ngc 4697`   
hdu_temp = fits.open(file_temp)
hdu_gal = fits.open(file_gal)

hdr_temp = hdu_temp[0].header
hdr_gal = hdu_gal[0].header
data_gal = hdu_gal[0].data
data_temp = hdu_temp[0].data

# extract wavelength array and flux
flux_gal = data_gal[0]
flux_temp = data_temp
w_gal = WCS(hdr_gal, naxis=1, relax=False, fix=False)
loglam_gal = w_gal.wcs_pix2world(np.arange(len(flux_gal)), 0)[0]
w_temp = WCS(hdr_temp, naxis=1, relax=False, fix=False)
loglam_temp = w_temp.wcs_pix2world(np.arange(len(flux_temp)), 0)[0]`

Geplottet flux_gal über loglam_gal und flux_temp über loglam_temp sieht wie folgt aus (Spektren werden in loglam rebinned). Die Rotverschiebung wurde noch nicht entfernt. Ich habe mich gefragt, warum die Absorptionslinien der Schablone breiter sind als die der Galaxie, da es eigentlich umgekehrt sein sollte.

Geben Sie hier die Bildbeschreibung ein

Der Header meiner Galaxy-Fits-Datei:

Geben Sie hier die Bildbeschreibung ein

Ich verstehe, dass die Schlüsselwörter CRVAL1 und CRVAL2 die Anfangswerte für ln Lambda in A und den Radius in Bogensekunden beschreiben. Während CDELT1 und CDELT2 die Inkremente ln Lambda und den Radius beschreiben. Also sollte ich alle 0,2 Bogensekunden ein Spektrum für meine Galaxie haben. Ich bin mir nicht sicher, wie ich diese aus meinen Input-Fits-Dateien extrahieren soll und würde mich sehr über eine Antwort freuen. Muss ich meine Galaxienspektren für alle Radien in den Restwellenlängenrahmen verschieben oder kann ich das alles irgendwie im Voraus tun, da die Rotverschiebung für alle Radien gleich sein sollte? Über Tipps oder Kommentare zu diesem Thema würde ich mich freuen.


Dank des Kommentars von Peter Erwin sehen die Ergebnisse nun wie folgt aus. Das gesamte 2D-Bild-Spektralbild von NGC-4697 entlang der Hauptachse (angezeigt mit SAOImage):

Geben Sie hier die Bildbeschreibung ein

Das Spektrum des Galaxienzentrums, aufgenommen in Zeile 597. (flux_gal_center = data_gal(597,:)):

Geben Sie hier die Bildbeschreibung ein

Ein kurzer Kommentar zum (hinzugefügten) Spektralbild: Wenn Sie genau hinsehen, können Sie die Galaxienrotation sehen. Die vertikalen dunklen Streifen sind die Absorptionslinien, die oberhalb der Galaxienzentrumsreihe nach links verschoben sind (= Blauverschiebung relativ zum Galaxienzentrum) und darunter nach rechts verschoben sind (= Rotverschiebung relativ zum Galaxienzentrum). Was irgendwie cool ist.

Antworten (1)

Ich habe mich gefragt, warum die Absorptionslinien der Schablone breiter sind als die der Galaxie, da es eigentlich umgekehrt sein sollte.

Du hast Recht, dass es umgekehrt sein sollte. Der Grund, warum das Diagramm verwirrend aussieht, ist, dass Sie nicht wirklich das Galaxienspektrum im oberen Bereich zeichnen; Sie zeichnen eine Kombination aus Rauschen und fehlendem Signal.

Was passiert ist, ist, dass Sie durch die Definition des Galaxienspektrums als data_gal[0]die erste (untere) Zeile aus dem 2D-Bild extrahiert haben, die weit vom tatsächlichen Galaxienlicht entfernt ist. ngc_4697_major_axis.fitsIch würde die Anzeige in einem FITS-Bildanzeigeprogramm (wie SAOimage DS9 ) vorschlagen . Das Spektrum, das dem Zentrum der Galaxie entspricht, ist die hellste Linie, die in der Mitte des Bildes verläuft. (Die Bildachsen sind die Wellenlänge in der einen Richtung und der Abstand entlang des Schlitzes in der senkrechten Richtung.)

Hier ist ein Beispiel von der Gemini GMOS-Instrumenten-Webseite . Sie können die helle Zone sehen, die durch die Mitte des Bildes verläuft; Dies ist das Zentrum der Galaxie, das schwächer wird, wenn Sie nach oben oder unten gehen (dh entlang des Schlitzes in beide Richtungen):Geben Sie hier die Bildbeschreibung ein

Finden Sie heraus, welcher Zeile oder Zeilen das entspricht, und extrahieren Sie sie über flux_gal = data_gal[n_row,:](für eine einzelne Zeile) oder flux_gal = np.mean(data_gal[n_row1:n_row2,:], 0)um den Mittelwert der Zeilen n_row1 bis (n_row2 - 1) zu erhalten.

(Denken Sie daran, dass Python und Numpy Bildkoordinaten als [row_number, column_number] = [y, x] behandeln, wobei x und y den normalen Koordinaten entsprechen, wenn das Bild in SAOimage DS9 angezeigt wird.)

Um Spektren in unterschiedlichen radialen Abständen vom Galaxienzentrum zu extrahieren, gehen Sie genauso vor, wählen Sie jedoch Zeilen (oder Zeilenbereiche) über oder unter der Zeile aus, die dem Galaxienzentrum entspricht. Wenn Sie sich weiter von der Mitte entfernen, wird das S/N schlechter, sodass Sie wahrscheinlich mit dem Summieren oder Mitteln über mehrere Zeilen beginnen möchten.

Muss ich meine Galaxienspektren für alle Radien in den Restwellenlängenrahmen verschieben oder kann ich das alles irgendwie im Voraus tun, da die Rotverschiebung für alle Radien gleich sein sollte?

Im Allgemeinen möchten Sie das Galaxienspektrum nicht verschieben (es sei denn, der FCQ-Algorithmus erfordert dies). Die Rotverschiebung der einzelnen Spektren ist schließlich eines der Dinge, die Sie zu messen versuchen.

Die Rotverschiebung für alle Radien wird mit ziemlicher Sicherheit nicht gleich sein, da die Rotverschiebung bei jedem gegebenen Radius die Summe der Rotverschiebung der Galaxie (Hubble-Fluss + besondere Geschwindigkeit der Galaxie) und der mittleren Rotationsgeschwindigkeit der Sterne bei diesem Radius ist . Einige Galaxien ("langsame Rotatoren") haben möglicherweise fast keine Rotation, aber NGC 4697 ist ein "schneller Rotator", und ich glaube, dass die Rotationsgeschwindigkeit reichen wird ± 100 km/s in einem Radius von 10 Bogensekunden vom Galaxienkern entfernt entlang der Hauptachse.

Ich bin sehr dankbar für die freundliche Unterstützung, danke. So kann ich bei jeder Reihe von der Mitte aus ein Spektrum aufnehmen. Ist es richtig, dass, wenn ich die Spektralinformationen von Zeile 598 verwenden würde, der Abstand vom Zentrum jetzt 0,2 wie in Radien entsprechen würde? Da das Schlüsselwort CRDELT2 den Wert 0,2 hat? Angenommen, ich möchte die Entfernung vom Zentrum der Galaxie aus Zeile 450 berechnen. Entspräche der Radius R: R=CRVAL2+(450-1)*CDELT2 ?
@trynerror 1. Ich denke , CDELT = 0,2 bedeutet, dass der Abstand entlang des Schlitzes 0,2 Bogensekunden / Pixel beträgt, obwohl es schön wäre, wenn die Schlüsselwörter CTYPE * Werte hätten und nicht leer wären. Ich bin mir nicht ganz sicher, ob Sie sich blind auf das Schlüsselwort CRVAL2 verlassen sollten; Es ist wahrscheinlich sicherer, es zu ignorieren und die zentrale (Zeilen-) Koordinate selbst zu bestimmen. Dann wäre der Radius von der Mitte der Zeile Y (Y - Y_cen) * CDELT2.
Wenn Sie das Originalpapier ausfindig machen können, von dem diese Daten stammen, könnte es Ihnen sagen, wie groß der Abstand entlang des Schlitzes in Bogensekunden war.
Ja, mir wurde gesagt, dass CDELT=0,2 0,2 ​​As/Pixel bedeutet. Ich bin mir tatsächlich etwas unsicher, wie ich die genaue "mittlere" Reihe bestimmen soll, da es nicht so einfach ist, verschiedene Helligkeitsstufen im hellen zentralen Bereich der Spektren zu unterscheiden.
Ich würde die Mittellinie bestimmen, indem ich das Maximum (z. B. Anpassen einer Gauß-Kurve) an das Intensitätsprofil der Liniensummen finde.