de:praktikum:photometrie_python

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:praktikum:photometrie_python [2026/04/22 11:28] – [Kreuzkorrelation mit den extrahierten Daten] rhainichde:praktikum:photometrie_python [2026/04/23 15:12] (aktuell) – [Kreuzkorrelation mit den extrahierten Daten] rhainich
Zeile 387: Zeile 387:
 </code> </code>
  
-Wie bereits oben korrelieren wir auch hier die Kalibrationsdaten mit unseren Ergebnissen mittels der''search_around_sky''-Funktion aus dem ''matching''-Modul von //Astropy//. Als Argumente übergeben wir das soeben definierte ''SkyCoord''-Objekt''  für die Kalibrationssterne, das ''SkyCoord''-Objekt'' für die Sterne welche wir in beiden Filtern gefunden haben (''coords_objs'') sowie die maximale Distanz zwischen Sternen in beiden Datensätzen unter derer diese noch als das selbe Objekt erkannt werden.+Wie bereits oben korrelieren wir auch hier die Kalibrationsdaten mit unseren Ergebnissen mittels der''search_around_sky''-Funktion aus dem ''matching''-Modul von //Astropy//. Als Argumente übergeben wir das soeben definierte ''SkyCoord''-Objekt für die Kalibrationssterne, das ''SkyCoord''-Objekt für die Sterne welche wir in beiden Filtern gefunden haben (''coords_objs'') sowie die maximale Distanz zwischen Sternen in beiden Datensätzen unter derer diese noch als das selbe Objekt erkannt werden.
  
 <code Python> <code Python>
Zeile 463: Zeile 463:
 */ */
  
-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 SkyCoord-Objekt:+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 ''SkyCoord''-Objekt:
  
 <code Python> <code Python>
 coord_calib_correlated = SkyCoord( coord_calib_correlated = SkyCoord(
-        calib_tbl_sort['RAJ2000'].data, +   calib_tbl_sort['RAJ2000'].data, 
-        calib_tbl_sort['DEJ2000'].data, +   calib_tbl_sort['DEJ2000'].data, 
-        unit=(u.deg, u.deg), +   unit=(u.deg, u.deg), 
-        frame="icrs", +   frame="icrs", 
-    )+)
 </code> </code>
  
Zeile 480: Zeile 480:
  
 tbl_xy_cali_correlated = Table( tbl_xy_cali_correlated = Table(
-    names=['id','x_centroid', 'y_centroid'], +   names=['id','x_centroid', 'y_centroid'], 
-    data=[np.arange(0,len(y_cali_correlated)), x_cali_correlated, y_cali_correlated] +   data=[np.arange(0,len(y_cali_correlated)), x_cali_correlated, y_cali_correlated] 
-    )+)
 </code> </code>
  
Zeile 489: Zeile 489:
 <code Python> <code Python>
 starmap( starmap(
-    out_path, +   out_path, 
-    V_image.get_data(), +   V_image.get_data(), 
-    'V', +   'V', 
-    tbl_xy_cali_all, +   tbl_xy_cali_all, 
-    label='Downloaded calibration stars', +   label='Downloaded calibration stars', 
-    tbl_2=tbl_xy_cali_correlated, +   tbl_2=tbl_xy_cali_correlated, 
-    label_2='Identified calibration stars', +   label_2='Identified calibration stars', 
-    rts='calibration', +   rts='calibration', 
- )+)
 </code> </code>
  
Zeile 553: Zeile 553:
  
 === Histogramm mit Abständen zwischen den Objekten === === 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 ''SkyCoord''-Objekte:
 +
 +<code Python>
 +#   Calculate separation between objects and the calibration objects
 +sep_cal = coords_objs[ind_fit].separation(
 +   coord_calib_correlated
 +).arcsec
 +
 +#   Calculate separation between objects on the two images (inter-filter separations)
 +sep_inter = coords_V[id_V].separation(coords_B[id_B]).arcsec
 +</code>
 +
 +Bis auf die Starmaps, die ihr eigenes Verzeichnis haben, packen wir alle übrigen Diagnoseplots in ein eigenes Unterverzeichnis:
 +
 +<code Python>
 +#   Prepare path for diagnostic plots
 +diagnostic_path = os.path.join(out_path, 'diagnostics')
 +checks.check_output_directories(out_path, diagnostic_path)
 +</code>
 +
 +Anschließend können wir das Histogramm plotten:
 +
 +<code Python>
 +#   Plot separation histograms
 +plot_combined_separation_histograms(
 +   np.asarray(sep_inter, dtype=float),
 +   np.asarray(sep_cal, dtype=float),
 +   diagnostic_path,
 +   'pdf',
 +   reference_filter='V',
 +   other_filters=['B'],
 +)
 +</code>
 ++++ ++++
  
Zeile 572: Zeile 608:
 photo_B_sort['mag_cali'] = photo_B_sort['mag'] + ZP_B photo_B_sort['mag_cali'] = photo_B_sort['mag'] + ZP_B
 </code> </code>
 +
 +++++ 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['mag'].ravel(), dtype=float)
 +m_inst_b = np.asarray(photo_V_sort_calib['mag'].ravel(), dtype=float)
 +m_cat_v = np.asarray(calib_tbl_sort['Vmag'].ravel(), dtype=float)
 +m_cat_b = np.asarray(calib_tbl_sort['Bmag'].ravel(), dtype=float)
 +m_cal_v = m_inst_v + float(zp_v)
 +m_cal_b = m_inst_b + float(zp_b)
 +</code>
 +
 +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,
 +    'pdf',
 +    band_label='V',
 +    show_one_to_one=True,
 +    x_label=r'$m_\mathrm{cal}$ [mag]',
 +    title='Cal stars: calibrated vs. catalog (V)',
 +    filename_stem='calibrated_vs_catalog_V',
 +)
 +
 +#   Plot instrumental vs. catalog magnitudes (B)
 +plot_instrumental_vs_catalog_magnitudes(
 +    m_cal_b,
 +    m_cat_b,
 +    diagnostic_path,
 +    'pdf',
 +    band_label='B',
 +    show_one_to_one=True,
 +    x_label=r'$m_\mathrm{cal}$ [mag]',
 +    title='Cal stars: calibrated vs. catalog (B)',
 +    filename_stem='calibrated_vs_catalog_B',
 +)
 +
 +#   Plot zero point residuals distribution
 +plot_zeropoint_residual_distribution(
 +    None,
 +    diagnostic_path,
 +    'pdf',
 +    residuals_by_band={
 +        'V': m_cat_v - m_inst_v - float(ZP_V),
 +        'B': m_cat_b - m_inst_b - float(ZP_B),
 +    },
 +    filename_stem='zeropoint_residuals_B_V',
 +)
 +
 +#   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,
 +    'pdf',
 +    residuals_by_band={
 +        'V': m_cat_v - m_inst_v - float(ZP_V),
 +        'B': m_cat_b - m_inst_b - float(ZP_B),
 +    },
 +    filename_stem='zeropoint_residual_vs_color_B_V',
 +)
 +
 +#   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,
 +    'pdf',
 +)
 +</code>
 +
 +++++
 ==== Speichern der Ergebnisse ==== ==== Speichern der Ergebnisse ====
  
Zeile 580: Zeile 695:
 #   Create new table for the CMD #   Create new table for the CMD
 results = Table() results = Table()
-results['id'] = photo_V_sort['id'+results['id'] = photo_V_sort['id'].ravel() 
-results['x'] = photo_V_sort['x_fit'+results['x'] = photo_V_sort['x_fit'].ravel() 
-results['y'] = photo_V_sort['y_fit'+results['y'] = photo_V_sort['y_fit'].ravel() 
-results['B [mag]'] = photo_B_sort['mag_cali'+results['B [mag]'] = photo_B_sort['mag_cali'].ravel() 
-results['V [mag]'] = photo_V_sort['mag_cali']+results['V [mag]'] = photo_V_sort['mag_cali'].ravel()
 </code> </code>
  
Zeile 774: Zeile 889:
 Es ist ein übliches Protokoll einzureichen. Eine allgemeine Übersicht über den erforderlichen Aufbau und Inhalt findet man [[https://polaris.astro.physik.uni-potsdam.de/wiki/doku.php?id=de:praktikum:protocol|hier]]. Es ist ein übliches Protokoll einzureichen. Eine allgemeine Übersicht über den erforderlichen Aufbau und Inhalt findet man [[https://polaris.astro.physik.uni-potsdam.de/wiki/doku.php?id=de:praktikum:protocol|hier]].
  
 +/*
 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, heben Sie Punkte hervor, die von der allgemeinen Beschreibung hier abweichen, und führen Sie alle Parameter auf, die Sie für die Extraktion gesetzt haben. Fügen Sie außerdem alle Diagramme der Datenreduktion in den Bericht ein (einige wenige im Text, die meisten im Anhang). Geben Sie auch alle Parameter für Rötung, Extinktion und Entfernung an, die Sie aus der Literatur übernommen haben.+Beschreiben Sie im Methodenteil die Beobachtungen und die Datenreduktion, heben Sie insbesondere Punkte hervor, die von der allgemeinen Beschreibung hier abweichen, und führen Sie alle Parameter auf, die Sie für die Extraktion gesetzt haben. Fügen Sie außerdem **alle Diagramme und Grafiken** der Datenreduktion in den Bericht ein. Geben Sie auch alle Parameter für Rötung, Extinktion und Entfernung an, die Sie aus der Literatur übernommen haben.
  
 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.
  • de/praktikum/photometrie_python.1776857297.txt.gz
  • Zuletzt geändert: 2026/04/22 11:28
  • von rhainich