Add band identifier. Does not work properly for mono-frequency signals.

This commit is contained in:
alessandro90
2018-10-04 22:11:31 +02:00
parent d8d8e3eaf2
commit 2bde799c66
2 changed files with 664 additions and 6 deletions

59
main.py
View File

@@ -1,5 +1,8 @@
import sys import sys
import os import os
import webbrowser
from collections import namedtuple
from pandas import read_csv from pandas import read_csv
from PyQt5.QtWidgets import (QMainWindow, from PyQt5.QtWidgets import (QMainWindow,
QApplication, QApplication,
@@ -8,7 +11,6 @@ from PyQt5.QtWidgets import (QMainWindow,
from PyQt5.QtGui import QPixmap from PyQt5.QtGui import QPixmap
from PyQt5 import uic from PyQt5 import uic
from PyQt5.QtCore import QFileInfo, QSize from PyQt5.QtCore import QFileInfo, QSize
import webbrowser
from audio_player import AudioPlayer from audio_player import AudioPlayer
@@ -17,6 +19,20 @@ qt_creator_file = "main_window.ui"
Ui_MainWindow, _ = uic.loadUiType(qt_creator_file) Ui_MainWindow, _ = uic.loadUiType(qt_creator_file)
class MyApp(QMainWindow, Ui_MainWindow): class MyApp(QMainWindow, Ui_MainWindow):
Band = namedtuple("Band", ["lower", "upper"])
ELF = Band(3, 30)
SLF = Band(30, 300)
ULF = Band(300, 3000)
VLF = Band(3000, 30000)
LF = Band(30 * 10**3, 300 * 10**3)
MF = Band(300 * 10 ** 3, 3000 * 10**3)
HF = Band(3 * 10**6, 30 * 10**6)
VHF = Band(30 * 10**6, 300 * 10**6)
UHF = Band(300 * 10**6, 3000 * 10**6)
SHF = Band(3 * 10**9, 30 * 10**9)
EHF = Band(30 * 10**9, 300 * 10**9)
bands = ELF, SLF, ULF, VLF, LF, MF, HF, VHF, UHF, SHF, EHF
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.setupUi(self) self.setupUi(self)
@@ -64,6 +80,20 @@ class MyApp(QMainWindow, Ui_MainWindow):
self.volume, self.volume,
self.audio_progress) self.audio_progress)
self.band_labels = [
[self.elf, self.elf_s1, self.elf_s2],
[self.slf, self.slf_s1, self.slf_s2],
[self.ulf, self.ulf_s1, self.ulf_s2],
[self.vlf, self.vlf_s1, self.vlf_s2],
[self.lf , self.lf_s1 , self.lf_s2],
[self.mf , self.mf_s1 , self.mf_s2],
[self.hf , self.hf_s1 , self.hf_s2],
[self.vhf, self.vhf_s1, self.vhf_s2],
[self.uhf, self.uhf_s1, self.uhf_s2],
[self.shf, self.shf_s1, self.shf_s2],
[self.ehf, None, None],
]
def load_db(self): def load_db(self):
try: try:
self.db = read_csv(os.path.join('Data', 'db.csv'), self.db = read_csv(os.path.join('Data', 'db.csv'),
@@ -137,6 +167,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
words = self.current_signal_name words = self.current_signal_name
self.name_lab.setText(words) self.name_lab.setText(words)
current_signal = self.db.loc[self.current_signal_name] current_signal = self.db.loc[self.current_signal_name]
print(current_signal.loc["inf_band"], current_signal.loc["sup_band"])
category_code = current_signal.loc["category_code"] category_code = current_signal.loc["category_code"]
self.freq_lab.setText(self.format_numbers( self.freq_lab.setText(self.format_numbers(
current_signal.loc["inf_freq"], current_signal.loc["inf_freq"],
@@ -156,6 +187,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
cat_lab.setStyleSheet("color: #9f9f9f;") cat_lab.setStyleSheet("color: #9f9f9f;")
elif cat == '1': elif cat == '1':
cat_lab.setStyleSheet("color: #39eaff;") cat_lab.setStyleSheet("color: #39eaff;")
self.set_band_range(current_signal)
self.audio_widget.set_audio_player(self.current_signal_name) self.audio_widget.set_audio_player(self.current_signal_name)
else: else:
self.url_button.setEnabled(False) self.url_button.setEnabled(False)
@@ -165,6 +197,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
lab.setText("N/A") lab.setText("N/A")
for lab in self.category_labels: for lab in self.category_labels:
lab.setStyleSheet("""color: #9f9f9f;""") lab.setStyleSheet("""color: #9f9f9f;""")
self.set_band_range()
self.audio_widget.set_audio_player() self.audio_widget.set_audio_player()
@classmethod @classmethod
@@ -204,6 +237,30 @@ class MyApp(QMainWindow, Ui_MainWindow):
path_spectr = default_pic path_spectr = default_pic
self.spectrogram.setPixmap(QPixmap(path_spectr)) self.spectrogram.setPixmap(QPixmap(path_spectr))
def set_band_range(self, current_signal = None):
# How to deal with one-frequency signals?
if current_signal is not None:
inf_band = int(current_signal.loc["inf_freq"])
sup_band = int(current_signal.loc["sup_freq"])
for band, band_label in zip(self.bands, self.band_labels):
delta = (band.upper - band.lower) // 2 + band.lower
if inf_band <= band.lower and sup_band > band.lower:
band_label[0].setStyleSheet("color: #39eaff;")
else:
band_label[0].setStyleSheet("color: #9f9f9f;")
if band_label[1]:
if inf_band <= delta and sup_band >= delta:
band_label[1].setStyleSheet("color: #39eaff;")
else:
band_label[1].setStyleSheet("color: #9f9f9f;")
if band_label[2]:
if inf_band <= band.upper and sup_band > band.upper:
band_label[2].setStyleSheet("color: #39eaff;")
else:
band_label[2].setStyleSheet("color: #9f9f9f;")
else:
[label.setStyleSheet("color: #9f9f9f;") for labels in self.band_labels for label in labels if label]
def go_to_web_page_signal(self): def go_to_web_page_signal(self):
if self.current_signal_name: if self.current_signal_name:
webbrowser.open(self.db.loc[self.current_signal_name].loc["url"]) webbrowser.open(self.db.loc[self.current_signal_name].loc["url"])

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1031</width> <width>1169</width>
<height>581</height> <height>626</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@@ -120,6 +120,10 @@ QTextEdit{
QMessageBox { QMessageBox {
color: #ffffff; color: #ffffff;
}
QToolTip {
color: #000000;
}</string> }</string>
</property> </property>
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
@@ -262,7 +266,7 @@ border-radius: 5px;</string>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QTabWidget::pane { /* The tab widget frame */ <string notr="true">QTabWidget::pane { /* The tab widget frame */
border-left: 1px solid gray; /* border-left: 1px solid gray;*/
} }
@@ -1197,7 +1201,7 @@ QTabBar::tab:!selected {
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Go to the signal's wiki.</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#000000;&quot;&gt;Go to the signal's wiki.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">color: #898989;</string> <string notr="true">color: #898989;</string>
@@ -1236,6 +1240,603 @@ QTabBar::tab:!selected {
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" colspan="2">
<widget class="QWidget" name="widget_6" native="true">
<property name="toolTip">
<string>Frequency bands</string>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="topMargin">
<number>15</number>
</property>
<item>
<widget class="QLabel" name="elf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>ELF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_27">
<item>
<widget class="QLabel" name="elf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="elf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="slf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<property name="text">
<string>SLF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_26">
<item>
<widget class="QLabel" name="slf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="slf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="ulf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>ULF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_25">
<item>
<widget class="QLabel" name="ulf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ulf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="vlf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>VLF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_24">
<item>
<widget class="QLabel" name="vlf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="vlf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="lf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>LF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_23">
<item>
<widget class="QLabel" name="lf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="mf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>MF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_22">
<item>
<widget class="QLabel" name="mf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="mf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="hf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<property name="text">
<string>HF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_18">
<item>
<widget class="QLabel" name="hf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="hf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="vhf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>VHF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_19">
<item>
<widget class="QLabel" name="vhf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="vhf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="uhf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>UHF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_20">
<item>
<widget class="QLabel" name="uhf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="uhf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="shf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>SHF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_21">
<item>
<widget class="QLabel" name="shf_s1">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: #9f9f9f;</string>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="shf_s2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>█</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="ehf">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>EHF</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<widget class="QTextBrowser" name="description_text"> <widget class="QTextBrowser" name="description_text">
<property name="font"> <property name="font">
@@ -1547,7 +2148,7 @@ QSlider::handle:horizontal {
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1031</width> <width>1169</width>
<height>21</height> <height>21</height>
</rect> </rect>
</property> </property>