common: iterate() should not enumerate on default

This commit is contained in:
Roman Zeyde
2014-09-21 17:16:30 +03:00
parent b678c0dc57
commit 504c1db541
5 changed files with 15 additions and 11 deletions

View File

@@ -36,7 +36,7 @@ def dumps(sym, n=1):
return data * n
def iterate(data, size, func=None, truncate=True):
def iterate(data, size, func=None, truncate=True, enumerate=False):
offset = 0
data = iter(data)
@@ -49,7 +49,7 @@ def iterate(data, size, func=None, truncate=True):
done = True
result = func(buf) if func else np.array(buf)
yield offset, result
yield (offset, result) if enumerate else result
offset += size

View File

@@ -45,8 +45,8 @@ class Framer(object):
return struct.pack(self.prefix_fmt, len(frame)) + frame
def encode(self, data):
for _, block in common.iterate(data=data, size=self.block_size,
func=bytearray, truncate=False):
for block in common.iterate(data=data, size=self.block_size,
func=bytearray, truncate=False):
yield self._pack(block=block)
yield self._pack(block=self.EOF)
@@ -95,8 +95,8 @@ def encode(data, framer=None):
@chain_wrapper
def _to_bytes(bits, block_size=1):
for _, chunk in common.iterate(data=bits, size=8*block_size,
func=lambda x: x, truncate=True):
for chunk in common.iterate(data=bits, size=8*block_size,
func=lambda x: x, truncate=True):
yield bitarray.bitarray(chunk, endian='little').tobytes()

View File

@@ -44,7 +44,7 @@ def report_carrier(bufs, begin):
def detect(samples, freq):
counter = 0
bufs = collections.deque([], maxlen=config.baud) # 1 second of symbols
for offset, buf in common.iterate(samples, config.Nsym):
for offset, buf in common.iterate(samples, config.Nsym, enumerate=True):
bufs.append(buf)
coeff = dsp.coherence(buf, config.Fc)
@@ -230,8 +230,8 @@ class Receiver(object):
def run(self, output):
data = framing.decode(self.bitstream)
self.size = 0
for _, chunk in common.iterate(data=data, size=256,
truncate=False, func=bytearray):
for chunk in common.iterate(data=data, size=256,
truncate=False, func=bytearray):
output.write(chunk)
self.size += len(chunk)

View File

@@ -45,7 +45,8 @@ class Writer(object):
bits = itertools.chain(bits, padding)
symbols_iter = modem.qam.encode(bits)
carriers = modem.carriers / config.Nfreq
for i, symbols in common.iterate(symbols_iter, size=config.Nfreq):
for i, symbols in common.iterate(symbols_iter,
size=config.Nfreq, enumerate=True):
symbols = np.array(list(symbols))
self.write(np.dot(symbols, carriers))

View File

@@ -4,7 +4,10 @@ import numpy as np
def iterlist(x, *args, **kwargs):
x = np.array(x)
return list((i, list(x)) for i, x in common.iterate(x, *args, **kwargs))
return list(
(i, list(x))
for i, x in common.iterate(x, enumerate=True, *args, **kwargs)
)
def test_iterate():