Source code for draugr.numpy_utilities.signal_utilities.truncation
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "Christian Heider Nielsen"
__doc__ = r"""
Created on 16-12-2020
"""
from typing import Iterable, Sequence
__all__ = ["last_dim_truncate", "min_length_truncate_batch", "truncate_to_power_2"]
from warg.math.powers import prev_pow_2
[docs]def min_length_truncate_batch(batch: Iterable[Sequence]) -> Iterable:
"""
:param batch:
:return:"""
min_seq_len = min([s.shape[-1] for s in batch])
return [last_dim_truncate(s, min_seq_len) for s in batch]
def min_length_truncate_batch_2d(batch: Iterable[Sequence]) -> Iterable:
"""
:param batch:
:return:"""
min_seq_len = min([len(s) for s in batch])
return [last_dim_truncate(s, min_seq_len) for s in batch]
[docs]def last_dim_truncate(sequence: Sequence, min_length: int) -> Sequence:
"""
:param sequence:
:param min_length:
:return:"""
return sequence[..., :min_length]
[docs]def truncate_to_power_2(signal: Sequence) -> Sequence:
"""description"""
return last_dim_truncate(signal, prev_pow_2(len(signal)))
if __name__ == "__main__":
def gasdasa() -> None:
"""
:rtype: None
"""
from draugr.torch_utilities import to_tensor
base = 5
stair_length = 9
stair = [to_tensor(range(i + base)) for i in range(stair_length)]
trunc = [last_dim_truncate(s, base) for s in stair]
print(to_tensor(trunc))
def basdiuj() -> None:
"""
:rtype: None
"""
import numpy
asda = numpy.arange(2**5 - 1)
print(asda, len(asda))
trunc = truncate_to_power_2(asda)
print(trunc, len(trunc))
# gasdasa()
basdiuj()