<img src="./docs/logo/optimPV_logo.png" alt="optimPV logo" width="100px">
# optimPV: Optimization & Modeling tools for PV research
## Authors
[Vincent M. Le Corre](https://github.com/VMLC-PV)
[Larry Lüer](https://github.com/larryluer)
## Institution
<img src="./docs/logo/sdu_logo.jpg" alt="SDU logo" width="100px"> CAPE - Centre for Advanced Photovoltaics and Thin-film Energy Devices, University of Southern Denmark, Denmark
## Description
This repository contains the code to run **optimPV**. optimPV combines sevral optimization procedures and modeling utilities that can be used for two objectives:
1. to optimize the parameters of a simulation to fit experimental data.
2. to optimize the processing conditions in a self-driving experimental set-up.
## Repository Folder Structure
.
├── Main # Main directory
├── optimPV # Main directory for the optimPV codes
├── axBOtorch # Directory with the Bayesian optimization (BO) codes using BoTorch and Ax
├── BayesInfEmcee # Directory with the Bayesian inference codes using emcee
├── DDfits # Directory with the different agents to run the drift-diffusion simulator [SIMsalabim](https://github.com/kostergroup/SIMsalabim) for JV, Hysteresis, Impedance, CV and IMPS simulations and fitting
├── Diodefits # Directory with the agent to simulate and fit the non-ideal diode equation model
├── general # Directory with general utility functions used by the different agents
├── posterior # Directory with some utility functions to plot the posterior distributions using the BO surrogate model
├── RateEqfits # Directory with the agent to simulate and fit the rate equations for different experiment types (trPL, TRMC, TAS, etc.)
├── scipyOpti # Directory with the optimization codes using scipy.optimize
├── TransferMatrix # Directory with the agent to run the transfer matrix simulations
├── Notebooks # Contains clean versions of the Notebooks
├── Data # Contains some example data for the notebooks
├── docs # Contains the documentation
├── test # Contains the codes for testing optimPV
└── README.md
## Installation
### With pip
To install optimPV with pip you have two options:
1. Install optimPV using the [PyPI repository](https://pypi.org/project/optimpv/)
```bash
pip install optimpv
```
2. Install optimPV using the GitHub repository https://github.com/openPV-lab/optimPV
```bash
pip install git+https://github.com/openPV-lab/optimPV
```
### With conda
To install optimPV with conda:
```bash
conda create -n optimpv
conda activate optimpv
pip install optimpv
```
You can also clone your base environment:
```bash
conda create -n optimpv --clone base
```
## Additional necessary installs for the agents
### Drift-diffusion agent
The drift-diffusion agent uses [SIMsalabim](https://github.com/kostergroup/SIMsalabim) to run drift-diffusion simulations.
- SIMsalabim is included as a submodule.
- Install it following the instructions on the [SIMsalabim GitHub repository](https://github.com/kostergroup/SIMsalabim).
- Only works for parallel simulations on Linux. All other optimPV agents work on Windows.
### Parallel simulations
To run parallel simulations on Linux you can also install GNU Parallel:
```bash
sudo apt update
sudo apt install parallel
```
## Disclaimer
This repository is still under development. If you find any bugs or have any questions, please contact us.
Raw data
{
"_id": null,
"home_page": "https://github.com/openPV-lab/optimPV",
"name": "optimpv",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "Bayesian optimization, Evolutionary optimization, parameter extraction, experimental design, high throughput, solar cells",
"author": "Vincent M. Le Corre",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/d3/71/6876a70ff886cf6cde7874d47c280765aecec4240fb70917ab21e21afa97/optimpv-1.3.tar.gz",
"platform": null,
"description": "\n\n<img src=\"./docs/logo/optimPV_logo.png\" alt=\"optimPV logo\" width=\"100px\"> \n\n# optimPV: Optimization & Modeling tools for PV research\n\n## Authors\n[Vincent M. Le Corre](https://github.com/VMLC-PV) \n[Larry L\u00fcer](https://github.com/larryluer)\n\n## Institution\n<img src=\"./docs/logo/sdu_logo.jpg\" alt=\"SDU logo\" width=\"100px\"> CAPE - Centre for Advanced Photovoltaics and Thin-film Energy Devices, University of Southern Denmark, Denmark\n\n## Description\nThis repository contains the code to run **optimPV**. optimPV combines sevral optimization procedures and modeling utilities that can be used for two objectives:\n1. to optimize the parameters of a simulation to fit experimental data.\n2. to optimize the processing conditions in a self-driving experimental set-up. \n\n## Repository Folder Structure\n .\n \u251c\u2500\u2500 Main # Main directory\n \u251c\u2500\u2500 optimPV # Main directory for the optimPV codes\n \u251c\u2500\u2500 axBOtorch # Directory with the Bayesian optimization (BO) codes using BoTorch and Ax\n \u251c\u2500\u2500 BayesInfEmcee # Directory with the Bayesian inference codes using emcee\n \u251c\u2500\u2500 DDfits # Directory with the different agents to run the drift-diffusion simulator [SIMsalabim](https://github.com/kostergroup/SIMsalabim) for JV, Hysteresis, Impedance, CV and IMPS simulations and fitting\n \u251c\u2500\u2500 Diodefits # Directory with the agent to simulate and fit the non-ideal diode equation model\n \u251c\u2500\u2500 general # Directory with general utility functions used by the different agents\n \u251c\u2500\u2500 posterior # Directory with some utility functions to plot the posterior distributions using the BO surrogate model\n \u251c\u2500\u2500 RateEqfits # Directory with the agent to simulate and fit the rate equations for different experiment types (trPL, TRMC, TAS, etc.)\n \u251c\u2500\u2500 scipyOpti # Directory with the optimization codes using scipy.optimize\n \u251c\u2500\u2500 TransferMatrix # Directory with the agent to run the transfer matrix simulations\n \u251c\u2500\u2500 Notebooks # Contains clean versions of the Notebooks\n \u251c\u2500\u2500 Data # Contains some example data for the notebooks\n \u251c\u2500\u2500 docs # Contains the documentation\n \u251c\u2500\u2500 test # Contains the codes for testing optimPV\n \u2514\u2500\u2500 README.md\n\n## Installation\n### With pip\nTo install optimPV with pip you have two options:\n1. Install optimPV using the [PyPI repository](https://pypi.org/project/optimpv/) \n\n ```bash\n pip install optimpv\n ```\n\n2. Install optimPV using the GitHub repository https://github.com/openPV-lab/optimPV\n\n ```bash\n pip install git+https://github.com/openPV-lab/optimPV\n ```\n\n### With conda\nTo install optimPV with conda:\n\n```bash\nconda create -n optimpv \nconda activate optimpv\npip install optimpv\n```\n\nYou can also clone your base environment:\n\n```bash \nconda create -n optimpv --clone base\n```\n\n## Additional necessary installs for the agents\n### Drift-diffusion agent\nThe drift-diffusion agent uses [SIMsalabim](https://github.com/kostergroup/SIMsalabim) to run drift-diffusion simulations.\n\n- SIMsalabim is included as a submodule.\n- Install it following the instructions on the [SIMsalabim GitHub repository](https://github.com/kostergroup/SIMsalabim).\n- Only works for parallel simulations on Linux. All other optimPV agents work on Windows.\n\n### Parallel simulations\nTo run parallel simulations on Linux you can also install GNU Parallel:\n\n```bash\nsudo apt update\nsudo apt install parallel\n```\n\n## Disclaimer\nThis repository is still under development. If you find any bugs or have any questions, please contact us.\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "optimPV: Optimization & Modeling tools for PV research",
"version": "1.3",
"project_urls": {
"Download": "https://github.com/openPV-lab/optimPV/v1.03.tar.gz",
"Homepage": "https://github.com/openPV-lab/optimPV"
},
"split_keywords": [
"bayesian optimization",
" evolutionary optimization",
" parameter extraction",
" experimental design",
" high throughput",
" solar cells"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "76a7f2b152d0f20ea9236b10e57b6da84241786436cc56f7d1183ddb393b47d1",
"md5": "387af1645f0e6f093832dc0a3c591a1c",
"sha256": "8b8ed12da2a3801ce7840240615da2ca3aa75fccb47d78f61b2bc4804cc3479c"
},
"downloads": -1,
"filename": "optimpv-1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "387af1645f0e6f093832dc0a3c591a1c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 197884,
"upload_time": "2025-08-14T10:54:43",
"upload_time_iso_8601": "2025-08-14T10:54:43.208687Z",
"url": "https://files.pythonhosted.org/packages/76/a7/f2b152d0f20ea9236b10e57b6da84241786436cc56f7d1183ddb393b47d1/optimpv-1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d3716876a70ff886cf6cde7874d47c280765aecec4240fb70917ab21e21afa97",
"md5": "213e89c304bfb5830eaf8796773dc465",
"sha256": "d2abb1b8f039bfdf8c2d5c45350051ed0721500740bdc9205cb1f04fa1b53302"
},
"downloads": -1,
"filename": "optimpv-1.3.tar.gz",
"has_sig": false,
"md5_digest": "213e89c304bfb5830eaf8796773dc465",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 146242,
"upload_time": "2025-08-14T10:54:44",
"upload_time_iso_8601": "2025-08-14T10:54:44.861528Z",
"url": "https://files.pythonhosted.org/packages/d3/71/6876a70ff886cf6cde7874d47c280765aecec4240fb70917ab21e21afa97/optimpv-1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-14 10:54:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openPV-lab",
"github_project": "optimPV",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pySIMsalabim",
"specs": []
},
{
"name": "scikit-optimize",
"specs": []
},
{
"name": "ax-platform",
"specs": [
[
">=",
"1.1.0"
]
]
},
{
"name": "torch",
"specs": []
},
{
"name": "torchvision",
"specs": []
},
{
"name": "torchaudio",
"specs": []
},
{
"name": "emcee",
"specs": []
},
{
"name": "gitpython",
"specs": []
},
{
"name": "tk",
"specs": []
},
{
"name": "pyodbc",
"specs": []
},
{
"name": "openpyxl",
"specs": []
},
{
"name": "emcee",
"specs": []
},
{
"name": "corner",
"specs": []
},
{
"name": "pymoo",
"specs": []
},
{
"name": "jupyterlab",
"specs": []
}
],
"lcname": "optimpv"
}