This repository contains the Python implementation of MOCT from the paper:
"MOCT: A Multi-class Oblique Tree Algorithm for Synergistic Drug Combination Prediction"
Machine learning has been successfully applied to drug combination prediction in recent years. However, in some situations, the class imbalance problem still shows highly negative impacts on the modeling process, which cannot be directly handled by traditional methods. In addition, the interpretability of models is another key point for biological and medical experts. In this study, a clustering-based oblique decision tree (MOCT) algorithm is proposed to extract interpretable knowledge for the multi-class datasets. It firstly clusters samples of different classes, and then a proper feature subspace is generated to split data and forms a nonleaf node. Unlike traditional decision trees, our MOCT only grows one none-leaf node in each layer to generate a concise tree structure. Datasets of drug combinations were collected from three cell lines with three classes (Additive, Antagonism, and Synergy) in experiments, and the results show that our MOCT algorithm is superior to other methods with better interpretability.
The Python environment and versions of dependency packages used in this implementation are as follows:
Python==3.8.18
scikit-learn==1.3.2
numpy==1.24.1
pandas==2.0.3
imbalanced-learn==0.12.4
joblib==1.3.2
We provide a demo for MOCT in the test.py file, using the HT29, A375 and A549 datasets.
python test.py
The table below shows the hyperparameters of MOCT. You can modify these variables to configure the hyperparameters. The settings in test.py represent the default hyperparameter values for MOCT.
| Hyperparameters | Values |
|---|---|
| features_num | 50 |
| max_depth | 10 |
| min_samples_leaf | 0.01 |
If you use this code in your research, please cite both the original paper and this code repository: Paper Citation (BibTeX):
@ARTICLE{11303859,
author={Lin, Zhikai and Chen, Jing and Wu, Lianlian and Liu, Kunhong and Xu, Yong and He, Song and Bo, Xiaochen},
journal={IEEE Transactions on Computational Biology and Bioinformatics},
title={MOCT: A Multi-Class Oblique Tree Algorithm for Synergistic Drug Combination Prediction},
year={2026},
volume={23},
number={1},
pages={407-418},
keywords={Drugs;Decision trees;Trees (botanical);Clustering algorithms;Classification algorithms;Prediction algorithms;Feature extraction;Indexes;Computational biology;Bioinformatics;Oblique decision tree;multi-class classification;interpretability;drug combination},
doi={10.1109/TCBBIO.2025.3646049}
}
Code Repository
@software{MOCT_Code,
author = {Zhikai Lin},
title = {MOCT},
year = {2025},
publisher = {GitHub},
howpublished = {\url{https://github.com/MLDMXM2017/MOCT.git}}
}
