From 81bd70c5e4c947263c5601841e6dfc369f12e270 Mon Sep 17 00:00:00 2001 From: Samee Ullah Date: Tue, 5 Aug 2025 09:43:22 -0500 Subject: [PATCH 1/4] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 61bae83..dbc2a58 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,8 @@ Then, to run a command in your normal terminal, simply point to the PyMOL Python Here are the example install commands for the supported models: - ESM3: `pip install esm` -- Boltz-1: `pip install boltz` +- Boltz v2.2.0: `pip install boltz[cuda] -U or git clone https://github.com/jwohlwend/boltz.git +cd boltz; pip install -e .[cuda]` - Chai-1: `pip install chai_lab==0.5.0` - Protenix: `pip install --extra-index-url=https://pypi.nvidia.com --trusted-host pypi.nvidia.com nvidia-cublas-cu12 deepspeed==0.14.4 protenix` From 327188529c6e5a87e05534ba1df7ad815e1a7ac8 Mon Sep 17 00:00:00 2001 From: ullahsamee Date: Tue, 5 Aug 2025 16:18:11 -0500 Subject: [PATCH 2/4] Initial commit --- pymolfold/__init__.py | 17 ++++++++++++++--- pymolfold_v0.4.2.zip | Bin 10609 -> 0 bytes pymolfold_v0.4.3.zip | Bin 0 -> 10745 bytes 3 files changed, 14 insertions(+), 3 deletions(-) delete mode 100644 pymolfold_v0.4.2.zip create mode 100644 pymolfold_v0.4.3.zip diff --git a/pymolfold/__init__.py b/pymolfold/__init__.py index b040e04..a0425f6 100644 --- a/pymolfold/__init__.py +++ b/pymolfold/__init__.py @@ -249,9 +249,20 @@ def fold_boltz( if os.path.exists(affinity_json_path): with open(affinity_json_path, 'r') as f: affinity_data = json.load(f) - affinity_results = (f"Affinity Prediction Results:\n\n" - f"Predicted Affinity (log(IC50), µM): {affinity_data.get('affinity_pred_value', 'N/A')}\n" - f"Binding Probability: {affinity_data.get('affinity_probability_binary', 'N/A')}") + y = affinity_data.get('affinity_pred_value') + prob = affinity_data.get('affinity_probability_binary') + + kcal_mol_str = "N/A" + if isinstance(y, (int, float)): + # Convert log(IC50) to kcal/mol using the provided formula + kcal_mol = (6 - y) * 1.364 + kcal_mol_str = f"{kcal_mol:.2f}" + + prob_str = f"{prob:.2f}" if isinstance(prob, (int, float)) else "N/A" + + # Format the result string to match the user's request + affinity_results = (f"IC50: {kcal_mol_str} kcal/mol " + f"Binding Affinity Likelihood: {prob_str}") return folded_path, affinity_results diff --git a/pymolfold_v0.4.2.zip b/pymolfold_v0.4.2.zip deleted file mode 100644 index 685330fde0b77cb73eee804fba0da7509ffba4ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10609 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 NSYRL^Rm#8b{twnx^&|iQ literal 0 HcmV?d00001 From 071ff3c99166b589dd10f1dcfe7c21c4d4369974 Mon Sep 17 00:00:00 2001 From: ullahsamee Date: Tue, 5 Aug 2025 16:23:12 -0500 Subject: [PATCH 3/4] added support for binding affinity in kcal/mol --- pymolfold/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymolfold/__init__.py b/pymolfold/__init__.py index a0425f6..336b282 100644 --- a/pymolfold/__init__.py +++ b/pymolfold/__init__.py @@ -1,7 +1,7 @@ ''' PyMOL Protein Folding Plugin -By Colby T. Ford, Ph.D. +By Colby T. Ford, Ph.D License: GPLv3 ''' From a6cab7bb98de99efe69c6832e8e09a5f03b2da3e Mon Sep 17 00:00:00 2001 From: ullahsamee Date: Tue, 5 Aug 2025 16:25:31 -0500 Subject: [PATCH 4/4] added support for binding affinity in kcal/mol --- pymolfold_v0.4.3.zip | Bin 10745 -> 10745 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pymolfold_v0.4.3.zip b/pymolfold_v0.4.3.zip index 100fc44fe0bb512045b1ea936f94397925f386e9..da34750d6e6fd3e102c55c11ea5fefbbff33b886 100644 GIT binary patch delta 6413 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 bl4wv%1qJ{B000C41OSc!0031e00000ZPZ+3 delta 6400 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