Module project.stats.ploting

Expand source code
import matplotlib.pyplot as pl
import scipy.signal as s
import scipy.fft as f
import numpy as np

import random as r


def _show(fun, data, data_len, max_len, transformer, desired=False):
    r.shuffle(data)
    for i, x in enumerate(data):
        if i >= max_len:
            break
        pl.figure(i)
        pl.plot(fun(x, data, data_len, transformer))
        pl.title(get_title(x[0]) + f" {fun.__name__}")
        pl.legend(range(9))
    if desired:
        pl.figure(max_len)
        pl.plot(fun(None, data, data_len, transformer))
        pl.title("desired" + f" {fun.__name__}")
        pl.legend(range(9))
    pl.show()


showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)


def get_title(current):
    return " ".join([
        f"{k}={v}" for k, v in current.items() if k not in
        ["input", "desired", *[x.name for x in list(t.Transformers)]]
    ])


@showable(True)
def output(
           current,
           data,
           data_len,
           transformer,
           ):
    return current[0][transformer][0][
        "output"][:data_len] if current is not None else data[0][0][
            "desired"][:data_len]


@showable()
def correlation(current, data, data_len, transformer):
    des = data[0][0]["desired"][:data_len]
    out = current[0][transformer][0][
        "output"][:data_len] if current is not None else des
    return s.correlate(out, des)


@showable()
def fft(current, data, data_len, transformer):
    current = current[0][transformer][0][
        "output"][:data_len] if current is not None else data[0][0][
            "desired"][:data_len]
    return f.fftn(current)


@showable(True)
def log_fft(current, data, data_len, transformer):
    tmp = current[0][transformer][0][
        "output"][:data_len] if current is not None else data[0][0][
            "desired"][:data_len]
    return np.log(np.abs(f.fftshift(f.fftn(tmp)))**2)

Functions

def correlation(*args, **kwargs)
Expand source code
showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)
def fft(*args, **kwargs)
Expand source code
showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)
def get_title(current)
Expand source code
def get_title(current):
    return " ".join([
        f"{k}={v}" for k, v in current.items() if k not in
        ["input", "desired", *[x.name for x in list(t.Transformers)]]
    ])
def log_fft(*args, **kwargs)
Expand source code
showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)
def output(*args, **kwargs)
Expand source code
showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)
def showable(desired=False)
Expand source code
showable = lambda desired=False: lambda fun: lambda *args, **kwargs: _show(
    fun, *args, **kwargs, desired=desired)