#!/usr/bin/env python # coding: utf-8 # # Analyse des données SID/SuperSID # Le logiciel SuperSID enregistre les fichiers audio sous forme de tableaux avec extension "**.csv**". L'ordinateur est connecté à internet de sorte que son horloge est synchronisée par un serveur de temps avec une précision de quelques dizaines de millisecondes. # # ![Alt text](images/SID.jpg "Récepteur SuperSID") # ## Fichiers à valeurs séparées par des virgules (CSV) # Un format de fichier très commun pour les fichiers de données sont les valeurs séparées par des virgules (CSV) ou un format connexe tel que TSV (valeurs séparées par des onglets). Pour lire les données de ce fichier dans les tableaux Numpy, nous pouvons utiliser la fonction numpy.genfromtxt. Par exemple: # In[17]: import numpy as np # ### Visualisez un fichier de données # Nous allons maintenant charger les données SID (amplitude du signal) dans une liste en utilisant la méthode ``loadtxt`` de la bibliothèque numérique ```numpy```. # In[2]: get_ipython().run_line_magic('pinfo', 'np.loadtxt') # In[5]: NomFichier="data_SID/20120601_000000_NAA_S-0239.csv" # In[6]: data= np.loadtxt(NomFichier, comments='#', delimiter=",", skiprows=12, usecols=[1]) # In[7]: print(data) # In[8]: print(len(data)) # In[9]: data_length = len(data) time_data= np.arange(0.0, 24.0 , 24.0/(data_length)) # In[10]: import matplotlib.pyplot as plt # In[11]: fig=plt.figure(figsize=(6,5)) plt.plot(time_data, data, label=NomFichier) plt.xlabel("Temps (Heure en TU)") plt.ylabel("Amplitude (V)") plt.title("Signal NAA (24 KHz) enregistré le %s"%NomFichier) # In[12]: plt.show() # In[13]: # %load programs/PlotSID.py import numpy as np import matplotlib.pyplot as plt def PlotSID(NomFichier=""): data= np.loadtxt(NomFichier, comments='#', delimiter=",", skiprows=12, usecols=[1]) data_length = len(data) time_data= np.arange(0.0, 24.0 , 24.0/(data_length)) fig=plt.figure(figsize=(10,5)) plt.plot(time_data, data, label="NAA") plt.xlabel("Temps (Heure en TU)") plt.ylabel("Amplitude (V)") plt.title("%s" %NomFichier) plt.legend() plt.show() # In[48]: PlotSID(NomFichier="data_SID/20120601_000000_NAA_S-0239.csv") # ### Visualiser tous les fichiers de données # In[34]: import glob FileList=glob.glob("data_SID/*.csv") SID_Juin=[] for filename in FileList: print(filename) data=np.loadtxt(filename, comments='#', delimiter=",", skiprows=12, usecols=[1]) print(len(data)) if len(data)==17280: SID_Juin.append(data) # In[35]: print(np.shape(SID_Juin)) # In[43]: import matplotlib.cm as cm fig=plt.figure(figsize=(10,5)) plt.imshow(SID_Juin,interpolation='sinc', cmap=cm.jet, origin='lower',extent=[0, 24 , 0, 26],aspect='auto') cb=plt.colorbar() cb.set_label("Signal level (V)") plt.xlabel("Time (UT)") plt.ylabel("Jours après 01 juin 2012") plt.title("signal de NAA (24 KHz) reçu à Tunis") plt.show() # In[47]: PlotSID(NomFichier="data_SID/20120609_000000_NAA_S-0239.csv") # ## Classification en intensité d’une éruption solaire # Cette classification se base sur l’intensité des rayons X dans la bande de 0.1 à 0.8 nm comme cela est indiqué dans le tableau ci-dessous. Cette classification sert de référence pour évaluer et prévenir les éventuelles dommages pour la planète (c'est l'équivalent de l'échelle de Richter pour les tremblements de Terre). # # | Classe |Intensité ($Watts/m^2$) | # |----------|-------------------------------| # | A | I $<10^{-7}$ | # | B | $10^{-7} \leq $ I $<10^{-6}$ | # | C | $10^{-6} \leq $ I $<10^{-5}$ | # | M | $10^{-5} \leq $ I $<10^{-4}$ | # | X | I $\geq 10^{-4}$ | # # ## Les éruptions solaires en juin 2012 # Un moyen très rapide de visualiser les données du satellite GOES pour tout le mois de juin 2012 est d'utiliser l'application web sur le site web "*Aurora forecast for Germany*": http://www.polarlicht-vorhersage.de/goes_archive : # ![Alt text](images/GOES_Jun2012.png "GOES X Ray") # ## Charger des données *GOES* # ### 1) Depuis un site Web # Nous pouvons téléchargé les enregistrements du statellite GOES à partir du lien suivant: # http://darts.jaxa.jp/pub/sswdb/goes/xray/ # # In[44]: # %load programs/PlotGOES_URL.py import numpy as np import matplotlib.pyplot as plt import urllib.request def PlotGOES_URL(date="", res="",source=""): url="http://darts.jaxa.jp/pub/sswdb/goes/xray/"+date+"_"+source+"_xr_"+res+".txt" # If you wish to retrieve a resource via URL and store it in a temporary location, # you can do so via the urlretrieve() function: local_filename, headers = urllib.request.urlretrieve(url) file = open(local_filename) dataGOESS,dataGOESL =np.loadtxt(file, skiprows=18, usecols=[6,7],unpack=True) data_length2 = len(dataGOESL) # time_data2 = np.arange(0.0, 24.0 , 24.0/(data_length2)) plt.figure(figsize=(10,5)) plt.plot(time_data2, dataGOESL,color='r',linewidth=3,label="GOES: Long X-Ray (0.1 - 0.8 nanometer)") plt.plot(time_data2, dataGOESS,color='k',linewidth=3,label="GOES: Short X-Ray (0.05 - 0.4 nanometer)", alpha=.3) plt.title(" GOES Solar X-ray Flux", fontsize=16, weight="bold" ) plt.yscale('log') plt.ylabel("X ray Flux ($Watts/m^2$)") plt.ylim(1E-8,1E-2) plt.legend(loc='upper left') plt.tight_layout() plt.grid() plt.show() # In[45]: PlotGOES_URL(date="20120607", res="5m",source="Gp") # ### 2) Depuis un fichier TXT # # In[1]: # %load programs/PlotGOES_TXT.py import matplotlib.pyplot as plt import numpy as np def PlotGOES_URL(NomFichier=""): dataGOESS,dataGOESL = np.loadtxt(NomFichier, skiprows=18, usecols=[6,7],unpack=True) data_length2 = len(dataGOESL) # time_data2 = np.arange(0.0, 24.0 , 24.0/(1.0 * data_length2)) plt.figure(figsize=(10, 7)) plt.plot(time_data2, dataGOESL,color='r',linewidth=3,label="GOES: Long X-Ray (0.1 - 0.8 nanometer)") plt.plot(time_data2, dataGOESS,color='k',linewidth=3,label="GOES: Short X-Ray (0.05 - 0.4 nanometer)", alpha=.3) plt.title(" GOES Solar X-ray Flux", fontsize=16, weight="bold" ) plt.yscale('log') plt.ylabel("X ray Flux ($Watts/m^2$)") plt.legend(loc='upper left') plt.grid() plt.show() # In[3]: PlotGOES_URL(NomFichier="data_GOES/20120609_Gp_xr_1m.txt") # In[ ]: