Module rpps.serial.file
Wrapper for processing files
Functions
def read_f16(path, count, offset)-
Expand source code
def read_f16(path, count, offset): samps = np.fromfile(path, offset=offset, count=count, dtype=np.float16) return formats.from_f16(samps) def read_f32(path, count, offset)-
Expand source code
def read_f32(path, count, offset): samps = np.fromfile(path, offset=offset, count=count, dtype=np.float32) return formats.from_f32(samps) def read_i16(path, count, offset)-
Expand source code
def read_i16(path, count, offset): samps = np.fromfile(path, offset=offset, count=count, dtype=np.int16) return formats.from_i16(samps) def read_i8(path, count, offset)-
Expand source code
def read_i8(path, count, offset): samps = np.fromfile(path, offset=offset, count=count, dtype=np.int8) return formats.from_i8(samps)
Classes
class File (fmt, path)-
Expand source code
class File: def __init__(self, fmt, path): self.fmt = Formats[fmt] self.path = path self.cur_samp = 0 self.max_samp = os.path.getsize(path) // self.fmt.size def __str__(self): return f"File ({self.cur_samp}/{self.max_samp},{self.fmt.name}): {self.path}" def read(self, count): count *= 2 if self.cur_samp + count > self.max_samp: raise err.Overflow(f"{self.cur_samp}+{count} > {self.max_samp}") samps = self.fmt.read(self.path, count, self.cur_samp) self.cur_samp += count return samps def __call__(self, count): return self.iter(count) def iter(self, count): while self.cur_samp + count <= self.max_samp: yield self.read(count) @property def percent(self): return self.cur_samp/self.max_sampInstance variables
prop percent-
Expand source code
@property def percent(self): return self.cur_samp/self.max_samp
Methods
def iter(self, count)-
Expand source code
def iter(self, count): while self.cur_samp + count <= self.max_samp: yield self.read(count) def read(self, count)-
Expand source code
def read(self, count): count *= 2 if self.cur_samp + count > self.max_samp: raise err.Overflow(f"{self.cur_samp}+{count} > {self.max_samp}") samps = self.fmt.read(self.path, count, self.cur_samp) self.cur_samp += count return samps
class Formats (*args, **kwds)-
Expand source code
class Formats(Enum): i8 = (2, read_i8) i16 = (4, read_i16) f16 = (4, read_f16) f32 = (8, read_f32) @property def size(self): return self.value[0] def read(self, path, count, offset): return self.value[1](path, count, offset*self.size)Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
- attribute access:
Color.RED
- value lookup:
Color(1)
- name lookup:
Color['RED']
Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Ancestors
- enum.Enum
Class variables
var f16var f32var i16var i8
Instance variables
prop size-
Expand source code
@property def size(self): return self.value[0]
Methods
def read(self, path, count, offset)-
Expand source code
def read(self, path, count, offset): return self.value[1](path, count, offset*self.size)