Programa Python para analisis
Este código sencillo y mejorable fue utilizado para generar un histograma en 2 dimensiones con los datos de recepción de mi baliza WSPR por parte de PY2GN. Utiliza Matplotlib para realizar los gráficos. Lo utilizo en debian. Lo pong aqui solo como ejemplo.
El archivo tiene lineas como las siguientes:
2018-09-14 12:44 LU3HO 7.040157 -21 0 FF54fm 5 PY2GN GG56tv 2462 62
import datetime as dt
import matplotlib.pyplot as plt
import sys
station=sys.argv[1]
print(station)
WSPR_file=open("/home/andres/a/"+station+".txt",'r')
date_list=[]
hour_list=[]
SNR_list=[]
for l in WSPR_file:
line=l.split()
#date_list.append(line[0]+'-'+line[1])
date_list.append(dt.datetime.strptime(line[0]+' '+line[1],"%Y-%m-%d %H:%M"))#convert string date to datetime format
hour_list.append(line[1])
SNR_list.append(line[4])
#print(date_list)
#print(hour_list)
#print(SNR_list)
init_date=min(date_list) #search min and max dates of the list of reports, from datetime list of objects
print(init_date)
end_date=max(date_list)
print(end_date)
h_list=[]
init_time=dt.datetime.strptime("00:00","%H:%M")
for i in hour_list:
time=dt.datetime.strptime(i,"%H:%M")
h_list.append(((time-init_time).total_seconds())/3600)
#h_list.append(str(time.hour)+":"+str(time.minute))
#print(h_list)
#x=dt.datetime.strptime("00:01","%H:%M")
#init_time=dt.datetime.strptime("00:00","%H:%M")
#print((x-init_time).total_seconds())
x=h_list
y=SNR_list
y_int=[]
x_min=0
x_max=24
for i in y: #generate list in int format for SNR levels
y_int.append(int(i))
y_min=min(y_int) #Only works min() if integer
y_max=max(y_int)
#print(y_min)
#print(y_max)
fig, axs = plt.subplots(ncols=1, sharey=True, figsize=(7, 4))
fig.subplots_adjust(hspace=0.5, left=0.07, right=1, top=0.93)
ax = axs
hb = ax.hexbin(x, y, gridsize=50, cmap='Spectral') #mincnt=0.1)
ax.axis([x_min, x_max, y_min, y_max])
ax.set_xlabel("UTC time")
ax.set_ylabel("Signal to Noise Ratio (dB)")
ax.set_title("WSPR Analysis of LU3HO received by "+station+" from "+str(init_date)+" to "+str(end_date))
ax.set_xticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])
#ax.text(x=0,y=y_min,s="00:00",rotation='vertical', verticalalignment='top',horizontalalignment='center')
#ax.text(x=21600,y=y_min,s="06:00",rotation='vertical', verticalalignment='top',horizontalalignment='center')
#ax.text(x=43200,y=y_min,s="12:00",rotation='vertical', verticalalignment='top',horizontalalignment='center')
#ax.text(x=64800,y=y_min,s="18:00",rotation='vertical', verticalalignment='top',horizontalalignment='center')
#ax.text(86400,y_min,s="23:59",rotation='vertical', verticalalignment='top',horizontalalignment='center')
cb = fig.colorbar(hb, ax=ax)
cb.set_label('Reports density')
plt.show()