[PYTHON] Einfache Möglichkeit zur Analyse von AGN-Zeitschwankungen mit Google Colab mit RXTE-Satelliten-PCA-Detektor

Hintergrund

Wir werden eine Methode zum Zeichnen unter Verwendung von 2-10 keV-Flussdaten einführen, die von einem Detektor namens PCA des RXTE-Satelliten erfasst wurden.

RXTE verfügt auch über einen All-Sky-Monitor-Detektor namens ASM. Bei einem dunklen Himmelskörper wie AGN (mCrab-Level) kann jedoch keine ordnungsgemäße Datenanalyse durchgeführt werden, ohne die Daten zu verwenden, die durch die gezielte Beobachtung von PCA erhalten wurden.

Solche Langzeitdaten haben ungleichmäßige und spärliche Abtastzeiten, aber wir werden auch eine Methode zur endgültigen Interpolation einführen, um in diesem Fall ein Leistungsspektrum zu erzeugen. Dies reicht nicht aus, um mit spärlichen Daten umzugehen, aber es ist eine Technik, die Sie erhalten, wenn Sie die Trends und Trends schnell kennen.

Informationen zum Lesen des Codes finden Sie in meinem google Colab.

Was ist 3C273?

3C273 ist der 273. Himmelskörper in der 3. Ausgabe des 1959 veröffentlichten Cambridge Radio Source Catalogue mit einer Rotverschiebung von z = 0,158. Es ist ein Quaser in. Beobachtungen haben bestätigt, dass sich in der Mitte ein Schwarzes Loch befindet, das 800 Millionen Mal so groß ist wie die Sonnenmasse, aus dem ein starker Strahl ausgestoßen wird.

Hier von https://cass.ucsd.edu/~rxteagn/ Ich werde vorstellen, wie man mit Google Colab eine Langzeit-Zeitschwankungsanalyse des berühmten Lötkolbens 3C273 durchführt.

Es gibt Lichtkurvendaten in.

Beispielcode

Datenerfassung und Lichtkurvendiagramm

plot_3C273


import urllib.request
url="https://cass.ucsd.edu/~rxteagn/3C273/F0210_3C273"
urllib.request.urlretrieve(url, '3C273.txt')

import numpy as np 
mjd, flux, err, exp = np.loadtxt("3C273.txt", comments='#', unpack=True)

import matplotlib.pyplot as plt
plt.errorbar(mjd,y=flux,yerr=err)

スクリーンショット 2020-11-16 19.21.14.png

Interpolation von Daten

python


mjd_uniform=np.linspace(np.amin(mjd), np.amax(mjd), 6000) #Teilen Sie 6000 gleiche Teile vom Anfang bis zum Ende. Die Nummer 6000 ist angemessen, aber ein Tag wird zu einem Behälter.
interpolated_y = np.interp(mjd_uniform,mjd,flux) #
plt.errorbar(mjd,y=flux,yerr=err, label="raw data")
plt.errorbar(mjd_uniform,y=interpolated_y, label="uniformly interpolated data")
plt.legend()

Eine Funktion namens interp of numpy ergänzt Splines und generiert Daten in gleichen Zeitintervallen.

スクリーンショット 2020-11-16 19.23.11.png

Leistungsspektrumberechnung

python


import matplotlib.mlab as mlab
fNum=len(mjd_uniform)
timebin=(mjd_uniform[1] - mjd_uniform[0]) * 24*60*60 # day to sec
print("timebin = ", timebin, "  fNum = ", fNum)
psd2_nofil, freqlist_nofil = mlab.psd(interpolated_y,fNum,1./timebin, sides='onesided', scale_by_freq=True)

plt.xscale("log")
plt.yscale("log")
plt.xlabel(r'Frequency (Hz)')
plt.errorbar(freqlist_nofil, psd2_nofil, fmt='c-', label="FFT for uniformly sampled data")

スクリーンショット 2020-11-16 19.24.14.png

Wie man einen gleitenden Durchschnitt nimmt

python


#Gleitender 30-Tage-Durchschnitt
# https://qiita.com/yamadasuzaku/items/fb744a207e7694d1598d
ave = np.convolve(interpolated_y, np.ones(30)/float(30), 'same')
plt.errorbar(mjd_uniform,y=interpolated_y, label="uniformly interpolated data")
plt.errorbar(mjd_uniform,y=ave, label="30-day average")
plt.legend()

Der einfachste Weg, Hochfrequenzkomponenten auf einen gleitenden Durchschnitt zu bringen, ist die Verwendung der Numpy-Faltung.

スクリーンショット 2020-11-16 19.25.34.png

Vergleich von gleitendem Durchschnitt und Leistungsspektrum vor und nach der Aufnahme

python


ave_psd, freq = mlab.psd(ave,fNum,1./timebin, sides='onesided', scale_by_freq=True)
plt.xscale("log")
plt.yscale("log")
plt.xlabel(r'Frequency (Hz)')
plt.errorbar(freqlist_nofil, psd2_nofil, fmt='c-', label="FFT for uniformly sampled data")
plt.errorbar(freqlist_nofil, ave_psd, fmt='r-', label="FFT for uniformly sampled data") 

スクリーンショット 2020-11-16 19.27.09.png

Durch Verwendung des gleitenden Durchschnitts kann bestätigt werden, dass die Hochfrequenzkomponenten fallengelassen werden.

Bonus

Auf diese Weise ist es möglich, die Zeitreihendaten mit mehreren Wellenlängen von 3C273 leicht zu korrelieren. Daten sind schnell,

Es ist veröffentlicht in.

Da das hier eingeführte Komplement jedoch durch ein trapezförmiges Komplement interpoliert wird, um Daten in gleichen Intervallen zu erzeugen, muss sorgfältig geprüft werden, ob die Näherung angemessen ist oder nicht. (Es ist kein Problem, die Korrelation vorerst grob zu betrachten. Ich denke, es ist wichtig, dies schnell zu versuchen, sobald Sie Daten wie experimentelle Daten haben.)

Recommended Posts

Einfache Möglichkeit zur Analyse von AGN-Zeitschwankungen mit Google Colab mit RXTE-Satelliten-PCA-Detektor
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Analysieren mit Google Colaboratory mithilfe der Kaggle-API