Ionic Liquid Property Prediction¶
The fr5.property_prediction_il module provides state-of-the-art machine learning models for predicting key properties of ionic liquids (ILs). These models are trained on extensive experimental datasets and offer high accuracy for practical applications.
Overview¶
Ionic liquids are versatile solvents with unique properties that make them valuable for various industrial applications. Predicting their properties accurately is crucial for:
- Green chemistry applications and solvent selection
- Process optimization in chemical manufacturing
- Material design for specific applications
- Cost reduction by minimizing experimental screening
Supported Properties¶
🌡️ Viscosity Prediction¶
Predict dynamic viscosity of ionic liquids as a function of temperature:
from fr5.property_prediction_il import predict_viscosity
# Predict viscosity for EMIM-BF4 at 298 K
result = predict_viscosity({
'cation': 'EMIM', # 1-ethyl-3-methylimidazolium
'anion': 'BF4', # tetrafluoroborate
'temperature': 298.15 # Temperature in Kelvin
})
print(f"Predicted viscosity: {result['viscosity']:.2f} mPa·s")
print(f"Prediction uncertainty: ±{result['uncertainty']:.2f} mPa·s")
Model Details: - Algorithm: CatBoost ensemble with hyperparameter optimization - Training data: 2,000+ experimental measurements - Temperature range: 273-373 K - RMSE: 0.21 log(mPa·s) on validation set
🏋️ Density Prediction¶
Predict liquid density as a function of temperature:
from fr5.property_prediction_il import predict_density
result = predict_density({
'cation': 'BMIM', # 1-butyl-3-methylimidazolium
'anion': 'PF6', # hexafluorophosphate
'temperature': 298.15
})
print(f"Predicted density: {result['density']:.3f} g/cm³")
Model Details:
- Algorithm: Neural network with temperature-dependent features
- Training data: 1,500+ experimental measurements
- Temperature range: 273-373 K
- RMSE: 0.015 g/cm³ on validation set
💨 CO₂ Solubility Prediction¶
Predict CO₂ solubility for carbon capture applications:
from fr5.property_prediction_il import predict_co2_solubility
result = predict_co2_solubility({
'cation': 'EMIM',
'anion': 'Ac', # acetate (CO₂-philic anion)
'temperature': 313.15, # 40°C
'pressure': 1.0 # 1 bar CO₂ pressure
})
print(f"CO₂ solubility: {result['solubility']:.3f} mol/mol")
Model Details: - Algorithm: Random Forest with pressure-temperature features - Training data: 800+ experimental measurements - Conditions: 273-373 K, 0.1-10 bar - RMSE: 0.05 mol/mol on validation set
Supported Ionic Liquid Types¶
Common Cations¶
- Imidazolium: EMIM, BMIM, HMIM, etc.
- Pyridinium: BPy, HMPy, etc.
- Pyrrolidinium: BMPL, EMPL, etc.
- Phosphonium: TBHP, TEHP, etc.
- Ammonium: TEA, TBA, etc.
Common Anions¶
- Halides: Cl⁻, Br⁻, I⁻
- Fluorinated: BF₄⁻, PF₆⁻, Tf₂N⁻
- Organic: Ac⁻, For⁻, TfO⁻
- Sulfates: HSO₄⁻, MeSO₄⁻
Advanced Features¶
Uncertainty Quantification¶
All models provide uncertainty estimates using ensemble methods:
result = predict_viscosity(il_data, return_uncertainty=True)
confidence_interval = (
result['viscosity'] - result['uncertainty'],
result['viscosity'] + result['uncertainty']
)
Batch Prediction¶
Predict properties for multiple ILs efficiently:
il_library = [
{'cation': 'EMIM', 'anion': 'BF4', 'temperature': 298.15},
{'cation': 'BMIM', 'anion': 'PF6', 'temperature': 298.15},
{'cation': 'HMIM', 'anion': 'Tf2N', 'temperature': 298.15}
]
results = predict_viscosity_batch(il_library)
for i, result in enumerate(results):
print(f"IL {i+1}: {result['viscosity']:.2f} mPa·s")
Temperature Sweeps¶
Predict property variation with temperature:
from fr5.property_prediction_il import temperature_sweep
temperatures = range(273, 374, 10) # 273-373 K in 10 K steps
results = temperature_sweep(
il_composition={'cation': 'EMIM', 'anion': 'BF4'},
property='viscosity',
temperatures=temperatures
)
# Plot results
import matplotlib.pyplot as plt
plt.plot(temperatures, [r['viscosity'] for r in results])
plt.xlabel('Temperature (K)')
plt.ylabel('Viscosity (mPa·s)')
plt.show()
Error Evaluation Metrics¶
Log Root Mean Squared Error (lRMSE)¶
For viscosity predictions (log-scale properties):
Root Mean Squared Error (RMSE)¶
For density and solubility predictions:
Mean Absolute Error (MAE)¶
Average absolute prediction error:
Average Absolute Relative Error (AARE)¶
Percentage-based error metric:
Coefficient of Determination (R²)¶
Model fit quality:
Model Performance Summary¶
| Property | Model | RMSE | AARE (%) | R² | Training Size |
|---|---|---|---|---|---|
| Viscosity | CatBoost | 0.21 log(mPa·s) | 14.2 | 0.95 | 2,045 |
| Density | Neural Net | 0.015 g/cm³ | 1.1 | 0.98 | 1,523 |
| CO₂ Solubility | Random Forest | 0.05 mol/mol | 12.8 | 0.91 | 847 |
Usage Best Practices¶
1. Input Validation¶
Always validate your input data:
from fr5.property_prediction_il import validate_il_input
# Check if IL composition is supported
is_valid, message = validate_il_input({
'cation': 'EMIM',
'anion': 'BF4',
'temperature': 298.15
})
if not is_valid:
print(f"Invalid input: {message}")
2. Temperature Ranges¶
Stay within validated temperature ranges for best accuracy:
- Viscosity: 273-373 K
- Density: 273-373 K
- CO₂ Solubility: 273-373 K
3. Extrapolation Warning¶
Models work best for interpolation within training data ranges. Extrapolation beyond these ranges may give unreliable results.
4. Uncertainty Interpretation¶
Uncertainty estimates represent model confidence. Higher uncertainty indicates: - Novel IL compositions not well-represented in training data - Extreme operating conditions - Potential need for experimental validation ```