summaryrefslogtreecommitdiff
path: root/gr-digital/python/digital/qa_constellation_receiver.py
diff options
context:
space:
mode:
authormormj <mormjb@gmail.com>2020-10-30 10:59:50 -0400
committerMarcus Müller <marcus@hostalia.de>2020-10-30 17:52:53 +0100
commit7a0948ba85758fba1cc3858ef99bfa600dcc7416 (patch)
tree610d7f9d773a193562def6df2d4b50f1bb3b3f86 /gr-digital/python/digital/qa_constellation_receiver.py
parent12192ee7d58de95ddca35a3e93bfc172bdb5c820 (diff)
qa: run autopep8 formatting on qa python files
find ./ -iname qa*.py | xargs autopep8 --in-place -a -a mostly formats whitespace and gets rid of trailing semicolons
Diffstat (limited to 'gr-digital/python/digital/qa_constellation_receiver.py')
-rw-r--r--gr-digital/python/digital/qa_constellation_receiver.py54
1 files changed, 33 insertions, 21 deletions
diff --git a/gr-digital/python/digital/qa_constellation_receiver.py b/gr-digital/python/digital/qa_constellation_receiver.py
index 8c22ebc68e..507fdd45b5 100644
--- a/gr-digital/python/digital/qa_constellation_receiver.py
+++ b/gr-digital/python/digital/qa_constellation_receiver.py
@@ -9,7 +9,6 @@
#
-
import random
import math
@@ -40,8 +39,8 @@ FREQUENCY_OFFSET = 0.01
TIMING_OFFSET = 1.0
# RECEIVER PARAMETERS
-FREQ_BW = 2*math.pi/100.0
-PHASE_BW = 2*math.pi/100.0
+FREQ_BW = 2 * math.pi / 100.0
+PHASE_BW = 2 * math.pi / 100.0
class channel_model(gr.hier_block2):
@@ -50,20 +49,19 @@ class channel_model(gr.hier_block2):
gr.io_signature(1, 1, gr.sizeof_gr_complex),
gr.io_signature(1, 1, gr.sizeof_gr_complex))
-
timing_offset = filter.mmse_resampler_cc(0, timing)
noise_adder = blocks.add_cc()
noise = analog.noise_source_c(analog.GR_GAUSSIAN,
noise_voltage, 0)
freq_offset = analog.sig_source_c(1, analog.GR_SIN_WAVE,
freq, 1.0, 0.0)
- mixer_offset = blocks.multiply_cc();
+ mixer_offset = blocks.multiply_cc()
self.connect(self, timing_offset)
- self.connect(timing_offset, (mixer_offset,0))
- self.connect(freq_offset, (mixer_offset,1))
- self.connect(mixer_offset, (noise_adder,1))
- self.connect(noise, (noise_adder,0))
+ self.connect(timing_offset, (mixer_offset, 0))
+ self.connect(freq_offset, (mixer_offset, 1))
+ self.connect(mixer_offset, (noise_adder, 1))
+ self.connect(noise, (noise_adder, 0))
self.connect(noise_adder, self)
@@ -91,16 +89,24 @@ class test_constellation_receiver(gr_unittest.TestCase):
# Assumes not more than 64 points in a constellation
# Generates some random input data to use.
self.src_data = tuple(
- [rndm.randint(0,1) for i in range(0, self.max_data_length)])
+ [rndm.randint(0, 1) for i in range(0, self.max_data_length)])
# Generates some random indices to use for comparing input and
# output data (a full comparison is too slow in python).
self.indices = alignment.random_sample(
self.max_data_length, self.max_num_samples, SEED)
requirements = (
- (EASY_REQ_CORRECT, tested_constellations(easy=True, medium=False, difficult=False)),
- (MEDIUM_REQ_CORRECT, tested_constellations(easy=False, medium=True, difficult=False)),
- )
+ (EASY_REQ_CORRECT,
+ tested_constellations(
+ easy=True,
+ medium=False,
+ difficult=False)),
+ (MEDIUM_REQ_CORRECT,
+ tested_constellations(
+ easy=False,
+ medium=True,
+ difficult=False)),
+ )
for req_correct, tcs in requirements:
for constellation, differential in tcs:
# The constellation_receiver doesn't work for constellations
@@ -116,19 +122,20 @@ class test_constellation_receiver(gr_unittest.TestCase):
src_data=self.src_data[:data_length])
tb.run()
data = tb.dst.data()
- d1 = tb.src_data[:int(len(tb.src_data)*self.ignore_fraction)]
- d2 = data[:int(len(data)*self.ignore_fraction)]
+ d1 = tb.src_data[:int(len(tb.src_data) * self.ignore_fraction)]
+ d2 = data[:int(len(data) * self.ignore_fraction)]
correct, overlap, offset, indices = alignment.align_sequences(
d1, d2, indices=self.indices)
if correct <= req_correct:
- print("Constellation is {0}. Differential is {1}. Required correct is {2}. Correct is {3}. FAIL.".
- format(constellation, differential, req_correct, correct))
+ print(
+ "Constellation is {0}. Differential is {1}. Required correct is {2}. Correct is {3}. FAIL.". format(
+ constellation, differential, req_correct, correct))
self.assertTrue(correct > req_correct)
def test_tag(self):
# Send data through bpsk receiver
# followed by qpsk receiver
- data = [0.9+0j, 0.1+0.9j, -1-0.1j, -0.1-0.6j]*2
+ data = [0.9 + 0j, 0.1 + 0.9j, -1 - 0.1j, -0.1 - 0.6j] * 2
bpsk_data = [1, 1, 0, 0]
qpsk_data = [1, 3, 0, 0]
first_tag = gr.tag_t()
@@ -146,13 +153,15 @@ class test_constellation_receiver(gr_unittest.TestCase):
tb = gr.top_block()
tb.connect(src, decoder, snk)
tb.run()
- self.assertEqual(list(snk.data()), bpsk_data+qpsk_data)
+ self.assertEqual(list(snk.data()), bpsk_data + qpsk_data)
+
class rec_test_tb(gr.top_block):
"""
Takes a constellation an runs a generic modulation, channel,
and generic demodulation.
"""
+
def __init__(self, constellation, differential,
data_length=None, src_data=None, freq_offset=True):
"""
@@ -166,7 +175,8 @@ class rec_test_tb(gr.top_block):
super(rec_test_tb, self).__init__()
# Transmission Blocks
if src_data is None:
- self.src_data = tuple([random.randint(0,1) for i in range(0, data_length)])
+ self.src_data = tuple([random.randint(0, 1)
+ for i in range(0, data_length)])
else:
self.src_data = src_data
packer = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
@@ -174,7 +184,8 @@ class rec_test_tb(gr.top_block):
mod = generic_mod(constellation, differential=differential)
# Channel
if freq_offset:
- channel = channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET)
+ channel = channel_model(
+ NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET)
else:
channel = channel_model(NOISE_VOLTAGE, 0, TIMING_OFFSET)
# Receiver Blocks
@@ -188,5 +199,6 @@ class rec_test_tb(gr.top_block):
self.dst = blocks.vector_sink_b()
self.connect(src, packer, mod, channel, demod, self.dst)
+
if __name__ == '__main__':
gr_unittest.run(test_constellation_receiver)