From af2fd2b069ba060db030d7cfeee5bdb27d197180 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 20 Jun 2023 06:57:51 +0000 Subject: automatic import of python-phylab --- python-phylab.spec | 540 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 540 insertions(+) create mode 100644 python-phylab.spec (limited to 'python-phylab.spec') diff --git a/python-phylab.spec b/python-phylab.spec new file mode 100644 index 0000000..08f9665 --- /dev/null +++ b/python-phylab.spec @@ -0,0 +1,540 @@ +%global _empty_manifest_terminate_build 0 +Name: python-phylab +Version: 0.4.1 +Release: 1 +Summary: A Python module for basic data analysis and curve fitting for Physics laboratory students. +License: GPLv3 +URL: https://github.com/BernardoTomelleri/phylab +Source0: https://mirrors.aliyun.com/pypi/web/packages/f5/d3/4c8ec11838854c8fff7f324eb897dd3b2cb8d1eb32e66a9bb43cdc6aa8be/phylab-0.4.1.tar.gz +BuildArch: noarch + +Requires: python3-numpy +Requires: python3-scipy +Requires: python3-matplotlib + +%description +[![Build Status](https://github.com/BernardoTomelleri/phylab/actions//workflows/PyPI-publish-release.yml/badge.svg)](https://github.com/BernardoTomelleri/phylab/actions/workflows/PyPI-publish-release.yml) +[![GPLv3 License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://opensource.org/licenses/gpl-3.0.html) +A Python package for basic data analysis and curve fitting for Physics laboratory students. +## Table of contents +- [Phy lab](#phy-lab) + * [Table of contents](#table-of-contents) + * [Philosophy behind this](#philosophy-behind-this) + + [How this library came about](#how-this-library-came-about) + * [Contents](#contents) + + [model functions](#model-functions) + + [testing and printing of fit results](#testing-and-printing-of-fit-results) + + [curve-fitting routines](#curve-fitting-routines) + + [Fourier transform utilities](#fourier-transform-utilities) + + [data plotting](#data-plotting) + + [importing data from files](#importing-data-from-files) + * [Setting up](#setting-up) + + [Prerequisites](#prerequisites) + + [Installation](#installation) + * [Using Phy lab](#using-phy-lab) + * [Development](#development) + * [License](#license) +## Philosophy behind this +Because this was written by someone starting to learn about experimental Physics +and Python (for students in a similar situation) all the functions in this module +try to use only the basic data structures and functionalities found in Python +that are briefly discussed with students (functions, arrays & not much else). +This is why you won't find classes, methods or even dicts in this package +and why the code inside may be very, very inefficient/ugly. +On the upside though, all the definitions inside should be easily comprehensible +and modifiable by anyone just starting out with programming. +### How this library came about +While writing the python scripts for individual experiments (at UniPi's Physics Lab) +I noticed that a significant amount of code was common to almost all of them. +I started writing down these common functions in a python module everytime this +happened, so that I could import them later to save a lot of time and hassle. +That's basically the story behind it: a collection of useful ideas I had while +learning how to analyze experimental data with Python's SciPy. +Now that it's grown into a powerful enough collection of tools, I decided to +release it for any and all students that may find it helpful for dealing +with similar problems. +## Contents +- The main module containing all the functions. [lab] +- A simple showcase of a couple of things this library allows you to do. [circfit] + - Finding the best-fitting circle and ellipse for simulated or real sampled data points. + - A quick comparison between using `curve_fit`, an algebraic circle fit + (weighted [Coope] method) and an algebraic ellipse fit. + - Plotting the $\chi^2(a, b)$ surface for a pair of parameters $a, b$ of the circle or the ellipse. +- Folder containing further examples and data that can be used in the demos. [examples] +For another example of where this package can come in handy feel free to check +out [FFT repository] and [Lock-in detector]. A small paper (in italiano) on fitting, +computing Fourier transforms and/or simulating the effect of a Lock-in detector +on real sampled signals or internally generated ones. +### model functions +A few definitions of the model functions more commonly encountered in the first +years of Physics lab (e.g. [dampened oscillator], [square wave]) +along with a few digital filters (e.g. [Butterworth]). +Right at the beginning of the module so you can immediately start adding +the models you need. +### testing and printing of fit results +Goodness of fit tests, evaluation of parameter uncertainties and +correlations ([chi-square test], [errcor]). +Simple print formatters that allow you to quickly display the results +of a fit and associated uncertainties with the desired number of significant +digits. ([print correlations], [print parameters]) +### curve-fitting routines +Weighted least-square fitting accounting for uncertainties on x and y axes +with linear error propagation ([propagated fit]), relying on [scipy.optimize.curve_fit]. +Weighted orthogonal distance regression thanks to [ODRPACK]. +Weighted algebraic fits (like [ellipse fit] and others). +### Fourier transform utilities +Functions for computing FFTs of real and complex signals and other +associated quantities ([sampling], [FFT], [FWHM]), applying window functions +and displaying their output through Matplotlib ([plotfft]). +### data plotting +Instead of having to write multiple calls to function in order to: +activate axis minor ticks, setting their size, orientation and spacing, +placing grids, setting errorbar sizes, etc.. (stuff that's present in +almost all experimental graphs) +You can set some sensible defaults for plots of fitted data, so you can +do all of the above in a faster and less error-prone way. +([grid], [plot fit & residuals]) +### importing data from files +Load a selected range of data from (.txt, .csv, .py, etc.) files as NumPy +arrays, loop over files in a directory with a few calls to function +([measured range], [file loop]). +## Setting up +This library was written entirely in Python 3.x, but because of its entry +level design should be effortless to readapt to Python 2.x. +Should be completely OS independent. +### Prerequisites +Phy lab requires three core packages from the SciPy ecosystem to work: +[Numpy], [SciPy] and [Matplotlib]. You should be able to obtain all 3 via `pip` +``` +python -m pip install --user --upgrade numpy scipy matplotlib +``` +Check [SciPy's installation page](https://www.scipy.org/install.html) for more details. +### Installation +The cleanest way to install and manage phylab is using `pip`: +``` +python -m pip install --user phylab +``` +Then simply import the main module with +``` +import phylab as lab +``` +Alternatively, you can clone the repository or download the latest release +manually and import the main module directly inside your script just as before. +## Using Phy lab +For a quick guide on how to use this library and to show just how much of a difference +using these few functions can have, compare [beat] and [beat_naive]. +These two scripts do the same thing, but the first one is three times shorter +at 50 lines, runs ~ 0.2 seconds (30%) faster using less memory and can be +easily extended to work with more than 2 datasets, remove outliers, +compute FFT and so on... As you can see for example in [beat_ext]. +## Development +Any and all suggestions are always appreciated, If you want to contribute +in any way don't hesitate to contact me. I'm always happy to learn something +new, so if you know how to improve any part of the code, find something +that needs fixing or even if you'd like to see something added going forwards, +feel free to let me know (here or at bernardo.tomelleri@gmail.com). +## License +Phy lab is licensed under the GNU General Public License v3.0 or later. +[//]: # (These are reference links used in the body of the readme and get +stripped out by the markdown processor. +See - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax) + [lab]: + [circfit]: + [examples]: + [FFT repository]: + [Lock-in detector]: + [Coope]: + [dampened oscillator]: + [square wave]: + [Butterworth]: + [chi-square test]: + [errcor]: + [print correlations]: + [print parameters]: + [propagated fit]: + [ODRPACK]: + [scipy.optimize.curve_fit]: + [ellipse fit]: + [sampling]: + [FFT]: + [FWHM]: + [plotfft]: + [grid]: + [plot fit & residuals]: + [measured range]: + [file loop]: + [SciPy]: + [NumPy]: + [Matplotlib]: + [beat]: + [beat_naive]: + [beat_ext]: + +%package -n python3-phylab +Summary: A Python module for basic data analysis and curve fitting for Physics laboratory students. +Provides: python-phylab +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-phylab +[![Build Status](https://github.com/BernardoTomelleri/phylab/actions//workflows/PyPI-publish-release.yml/badge.svg)](https://github.com/BernardoTomelleri/phylab/actions/workflows/PyPI-publish-release.yml) +[![GPLv3 License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://opensource.org/licenses/gpl-3.0.html) +A Python package for basic data analysis and curve fitting for Physics laboratory students. +## Table of contents +- [Phy lab](#phy-lab) + * [Table of contents](#table-of-contents) + * [Philosophy behind this](#philosophy-behind-this) + + [How this library came about](#how-this-library-came-about) + * [Contents](#contents) + + [model functions](#model-functions) + + [testing and printing of fit results](#testing-and-printing-of-fit-results) + + [curve-fitting routines](#curve-fitting-routines) + + [Fourier transform utilities](#fourier-transform-utilities) + + [data plotting](#data-plotting) + + [importing data from files](#importing-data-from-files) + * [Setting up](#setting-up) + + [Prerequisites](#prerequisites) + + [Installation](#installation) + * [Using Phy lab](#using-phy-lab) + * [Development](#development) + * [License](#license) +## Philosophy behind this +Because this was written by someone starting to learn about experimental Physics +and Python (for students in a similar situation) all the functions in this module +try to use only the basic data structures and functionalities found in Python +that are briefly discussed with students (functions, arrays & not much else). +This is why you won't find classes, methods or even dicts in this package +and why the code inside may be very, very inefficient/ugly. +On the upside though, all the definitions inside should be easily comprehensible +and modifiable by anyone just starting out with programming. +### How this library came about +While writing the python scripts for individual experiments (at UniPi's Physics Lab) +I noticed that a significant amount of code was common to almost all of them. +I started writing down these common functions in a python module everytime this +happened, so that I could import them later to save a lot of time and hassle. +That's basically the story behind it: a collection of useful ideas I had while +learning how to analyze experimental data with Python's SciPy. +Now that it's grown into a powerful enough collection of tools, I decided to +release it for any and all students that may find it helpful for dealing +with similar problems. +## Contents +- The main module containing all the functions. [lab] +- A simple showcase of a couple of things this library allows you to do. [circfit] + - Finding the best-fitting circle and ellipse for simulated or real sampled data points. + - A quick comparison between using `curve_fit`, an algebraic circle fit + (weighted [Coope] method) and an algebraic ellipse fit. + - Plotting the $\chi^2(a, b)$ surface for a pair of parameters $a, b$ of the circle or the ellipse. +- Folder containing further examples and data that can be used in the demos. [examples] +For another example of where this package can come in handy feel free to check +out [FFT repository] and [Lock-in detector]. A small paper (in italiano) on fitting, +computing Fourier transforms and/or simulating the effect of a Lock-in detector +on real sampled signals or internally generated ones. +### model functions +A few definitions of the model functions more commonly encountered in the first +years of Physics lab (e.g. [dampened oscillator], [square wave]) +along with a few digital filters (e.g. [Butterworth]). +Right at the beginning of the module so you can immediately start adding +the models you need. +### testing and printing of fit results +Goodness of fit tests, evaluation of parameter uncertainties and +correlations ([chi-square test], [errcor]). +Simple print formatters that allow you to quickly display the results +of a fit and associated uncertainties with the desired number of significant +digits. ([print correlations], [print parameters]) +### curve-fitting routines +Weighted least-square fitting accounting for uncertainties on x and y axes +with linear error propagation ([propagated fit]), relying on [scipy.optimize.curve_fit]. +Weighted orthogonal distance regression thanks to [ODRPACK]. +Weighted algebraic fits (like [ellipse fit] and others). +### Fourier transform utilities +Functions for computing FFTs of real and complex signals and other +associated quantities ([sampling], [FFT], [FWHM]), applying window functions +and displaying their output through Matplotlib ([plotfft]). +### data plotting +Instead of having to write multiple calls to function in order to: +activate axis minor ticks, setting their size, orientation and spacing, +placing grids, setting errorbar sizes, etc.. (stuff that's present in +almost all experimental graphs) +You can set some sensible defaults for plots of fitted data, so you can +do all of the above in a faster and less error-prone way. +([grid], [plot fit & residuals]) +### importing data from files +Load a selected range of data from (.txt, .csv, .py, etc.) files as NumPy +arrays, loop over files in a directory with a few calls to function +([measured range], [file loop]). +## Setting up +This library was written entirely in Python 3.x, but because of its entry +level design should be effortless to readapt to Python 2.x. +Should be completely OS independent. +### Prerequisites +Phy lab requires three core packages from the SciPy ecosystem to work: +[Numpy], [SciPy] and [Matplotlib]. You should be able to obtain all 3 via `pip` +``` +python -m pip install --user --upgrade numpy scipy matplotlib +``` +Check [SciPy's installation page](https://www.scipy.org/install.html) for more details. +### Installation +The cleanest way to install and manage phylab is using `pip`: +``` +python -m pip install --user phylab +``` +Then simply import the main module with +``` +import phylab as lab +``` +Alternatively, you can clone the repository or download the latest release +manually and import the main module directly inside your script just as before. +## Using Phy lab +For a quick guide on how to use this library and to show just how much of a difference +using these few functions can have, compare [beat] and [beat_naive]. +These two scripts do the same thing, but the first one is three times shorter +at 50 lines, runs ~ 0.2 seconds (30%) faster using less memory and can be +easily extended to work with more than 2 datasets, remove outliers, +compute FFT and so on... As you can see for example in [beat_ext]. +## Development +Any and all suggestions are always appreciated, If you want to contribute +in any way don't hesitate to contact me. I'm always happy to learn something +new, so if you know how to improve any part of the code, find something +that needs fixing or even if you'd like to see something added going forwards, +feel free to let me know (here or at bernardo.tomelleri@gmail.com). +## License +Phy lab is licensed under the GNU General Public License v3.0 or later. +[//]: # (These are reference links used in the body of the readme and get +stripped out by the markdown processor. +See - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax) + [lab]: + [circfit]: + [examples]: + [FFT repository]: + [Lock-in detector]: + [Coope]: + [dampened oscillator]: + [square wave]: + [Butterworth]: + [chi-square test]: + [errcor]: + [print correlations]: + [print parameters]: + [propagated fit]: + [ODRPACK]: + [scipy.optimize.curve_fit]: + [ellipse fit]: + [sampling]: + [FFT]: + [FWHM]: + [plotfft]: + [grid]: + [plot fit & residuals]: + [measured range]: + [file loop]: + [SciPy]: + [NumPy]: + [Matplotlib]: + [beat]: + [beat_naive]: + [beat_ext]: + +%package help +Summary: Development documents and examples for phylab +Provides: python3-phylab-doc +%description help +[![Build Status](https://github.com/BernardoTomelleri/phylab/actions//workflows/PyPI-publish-release.yml/badge.svg)](https://github.com/BernardoTomelleri/phylab/actions/workflows/PyPI-publish-release.yml) +[![GPLv3 License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://opensource.org/licenses/gpl-3.0.html) +A Python package for basic data analysis and curve fitting for Physics laboratory students. +## Table of contents +- [Phy lab](#phy-lab) + * [Table of contents](#table-of-contents) + * [Philosophy behind this](#philosophy-behind-this) + + [How this library came about](#how-this-library-came-about) + * [Contents](#contents) + + [model functions](#model-functions) + + [testing and printing of fit results](#testing-and-printing-of-fit-results) + + [curve-fitting routines](#curve-fitting-routines) + + [Fourier transform utilities](#fourier-transform-utilities) + + [data plotting](#data-plotting) + + [importing data from files](#importing-data-from-files) + * [Setting up](#setting-up) + + [Prerequisites](#prerequisites) + + [Installation](#installation) + * [Using Phy lab](#using-phy-lab) + * [Development](#development) + * [License](#license) +## Philosophy behind this +Because this was written by someone starting to learn about experimental Physics +and Python (for students in a similar situation) all the functions in this module +try to use only the basic data structures and functionalities found in Python +that are briefly discussed with students (functions, arrays & not much else). +This is why you won't find classes, methods or even dicts in this package +and why the code inside may be very, very inefficient/ugly. +On the upside though, all the definitions inside should be easily comprehensible +and modifiable by anyone just starting out with programming. +### How this library came about +While writing the python scripts for individual experiments (at UniPi's Physics Lab) +I noticed that a significant amount of code was common to almost all of them. +I started writing down these common functions in a python module everytime this +happened, so that I could import them later to save a lot of time and hassle. +That's basically the story behind it: a collection of useful ideas I had while +learning how to analyze experimental data with Python's SciPy. +Now that it's grown into a powerful enough collection of tools, I decided to +release it for any and all students that may find it helpful for dealing +with similar problems. +## Contents +- The main module containing all the functions. [lab] +- A simple showcase of a couple of things this library allows you to do. [circfit] + - Finding the best-fitting circle and ellipse for simulated or real sampled data points. + - A quick comparison between using `curve_fit`, an algebraic circle fit + (weighted [Coope] method) and an algebraic ellipse fit. + - Plotting the $\chi^2(a, b)$ surface for a pair of parameters $a, b$ of the circle or the ellipse. +- Folder containing further examples and data that can be used in the demos. [examples] +For another example of where this package can come in handy feel free to check +out [FFT repository] and [Lock-in detector]. A small paper (in italiano) on fitting, +computing Fourier transforms and/or simulating the effect of a Lock-in detector +on real sampled signals or internally generated ones. +### model functions +A few definitions of the model functions more commonly encountered in the first +years of Physics lab (e.g. [dampened oscillator], [square wave]) +along with a few digital filters (e.g. [Butterworth]). +Right at the beginning of the module so you can immediately start adding +the models you need. +### testing and printing of fit results +Goodness of fit tests, evaluation of parameter uncertainties and +correlations ([chi-square test], [errcor]). +Simple print formatters that allow you to quickly display the results +of a fit and associated uncertainties with the desired number of significant +digits. ([print correlations], [print parameters]) +### curve-fitting routines +Weighted least-square fitting accounting for uncertainties on x and y axes +with linear error propagation ([propagated fit]), relying on [scipy.optimize.curve_fit]. +Weighted orthogonal distance regression thanks to [ODRPACK]. +Weighted algebraic fits (like [ellipse fit] and others). +### Fourier transform utilities +Functions for computing FFTs of real and complex signals and other +associated quantities ([sampling], [FFT], [FWHM]), applying window functions +and displaying their output through Matplotlib ([plotfft]). +### data plotting +Instead of having to write multiple calls to function in order to: +activate axis minor ticks, setting their size, orientation and spacing, +placing grids, setting errorbar sizes, etc.. (stuff that's present in +almost all experimental graphs) +You can set some sensible defaults for plots of fitted data, so you can +do all of the above in a faster and less error-prone way. +([grid], [plot fit & residuals]) +### importing data from files +Load a selected range of data from (.txt, .csv, .py, etc.) files as NumPy +arrays, loop over files in a directory with a few calls to function +([measured range], [file loop]). +## Setting up +This library was written entirely in Python 3.x, but because of its entry +level design should be effortless to readapt to Python 2.x. +Should be completely OS independent. +### Prerequisites +Phy lab requires three core packages from the SciPy ecosystem to work: +[Numpy], [SciPy] and [Matplotlib]. You should be able to obtain all 3 via `pip` +``` +python -m pip install --user --upgrade numpy scipy matplotlib +``` +Check [SciPy's installation page](https://www.scipy.org/install.html) for more details. +### Installation +The cleanest way to install and manage phylab is using `pip`: +``` +python -m pip install --user phylab +``` +Then simply import the main module with +``` +import phylab as lab +``` +Alternatively, you can clone the repository or download the latest release +manually and import the main module directly inside your script just as before. +## Using Phy lab +For a quick guide on how to use this library and to show just how much of a difference +using these few functions can have, compare [beat] and [beat_naive]. +These two scripts do the same thing, but the first one is three times shorter +at 50 lines, runs ~ 0.2 seconds (30%) faster using less memory and can be +easily extended to work with more than 2 datasets, remove outliers, +compute FFT and so on... As you can see for example in [beat_ext]. +## Development +Any and all suggestions are always appreciated, If you want to contribute +in any way don't hesitate to contact me. I'm always happy to learn something +new, so if you know how to improve any part of the code, find something +that needs fixing or even if you'd like to see something added going forwards, +feel free to let me know (here or at bernardo.tomelleri@gmail.com). +## License +Phy lab is licensed under the GNU General Public License v3.0 or later. +[//]: # (These are reference links used in the body of the readme and get +stripped out by the markdown processor. +See - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax) + [lab]: + [circfit]: + [examples]: + [FFT repository]: + [Lock-in detector]: + [Coope]: + [dampened oscillator]: + [square wave]: + [Butterworth]: + [chi-square test]: + [errcor]: + [print correlations]: + [print parameters]: + [propagated fit]: + [ODRPACK]: + [scipy.optimize.curve_fit]: + [ellipse fit]: + [sampling]: + [FFT]: + [FWHM]: + [plotfft]: + [grid]: + [plot fit & residuals]: + [measured range]: + [file loop]: + [SciPy]: + [NumPy]: + [Matplotlib]: + [beat]: + [beat_naive]: + [beat_ext]: + +%prep +%autosetup -n phylab-0.4.1 + +%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-phylab -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot - 0.4.1-1 +- Package Spec generated -- cgit v1.2.3