Metadata-Version: 2.4
Name: chembayes
Version: 0.1.3
Summary: Experimental design and Bayesian optimization with Gaussian Processes and QMC sampling
Author-email: Jesus Alberto Martin del Campo <j.a.martin-campo@hotmail.com>
Project-URL: Homepage, https://github.com/jesusalmartin/chembayes
Project-URL: Bug Tracker, https://github.com/jesusalmartin/chembayes/issues
Keywords: bayesian-optimization,gaussian-processes,experimental-design,qmc,sampling,chemistry
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.23
Requires-Dist: pandas>=1.5
Requires-Dist: scikit-learn>=1.7
Requires-Dist: optuna>=3.0
Requires-Dist: matplotlib>=3.7
Requires-Dist: scipy>=1.9
Dynamic: license-file

# ChemBayes

**ChemBayes** is a Python library designed to streamline **experimental design (DoE)** and **Bayesian optimization** for scientific and chemical research. It leverages Gaussian Processes to model complex response surfaces and efficiently identify optimal conditions.

## 🚀 Key Features

* **Intelligent Sampling (QMC):** Generate initial experimental designs using Halton sequences (Quasi-Monte Carlo) for optimal space-filling coverage.
* **Automatic Preprocessing:** Integrated handling of numeric variables (scaling) and categorical variables (one-hot encoding).
* **Hyperparameter Tuning:** Automated Gaussian Process parameter adjustment (Matern + WhiteKernel) using Leave-One-Out (LOO) cross-validation and NLPD loss.
* **Bayesian Optimization:** Global maximum search using the Expected Improvement (EI) acquisition function.
* **Visual Diagnostics:** Automated generation of feature importance, partial dependence plots (1D and 2D), and model validation charts.

## 📦 Installation

You can install the latest stable version directly from PyPI:

```bash
pip install chembayes
```

Alternatively, for local development, you can install from the project root:

```bash
pip install .
```

Or for development mode:

```bash
pip install -e .
```

## 🛠️ Quick Start

### 1. Generating an Experimental Design (Sampling)

Define your search space with numeric and categorical parameters:

```python
import chembayes as cb

parameters = {
    'temperature': {'type': 'float', 'l_bound': 20.0, 'u_bound': 100.0},
    'time': {'type': 'int', 'l_bound': 5, 'u_bound': 60},
    'catalyst': {'type': 'categoric', 'categories': ['Pd', 'Ni', 'Cu']}
}

# Generate 20 optimal experimental points
df_experiments = cb.qmc_sampling(parameters, n_points=20)

# Visualize the distribution
cb.plot_qmc_sampling(df_experiments)
```

### 2. Bayesian Optimization

Once you have experimental data, find the optimal conditions:

```python
# Define input features and the target column
inputs = ['temperature', 'time', 'catalyst']
output = 'yield'

# Run the complete optimization pipeline
results = cb.optimize_experiment(
    df=df_data, 
    inputs=inputs, 
    output=output,
    n_tuning_trials=50,
    n_opt_trials=100
)

# Access the best found parameters
print(f"Best configuration: {results['best_params']}")
```

## 📂 Project Structure

* `src/chembayes/sampler.py`: Tools for QMC sample generation.
* `src/chembayes/optimizer.py`: Bayesian optimization engine and Gaussian Processes.
* `src/chembayes/__init__.py`: Public API exposure.
* `pyproject.toml`: Modern package configuration and dependencies.

## ✉️ Contact & Contribution

**Author:** Jesus Alberto Martin del Campo  
**Email:** j.a.martin-campo@hotmail.com  
**GitHub:** [jesusalmartin/chembayes](https://github.com/jesusalmartin/chembayes)
