DeltaKcat is a pairwise relative learning framework for robust enzyme kinetics prediction. Instead of directly regressing noisy absolute kinetic values, DeltaKcat learns relative differences between enzyme–substrate complexes within consistent experimental contexts. This approach improves generalization to unseen enzymes and substrates and supports the discovery of highly active enzyme candidates.
We recommend creating an isolated Conda environment to ensure consistent package versions.
conda create -n DeltaKcat python==3.11
conda activate DeltaKcatWe used the following Python packages for core development. We tested on Python 3.11.
| name | version |
|---|---|
| pandas | 2.0.3 |
| networkx | 3.5 |
| tqdm | 4.66.5 |
| torch | 2.2.0 |
| torch-geometric | 2.7.0 |
| scipy | 1.16.2 |
| transformers | 4.40.0 |
| scikit-learn | 1.2.0 |
| bio | 1.8.1 |
| numpy | 1.24.4 |
| rdkit | |
| SentencePiece |
Make sure that the version of numpy is 1.24.4. Installing other packages may cause errors due to an upgrade in the numpy version.
In addition, DeltaKcat also relies on additional pre-trained models, including ProtT5 and MolT5. These two models are used for extracting features from enzymes and substrates, respectively.
Download and unzip the model parameters under DeltaKcat
Script: Train/Predict_Sequence.py
python Train/Predict_Sequence.py `
--input_csv /path/predict_seq.csv `
--protein_model_dir /path/prot_t5_xl_uniref50 `
--substrate_model_dir /path/molt5-base-smiles2caption `
--deltakcat_model_path /path/Delta_seq_model.pth `
--output_csv /path/predict_seq_out.csv `
--device cuda:0Default input columns:
Sequence_1Sequence_2Smiles
Optional column override:
--sequence1_col--sequence2_col--smiles_col
Script: Train/Predict_Substrate.py
python Train/Predict_Substrate.py `
--input_csv /path/predict_sub.csv `
--protein_model_dir /path/prot_t5_xl_uniref50 `
--substrate_model_dir /path/molt5-base-smiles2caption `
--deltakcat_model_path /path/Delta_sub_model.pth `
--output_csv /path/predict_sub_out.csv `
--device cuda:0Default input columns:
SequenceSmiles_1Smiles_2
Optional column override:
--sequence_col--smiles1_col--smiles2_col
Training scripts:
- Sequence-delta task:
Train/train_delta_sequence.py - Substrate-delta task:
Train/train_derta_substrate.py
Both scripts expect this embedding layout under one embedding_path:
sequences_prottrans.fastaprottrans_feature_dict.ptSMILES/SMILES_embedding_molT5.pkl
Script: Utils/protein_embeddings_protT5.py. ProtT5 model could be download from https://huggingface.co/Rostlab/prot_t5_xl_uniref50.
python Utils/protein_embeddings_protT5.py `
--input_csv /path/data_file `
--output_dir /path/embedding_dir `
--model_dir /path/prot_t5_xl_uniref50 `
--sequence_col Sequence `
--device cuda:0Notes:
- Writes
sequences_prottrans.fastaandprottrans_feature_dict.ptintooutput_dir. - Default
--sequence_colisSequence. - If your data has
Sequence_1andSequence_2, prepare a temporary CSV with one mergedSequencecolumn.
Script: Utils/smiles_embeddings_molt5.py. molt5 model could be download from https://huggingface.co/laituan245/molt5-base-smiles2caption.
python Utils/smiles_embeddings_molt5.py `
--input_csv /path/data_file `
--output_dir /path/embedding_dir `
--model_dir /path/molt5-base-smiles2caption `
--smiles_col SmilesNotes:
- Writes
/path/embedding_dir/SMILES/SMILES_embedding_molT5.pkl. - Use the same
output_diras protein embedding step.
python Train/train_delta_sequence.py `
--train_path /path/Train_pair_seq.csv `
--test_path /path/Test_pair_seq.csv `
--embedding_path /path/embedding_dir `
--output_path /path/result_dir/ `
--device 0 `
--batch_size 64 `
--epoch 100 `
--lr 5e-5Input CSV should include at least:
Sequence_1Sequence_2SmilesValue_1Value_2log2_delta_kcat
python Train/train_derta_substrate.py `
--train_path /path/Train_substrate.csv `
--test_path /path/Test_substrate.csv `
--embedding_path /path/embedding_dir `
--output_path /path/result_dir/ `
--device 0 `
--batch_size 64 `
--epoch 100 `
--lr 5e-5Input CSV should include at least:
SequenceSmiles_1Smiles_2Value_1Value_2log2_delta_kcat
- Use
--device cpu.
- Invalid sequences/SMILES are skipped during preprocessing.
- Check script summary logs for skipped row count.
- Feiran Li (@feiranl), Tsinghua University, Shenzhen, China
- Xiongwen Li (@xiongwenL), Tsinghua University, Shenzhen, China