{"id":49378821,"url":"https://github.com/huankoh/PSICHIC","last_synced_at":"2026-05-14T14:02:01.848Z","repository":{"id":195902522,"uuid":"691848431","full_name":"huankoh/PSICHIC","owner":"huankoh","description":"PSICHIC (pronounced Psychic) - PhySIcoCHemICal graph neural network for learning protein-ligand interaction fingerprints from sequence data","archived":false,"fork":false,"pushed_at":"2026-04-01T04:53:58.000Z","size":55936,"stargazers_count":129,"open_issues_count":6,"forks_count":23,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-01T05:41:47.744Z","etag":null,"topics":["binding-affinity","drugdiscovery","functional-effects","protein-ligand-interactions"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/huankoh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-15T02:48:57.000Z","updated_at":"2026-04-01T04:54:03.000Z","dependencies_parsed_at":"2023-10-12T06:41:40.647Z","dependency_job_id":"e6469a13-0850-4796-be13-c3b78864ec93","html_url":"https://github.com/huankoh/PSICHIC","commit_stats":null,"previous_names":["huankoh/psichic"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/huankoh/PSICHIC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huankoh%2FPSICHIC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huankoh%2FPSICHIC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huankoh%2FPSICHIC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huankoh%2FPSICHIC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huankoh","download_url":"https://codeload.github.com/huankoh/PSICHIC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huankoh%2FPSICHIC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33028203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["binding-affinity","drugdiscovery","functional-effects","protein-ligand-interactions"],"created_at":"2026-04-28T04:00:26.991Z","updated_at":"2026-05-14T14:02:01.832Z","avatar_url":"https://github.com/huankoh.png","language":"Jupyter Notebook","funding_links":[],"categories":["5. Sequence-Based Methods for Drug Discovery \u003ca name=\"5\"\u003e\u003c/a\u003e"],"sub_categories":["4.3 Benchmarks, datasets, and tools \u003ca name=\"4.3\"\u003e\u003c/a\u003e"],"readme":"## PSICHIC: physicochemical graph neural network for learning protein-ligand interaction fingerprints from sequence data [[Nature Machine Intelligence](https://www.nature.com/articles/s42256-024-00847-1)]\n\n\u003cimg src=\"image/PSICHIC.jpg\" width=\"500\"/\u003e\n\n## PSICHIC Webserver \u003ca href=\"http://www.psichicserver.com\" target=\"_blank\"\u003e\u003cimg src=\"image/crystal_ball.png\" alt=\"PSICHIC Webserver\" width=\"30\"/\u003e\u003c/a\u003e\n\nExciting news❗ The PSICHIC webserver (beta version) is now available! 🚀 Experience the future of protein-ligand interaction analysis at at [www.psichicserver.com](https://www.psichicserver.com/)\n\n_Start exploring. Your next discovery_ 🌐🔬 _could be just clicks away!_\n\n\u003csub\u003eNote: This server is not officially associated with the paper. For the official version, you can refer to the Colab and local deployment setup below.\u003c/sub\u003e\n\n## PSICHIC Virtual Screening Platform \u003ca href=\"https://colab.research.google.com/github/huankoh/PSICHIC/blob/main/PSICHIC.ipynb\" target=\"_parent\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/\u003e\u003c/a\u003e\n\n- **Only Sequence Data**: Protein Sequence + Ligand SMILES pairs is all you need.\n- **Quick Screening**: Up to 100K compounds in an hour.\n- **Deep Analysis**: Uncover molecular insights with PSICHIC-powered pharmacophore and targeted mutagenesis analysis.\n\n**UPDATE:** We included a jupyter notebook in selectivity subfolder to demonstrate how PSICHIC can be used for selectivity profiling.\n\n## PSICHIC Environment Setup for Local Deployment\n\u003cdetails\u003e\n\u003csummary\u003eClick to toggle contents of PSICHIC local development \u003c/summary\u003e\n\n\nCurrently, PSICHIC is validated for use on MacOS (OSX), Linux and Windows. We recommend installation via conda, or even better, using the faster mamba package and environment manager. Mamba can be installed with the command ``conda install mamba -n base -c conda-forge``. For setup using either conda or mamba, please refer to the relevant code line provided below.\n\n```\n## OSX \nconda env create -f environment_osx.yml  # if mamba: mamba env create -f environment_osx.yml\n## LINUX or Windows GPU\nconda env create -f environment_gpu.yml # if mamba: mamba env create -f environment_gpu.yml\nconda activate psichic_fp\npip install torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.1.0+cu118.html\n## LINUX or Windows CPU\nconda env create -f environment_cpu.yml  # if mamba: mamba env create -f environment_cpu.yml\nconda activate psichic_fp\npip install torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.1.0+cpu.html\n```\n\nAlternatively, command lines that can be helpful in setting up the environment (tested on linux with python 3.8). \n```\nconda create --name psichic_fp python=3.8\nconda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia\nconda install pyg -c pyg\nconda install -c conda-forge rdkit==2022.09.5\npip install scipy biopython pandas biopandas timeout_decorator py3Dmol umap-learn plotly mplcursors lifelines reprint\npip install \"fair-esm\"\n```\n\n\n## BYO-PSICHIC with Annotated Sequence Data \n\nCreate a train, valid and test csv file in a datafolder (for examples, see the dataset folder). The datafolder should contain at least a train.csv and test.csv file. Depending on your annotated labels, you want to use ``--regression_task True`` if it is a continuous value label (e.g., binding affinity), ``--classification_task True`` if it is a binary class label (e.g., presence of interaction) and ``--mclassification_task C`` where C represents the number of classes in your multiclass labels (e.g., 3 if you are using our protein-ligand functional response dataset). Note, you can have a dataset with multiple label types and we will train PSICHIC on predicting multiple protein-ligand interaction properties (see PSICHIC-MultiTask below)\n```\npython main.py --datafolder annotated_folder --result_path result/annotated_result --regression_task True \n```\n\nBYO-PSICHIC using a benchmark dataset, for example, the PDBBind v2020 benchmark:\n```\npython main.py --datafolder dataset/pdb2020 --result_path result/PDB2020_BENCHMARK --regression_task True \n```\nModel and optimizer configurations are consistent across all benchmark datasets, except PDBBind v2016 where you want to change the optimizer's number of training iterations, betas and eps to 30000, \"(0.9,0.99)\" and 1e-5 respectively, i.e. add to the commandline: ``--total_iters 30000 --betas \"(0.9,0.99)\" --eps 1e-5``. For binary classification task, replace ``--regression_task True`` to ``--classification_task True``. For protein functional effect dataset, replace ``--regression_task True`` to ``--mclassification_task 3``. Feel free to adjust the model hyperparameters in the config.json file, let us know if you find any interesting results!\n\n\n## Dataset Structure and BYO Formatting Guidelines\nAll datasets referenced in our manuscript are available on Google Drive ([Dataset](https://drive.google.com/drive/folders/1ZRpnwXtllCP89hjhfDuPivBlarBIXnmu?usp=sharing)). For the datasets used in the benchmark evaluation of PSICHIC, we have train, valid, and test CSV files that have been created based on established split settings. A separate README.md in the dataset section is dedicated to explaining the purpose of each dataset in the Google Drive Link (this is similar to Extended Data Table 1 in our manuscript). \n\nBYO-PSICHIC Dataset: Each file should look something like this if you are interested in training BYO-PSICHIC. A validation CSV file is not required if you don't have one, for instance, if you plan to apply the results in external experiments.\n\n__Binding Affinity Regression__\n\n| Protein | Ligand | regression_label | \n|:----------:|:----------:|:----------:|\n| ISAFQAAYIGIE....  | C1CCCCC1  | 6.7 | \n| GGALVSVISAFQASV....  | O=C(C)Oc1ccccc1C(=O)O | 4.0 |\n|...|...| ...|\n| MIPSAYIGIEVLI... | CCO | 8.1 | \n\n```\npython main.py --datafolder BYO_DATASET --result_path BYO_RESULT --regression_task True \n```\n\n__Binary Interaction Classification__\n\n| Protein | Ligand | classification_label | \n|:----------:|:----------:|:----------:|\n| ISAFQAAYIGIE....  | C1CCCCC1  | 1 | \n| GGALVSVISAFQASV.... | O=C(C)Oc1ccccc1C(=O)O | 0 |\n|...|...| ...|\n| MIPSAYIGIEVLI.... | CCO | 1 | \n\n```\npython main.py --datafolder BYO_DATASET --result_path BYO_RESULT --classification_task True\n```\n\n__Functional Effect Classification (Three-way Classification)__\n\n| Protein | Ligand | multiclass_label | \n|:----------:|:----------:|:----------:|\n| ISAFQAAYIGIE....  | C1CCCCC1  | -1 |  # antagonist\n| GGALVSVISAFQASV.... | O=C(C)Oc1ccccc1C(=O)O | 0 | # non-binder\n|...|...| ...|\n| MIPSAYIGIEVLI.... | CCO | 1 | # agonist\n\n```\npython main.py --datafolder BYO_DATASET --result_path BYO_RESULT --mclassification_task 3\n```\n\n__Multi Task PSICHIC__\n\n| Protein | Ligand | regression_label | multiclass_label | \n|:----------:|:----------:|:----------:|:----------:|\n| ISAFQAAYIGIE....  | C1CCCCC1  | 6.7 | -1 |  # antagonist\n| GGALVSVISAFQASV....  | O=C(C)Oc1ccccc1C(=O)O | 4.0 | 0 | # non-binder\n|...|...| ...|\n| MIPSAYIGIEVLI.... | CCO | 8.1 | 1 | # agonist\n\n```\npython main.py --datafolder BYO_DATASET --result_path BYO_RESULT --regression_task True --mclassification_task 3\n```\n\n**Strategically Split Your Dataset?** Jupyter notebook in dataset folder is available to illustrate how we perform random splits, unseen protein splits, and unseen ligand scaffold splits to evaluate the generalizability of PSICHIC or other methods. This can be useful in evaluating whether the BYO-PSICHIC works on your annotated sequence data.\n \n## PSICHIC\u003csub\u003eXL\u003c/sub\u003e: Multitask Prediction Training on Large-scale Interaction Dataset\nThe PSICHIC\u003csub\u003eXL\u003c/sub\u003e was previously referred to as the pre-trained multi-task PSICHIC. The PSICHIC\u003csub\u003eA1R\u003c/sub\u003e was previously referred to as the fine-tuned multi-task PSICHIC. We changed the name to clarify that PSICHIC\u003csub\u003eXL\u003c/sub\u003e can be used as is without any additional training. However, PSICHIC\u003csub\u003eXL\u003c/sub\u003e can potentially improve its ranking capabilities in virtual screening when fine-tuned on data specific to a protein target, e.g., the PSICHIC\u003csub\u003eA\u003csub\u003e1\u003c/sub\u003eR\u003c/sub\u003e we show below using A\u003csub\u003e1\u003c/sub\u003eR-related data.\n\n### Training PSICHIC\u003csub\u003eXL\u003c/sub\u003e (AKA Pre-trained PSICHIC in Preprint)\n```\npython main.py --datafolder dataset/large_scale_interaction_dataset --result_path PSICHIC_MultiTask_Pretrain --lrate 1e-5 --sampling_col pretrain_sampling_weight --regression_task True --mclassification_task 3 --total_iters 300000 --evaluate_step 25000\n```\n### Fine-tune PSICHIC\u003csub\u003eXL\u003c/sub\u003e into PSICHIC\u003csub\u003eA\u003csub\u003e1\u003c/sub\u003eR\u003c/sub\u003e (AKA Fine-tuned PSICHIC in Preprint)\nWe finetune only the application layers of PSICHIC\u003csub\u003eXL\u003c/sub\u003e for 1000 iteration on A\u003csub\u003e1\u003c/sub\u003eR-related protein using the following command:\n```\npython main.py --regression_task True --mclassification_task 3 --datafolder dataset/A1R_FineTune --result_path PSICHIC_A1R_FineTune --lrate 1e-5 --total_iters 1000 --finetune_modules \"['reg_out','mcls_out']\" --trained_model_path trained_weights/multitask_PSICHIC\n```\nWe have renamed the PSICHIC version trained on the extensive interaction dataset as PSICHIC\u003csub\u003eXL\u003c/sub\u003e, and the subset focusing on A\u003csub\u003e1\u003c/sub\u003eR data as PSICHIC\u003csub\u003eA\u003csub\u003e1\u003c/sub\u003eR\u003c/sub\u003e. Previously, PSICHIC\u003csub\u003eXL\u003c/sub\u003e and PSICHIC\u003csub\u003eA\u003csub\u003e1\u003c/sub\u003eR\u003c/sub\u003e were known as pre-trained PSICHIC and fine-tuned PSICHIC, respectively. This change more accurately reflects PSICHIC\u003csub\u003eXL\u003c/sub\u003e's broad applicability and PSICHIC\u003csub\u003eA\u003csub\u003e1\u003c/sub\u003eR\u003c/sub\u003e's specific emphasis on A1R.\n\nFor any other proteins, you can filter out irrelevant proteins and the non-binders in large-scale interaction dataset to apply PSICHIC for other experiments.\n\u003c/details\u003e\n\n\n\n## References\n\nFor more information, please refer to our work: \n\n```\nPSICHIC: physicochemical graph neural network for learning protein-ligand interaction fingerprints from sequence data\nHuan Yee Koh, Anh T.N. Nguyen, Shirui Pan, Lauren T. May, Geoffrey I. Webb\nbioRxiv 2023.09.17.558145; doi: https://doi.org/10.1101/2023.09.17.558145\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuankoh%2FPSICHIC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuankoh%2FPSICHIC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuankoh%2FPSICHIC/lists"}