{"id":21441730,"url":"https://github.com/dmis-lab/mulinforcpi","last_synced_at":"2025-07-14T17:31:59.648Z","repository":{"id":191349678,"uuid":"643850305","full_name":"dmis-lab/MulinforCPI","owner":"dmis-lab","description":"MulinforCPI: enhancing precision of compound-protein interaction prediction through novel perspectives on multi-level information integration","archived":false,"fork":false,"pushed_at":"2024-06-20T01:06:52.000Z","size":1209,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-20T13:46:00.826Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmis-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-22T09:34:54.000Z","updated_at":"2024-06-20T01:06:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"6bf922ea-699d-47f4-b0ee-3436d0220625","html_url":"https://github.com/dmis-lab/MulinforCPI","commit_stats":null,"previous_names":["dmis-lab/3dinforcpi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmis-lab%2FMulinforCPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmis-lab%2FMulinforCPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmis-lab%2FMulinforCPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmis-lab%2FMulinforCPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmis-lab","download_url":"https://codeload.github.com/dmis-lab/MulinforCPI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225990493,"owners_count":17556152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T01:41:20.019Z","updated_at":"2024-11-23T01:41:20.652Z","avatar_url":"https://github.com/dmis-lab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MulinforCPI\n\nA PyTorch Implementation of Paper:\n\n**[MulinforCPI: enhancing precision of compound-protein interaction prediction through novel perspectives on multi-level information integration](https://academic.oup.com/bib/article/25/1/bbad484/7510975)**\n\nOur repository uses 3DInformax from https://github.com/HannesStark/3DInfomax as a backbone for pretraining PNA for compound information extraction and ESM_Fold from https://github.com/facebookresearch/esm for predicting protein fold.\n\nForecasting the interaction between compounds and proteins is crucial for discovering new drugs. However, previous sequence-based studies have not utilized three-dimensional (3D) information on compounds and proteins, such as atom coordinates and distance matrices, to predict binding affinity. Furthermore, numerous widely adopted computational techniques have relied on sequences of amino acid characters for protein representations. This approach may constrain the model's ability to capture meaningful biochemical features, impeding a more comprehensive understanding of the underlying proteins. Here, we propose a two-step deep learning strategy named MulinforCPI that incorporates transfer learning techniques with multi-level resolution features to overcome these limitations. Our approach leverages 3D information from both proteins and compounds and acquires a profound understanding of the atomic-level features of proteins. Besides, our research highlights the divide between first-principle and data-driven methods, offering new research prospects for compound protein interaction tasks. We applied the proposed method to six datasets: Davis, Metz, KIBA, CASF-2016, DUD-E, and BindingDB, to evaluate the effectiveness of our approach.\n\u003cimg src=\"images/architecture2.PNG\" alt=\"Image\" width=\"1000\" \u003e\n\n\n## **Clustering the dataset:**\nIn our experiment we use cross, we used the cross-cluster validation technique. Leave one out for testing while the validation set is randomly taken from the training set with a ratio 20/80.\u003cbr /\u003e\n  `data_file: The file contains dataset (Davis,KIBA,metz)`\u003cbr /\u003e\n  `output_folder: The folder contains five clusters`\u003cbr /\u003e\n  ~~~\n  python prepare_cluster_data_2023 #data_file #output_folder\n  ~~~\n\u003cimg src=\"images/PCA_clustering.png\" alt=\"Image\" width=\"600\" \u003e\n\n\n\n## **To train MulinforCPI model:**\n\nSet up the environment:\nIn our experiment we use, Python 3.7 with PyTorch 1.12.1 + CUDA 11.7.\n~~~\ngit clone https://github.com/dmis-lab/MulinforCPI.git\nconda env create -f environment.yml\n~~~\nYour data should be in the format .csv, and the column names are: 'smiles', 'sequence', 'label'.\n1. Generate the 3D fold of protein from the dataset.\u003cbr /\u003e\n`data_folder: Folder of dataset`\u003cbr /\u003e\n  ~~~\n  python generate_protein_fold.py #data_folder\n  ~~~\n\u003cimg src=\"images/ESM_output.png\" alt=\"Image\" width=\"600\" \u003e\nThe output of ESM fold. The 3D fold contains 1) The Card, 2) Atom Number, 3) Atom Type, 4) Three-Letter Amino Acid Code, 5) Chain ID, 6) Residue Number, 7) Atom Coordinates, 8) Atom Occupancy, 9) Atomic Displacement Parameter, 10) Element.\n\n2. Calculate the Alpha Carbon distances.\u003cbr /\u003e\n`input_folder: Output folder from ESM prediction.(Output of step 1.)`\u003cbr /\u003e\n`output_folder: Folder of processed file`\u003cbr /\u003e\n`data_name: Name of dataset`\u003cbr /\u003e\n  ~~~\n  python generate_distance_map.py #input_folder #output_folder #data_name\n  ~~~\n\n  3. Align the training dataset following the output of ESM fold. (FOR data-making purposes)\u003cbr /\u003e\n`data_folder: Folder of Training dataset` \u003cbr /\u003e\n`output_folder: Folder of processed file` \u003cbr /\u003e\n`prot_dict: _data.csvdic.csv file in output folder of ESM prediction.`\u003cbr /\u003e\n`data_name: \"davis or bindingdb or kiba or metz...\"`\u003cbr /\u003e\n  ~~~\n  python match_protein_index_esm.py #data_folder #output_folder #prot_dict #data_name\n  ~~~\n\n4. Generate the pickle .pt file for training \u003cbr /\u003e\n`data name: Folder of Training dataset` \u003cbr /\u003e\n`data_path: Aligned dataset (Output of step 3.)` \u003cbr /\u003e\n`output_folder: Folder of Training dataset` \u003cbr /\u003e\n`distance metric pt file: Alpha Carbon distances. ( Output of step 2.)` \u003cbr /\u003e\n`esm prediction folder: Output folder from ESM prediction. (Output of step 1.)` \u003cbr /\u003e\n\n  ~~~\n  python create_train_cuscpidata_ecfp.py #data_name #data_path #output_folder #distance_metric_pdb_file #esm_prediction_folder \n  ~~~\n5. Train the model \u003cbr /\u003e\n Change the `data_path: the processed data folder in .pt format ( Output of step 4.)` in `best_configs/tune_cus_cpi.yml`  \u003cbr /\u003e\n To save time and result reimplementation please download the pre-trained file:\n Download _runs_ files: https://github.com/HannesStark/3DInfomax/tree/master/runs/PNA_qmugs_NTXentMultiplePositives_620000_123_25-08_09-19-52 \u003cbr /\u003e\n  ~~~\n  python train_cuscpi.py --config best_configs/tune_cus_cpi.yml\n  ~~~\n## **Dataset:**\nThe related links are as follows: \u003cbr /\u003e\n\nKIBA, Davis:https://github.com/kexinhuang12345/DeepPurpose \u003cbr /\u003e\nMetz: https://github.com/sirimullalab/KinasepKipred \u003cbr /\u003e\nBindingDB: https://github.com/IBM/InterpretableDTIP \u003cbr /\u003e\nDUD-E Diverse: http://dude.docking.org/subsets/diverse \u003cbr /\u003e\nQMugs: https://libdrive.ethz.ch/index.php/s/X5vOBNSITAG5vzM \u003cbr /\u003e\nCASF-2016: http://www.pdbbind.org.cn/casf.php \u003cbr /\u003e\n\n\n## **To take inference:**\n  Change the `test_data_path` and `checkpoint` in best_configs/inference_cpi.yml to take the inference (with `test_data_path` in made following step 1-2-3) \u003cbr /\u003e\n  ~~~\n  python inferencecpi.py --config=best_configs/inference_cpi.yml\n  ~~~\n## **Citation:**\nIf you find the models useful in your research, please consider citing the paper:\n~~~\n@article{nguyen2024mulinforcpi,\n  title={MulinforCPI: enhancing precision of compound--protein interaction prediction through novel perspectives on multi-level information integration},\n  author={Nguyen, Ngoc-Quang and Park, Sejeong and Gim, Mogan and Kang, Jaewoo},\n  journal={Briefings in Bioinformatics},\n  volume={25},\n  number={1},\n  pages={bbad484},\n  year={2024},\n  publisher={Oxford University Press}\n}\n~~~\n\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmis-lab%2Fmulinforcpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmis-lab%2Fmulinforcpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmis-lab%2Fmulinforcpi/lists"}