High-performance computing (HPC) techniques for spin-state classification in inorganic complexes are computationally demanding. Recently, machine learning approaches have emerged as efficient alternatives for this task (ACS JPCA exemple).
This repository contains a Python program to classify spin states in first-row transition metal complexes using machine learning techniques.
- Reads an input specifying:
- Target metal ion
- Spin states
- Coordination number (4, 5, or 6)
- Builds a dataset 'distilling' OMOL25 dataset (~4 million structures)
- Converts molecular structures into SOAP descriptors using the DSCRIBE library
- Preprocesses data:
- Normalizing SOAP data
- Splitting into training and test sets
- Performs exploratory data analysis:
- PCA
- t-SNE
- k-Means clustering
- Generates plots colored by spin state and dominant atom in the first coordination sphere
- Generates scree plot
- Implements Support Vector Machine (SVM) classification:
- Linear SVM
- Kernel SVM
- Implements Random Forest classifier
- Generates confusion matrix plots and .txt file containing information about classification metrix
- Performs spin-state classification using an MLP
- Highly regularized architecture due to small dataset
- Can work on PCA-reduced data
- Supports class-balanced training (undersampling majority class)
- Generates confusion matrix plots and .txt file containing information about classification metrix
- Generates validation accuracy and loss plots
- install dependencies in requirements.txt
- Change input parameters in input.txt
- then simply: python3 main.py

