Activity-Stability-Cost Integrated Catalyst Discovery Framework
Project description
Activity-Stability-Cost Integrated Catalyst Discovery
A unified multi-objective framework for translating computational catalyst data into reproducible, experimentally-actionable rankings
Installation • Quick Start • Features • Documentation • Contributing
Overview
The computational catalysis community has generated massive ML/DFT databases (OpenCatalyst, Materials Project, Catalysis-Hub, NOMAD, AFLOW) containing thousands of calculated catalyst properties. However, there exists no standardized framework to translate this wealth of data into actionable experimental priorities.
ASCICat bridges this gap by providing a unified, transparent, and reproducible framework for multi-objective catalyst prioritization.
→
→
The Problem We Solve
| Current Challenge | ASCICat Solution |
|---|---|
| No unified framework for catalyst selection | Standardized ASCI metric applicable to any catalyst dataset |
| Ad-hoc, non-reproducible selection criteria | Transparent weighting with explicit trade-off documentation |
| Results cannot be compared across studies | Common metric enables direct cross-study comparison |
| Hidden assumptions in catalyst ranking | Built-in sensitivity analysis reveals weight dependencies |
Scientific Framework
ASCICat implements a three-pillar scoring system grounded in fundamental catalysis principles:
Activity (Sa)Sabatier PrincipleOptimal binding energy for reaction kinetics |
Stability (Ss)Surface ThermodynamicsDissolution resistance and durability |
Cost (Sc)Economic ViabilityMaterial pricing and availability |
The Unified ASCI Metric:
φ_ASCI = w_a · S_a + w_s · S_s + w_c · S_c
where: w_a + w_s + w_c = 1
S_a, S_s, S_c ∈ [0, 1]
Installation
From Source
# Clone the repository
git clone https://github.com/NabKh/ASCICat.git
cd ASCICat
# Install in development mode
pip install -e .
Optional Dependencies
# For GUI interface
pip install -e ".[gui]"
# For interactive Jupyter visualizations
pip install -e ".[interactive]"
# For full development environment
pip install -e ".[dev]"
Requirements
- Python 3.8+
- NumPy, Pandas, SciPy, Matplotlib, Seaborn
- See
setup.pyfor complete dependency list
Quick Start
Python API
from ascicat import ASCICalculator
# Initialize calculator for HER reaction
calc = ASCICalculator(reaction='HER')
# Load your DFT data
calc.load_data('data/HER_clean.csv')
# Calculate ASCI scores with custom weights
results = calc.calculate_asci(
w_a=0.4, # 40% weight on Activity
w_s=0.3, # 30% weight on Stability
w_c=0.3 # 30% weight on Cost
)
# Get top-ranked catalysts
top_catalysts = calc.get_top_catalysts(n=10)
print(top_catalysts[['symbol', 'ASCI', 'activity_score', 'stability_score', 'cost_score']])
Output:
symbol ASCI activity_score stability_score cost_score
0 Fe2Sb4 0.899 0.923 0.851 0.924
1 Cu3Sb 0.887 0.912 0.867 0.883
2 Cu6Sb2 0.876 0.889 0.856 0.882
...
Command-Line Interface
# HER screening with default weights
ascicat --reaction HER --data data/HER_clean.csv --output results/
# CO2RR screening with custom weights
ascicat --reaction CO2RR --pathway CO --weights 0.5 0.3 0.2 --output results/
# Launch graphical interface
ascicat-gui
Interactive Tutorials
Run the tutorials directly in your browser — no installation required:
Or launch all tutorials in Binder:
Features
Core Capabilities
- Multi-objective optimization with customizable weight preferences
- Multiple reaction pathways: HER, CO2RR-CO, CO2RR-CHO, CO2RR-COCOH
- Publication-quality visualizations at 600 DPI
- Comprehensive sensitivity analysis for robust screening
- Pareto frontier analysis for trade-off exploration
- Batch processing for high-throughput screening
- Colorblind-friendly visualization palettes
Supported Reactions
| Reaction | Pathway | Optimal ΔE | Description |
|---|---|---|---|
| HER | H adsorption | -0.27 eV | Hydrogen Evolution Reaction |
| CO2RR | CO | -0.67 eV | Carbon monoxide production |
| CO2RR | CHO | -0.48 eV | Methanol pathway |
| CO2RR | COCOH | -0.32 eV | Formic acid pathway |
Sensitivity Analysis
ASCICat includes built-in tools to address the critical "weight selection problem":
from ascicat import SensitivityAnalyzer, SensitivityVisualizer
# Analyze sensitivity across weight space
analyzer = SensitivityAnalyzer(calc)
results = analyzer.analyze_full_weight_space(resolution=20)
# Generate visualization suite
visualizer = SensitivityVisualizer(results)
visualizer.plot_ternary_heatmap()
visualizer.plot_catalyst_dominance()
visualizer.plot_rank_trajectories()
This enables researchers to:
- Understand how rankings depend on weight choices
- Identify robust candidates that rank well regardless of weights
- Document the sensitivity of conclusions transparently
Examples
The examples/ directory contains complete, documented workflows:
| Example | Description |
|---|---|
example_1_HER_screening.py |
Complete HER catalyst screening workflow |
example_2_CO2RR_screening.py |
Multi-pathway CO2RR analysis |
example_3_visualization.py |
Publication figure generation |
example_4_sensitivity_analysis.py |
Weight sensitivity study |
example_5_ascicat_vs_pareto.py |
Comparison with Pareto methods |
Data Format
ASCICat accepts CSV files with the following structure:
| Column | Type | Description | Unit |
|---|---|---|---|
DFT_ads_E |
float | Adsorption energy | eV |
surface_energy |
float | Surface energy | J/m² |
Cost |
float | Material cost | $/kg |
symbol |
str | Catalyst identifier | - |
optimal_energy |
float | Sabatier optimum | eV |
See data/README_DATA.md for detailed specifications.
Complementarity with Pareto Analysis
ASCICat and Pareto frontier methods are complementary approaches:
| Pareto Analysis | ASCICat |
|---|---|
| Identifies non-dominated trade-off set | Provides deterministic ranking within the set |
| Multiple equivalent solutions | Single prioritized list |
| No weight specification needed | Explicit, documented weights |
| Difficult cross-study comparison | Reproducible comparison metric |
Key insight: Top ASCI-ranked catalysts are predominantly Pareto-optimal, validating both methodologies.
Project Structure
ASCICat/
├── ascicat/ # Core package
│ ├── calculator.py # Main ASCICalculator class
│ ├── scoring.py # Score computation
│ ├── visualizer.py # Visualization tools
│ ├── analyzer.py # Statistical analysis
│ └── sensitivity.py # Sensitivity analysis
├── scripts/ # CLI and GUI tools
├── examples/ # Usage examples
├── tutorials/ # Jupyter notebook tutorials
├── data/ # Catalyst datasets
├── tests/ # Test suite
└── logo/ # Branding assets
Contributing
We welcome contributions! Please see our Contributing Guidelines for:
- Development setup instructions
- Coding standards (NumPy docstrings, PEP 8)
- Testing requirements
- Pull request process
References
ASCICat is built on established theoretical foundations:
- Nørskov, J. K. et al. Towards the computational design of solid catalysts. Nat. Chem. 1, 37 (2009)
- Greeley, J. et al. Computational high-throughput screening of electrocatalytic materials. Nat. Mater. 5, 909 (2006)
- Sabatier, P. Hydrogénations et déshydrogénations par catalyse. Ber. Dtsch. Chem. Ges. 44, 1984 (1911)
- Oguz, I. C., Khossossi, N., Brunacci, M., Bucak, H. & Er, S. ACS Catal. 15, 19461–19474 (2025)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contact
| Author | Nabil Khossossi |
| n.khossossi@differ.nl | |
| Institution | Dutch Institute for Fundamental Energy Research (DIFFER) |
| Issues | GitHub Issues |
Acknowledgments
This work was supported by the Dutch Institute for Fundamental Energy Research (DIFFER).
ASCICat — Bridging computational databases and experimental priorities for accelerated catalyst discovery
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 ascicat-1.0.0.tar.gz.
File metadata
- Download URL: ascicat-1.0.0.tar.gz
- Upload date:
- Size: 10.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1444983a2663e83c71026853c2b3551289e006cda1fc24295a74a9e0e7b058b2
|
|
| MD5 |
5defdbb95a31538aa1b4920423fd92b7
|
|
| BLAKE2b-256 |
e0e1ac2fcf783f6269f3f2d928090e79eabbe6ec1d26dcdb75e65100ec9f20cd
|
File details
Details for the file ascicat-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ascicat-1.0.0-py3-none-any.whl
- Upload date:
- Size: 110.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b18c442f69d22281bfe442ccae7e5c74cae88f6bb311d7823d3944c8d30c0983
|
|
| MD5 |
10277087c7cb208dae313f3df07738ed
|
|
| BLAKE2b-256 |
a230dd3d4e196ce28ab51df031fd68344439024a4af85897eab1e77f1e832f06
|