Пример #1
0
    def init(self, args):
        Intercom_empty.init(self, args)
        zeros = np.zeros(self.frames_per_chunk)

        coeffs = wt.wavedec(zeros, wavelet=wavelet, level=levels, mode=padding)

        arr, self.coeffs_slices = wt.coeffs_to_array(coeffs)
Пример #2
0
 def send(self, indata):
     #el canal derecho no hace falta transformarlo
     canal_L = indata[:, 0]
     coeffs = wt.wavedec(canal_L,
                         wavelet=wavelet,
                         level=levels,
                         mode=padding)
     arr, self.coeffs_slices = wt.coeffs_to_array(coeffs)
     arr = arr.astype(np.int16)
     indata[:, 0] = arr
     Intercom_empty.send(self, indata)
Пример #3
0
    def init(self, args):
        Intercom_empty.init(self, args)
        self.skipped_bitplanes = [0]*self.cells_in_buffer

        # Number of levels of the DWT
        levels = 4
        # Wavelet used Biorthogonal 3.5
        #Referencia http://wavelets.pybytes.com/wavelet/bior3.5/
        wavelet = 'bior3.5'
        #padding = "symmetric"
        padding = "periodization"
Пример #4
0
 def init(self, args):
     Intercom_empty.init(self, args)
     self.precision_bits = 32
     self.precision_type = np.int32
     self.number_of_bitplanes_to_send = self.precision_bits * self.number_of_channels
     print("{}".format(self.number_of_bitplanes_to_send))
     print("intercom_bitplanes: transmitting by bitplanes")
     self.max_number_of_bitplanes_to_send = self.number_of_bitplanes_to_send
     self.number_of_received_bitplanes = self.max_number_of_bitplanes_to_send
     self.levels = 4                  # Number of levels of the DWT
     self.wavelet = 'bior3.5'         # Wavelet Biorthogonal 3.5
     self.padding = "periodization"   # Signal extension procedure used in
     self.get_coeffs_bitplanes()
Пример #5
0
    def init(self, args):
        Intercom_empty.init(self, args)
        self.samples = 0

        #Create empty chunk for slice calcultation
        empty_channel = np.zeros(self.frames_per_chunk + overlap)

        #Calc coefficient of empty chunk
        self.coeffs_empty = wt.wavedec(empty_channel,
                                       wavelet=wavelet,
                                       level=levels,
                                       mode=padding)

        #Calc coefficient array and slice structure
        self.arr_empty, self.slice_structure = wt.coeffs_to_array(
            self.coeffs_empty)

        #Create empty coefficient array buffer
        self._buffer_coeffs = [None] * self.cells_in_buffer

        for i in range(self.cells_in_buffer):
            self._buffer_coeffs[i] = self.generate_zero_arr()

        #Set variables for previous, current and next chunk for considering overlapping samples
        self._last = self.generate_zero_chunk()
        self._current = self.generate_zero_chunk()
        self._next = self.generate_zero_chunk()

        #Increase max bitplanes to 64 (2 channels)
        self.max_NOBPTS = 32 * self.number_of_channels
        self.NOBPTS = self.max_NOBPTS
        self.NORB = self.max_NOBPTS

        #Create empty coefficiente array as template
        self.arr_temp = np.zeros((len(self.arr_empty), 2), dtype=np.int32)

        #Set packet size depending on overlapping bitplanes
        if (overlap > 0):
            self.packet_format = f"!HBB{(len(self.arr_empty)//8)+1}B"
        else:
            self.packet_format = f"!HBB{(len(self.arr_empty)//8)}B"

        #Some status messages for development
        #sys.stderr.write("\nFPC{}".format(self.frames_per_chunk)); sys.stderr.flush()
        #sys.stderr.write("\nFPCMAS{}".format(self.frames_per_chunk + overlap)); sys.stderr.flush()
        #sys.stderr.write("\nCOEFFS{}".format(len(self.coeffs_empty))); sys.stderr.flush()
        #sys.stderr.write("\narr_empty{}".format(self.arr_empty.shape)); sys.stderr.flush()

        #set buffer for skipped bitplanes
        self.skipped_bitplanes = [0] * self.cells_in_buffer
Пример #6
0
    def init(self, args):
        Intercom_empty.init(self, args)

        self.max_NOBPTS = self.number_of_channels * 32

        # Initialize an empty array for coefficients
        self.coeffs = pywt.wavedec(np.zeros(self.frames_per_chunk),
                                   "db1",
                                   mode="per",
                                   level=4)
        array, self.coeff_slices = pywt.coeffs_to_array(self.coeffs)
        self.buffer_send = np.zeros((len(array), 2), dtype=np.int32)
        self.buffer_coeffs = [None] * self.cells_in_buffer
        for cell in range(self.cells_in_buffer):
            self.buffer_coeffs[cell] = np.zeros((self.frames_per_chunk, 2),
                                                dtype=np.int32)
Пример #7
0
    def init(self, args):
        Intercom_empty.init(self, args)

        #We increase the number of bitplanes to send to 32 per channel
        self.max_NOBPTS = 32*self.number_of_channels

        #We create the structure to store the coefficients
        zeros = np.zeros(self.frames_per_chunk)
        self.coeffs = pywt.wavedec(zeros, wavelet=wavelet, mode=padding, level=level)
        coeff_temp, self.coeff_slices = pywt.coeffs_to_array(self.coeffs)

        #We create the buffers to store the coefficients in their correct format
        self.buffer_send = np.zeros((len(coeff_temp), 2), dtype=np.int32)

        self.buffer_coeffs = [None]*self.cells_in_buffer
        for i in range(self.cells_in_buffer):
            self.buffer_coeffs[i] = np.zeros((self.frames_per_chunk, 2), dtype=np.int32)
Пример #8
0
 def init(self, args):
     Intercom_empty.init(self, args)
     self.precision_bits = 32
     self.sample_type = np.int32
     self.sign_mask = (1 << (self.precision_bits - 1))
     self.precision_bits_1 = self.precision_bits - 1
     self.magnitude_mask = ((1 << (self.precision_bits_1)) - 1)
     self.number_of_bitplanes_to_send = self.precision_bits * self.number_of_channels
     if __debug__:
         print("intercom_dwt: number_of_bitplanes_to_send={}".format(
             self.number_of_bitplanes_to_send))
     self.max_number_of_bitplanes_to_send = self.number_of_bitplanes_to_send
     self.number_of_received_bitplanes = self.max_number_of_bitplanes_to_send
     self.levels = 4  # Number of levels of the DWT
     self.wavelet = 'bior3.5'  # Wavelet Biorthogonal 3.5
     self.padding = "periodization"  # Signal extension procedure used in
     self.slices = self.get_coeffs_slices()
     print("intercom_dwt: using wavelet domain \"{}\"".format(self.wavelet))
Пример #9
0
    def init(self, args):
        Intercom_empty.init(self, args)

        # With wavedec we return an ordered list of coefficients arrays with the level of decomposition
        self.coeffs_empty = pywt.wavedec(np.zeros(self.frames_per_chunk),
                                         wavelet='db1',
                                         mode="periodization")
        # With coeffs_to_array we get the Wavelet transform coefficient array and a list of slices corresponding to each coefficient,
        #   we are only using this last part
        arr_empty, self.slice_structure = pywt.coeffs_to_array(
            self.coeffs_empty)
        self._buffer_coeffs = [None] * self.cells_in_buffer

        # Auxiliar array wich will be of use later
        self.aux_array = np.zeros(
            (self.frames_per_chunk, self.number_of_channels), np.int32)

        for i in range(self.cells_in_buffer):
            self._buffer_coeffs[i] = np.zeros(
                (self.frames_per_chunk, self.number_of_channels), np.int32)
Пример #10
0
    def init(self, args):
        Intercom_empty.init(self, args)
        self.samples = 0
        self.packet_format = f"!HBB{self.frames_per_chunk//8}B"
        empty_channel = np.zeros(self.frames_per_chunk)
        self.coeffs_empty = wt.wavedec(empty_channel,
                                       wavelet=wavelet,
                                       mode=padding)
        #self.coeffs_empty = wt.wavedec(empty_channel, wavelet=wavelet, level=levels, mode=padding)
        arr_empty, self.slice_structure = wt.coeffs_to_array(self.coeffs_empty)
        #self._buffer = [self.generate_zero_chunk()] * self.cells_in_buffer
        self._buffer_coeffs = [None] * self.cells_in_buffer
        self.max_NOBPTS = 32 * self.number_of_channels
        self.NOBPTS = self.max_NOBPTS
        self.NORB = self.max_NOBPTS
        self.arr_temp = np.zeros(
            (self.frames_per_chunk, self.number_of_channels), np.int32)

        for i in range(self.cells_in_buffer):
            self._buffer_coeffs[i] = self.generate_zero_arr()
 def init(self, args):
     Intercom_empty.init(self, args)
     self.packet_format = f"!HH{self.frames_per_chunk//8}HH"
     self.zeros = 0
Пример #12
0
 def init(self, args):
     Intercom_empty.init(self, args)