Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:praktikum:photometrie_python [2026/04/21 13:21] – [Datenauswertung mit Python] rhainich | de:praktikum:photometrie_python [2026/04/23 15:12] (aktuell) – [Kreuzkorrelation mit den extrahierten Daten] rhainich | ||
|---|---|---|---|
| Zeile 266: | Zeile 266: | ||
| <code Python> | <code Python> | ||
| - | x_V = photo_V[' | + | x_V = photo_V[' |
| - | y_V = photo_V[' | + | y_V = photo_V[' |
| </ | </ | ||
| sowie | sowie | ||
| <code Python> | <code Python> | ||
| - | x_B = photo_B[' | + | x_B = photo_B[' |
| - | y_B = photo_B[' | + | y_B = photo_B[' |
| </ | </ | ||
| Zeile 387: | Zeile 387: | ||
| </ | </ | ||
| - | Wie bereits oben korrelieren wir auch hier die Kalibrationsdaten mit unseren Ergebnissen mittels der'' | + | Wie bereits oben korrelieren wir auch hier die Kalibrationsdaten mit unseren Ergebnissen mittels der'' |
| <code Python> | <code Python> | ||
| Zeile 425: | Zeile 425: | ||
| </ | </ | ||
| - | === Magnitudenkalibrierung | + | ++++ Qualitätskontrolle I: Prüfen der Kalibrationssterne | |
| + | === Starmap | ||
| - | Nun sind wir in der Lage die eigentliche Kalibrierung der Magnituden durchzuführen. Hierfür berechnen wir den sogenannten Zeropoint, indem wir für die Kalibrationssterne in jeden der beiden Filter unsere extrahierten Magnituden von den Magnituden aus dem heruntergeladenen Katalog abziehen und anschließend mit der Funktion '' | ||
| - | |||
| - | <code Python> | ||
| - | # | ||
| - | ZP_V = np.ma.median(calib_tbl_sort[' | ||
| - | ZP_B = np.ma.median(calib_tbl_sort[' | ||
| - | </ | ||
| - | |||
| - | Anschließend müssen die berechneten Zeropoints noch zu den Magnituden der Sterne in den Tabellen '' | ||
| - | |||
| - | <code Python> | ||
| - | # | ||
| - | photo_V_sort[' | ||
| - | photo_B_sort[' | ||
| - | </ | ||
| - | |||
| - | |||
| - | ++++ Prüfen der Kalibrationssterne | | ||
| Eine Möglichkeit, | Eine Möglichkeit, | ||
| Zeile 462: | Zeile 445: | ||
| <code Python> | <code Python> | ||
| tbl_xy_cali_all = Table( | tbl_xy_cali_all = Table( | ||
| - | names=[' | + | names=[' |
| data=[np.arange(0, | data=[np.arange(0, | ||
| ) | ) | ||
| </ | </ | ||
| + | /* | ||
| Das Ganze wiederholen wir jetzt noch einmal für das '' | Das Ganze wiederholen wir jetzt noch einmal für das '' | ||
| Zeile 473: | Zeile 457: | ||
| tbl_xy_cali_s = Table( | tbl_xy_cali_s = Table( | ||
| - | names=[' | + | names=[' |
| data=[np.arange(0, | data=[np.arange(0, | ||
| ) | ) | ||
| + | </ | ||
| + | */ | ||
| + | |||
| + | Das Ganze wiederholen wir nun noch einmal für die Sterne, die wir tatsächlich als Kalibrationssterne verwenden können, also alle, die wir auch auf unseren Aufnahmen finden konnten. Hierfür erstellen wir zunächst ein entsprechendes '' | ||
| + | |||
| + | <code Python> | ||
| + | coord_calib_correlated = SkyCoord( | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | Anschließend können wir die Pixelkoordinaten wie oben beschrieben ermitteln und eine entsprechende Tabelle anlegen: | ||
| + | |||
| + | <code Python> | ||
| + | x_cali_correlated, | ||
| + | |||
| + | tbl_xy_cali_correlated = Table( | ||
| + | | ||
| + | | ||
| + | ) | ||
| </ | </ | ||
| Zeile 482: | Zeile 489: | ||
| <code Python> | <code Python> | ||
| starmap( | starmap( | ||
| - | | + | out_path, |
| - | V_image.get_data(), | + | |
| - | ' | + | |
| - | tbl_xy_cali_all, | + | |
| - | label=' | + | |
| - | tbl_2=tbl_xy_cali_s, | + | |
| - | label_2=' | + | |
| - | rts=' | + | |
| - | ) | + | ) |
| </ | </ | ||
| Zeile 544: | Zeile 551: | ||
| geschlossen werden. | geschlossen werden. | ||
| - | + | ||
| + | === Histogramm mit Abständen zwischen den Objekten === | ||
| + | |||
| + | Mithilfe dieser Vorbereitungen können wir auch gleich ein Histogramm der Abstände zwischen den von uns gemessenen Positionen und den Positionen aus der Literatur plotten. Dies kann Hinweise auf Fehlzuordnungen zwischen den Objekten liefern. | ||
| + | |||
| + | Zunächst berechnen wir die benötigten Abstände mit Hilfe der '' | ||
| + | |||
| + | <code Python> | ||
| + | # | ||
| + | sep_cal = coords_objs[ind_fit].separation( | ||
| + | | ||
| + | ).arcsec | ||
| + | |||
| + | # | ||
| + | sep_inter = coords_V[id_V].separation(coords_B[id_B]).arcsec | ||
| + | </ | ||
| + | |||
| + | Bis auf die Starmaps, die ihr eigenes Verzeichnis haben, packen wir alle übrigen Diagnoseplots in ein eigenes Unterverzeichnis: | ||
| + | |||
| + | <code Python> | ||
| + | # | ||
| + | diagnostic_path = os.path.join(out_path, | ||
| + | checks.check_output_directories(out_path, | ||
| + | </ | ||
| + | |||
| + | Anschließend können wir das Histogramm plotten: | ||
| + | |||
| + | <code Python> | ||
| + | # Plot separation histograms | ||
| + | plot_combined_separation_histograms( | ||
| + | | ||
| + | | ||
| + | | ||
| + | ' | ||
| + | | ||
| + | | ||
| + | ) | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | === Magnitudenkalibrierung === | ||
| + | |||
| + | Nun sind wir in der Lage die eigentliche Kalibrierung der Magnituden durchzuführen. Hierfür berechnen wir den sogenannten Zeropoint, indem wir für die Kalibrationssterne in jeden der beiden Filter unsere extrahierten Magnituden von den Magnituden aus dem heruntergeladenen Katalog abziehen und anschließend mit der Funktion '' | ||
| + | |||
| + | <code Python> | ||
| + | # | ||
| + | ZP_V = np.ma.median(calib_tbl_sort[' | ||
| + | ZP_B = np.ma.median(calib_tbl_sort[' | ||
| + | </ | ||
| + | |||
| + | Anschließend müssen die berechneten Zeropoints noch zu den Magnituden der Sterne in den Tabellen '' | ||
| + | |||
| + | <code Python> | ||
| + | # | ||
| + | photo_V_sort[' | ||
| + | photo_B_sort[' | ||
| + | </ | ||
| + | |||
| + | ++++ Qualitätsskontrolle II: Stelle die instrumentellen Helligkeiten gegenüber den Kataloghelligkeiten und den Zeropoint-Abweichungen dar | | ||
| + | |||
| + | Um die Qualität der Magnitudenkalibrierung einschätzen zu können, sollten wir uns die Verteilung der Magnituden sowie die Residuen der Nullpunkte visualisieren. Hierfür stellt die OST-Bibliothek einige Diagramme bereit. Um diese effizient nutzen zu können, definieren wir zunächst ein paar Abkürzungen: | ||
| + | |||
| + | <code Python> | ||
| + | m_inst_v = np.asarray(photo_V_sort_calib[' | ||
| + | m_inst_b = np.asarray(photo_V_sort_calib[' | ||
| + | m_cat_v = np.asarray(calib_tbl_sort[' | ||
| + | m_cat_b = np.asarray(calib_tbl_sort[' | ||
| + | m_cal_v = m_inst_v + float(zp_v) | ||
| + | m_cal_b = m_inst_b + float(zp_b) | ||
| + | </ | ||
| + | |||
| + | Anschließend können wir über die in der OST-Bibliothek bereitgestellten Plots direkt die gewünschten Abbildungen zur Qualitätskontrolle erstellen: | ||
| + | |||
| + | <code Python> | ||
| + | # Plot instrumental vs. catalog magnitudes (V) | ||
| + | plot_instrumental_vs_catalog_magnitudes( | ||
| + | m_cal_v, | ||
| + | m_cat_v, | ||
| + | diagnostic_path, | ||
| + | ' | ||
| + | band_label=' | ||
| + | show_one_to_one=True, | ||
| + | x_label=r' | ||
| + | title=' | ||
| + | filename_stem=' | ||
| + | ) | ||
| + | |||
| + | # Plot instrumental vs. catalog magnitudes (B) | ||
| + | plot_instrumental_vs_catalog_magnitudes( | ||
| + | m_cal_b, | ||
| + | m_cat_b, | ||
| + | diagnostic_path, | ||
| + | ' | ||
| + | band_label=' | ||
| + | show_one_to_one=True, | ||
| + | x_label=r' | ||
| + | title=' | ||
| + | filename_stem=' | ||
| + | ) | ||
| + | |||
| + | # Plot zero point residuals distribution | ||
| + | plot_zeropoint_residual_distribution( | ||
| + | None, | ||
| + | diagnostic_path, | ||
| + | ' | ||
| + | residuals_by_band={ | ||
| + | ' | ||
| + | ' | ||
| + | }, | ||
| + | filename_stem=' | ||
| + | ) | ||
| + | |||
| + | # Plot zero point residuals vs. color index | ||
| + | color_lit = m_cat_b - m_cat_v | ||
| + | plot_zeropoint_residual_vs_color( | ||
| + | color_lit, | ||
| + | None, | ||
| + | diagnostic_path, | ||
| + | ' | ||
| + | residuals_by_band={ | ||
| + | ' | ||
| + | ' | ||
| + | }, | ||
| + | filename_stem=' | ||
| + | ) | ||
| + | |||
| + | # Plot calibration color vs. color | ||
| + | plot_calibration_color_color_cal_stars( | ||
| + | m_cat_b - m_cat_v, | ||
| + | m_inst_b - m_inst_v, | ||
| + | diagnostic_path, | ||
| + | ' | ||
| + | ) | ||
| + | </ | ||
| ++++ | ++++ | ||
| ==== Speichern der Ergebnisse ==== | ==== Speichern der Ergebnisse ==== | ||
| Zeile 554: | Zeile 695: | ||
| # | # | ||
| results = Table() | results = Table() | ||
| - | results[' | + | results[' |
| - | results[' | + | results[' |
| - | results[' | + | results[' |
| - | results[' | + | results[' |
| - | results[' | + | results[' |
| </ | </ | ||
| Zeile 748: | Zeile 889: | ||
| Es ist ein übliches Protokoll einzureichen. Eine allgemeine Übersicht über den erforderlichen Aufbau und Inhalt findet man [[https:// | Es ist ein übliches Protokoll einzureichen. Eine allgemeine Übersicht über den erforderlichen Aufbau und Inhalt findet man [[https:// | ||
| + | /* | ||
| Für diesen Versuch sollte im theoretischen Teil des Protokolls ein Überblick über offene und kugelförmige Sternhaufen mit Schwerpunkt auf dem beobachteten Typ und dessen Abgrenzung zu anderen Ansammlungen und Gruppen von Sternen beschreiben werden. Erläutern Sie was ein Hertzsprung-Russell-Diagramme (HRD) und was ein Farb-Helligkeits-Diagramme (FHD) ist und wie sich diese beiden Typen unterscheiden. Legen Sie des Weiteren //Kurz// die Entwicklung von Sternen unterschiedlicher Masse im Rahmen eines HRD da und erläutern Sie die Konzepte der Isochronen und des Abknickpunktes und wie man damit das Alter eines Sternhaufens schätzt. | Für diesen Versuch sollte im theoretischen Teil des Protokolls ein Überblick über offene und kugelförmige Sternhaufen mit Schwerpunkt auf dem beobachteten Typ und dessen Abgrenzung zu anderen Ansammlungen und Gruppen von Sternen beschreiben werden. Erläutern Sie was ein Hertzsprung-Russell-Diagramme (HRD) und was ein Farb-Helligkeits-Diagramme (FHD) ist und wie sich diese beiden Typen unterscheiden. Legen Sie des Weiteren //Kurz// die Entwicklung von Sternen unterschiedlicher Masse im Rahmen eines HRD da und erläutern Sie die Konzepte der Isochronen und des Abknickpunktes und wie man damit das Alter eines Sternhaufens schätzt. | ||
| + | */ | ||
| - | Beschreiben Sie im Methodenteil die Beobachtungen und die Datenreduktion, | + | Beschreiben Sie im Methodenteil die Beobachtungen und die Datenreduktion, |
| Im Ergebnisteil werden die CMDs des Sternhaufens dargestellt und die darin beobachtbaren Merkmale beschrieben. | Im Ergebnisteil werden die CMDs des Sternhaufens dargestellt und die darin beobachtbaren Merkmale beschrieben. | ||