Skip to content

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):

\[\mathrm{lRMSE} = \sqrt{\frac{1}{N}\sum^{N}_{i=1}\left(\ln\frac{\hat{\eta}_{i}}{\eta_{i}} \right)^{2}}\]

Root Mean Squared Error (RMSE)

For density and solubility predictions:

\[\mathrm{RMSE} = \sqrt{\frac{1}{N}\sum^{N}_{i=1}\left(\hat{y}_{i} - y_{i} \right)^{2}}\]

Mean Absolute Error (MAE)

Average absolute prediction error:

\[\mathrm{MAE} = \frac{1}{N}\sum^{N}_{i=1}\left|\hat{y}_{i} - y_{i} \right|\]

Average Absolute Relative Error (AARE)

Percentage-based error metric:

\[\mathrm{AARE} = \frac{1}{N}\sum^{N}_{i=1} \left|\frac{\hat{y}_{i}}{y_{i}}-1\right| \times 100\%\]

Coefficient of Determination (R²)

Model fit quality:

\[\mathrm{R^{2}} = \frac{\sum^{N}_{i=1}(\hat{y}_{i}-\overline{y})^{2}}{\sum^{N}_{i=1}(y_{i}-\overline{y})^{2}}\]

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 ```