Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
de:praktikum:sternspektren_baches [2023/11/30 17:54] – Vermuteter Tippfehler jmkubat | de:praktikum:sternspektren_baches [2025/04/02 09:11] (aktuell) – [Reduktion der Daten] rhainich |
---|
Stern_1/ | Stern_1/ |
Darks/ | Darks/ |
Flatdarks/ | Flat_darks/ |
| ThAr_darks/ |
Flats/ | Flats/ |
ThAr/ | ThAr/ |
Stern_2/ | Stern_2/ |
Darks/ | Darks/ |
Flatdarks/ | Flat_darks/ |
... | ... |
| <color #ed1c24>**Hinweis:**</color> **Diese Ordnerstruktur ist für einige Schritte der Datenreduktion notwendig. Es ist daher unbedingt erforderlich, dass die Dateien entsprechend sortiert sind!** |
| |
Es gibt verschiedene Tools, um die im FITS-Format abgelegten zweidimensionalen CCD-Bilder (Images) zu betrachten. Ein Beispiel ist //ds9//, dass im Terminal mittels | Es gibt verschiedene Tools, um die im FITS-Format abgelegten zweidimensionalen CCD-Bilder (Images) zu betrachten. Ein Beispiel ist //ds9//, dass im Terminal mittels |
workon ost_photometry | workon ost_photometry |
| |
erfolgen. Dies ist auch nötig wenn man sich, z.B. nach einer Unterbrechung der Arbeit, erneut mit a12 verbindet und die Datenauswertung fortsetzen möchte. | erfolgen. Dies ist auch nötig wenn man sich, z.B. nach einer Unterbrechung der Arbeit, erneut mit columba verbindet und die Datenauswertung fortsetzen möchte. |
| |
Die OST-Photometrie-Pipeline kann anschließend in dem terminal mittels //pip// wie folgt installiert werden kann: | Die OST-Photometrie-Pipeline kann anschließend in dem terminal mittels //pip// wie folgt installiert werden kann: |
Man kopiere sich das Skript ''1_masterimages.py'' in das lokale Verzeichnis, in dem man die Auswertung des jeweiligen Sterns vornehmen möchte (z.B. ''Stern_1''). Mit diesem Skript kann man unter anderem das Masterdark und das Masterflat erstellen, welche in den folgen Schritten benötigt werden. Des Weiteren addiert (stacked) dieses Skript alle Sternaufnahmen, falls während der Beobachtungen mehr als eines aufgenommen wurden. Es bietet darüber hinaus die Möglichkeit die erstellten Aufnahmen im Nachhinein zu binnen, falls dies während der Beobachtung vergessen wurde. Auch schneidet es nicht benötigte Teile der erstellen Aufnahmen ab, die die weitere Analyse umständlicher machen würden. Zu allerletzt sollte in diesem Skript noch angeben werden, ob die Aufnahmen gespiegelt werden müssen (siehe vorheriger Schritt), sodass auch dies korrigiert werden kann. Der Konfigurationsbereich des Skripts sieht wie folgt aus: | Man kopiere sich das Skript ''1_masterimages.py'' in das lokale Verzeichnis, in dem man die Auswertung des jeweiligen Sterns vornehmen möchte (z.B. ''Stern_1''). Mit diesem Skript kann man unter anderem das Masterdark und das Masterflat erstellen, welche in den folgen Schritten benötigt werden. Des Weiteren addiert (stacked) dieses Skript alle Sternaufnahmen, falls während der Beobachtungen mehr als eines aufgenommen wurden. Es bietet darüber hinaus die Möglichkeit die erstellten Aufnahmen im Nachhinein zu binnen, falls dies während der Beobachtung vergessen wurde. Auch schneidet es nicht benötigte Teile der erstellen Aufnahmen ab, die die weitere Analyse umständlicher machen würden. Zu allerletzt sollte in diesem Skript noch angeben werden, ob die Aufnahmen gespiegelt werden müssen (siehe vorheriger Schritt), sodass auch dies korrigiert werden kann. Der Konfigurationsbereich des Skripts sieht wie folgt aus: |
| |
############################################################################ | <code Python> |
#### Configuration: modify the file in this section #### | ############################################################################ |
############################################################################ | #### Configuration: modify the file in this section #### |
| ############################################################################ |
| |
### | ### |
# Path to the directories with the images | # Path to the directories with the images |
# | # |
# Darks: | # Darks: |
path_darks = '?' | path_darks: str = '?' |
| |
# Flat darks: | # Flat darks: |
path_flat_darks = '?' | path_flat_darks: str = '?' |
| |
# Flats: | # Flats: |
path_flats = '?' | path_flats: str = '?' |
| |
| # Darks for wavelength calibration exposures: |
| path_wavelength_darks: str = '?' |
| |
| # Wavelength calibration exposures: |
| path_wavelength: str = '?' |
| |
| # Spectra: |
| path_spectra: str = '?' |
| |
# Thorium Argon exposures: | # Output directory for the reduced flats. The master files will be saved in |
path_thorium_argon = '?' | # the current directory. |
| out_path: str = 'output' |
| |
# Spectra: | ### |
path_spectra = '?' | # Flip images? Possibilities: True and False |
| # |
| flip_images: bool = False |
| |
# Output directory for the reduced flats. The master files will be saved in | ### |
# the current directory. | # Bin the images? Possibilities: True and False |
out_path = 'output' | # |
| bin_images: bool = False |
| |
### | # Binning factor |
# Flip images? Possibilities: True and False | binning_value: bool = 2 |
# | |
flip_images = False | |
| |
### | ### |
# Bin the images? Possibilities: True and False | # Trim images to remove non essential parts and thus simplify MIDAS handling |
# | # Possibilities: True and False; Default: True |
bin_images = False | # |
| trim_image: bool = True |
# Binning factor | </code> |
binning_value = 2 | |
| |
### | |
# Trim images to remove non essential parts and thus simplify MIDAS handling | |
# Possibilities: True and False; Default: True | |
# | |
trim_image = True | |
| |
In ''path_darks'', ''path_flat_darks'', ''path_flats'', ''path_thorium_argon'' und ''path_spectra'' sind die entsprechenden Unterordner einzutragen, die oben im Abschnitt //Vorbereitungen// erstellt wurden. ''out_path'' ist das Verzeichnis, in dem das Skript Zwischenergebnisse ablegt. Die finalen Dateien (**master_dark.fit**, **master_flat.fit**, **master_thar.fit**, **master_spectrum.fit**) werden im lokalem Verzeichnis abgelegt, sodass sie für die folgenden Schritte einfacher zur Verfügung stehen. | In ''path_darks'', ''path_flat_darks'', ''path_flats'', ''path_wavelength_darks'', ''path_wavelength'' und ''path_spectra'' sind die entsprechenden Unterordner einzutragen, die oben im Abschnitt //Vorbereitungen// erstellt wurden. Die Variable ‚'path_wavelength_darks‘' kann auf **'?'** gesetzt werden, wenn für die ThAr-Belichtungen keine Darks aufgenommen wurden. ''out_path'' ist das Verzeichnis, in dem das Skript Zwischenergebnisse ablegt. Die finalen Dateien (**master_dark.fit**, **master_flat.fit**, **master_wave.fit**, **master_spectrum.fit**) werden im lokalem Verzeichnis abgelegt, sodass sie für die folgenden Schritte einfacher zur Verfügung stehen. |
| |
Sollen die Aufnahmen gespiegelt werden muss noch ''flip_images'' auf ''True'' gesetzt werden. Sollen die Aufnahmen auch gebinned werden ist ebenfalls ''bin_images'' auf ''True'' zu setzen. Der Binningfaktor kann über die Variable ''binning_value'' bestimmt werden. | Sollen die Aufnahmen gespiegelt werden muss noch ''flip_images'' auf ''True'' gesetzt werden. Sollen die Aufnahmen auch gebinned werden ist ebenfalls ''bin_images'' auf ''True'' zu setzen. Der Binningfaktor kann über die Variable ''binning_value'' bestimmt werden. |
| |
| Das Skript wird dann mittels |
| |
| python 1_masterimages.py |
| |
| ausgeführt. |
| |
| **Wichtig:** Wenn die Datenreduktion abgeschlossen ist, deaktivieren Sie die virtuelle Umgebung mit |
| |
| deactivate |
| |
===== Datenauswertung ===== | ===== Datenauswertung ===== |
Das Auffinden der einzelnen Ordnungen, die Identifikation der Emissionslinien im ThAr-Spektrum sowie die entsprechende Zuordnung zwischen den Pixeln und der Wellenlänge wird durch das //MIDAS//-Skript ''calibrate/baches'' erledigt. Der Aufruf kann wie folgt aussehen: | Das Auffinden der einzelnen Ordnungen, die Identifikation der Emissionslinien im ThAr-Spektrum sowie die entsprechende Zuordnung zwischen den Pixeln und der Wellenlänge wird durch das //MIDAS//-Skript ''calibrate/baches'' erledigt. Der Aufruf kann wie folgt aussehen: |
| |
calibrate/baches master_flat.fit master_thar.fit 26 26 24 | calibrate/baches master_flat.fit master_wave.fit 26 26 24 |
| |
Die Parameter haben die folgende Bedeutung: | Die Parameter haben die folgende Bedeutung: |
=============================== | =============================== |
Flat field = master_flat.fit | Flat field = master_flat.fit |
Calibration lamp = master_thar.fit | Calibration lamp = master_wave.fit |
Calibration table = thar.fit | Calibration table = thar.fit |
Num. of orders = 0026 | Num. of orders = 0026 |
In diesem Fall sollte man das Skript mittels der Eingabe einer ''2'' beenden und mit einer reduzierten Zahl an Ordnungen erneut ausführen z.B.: | In diesem Fall sollte man das Skript mittels der Eingabe einer ''2'' beenden und mit einer reduzierten Zahl an Ordnungen erneut ausführen z.B.: |
| |
calibrate/baches master_flat.fit master_thar.fit 23 20 20 | calibrate/baches master_flat.fit master_wave.fit 23 20 20 |
| |
Es hat sich bewährt die Anzahl der Ordnungen schrittweise zu reduzieren bis ein erfolgreiches Auffinden möglich ist. Ist dies erfolgt wird das Flatfield sowie die identifizierten Ordnungen (siehe unten) in einem externen Fenster angezeigt. Hier sollte kontrolliert werden ob die Markierungen auch zentral auf den einzelnen Ordnungen liegen und ob diese horizontal verlaufen. Die linke Abbildung zeigt einen erfolgreichen Testlauf, wohingegen die mittlere Abbildungen eine fehlgeschlagene Identifizierung zeigt. Die rechte Abbildung zeigt wiederum eine Flatfield-Aufnahme mit der QHY268M, bei der es vorkommen kann, das //MIDAS// nicht alle identifizierten Ordnungen nicht fertig zeichnet. An den Ordnungsnummern, kann aber zumindest erahnt werden, dass alle Ordnungen erfolgreich identifiziert wurden. | Es hat sich bewährt die Anzahl der Ordnungen schrittweise zu reduzieren bis ein erfolgreiches Auffinden möglich ist. Ist dies erfolgt wird das Flatfield sowie die identifizierten Ordnungen (siehe unten) in einem externen Fenster angezeigt. Hier sollte kontrolliert werden ob die Markierungen auch zentral auf den einzelnen Ordnungen liegen und ob diese horizontal verlaufen. Die linke Abbildung zeigt einen erfolgreichen Testlauf, wohingegen die mittlere Abbildungen eine fehlgeschlagene Identifizierung zeigt. Die rechte Abbildung zeigt wiederum eine Flatfield-Aufnahme mit der QHY268M, bei der es vorkommen kann, das //MIDAS// nicht alle identifizierten Ordnungen nicht fertig zeichnet. An den Ordnungsnummern, kann aber zumindest erahnt werden, dass alle Ordnungen erfolgreich identifiziert wurden. |
Be careful, to enter the correct day if observations were made | Be careful, to enter the correct day if observations were made |
past midnight! | past midnight! |
time_zone = ? # type +1 for the central european time zone or +2 when time was | time_zone = '?' # type +1 for the central european time zone or +2 when time was |
switched to daylight saving | switched to daylight saving |
| |
##### Observatory ##### | ##### Observatory ##### |
observatory_latitude = ? # values in degrees, north is positive | observatory_latitude = '?' # values in degrees, north is positive |
observatory_longitude = ? # values in degrees, east is positive | observatory_longitude = '?' # values in degrees, east is positive |
observatory_height_above_MSL = ? # enter in meter | observatory_height_above_MSL = '?' # enter in meter |
| |
| Das Skript wird dann mittels |
| |
| python 2_barycentric_velocity_correction.py |
| |
| ausgeführt. |
| |
Als Resultat bekommt man die baryzentrische Geschwindigkeitskorrektur in km/s. | Als Resultat bekommt man die baryzentrische Geschwindigkeitskorrektur in km/s. |
| |
{{section>deng:praktikum:a12:python#Deutsch&noheader}} | {{section>deng:praktikum:a12:python#Deutsch&noheader}} |
| |
| **Wichtig:** Stellt sicher, dass die für die Datenreduktion verwendete virtuelle Umgebung deaktiviert ist, bevor ihr fortfahrt: |
| |
| deactivate |
| |
Für die optische Aufbereitung der Spektren steht im Ordner ''~/scripts/n1_baches/'' das Skript ''3_printmasterplot.py'' zur Verfügung, welches sowohl das von //MIDAS// erstellte Gesamtspektrum als auch die einzelnen Spektren der unterschiedlichen Ordnungen aus den FITS-Dateien extrahieren und anschließend darstellen kann. | Für die optische Aufbereitung der Spektren steht im Ordner ''~/scripts/n1_baches/'' das Skript ''3_printmasterplot.py'' zur Verfügung, welches sowohl das von //MIDAS// erstellte Gesamtspektrum als auch die einzelnen Spektren der unterschiedlichen Ordnungen aus den FITS-Dateien extrahieren und anschließend darstellen kann. |
| ''percentage_line_flux_must_be_below_continuum'' | Diese Variable bestimmt, wie tief Linien im Vergleich zum Kontinuum eingesenkt sein müssen, sodass Linienidentifikation für die entsprechenden Linien dargestellt werden. Je höher dieser Wert, desto weniger Linienidentifikation werden dargestellt, da dann nur um so stärke Linien dieses Kriterium erfüllen. **Hinweis:** Ist die Radialgeschwindigkeit falsch und hier ein Wert größer Null gesetzt, dann funktioniert die Linienidentifikation oft nicht. Daher sollte diese Variable auf Null gesetzt werden, falls die Radialgeschwindigkeit unbekannt ist. | | | ''percentage_line_flux_must_be_below_continuum'' | Diese Variable bestimmt, wie tief Linien im Vergleich zum Kontinuum eingesenkt sein müssen, sodass Linienidentifikation für die entsprechenden Linien dargestellt werden. Je höher dieser Wert, desto weniger Linienidentifikation werden dargestellt, da dann nur um so stärke Linien dieses Kriterium erfüllen. **Hinweis:** Ist die Radialgeschwindigkeit falsch und hier ein Wert größer Null gesetzt, dann funktioniert die Linienidentifikation oft nicht. Daher sollte diese Variable auf Null gesetzt werden, falls die Radialgeschwindigkeit unbekannt ist. | |
| |
| <code Python> |
############################################################################ | ############################################################################ |
#### Configuration: modify the file in this section #### | #### Configuration: modify the file in this section #### |
############################################################################ | ############################################################################ |
| |
# Name of file with individual orders | # Name of file with individual orders |
file_with_orders = "master_spectrum_wr.fit" | file_with_orders = "master_spectrum_wr.fit" |
| |
# Name of file with merged spectrum | # Name of file with merged spectrum |
file_with_merged_spectrum = "master_spectrum_wrm.fit" | file_with_merged_spectrum = "master_spectrum_wrm.fit" |
| |
# Name of the object | # Name of the object |
object_name = "?" | object_name = "?" |
| |
| |
### | ### |
# Radial velocity [km/s] | # Radial velocity [km/s] |
# The specification of the radial velocity is necessary for the | # The specification of the radial velocity is necessary for the |
# line identification to work correctly (see below). | # line identification to work correctly (see below). |
radial_velocity = 0. | radial_velocity = 0. |
| |
| |
### | ### |
# Line identifications | # Line identifications |
# | # |
# Ions for which line markers are to be drawn. | # Ions for which line markers are to be drawn. |
# Example: ["HI", "FeI", ...] | # Example: ["HI", "FeI", ...] |
ions = [] | ions = [] |
| |
# Add lines that are not in the default database | # Add lines that are not in the default database |
# Format: {"Element descriptor": [[wavelength, alignment parameter]]} | # Format: {"Element descriptor": [[wavelength, alignment parameter]]} |
# alignment parameter possibilities: "center", "left", "right" | # alignment parameter possibilities: "center", "left", "right" |
manual_lines = {"Example Element": [[0.,"center"]], "Example Element 2": [[0.,"left"]]} | manual_lines = {"Example Element": [[0.,"center"]], "Example Element 2": [[0.,"left"]]} |
| |
# Percent the line flux must be lower than the continuum | # Percent the line flux must be lower than the continuum |
percentage_line_flux_must_be_below_continuum = 3. | percentage_line_flux_must_be_below_continuum = 3. |
| </code> |
| |
| Das Skript wird dann mittels |
| |
| python 3_printmasterplot.py |
| |
| ausgeführt. |
| |
Durch das Skript werden standardmäßig zwei PDF-Dateien erstellt: ''spectrum_panels_MIDAS-merged_<objectname>.pdf'' und ''spectrum_total_MIDAS-merged_<objectname>.pdf''. Die Datei mit ''total'' im Namen zeigt das Spektrum in einem einzigen Plot. Da aufgrund des großen Spektralbereichs in diesem Plot oft kaum Details zu sehen sind, wird in der zweiten Datei (mit ''panels'' im Namen) das jeweilige Spektrum verteilt über mehrerer "Panels" dargestellt, was wiederum die Identifizierung einzelner Linien deutlich vereinfacht. | Durch das Skript werden standardmäßig zwei PDF-Dateien erstellt: ''spectrum_panels_MIDAS-merged_<objectname>.pdf'' und ''spectrum_total_MIDAS-merged_<objectname>.pdf''. Die Datei mit ''total'' im Namen zeigt das Spektrum in einem einzigen Plot. Da aufgrund des großen Spektralbereichs in diesem Plot oft kaum Details zu sehen sind, wird in der zweiten Datei (mit ''panels'' im Namen) das jeweilige Spektrum verteilt über mehrerer "Panels" dargestellt, was wiederum die Identifizierung einzelner Linien deutlich vereinfacht. |
| |
=== Identifizieren der Spektrallinien === | === Identifizieren der Spektrallinien === |
| |
/* | |
Es besteht die Möglichkeit, die im Spektrum gefundenen Linien im Spektrumsplot einzuzeichnen. In der Datei ''absorption_lines.dat'' im Skriptverzeichnis sind einige der wichtigsten Linien aufgelistet, z.B. | |
| |
3888.052 HI | |
3970.075 HI | |
plot/axes 4000,8000 0,10 0 "Wellenlänge" "Relative Intensität" | |
4861.38 HI | |
6562.88 HI | |
5801.33 5811.98 CIV | |
| |
Wie im letzten Eintrag zu sehen ist, können auch Ionen mit Multipletübergängen dargestellt werden. Um Linien im Plot zu kennzeichnen, muss im Skript ''2_printmasterplot.py'' die Variable ''lineFile'' auf die jeweilige aktuelle Version der Datei mit den Linienidentifikation verweisen. Der Name der Datei kann dabei natürlich individuell angepasst werden. | |
| |
Es ist jedoch darauf zu achten, dass die Datei nicht die Endung ''.dat'' enthält, da //MIDAS// diese sonst als temporäre Datei identifizieren und unter Umständen löschen würde. | |
*/ | |
| |
Die **Ionen**, die über die Linienidentifikationen identifiziert werden sollen, **müssen in der Variable "ions" angeben werden**. **Geschieht dies nicht werden keine Linienidentifikationen dargestellt!** Das Skript liest hierfür die Linieninformationen aus der Datei ''atomic_lines.tsv''. **Da diese Datei aber nur eine Auswahl an Spektrallinien**, enthält, die in den vielen unterschiedlichen Sternen auftreten, **ist es nötig nach zusätzlichen Spektralllinien** und deren Übergängen z.B. in der [[http://physics.nist.gov/PhysRefData/ASD/index.html|NIST-Datenbank]] **zu suchen.** Wie bereits erwähnt haben wie für diese Datenbank auch eine [[de:praktikum:nist|Bedienungsanleitung]]. Die so bestimmten Linieninformationen müssen dann in die Variable ''manual_lines'' eingetragen werden. | Die **Ionen**, die über die Linienidentifikationen identifiziert werden sollen, **müssen in der Variable "ions" angeben werden**. **Geschieht dies nicht werden keine Linienidentifikationen dargestellt!** Das Skript liest hierfür die Linieninformationen aus der Datei ''atomic_lines.tsv''. **Da diese Datei aber nur eine Auswahl an Spektrallinien**, enthält, die in den vielen unterschiedlichen Sternen auftreten, **ist es nötig nach zusätzlichen Spektralllinien** und deren Übergängen z.B. in der [[http://physics.nist.gov/PhysRefData/ASD/index.html|NIST-Datenbank]] **zu suchen.** Wie bereits erwähnt haben wie für diese Datenbank auch eine [[de:praktikum:nist|Bedienungsanleitung]]. Die so bestimmten Linieninformationen müssen dann in die Variable ''manual_lines'' eingetragen werden. |
| |
/* | |
Darüber hinaus ist es empfohlen, für jeden Stern eine individuelle Datei mit Linienidenifikationen zu erstellen. **Linien, die nicht im Stern wieder gefunden werden, sind aus der entsprechenden Datei zu entfernen.** | |
| |
Informationen zu Spektrallinien und den dazugehörigen Übergängen kann man z.B. in der [[de:praktikum:nist|NIST Datenbank]] finden. | |
*/ | |
| |
=== Bestimmung des Spektraltyps === | === Bestimmung des Spektraltyps === |