diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-response.spec | 209 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 211 insertions, 0 deletions
@@ -0,0 +1 @@ +/response-0.5.0.tar.gz diff --git a/python-response.spec b/python-response.spec new file mode 100644 index 0000000..10fc71b --- /dev/null +++ b/python-response.spec @@ -0,0 +1,209 @@ +%global _empty_manifest_terminate_build 0 +Name: python-response +Version: 0.5.0 +Release: 1 +Summary: Your handy frequency and impulse response processing object +License: MIT +URL: https://github.com/fhchl/Response +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/16/85/5ef9dc059effac9932cc88465f3b8f5b187f23dc3b9bbe14e09664a0975c/response-0.5.0.tar.gz +BuildArch: noarch + +Requires: python3-numpy +Requires: python3-scipy +Requires: python3-matplotlib +Requires: python3-pytest +Requires: python3-pycodestyle +Requires: python3-pydocstyle +Requires: python3-pdoc3 +Requires: python3-pytest-cov + +%description +_Your handy frequency and impulse response processing object!_ +[](https://pypi.org/project/response/) +[](https://pypi.org/project/response/) +[](https://travis-ci.org/fhchl/Response) +[](https://codecov.io/gh/fhchl/Response) +This module supplies the `Response` class: an abstraction of frequency and +impulse responses and a set of handy methods for their processing. It implements a +[fluent interface][1] for chaining the processing commands. +Find the documentation [here][2] and the source code on [GitHub][3]. +[1]: https://en.wikipedia.org/wiki/Fluent_interface +[2]: https://fhchl.github.io/Response/ +[3]: https://github.com/fhchl/Response +```python +import numpy as np +from response import Response +fs = 48000 # sampling rate +T = 0.5 # length of signal +# a sine at 100 Hz +t = np.arange(int(T * fs)) / fs +x = np.sin(2 * np.pi * 100 * t) +# Do chain of processing +r = ( + Response.from_time(fs, x) + # time window at the end and beginning + .time_window((0, 0.1), (-0.1, None), window="hann") # equivalent to Tukey window + # zeropad to one second length + .zeropad_to_length(fs * 1) + # circular shift to center + .circdelay(T / 2) + # resample with polyphase filter, keep gain of filter + .resample_poly(500, window=("kaiser", 0.5), normalize="same_amplitude") + # cut 0.2s at beginning and end + .timecrop(0.2, -0.2) + # apply frequency domain window + .freq_window((0, 90), (110, 500)) +) +# plot magnitude, phase and time response +r.plot(show=True) +# real impulse response +r.in_time +# complex frequency response +r.in_freq +# and much more ... +``` + +%package -n python3-response +Summary: Your handy frequency and impulse response processing object +Provides: python-response +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-response +_Your handy frequency and impulse response processing object!_ +[](https://pypi.org/project/response/) +[](https://pypi.org/project/response/) +[](https://travis-ci.org/fhchl/Response) +[](https://codecov.io/gh/fhchl/Response) +This module supplies the `Response` class: an abstraction of frequency and +impulse responses and a set of handy methods for their processing. It implements a +[fluent interface][1] for chaining the processing commands. +Find the documentation [here][2] and the source code on [GitHub][3]. +[1]: https://en.wikipedia.org/wiki/Fluent_interface +[2]: https://fhchl.github.io/Response/ +[3]: https://github.com/fhchl/Response +```python +import numpy as np +from response import Response +fs = 48000 # sampling rate +T = 0.5 # length of signal +# a sine at 100 Hz +t = np.arange(int(T * fs)) / fs +x = np.sin(2 * np.pi * 100 * t) +# Do chain of processing +r = ( + Response.from_time(fs, x) + # time window at the end and beginning + .time_window((0, 0.1), (-0.1, None), window="hann") # equivalent to Tukey window + # zeropad to one second length + .zeropad_to_length(fs * 1) + # circular shift to center + .circdelay(T / 2) + # resample with polyphase filter, keep gain of filter + .resample_poly(500, window=("kaiser", 0.5), normalize="same_amplitude") + # cut 0.2s at beginning and end + .timecrop(0.2, -0.2) + # apply frequency domain window + .freq_window((0, 90), (110, 500)) +) +# plot magnitude, phase and time response +r.plot(show=True) +# real impulse response +r.in_time +# complex frequency response +r.in_freq +# and much more ... +``` + +%package help +Summary: Development documents and examples for response +Provides: python3-response-doc +%description help +_Your handy frequency and impulse response processing object!_ +[](https://pypi.org/project/response/) +[](https://pypi.org/project/response/) +[](https://travis-ci.org/fhchl/Response) +[](https://codecov.io/gh/fhchl/Response) +This module supplies the `Response` class: an abstraction of frequency and +impulse responses and a set of handy methods for their processing. It implements a +[fluent interface][1] for chaining the processing commands. +Find the documentation [here][2] and the source code on [GitHub][3]. +[1]: https://en.wikipedia.org/wiki/Fluent_interface +[2]: https://fhchl.github.io/Response/ +[3]: https://github.com/fhchl/Response +```python +import numpy as np +from response import Response +fs = 48000 # sampling rate +T = 0.5 # length of signal +# a sine at 100 Hz +t = np.arange(int(T * fs)) / fs +x = np.sin(2 * np.pi * 100 * t) +# Do chain of processing +r = ( + Response.from_time(fs, x) + # time window at the end and beginning + .time_window((0, 0.1), (-0.1, None), window="hann") # equivalent to Tukey window + # zeropad to one second length + .zeropad_to_length(fs * 1) + # circular shift to center + .circdelay(T / 2) + # resample with polyphase filter, keep gain of filter + .resample_poly(500, window=("kaiser", 0.5), normalize="same_amplitude") + # cut 0.2s at beginning and end + .timecrop(0.2, -0.2) + # apply frequency domain window + .freq_window((0, 90), (110, 500)) +) +# plot magnitude, phase and time response +r.plot(show=True) +# real impulse response +r.in_time +# complex frequency response +r.in_freq +# and much more ... +``` + +%prep +%autosetup -n response-0.5.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-response -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.0-1 +- Package Spec generated @@ -0,0 +1 @@ +64dc3e09bde6dee44663c57642ee6ed9 response-0.5.0.tar.gz |
