Skip to content

Commit

Permalink
#21 Release 1.0.2 from davidkowalk/development-1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
davidkowalk authored Dec 7, 2024
2 parents a9d9b55 + c795b9a commit 3385d37
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 8 deletions.
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/davidkowalk/fitting_toolkit)
![GitHub License](https://img.shields.io/github/license/davidkowalk/fitting_toolkit)
![University](https://img.shields.io/badge/Univeristy_of_Bonn-brown)
![Version](https://img.shields.io/badge/version-1.0.1-green)
![Version](https://img.shields.io/badge/version-1.0.2-green)
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/davidkowalk/fitting_toolkit)
![GitHub Repo stars](https://img.shields.io/github/stars/davidkowalk/fitting_toolkit?style=flat&label=github%20stars)
![PyPI - Downloads](https://img.shields.io/pypi/dm/fitting-toolkit?label=pip%20installs)\
![University](https://img.shields.io/badge/Univeristy_of_Bonn-brown)



Expand Down Expand Up @@ -34,15 +35,20 @@ pip install fitting-toolkit==1.0.1

You can find all releases here:

[<img src="https://gist.github.com/cxmeel/0dbc95191f239b631c3874f4ccf114e2/raw/download.svg" alt="Releases" height="48" />](https://github.com/davidkowalk/fitting_toolkit/releases)
<a href= "https://github.com/davidkowalk/fitting_toolkit/releases">![Download](./docs/img/download.svg)</a>

To install the current development version ahead of releases check out the development branches.
| Branch | Purpose
|-----------------|-------------
| development-1.0 | Bug fixes and documentation adding onto version 1.0.1
| development-1.1 | Development of new major features

After downloading the desired version you can find the `fitting_toolkit.py` in the `src` folder and copy it into your project.

To build the project yourself and install it, make sure `setuptools` and `wheel` are installed, then run
```
python3 setup.py sdist bdist_wheel
pip install .\dist\fitting_toolkit-1.0.1-py3-none-any.whl --force-reinstall
pip install --no-deps --force-reinstall ./dist/fitting_toolkit-VERSION_NUMBER-py3-none-any.whl
pip show fitting-toolkit -v
```

Expand Down
6 changes: 6 additions & 0 deletions docs/img/download.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
98 changes: 98 additions & 0 deletions package_description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<!--This document is mostly redundant with README, the contents here are pulled for pip rehosting-->

![GitHub License](https://img.shields.io/github/license/davidkowalk/fitting_toolkit)
![GitHub Release](https://img.shields.io/github/v/release/davidkowalk/fitting_toolkit?color=green)
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/davidkowalk/fitting_toolkit)
![GitHub Repo stars](https://img.shields.io/github/stars/davidkowalk/fitting_toolkit?style=flat&label=github%20stars)
![PyPI - Downloads](https://img.shields.io/pypi/dm/fitting-toolkit?label=pip%20installs)\
![University](https://img.shields.io/badge/Univeristy_of_Bonn-brown)



# Fitting Toolkit
This toolkit aims at providing flexible and powerful tools for data analysis and modelling, but remain easy to use.
This toolkit is aimed primarily at my peers, students of physics at the university of bonn, and to a degree at professionals within my field. I am optimizing this toolkit to be used on the scale typical of lab courses and homework assignments but if possible it should be powerful enough to run decently sized datasets on an average laptop.

This package wraps numpy for fast data management and manipulation, scipy for `curve_fit()` and matplotlib for display options.

## Quick Introduction

### Installation

There are multiple ways to install this package. The easiest is via pip:
```
pip install fitting-toolkit
```
If you need a specific version (for example due to compatibillity issues) you can specify the version via `fitting-toolkit==version`, e.g:
```
pip install fitting-toolkit==1.0.1
```

### Alternative Installation Methods

To install the current development version ahead of releases check out the development branches on GitHub.
| Branch | Purpose
|-----------------|-------------
| development-1.0 | Bug fixes and documentation adding onto version 1.0.1
| development-1.1 | Development of new major features

After downloading the desired version you can find the `fitting_toolkit.py` in the `src` folder and copy it into your project.

To build the project yourself and install it, make sure `setuptools` and `wheel` are installed, then run
```
python3 setup.py sdist bdist_wheel
pip install --no-deps --force-reinstall ./dist/fitting_toolkit-VERSION_NUMBER-py3-none-any.whl
pip show fitting-toolkit -v
```

### Requirements
This project requires the following modules along with their dependencies:
- numpy
- matplotlib
- scipy

It is highly recommended that the user familiarizes themselves with the functionality of these modules first. A rudimentary understanding of `numpy` and `matplotlib.pyplot` is required.

If you install via pip the dependencies will automatically be installed. However if the project files are used directly you may want to install dependencies manually:

To install the dependencies, first a [virtual environment](https://docs.python.org/3/library/venv.html) should be created. `requirements.txt` lists all necessary packages. Run:
```
pip install -r requirements.txt
```

### Getting Started

You can now import the relevant functions into your code:
```python
from fitting_toolkit import curve_fit, plot_fit
import numpy as np
```
The `curve_fit` requires numpy-arrays. Therefore numpy has to be imported as well.

We can now start by defining our data.
```python
x = np.array((1, 2, 3, 4, 5))
y = np.array((1, 2, 1.75, 2.25, 3))
dy = 0.1*y+0.05
dx = 0.1
```
We chose a simple linear model:
```python
def f(x, a, b):
return a * x + b
```
We can now fit the model to the data:
```python
params, cov, lower_conf, upper_conf = curve_fit(f, x, y, yerror=dy)
```
This functions returns 4 arrays. First the parameters of the model, the covariance matrix of those parameters and then the lower and upper limits of the confidence interval around the fit. Note that the confidence interval is absolute. To get the error in relation to the fitted function you would need to find the difference at each point.

The resulting fit can now be plotted. This toolkit provides a premade function to generate plots:
```python
from matplotlib import pyplot as plt
fig, ax = plot_fit(x, y, f, params, lower_conf, upper_conf, xerror=dx, yerror=dy)
plt.show()
```
Note that the fitted function is not automatically displayed. Instead the figure and axis-objects are returned.

![Example Graph](https://github.com/davidkowalk/fitting_toolkit/blob/Stable/docs/img/example_fit.png?raw=true)
11 changes: 8 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
from setuptools import setup
#run with python3 setup.py sdist bdist_wheel

with open("./README.md") as f:
with open("./package_description.md") as f:
description = f.read()

with open("./requirements.txt", encoding="utf-16") as f:
requirements = f.readlines()

setup(
name = "fitting_toolkit",
version = "1.0.1",
version = "1.0.2",
package_dir={"": "src"},
packages=[""],
long_description=description,
long_description_content_type="text/markdown",
install_requires = requirements,
project_urls = {
"Documentation": "https://github.com/davidkowalk/fitting_toolkit/blob/development/docs/manual.md",
"Documentation": "https://github.com/davidkowalk/fitting_toolkit/blob/Stable/docs/manual.md",
"Source": "https://github.com/davidkowalk/fitting_toolkit/",
"Tracker": "https://github.com/davidkowalk/fitting_toolkit/issues"
},
classifiers=[
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Natural Language :: English"
],
license="MIT",
description="Easy and Flexible Curve Fitting",
url="https://github.com/davidkowalk/fitting_toolkit/"
Expand Down

0 comments on commit 3385d37

Please sign in to comment.