This package aims to compute the overlap integral between two probability density functions.
Project description
Overlap Integral Package
This project focuses on calculating the overlap integral between two probability density functions (PDFs):
The overlap integral, also known as coefficient of overlap, is a measure of similarity between two PDFs (f(x) and g(x)) and is used in various fields such as statistics, data science, etc. Additionally, it corresponds to the common area under the two PDFs.
-
Kernel Density Estimation (KDE): Estimate the PDFs from data using KDE, a non-parametric approach that builds a smooth probability density function based on observed data.
-
Gaussian Distribution: Alternatively, use the parameters (mean
muand standard deviationsigma) of an analytical Gaussian distribution to generate a PDF. This method is ideal when you know or assume that the data follows a normal distribution. -
Overlap Integral Calculation: The package computes the overlap integral, which measures the common area under two PDFs. This can be used to assess the similarity between two distributions.
Project Structure
src/overlap_integral/: Contains the core Python code for calculating the overlap integral.tests/: Includes the test scripts to validate the functionality of the code.README.md: Provides an overview and instructions for the project.pyproject.toml: Configuration file for the project dependencies and metadata.
Installation
To install the package using pip, run the following command:
pip install overlap-integral
Importing the Class: Import the OverlapIntegral class in your Python script.
```python
from overlap_integral.overlap_integral import OverlapIntegral
```
Usage Example: Provide a simple example to demonstrate how to use the OverlapIntegral class.
```python
import numpy as np
from overlap_integral.overlap_integral import OverlapIntegral
import plotly.io as pio
pio.kaleido.scope.default_format = "png"
def main():
np.random.seed(3) # Set random seed for reproducibility
overlap_integral_instance = OverlapIntegral()
# Generate or load data
data1 = np.random.normal(loc=10, scale=1, size=1000)
data2 = np.random.normal(loc=10, scale=2, size=1000)
# Choose PDF method: 'kde' or 'gaussian'
function_type = 'kde'
# Get PDFs
pdf_1 = overlap_integral_instance.get_pdf(data1, pdf_type=function_type)
pdf_2 = overlap_integral_instance.get_pdf(data2, pdf_type=function_type)
# Calculate overlap integral
lower_limit = min(np.min(data1), np.min(data2)) - 12 * max(np.std(data1), np.std(data2))
upper_limit = max(np.max(data1), np.max(data2)) + 12 * max(np.std(data1), np.std(data2))
integral, error = overlap_integral_instance.overlap_integral(pdf_1, pdf_2, lower_limit, upper_limit)
print(f"Overlap integral: {integral}")
print(f"Estimated error: {error}")
# Plot distributions
fig = overlap_integral_instance.plot_distributions(pdf_1, pdf_2, integral, error, x_range=(lower_limit, upper_limit))
fig.write_image("overlap_plot.png")
#fig.show()
print(f"Everything worked!")
if __name__ == '__main__':
main()
```
Requirements
- python >=3.12.3
Dependencies
- numpy
- scipy
- plotly
- kaleido
- pytest
License
This project is licensed under the MIT License.
Contribution
Feel free to submit issues or pull requests. Your contributions are welcome!
Contact
For questions or suggestions, please contact kiatakimatheus@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file overlap_integral-0.1.8.tar.gz.
File metadata
- Download URL: overlap_integral-0.1.8.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72cc17cfe459da0ee66ec998c055d0b93cdaccbc8a1227f6d2e011485f8fbe08
|
|
| MD5 |
f11b453214cf9be7f8f8fd8e786a7b8f
|
|
| BLAKE2b-256 |
6dd322ca4125fa43c6845e0d10e64c62ba88d2acb9cece8fec965d315dda1f54
|
File details
Details for the file overlap_integral-0.1.8-py3-none-any.whl.
File metadata
- Download URL: overlap_integral-0.1.8-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a48f114e407145cb4baa3dde609e0635b4a73f24baa34c7b9246e7a398aa8798
|
|
| MD5 |
8d961a2a4cfb4736c474dad558d1edd7
|
|
| BLAKE2b-256 |
f542b294169432a549bd262d040f02d1044e4620eb640ddff05af4910218eec1
|