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 os
import webbrowser
from collections import namedtuple
from pandas import read_csv
from PyQt5.QtWidgets import (QMainWindow,
QApplication,
@@ -8,7 +11,6 @@ from PyQt5.QtWidgets import (QMainWindow,
from PyQt5.QtGui import QPixmap
from PyQt5 import uic
from PyQt5.QtCore import QFileInfo, QSize
import webbrowser
from audio_player import AudioPlayer
@@ -17,6 +19,20 @@ qt_creator_file = "main_window.ui"
Ui_MainWindow, _ = uic.loadUiType(qt_creator_file)
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):
super().__init__()
self.setupUi(self)
@@ -64,6 +80,20 @@ class MyApp(QMainWindow, Ui_MainWindow):
self.volume,
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):
try:
self.db = read_csv(os.path.join('Data', 'db.csv'),
@@ -137,6 +167,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
words = self.current_signal_name
self.name_lab.setText(words)
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"]
self.freq_lab.setText(self.format_numbers(
current_signal.loc["inf_freq"],
@@ -156,6 +187,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
cat_lab.setStyleSheet("color: #9f9f9f;")
elif cat == '1':
cat_lab.setStyleSheet("color: #39eaff;")
self.set_band_range(current_signal)
self.audio_widget.set_audio_player(self.current_signal_name)
else:
self.url_button.setEnabled(False)
@@ -165,6 +197,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
lab.setText("N/A")
for lab in self.category_labels:
lab.setStyleSheet("""color: #9f9f9f;""")
self.set_band_range()
self.audio_widget.set_audio_player()
@classmethod
@@ -204,6 +237,30 @@ class MyApp(QMainWindow, Ui_MainWindow):
path_spectr = default_pic
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):
if self.current_signal_name:
webbrowser.open(self.db.loc[self.current_signal_name].loc["url"])

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1031</width>
<height>581</height>
<width>1169</width>
<height>626</height>
</rect>
</property>
<property name="sizePolicy">
@@ -120,6 +120,10 @@ QTextEdit{
QMessageBox {
color: #ffffff;
}
QToolTip {
color: #000000;
}</string>
</property>
<widget class="QWidget" name="centralwidget">
@@ -262,7 +266,7 @@ border-radius: 5px;</string>
</property>
<property name="styleSheet">
<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>
</property>
<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 name="styleSheet">
<string notr="true">color: #898989;</string>
@@ -1236,6 +1240,603 @@ QTabBar::tab:!selected {
</property>
</widget>
</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">
<widget class="QTextBrowser" name="description_text">
<property name="font">
@@ -1547,7 +2148,7 @@ QSlider::handle:horizontal {
<rect>
<x>0</x>
<y>0</y>
<width>1031</width>
<width>1169</width>
<height>21</height>
</rect>
</property>