boltz2-python-client 0.3.0__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. {boltz2_python_client-0.3.0/boltz2_python_client.egg-info → boltz2_python_client-0.3.2}/PKG-INFO +116 -1
  2. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/README.md +115 -0
  3. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/__init__.py +35 -1
  4. boltz2_python_client-0.3.2/boltz2_client/a3m_to_csv_converter.py +1661 -0
  5. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/cli.py +394 -0
  6. boltz2_python_client-0.3.2/boltz2_client/data/__init__.py +3 -0
  7. boltz2_python_client-0.3.2/boltz2_client/data/speclist.txt +59804 -0
  8. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2/boltz2_python_client.egg-info}/PKG-INFO +116 -1
  9. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_python_client.egg-info/SOURCES.txt +26 -2
  10. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/12_msa_affinity_prediction.py +16 -8
  11. boltz2_python_client-0.3.2/examples/15_a3m_to_multimer_csv.py +367 -0
  12. boltz2_python_client-0.3.2/examples/barnase_barstar_with_msa.py +214 -0
  13. boltz2_python_client-0.3.2/examples/cdk4_msa_affinity/cdk4_direct.a3m +202 -0
  14. boltz2_python_client-0.3.2/examples/cdk4_msa_affinity/cdk4_msa.a3m +2 -0
  15. boltz2_python_client-0.3.2/examples/cdk4_msa_affinity/cdk4_simple.a3m +202 -0
  16. boltz2_python_client-0.3.2/examples/cdk4_msa_affinity_example.py +307 -0
  17. boltz2_python_client-0.3.2/examples/debug_msa_conversion.py +201 -0
  18. boltz2_python_client-0.3.2/examples/dimer_examples.py +145 -0
  19. boltz2_python_client-0.3.2/examples/fix_cdk4_msa_search.py +201 -0
  20. boltz2_python_client-0.3.2/examples/multimer_file_output_example.py +119 -0
  21. boltz2_python_client-0.3.2/examples/multimer_msa_example.py +214 -0
  22. boltz2_python_client-0.3.2/examples/quick_barnase_barstar.py +76 -0
  23. boltz2_python_client-0.3.2/examples/quick_barnase_barstar_msa.py +157 -0
  24. boltz2_python_client-0.3.2/examples/quick_gcn4_homodimer.py +62 -0
  25. boltz2_python_client-0.3.2/examples/quick_heterodimer_example.py +57 -0
  26. boltz2_python_client-0.3.2/examples/quick_msa_test.py +51 -0
  27. boltz2_python_client-0.3.2/examples/simple_dimer_examples.py +125 -0
  28. boltz2_python_client-0.3.2/examples/test_boltz2_server.py +195 -0
  29. boltz2_python_client-0.3.2/examples/test_cdk4_msa_fixed.py +178 -0
  30. boltz2_python_client-0.3.2/examples/test_cdk4_msa_simple.py +73 -0
  31. boltz2_python_client-0.3.2/examples/test_msa_a3m_simple.py +165 -0
  32. boltz2_python_client-0.3.2/examples/test_msa_endpoint.py +76 -0
  33. boltz2_python_client-0.3.2/examples/test_notebook_fixes.py +98 -0
  34. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/pyproject.toml +2 -1
  35. boltz2_python_client-0.3.0/INSTALL_TESTPYPI.md +0 -122
  36. boltz2_python_client-0.3.0/examples/boltz2_complete_demo.py +0 -247
  37. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/ASYNC_GUIDE.md +0 -0
  38. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/COVALENT_COMPLEX_GUIDE.md +0 -0
  39. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/LICENSE +0 -0
  40. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/MANIFEST.in +0 -0
  41. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/PARAMETERS.md +0 -0
  42. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/YAML_GUIDE.md +0 -0
  43. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/__main__.py +0 -0
  44. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/client.py +0 -0
  45. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/exceptions.py +0 -0
  46. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/models.py +0 -0
  47. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/models_affinity.py +0 -0
  48. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/msa_search.py +0 -0
  49. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/multi_endpoint_client.py +0 -0
  50. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/utils.py +0 -0
  51. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_client/virtual_screening.py +0 -0
  52. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_python_client.egg-info/dependency_links.txt +0 -0
  53. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_python_client.egg-info/entry_points.txt +0 -0
  54. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_python_client.egg-info/requires.txt +0 -0
  55. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/boltz2_python_client.egg-info/top_level.txt +0 -0
  56. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/01_basic_protein_folding.py +0 -0
  57. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/02_protein_structure_prediction_with_msa.py +0 -0
  58. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/03_protein_ligand_complex.py +0 -0
  59. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/04_covalent_bonding.py +0 -0
  60. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/05_dna_protein_complex.py +0 -0
  61. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/06_yaml_configurations.py +0 -0
  62. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/07_advanced_parameters.py +0 -0
  63. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/08_affinity_prediction_simple.py +0 -0
  64. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/09_virtual_screening.py +0 -0
  65. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/10_msa_search_integration.py +0 -0
  66. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/11_msa_search_large_protein.py +0 -0
  67. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/comprehensive_multi_endpoint_demo.py +0 -0
  68. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/msa-kras-g12c_combined.a3m +0 -0
  69. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/msa_search_simple_demo.py +0 -0
  70. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/multi_endpoint_screening.py +0 -0
  71. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/multi_protein_complex.yaml +0 -0
  72. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/protein_ligand.yaml +0 -0
  73. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/examples/sars_cov2_mpro_nirmatrelvir.yaml +0 -0
  74. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/PyYAML-LICENSE +0 -0
  75. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/README.md +0 -0
  76. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/aiofiles-LICENSE +0 -0
  77. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/click-LICENSE +0 -0
  78. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/httpx-LICENSE +0 -0
  79. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/py3Dmol-LICENSE +0 -0
  80. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/pydantic-LICENSE +0 -0
  81. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/rich-LICENSE +0 -0
  82. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/licenses/typing-extensions-LICENSE +0 -0
  83. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/setup.cfg +0 -0
  84. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/__init__.py +0 -0
  85. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/conftest.py +0 -0
  86. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_basic.py +0 -0
  87. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_cli_multi_endpoint.py +0 -0
  88. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_comprehensive_stress.py +0 -0
  89. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_examples_syntax.py +0 -0
  90. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_integration_scenarios.py +0 -0
  91. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_msa_search.py +0 -0
  92. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_multi_endpoint_functionality.py +0 -0
  93. {boltz2_python_client-0.3.0 → boltz2_python_client-0.3.2}/tests/test_real_endpoints.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boltz2-python-client
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Python client for Boltz-2 protein structure prediction API with covalent complex and multi-endpoint support
5
5
  Author-email: NVIDIA Corporation <bionemo-support@nvidia.com>
6
6
  Maintainer-email: NVIDIA Corporation <bionemo-support@nvidia.com>
@@ -58,6 +58,8 @@ A comprehensive Python client for NVIDIA's Boltz-2 biomolecular structure predic
58
58
  - ✅ **Affinity Prediction** - Predict binding affinity (IC50) for protein-ligand complexes
59
59
  - ✅ **Virtual Screening** - High-level API for drug discovery campaigns
60
60
  - ✅ **MSA Search Integration** - GPU-accelerated MSA generation with NVIDIA MSA Search NIM
61
+ - ✅ **A3M to Multimer MSA** - Convert ColabFold A3M files to paired multimer format (NEW)
62
+ - ✅ **Multi-Endpoint Load Balancing** - Distribute predictions across multiple NIMs
61
63
  - ✅ **Comprehensive Examples** - Ready-to-use code samples
62
64
 
63
65
  ## 📦 **Installation**
@@ -109,6 +111,7 @@ async def quick_prediction():
109
111
 
110
112
  if __name__ == "__main__":
111
113
  asyncio.run(quick_prediction())
114
+ ```
112
115
 
113
116
  ### CLI Usage
114
117
 
@@ -139,6 +142,16 @@ boltz2 msa-predict "PROTEIN_SEQUENCE" --databases Uniref30_2302 --max-sequences
139
142
 
140
143
  # MSA search + ligand affinity
141
144
  boltz2 msa-ligand "PROTEIN_SEQUENCE" --smiles "LIGAND_SMILES" --predict-affinity
145
+
146
+ # Convert ColabFold A3M files to paired multimer CSV
147
+ boltz2 convert-msa chain_A.a3m chain_B.a3m -c A,B -o paired.csv
148
+
149
+ # One-command multimer prediction from A3M files (NEW)
150
+ boltz2 multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif
151
+
152
+ # Multi-endpoint multimer prediction
153
+ boltz2 --multi-endpoint --base-url "http://gpu1:8000,http://gpu2:8000" \
154
+ multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif
142
155
  ```
143
156
 
144
157
  ### Affinity Prediction
@@ -203,6 +216,103 @@ msa_path = await client.search_msa(
203
216
 
204
217
  See the [MSA Search Guide](MSA_SEARCH_GUIDE.md) for detailed usage and parameters.
205
218
 
219
+ ### A3M to Multimer MSA Conversion (NEW)
220
+
221
+ Convert ColabFold-generated A3M monomer MSA files to paired multimer format for Boltz2:
222
+
223
+ ```python
224
+ from boltz2_client import (
225
+ Boltz2Client,
226
+ convert_a3m_to_multimer_csv,
227
+ create_paired_msa_per_chain,
228
+ Polymer, PredictionRequest
229
+ )
230
+
231
+ # Convert A3M files to paired MSA (auto-detects pairing mode)
232
+ result = convert_a3m_to_multimer_csv(
233
+ a3m_files={'A': 'chain_A.a3m', 'B': 'chain_B.a3m'}
234
+ )
235
+ print(f"Paired {result.num_pairs} sequences")
236
+
237
+ # Create per-chain MSA structures for Boltz2
238
+ msa_per_chain = create_paired_msa_per_chain(result)
239
+
240
+ # Create polymers with paired MSA
241
+ protein_A = Polymer(id="A", molecule_type="protein",
242
+ sequence=result.query_sequences['A'],
243
+ msa=msa_per_chain['A'])
244
+ protein_B = Polymer(id="B", molecule_type="protein",
245
+ sequence=result.query_sequences['B'],
246
+ msa=msa_per_chain['B'])
247
+
248
+ # Predict complex structure
249
+ client = Boltz2Client(base_url="http://localhost:8000")
250
+ response = await client.predict(PredictionRequest(
251
+ polymers=[protein_A, protein_B],
252
+ recycling_steps=3,
253
+ sampling_steps=200
254
+ ))
255
+ ```
256
+
257
+ #### CLI One-Command Prediction
258
+ ```bash
259
+ # Predict directly from A3M files (converts + predicts in one step)
260
+ boltz2 --base-url http://localhost:8000 multimer-msa \
261
+ chain_A.a3m chain_B.a3m \
262
+ -c A,B \
263
+ -o complex.cif
264
+
265
+ # Save all outputs: structure, paired CSVs, and confidence scores
266
+ boltz2 --base-url http://localhost:8000 multimer-msa \
267
+ chain_A.a3m chain_B.a3m \
268
+ -c A,B \
269
+ -o complex.cif \
270
+ --save-csv \ # Save paired CSV files
271
+ --save-all # Save scores JSON (confidence, pLDDT, pTM, etc.)
272
+
273
+ # With multi-endpoint load balancing
274
+ boltz2 --multi-endpoint \
275
+ --base-url "http://gpu1:8000,http://gpu2:8000,http://gpu3:8000" \
276
+ multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif --save-all
277
+ ```
278
+
279
+ **Output files with `--save-all --save-csv`:**
280
+ ```
281
+ output/
282
+ ├── complex.cif # 3D structure (mmCIF)
283
+ ├── complex.scores.json # Confidence scores, pLDDT, pTM, metrics
284
+ ├── complex_chain_A.csv # Paired MSA for chain A
285
+ └── complex_chain_B.csv # Paired MSA for chain B
286
+ ```
287
+
288
+ #### Save All Outputs (Python API)
289
+ ```python
290
+ from boltz2_client import save_prediction_outputs, get_prediction_summary
291
+
292
+ # Save all outputs with one function call
293
+ paths = save_prediction_outputs(
294
+ response=response,
295
+ output_dir=Path("results"),
296
+ base_name="my_complex",
297
+ save_structure=True, # Save CIF file(s)
298
+ save_scores=True, # Save scores JSON
299
+ save_csv=True, # Save paired CSVs
300
+ conversion_result=result # From convert_a3m_to_multimer_csv
301
+ )
302
+ print(paths)
303
+ # {'structure': Path('results/my_complex.cif'),
304
+ # 'scores': Path('results/my_complex.scores.json'),
305
+ # 'csv_A': Path('results/my_complex_chain_A.csv'),
306
+ # 'csv_B': Path('results/my_complex_chain_B.csv')}
307
+
308
+ # Get a quick summary of prediction quality
309
+ summary = get_prediction_summary(response)
310
+ print(f"Confidence: {summary['confidence']:.2f}")
311
+ print(f"Quality: {summary['quality_assessment']}") # Very High/High/Medium/Low
312
+ ```
313
+
314
+ See the [A3M to Multimer MSA Guide](examples/A3M_TO_MULTIMER_MSA.md) for detailed usage.
315
+
206
316
  ### Virtual Screening
207
317
 
208
318
  ```python
@@ -420,6 +530,9 @@ The `examples/` directory contains comprehensive examples:
420
530
  - **06_yaml_configurations.py** - YAML config files
421
531
  - **07_advanced_parameters.py** - Advanced API parameters
422
532
  - **08_affinity_prediction.py** - Binding affinity prediction (IC50/pIC50)
533
+ - **15_a3m_to_multimer_csv.py** - A3M to multimer MSA conversion
534
+ - **16_colabfold_a3m_to_multimer.ipynb** - Interactive notebook for multimer MSA (NEW)
535
+ - **A3M_TO_MULTIMER_MSA.md** - Comprehensive guide for A3M conversion (NEW)
423
536
 
424
537
  ## 🧪 **Supported Prediction Types**
425
538
 
@@ -595,10 +708,12 @@ Third-party dependencies are licensed under their respective licenses - see the
595
708
 
596
709
  ### Guides
597
710
  - **[MSA Search Guide](MSA_SEARCH_GUIDE.md)** - GPU-accelerated MSA generation with NVIDIA MSA Search NIM
711
+ - **[A3M to Multimer MSA Guide](examples/A3M_TO_MULTIMER_MSA.md)** - Convert ColabFold A3M files to paired multimer format (NEW)
598
712
  - **[Affinity Prediction Guide](AFFINITY_PREDICTION_GUIDE.md)** - Comprehensive guide for binding affinity prediction
599
713
  - **[YAML Configuration Guide](YAML_GUIDE.md)** - Working with YAML configuration files
600
714
  - **[Async Programming Guide](ASYNC_GUIDE.md)** - Best practices for async operations
601
715
  - **[Covalent Complex Guide](COVALENT_COMPLEX_GUIDE.md)** - Predicting covalent bonds
716
+ - **[Multi-Endpoint Guide](MULTI_ENDPOINT_GUIDE.md)** - Load balancing across multiple NIMs
602
717
  - **[Parameters Guide](PARAMETERS.md)** - Detailed parameter documentation
603
718
 
604
719
  ## 🔗 **Links**
@@ -20,6 +20,8 @@ A comprehensive Python client for NVIDIA's Boltz-2 biomolecular structure predic
20
20
  - ✅ **Affinity Prediction** - Predict binding affinity (IC50) for protein-ligand complexes
21
21
  - ✅ **Virtual Screening** - High-level API for drug discovery campaigns
22
22
  - ✅ **MSA Search Integration** - GPU-accelerated MSA generation with NVIDIA MSA Search NIM
23
+ - ✅ **A3M to Multimer MSA** - Convert ColabFold A3M files to paired multimer format (NEW)
24
+ - ✅ **Multi-Endpoint Load Balancing** - Distribute predictions across multiple NIMs
23
25
  - ✅ **Comprehensive Examples** - Ready-to-use code samples
24
26
 
25
27
  ## 📦 **Installation**
@@ -71,6 +73,7 @@ async def quick_prediction():
71
73
 
72
74
  if __name__ == "__main__":
73
75
  asyncio.run(quick_prediction())
76
+ ```
74
77
 
75
78
  ### CLI Usage
76
79
 
@@ -101,6 +104,16 @@ boltz2 msa-predict "PROTEIN_SEQUENCE" --databases Uniref30_2302 --max-sequences
101
104
 
102
105
  # MSA search + ligand affinity
103
106
  boltz2 msa-ligand "PROTEIN_SEQUENCE" --smiles "LIGAND_SMILES" --predict-affinity
107
+
108
+ # Convert ColabFold A3M files to paired multimer CSV
109
+ boltz2 convert-msa chain_A.a3m chain_B.a3m -c A,B -o paired.csv
110
+
111
+ # One-command multimer prediction from A3M files (NEW)
112
+ boltz2 multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif
113
+
114
+ # Multi-endpoint multimer prediction
115
+ boltz2 --multi-endpoint --base-url "http://gpu1:8000,http://gpu2:8000" \
116
+ multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif
104
117
  ```
105
118
 
106
119
  ### Affinity Prediction
@@ -165,6 +178,103 @@ msa_path = await client.search_msa(
165
178
 
166
179
  See the [MSA Search Guide](MSA_SEARCH_GUIDE.md) for detailed usage and parameters.
167
180
 
181
+ ### A3M to Multimer MSA Conversion (NEW)
182
+
183
+ Convert ColabFold-generated A3M monomer MSA files to paired multimer format for Boltz2:
184
+
185
+ ```python
186
+ from boltz2_client import (
187
+ Boltz2Client,
188
+ convert_a3m_to_multimer_csv,
189
+ create_paired_msa_per_chain,
190
+ Polymer, PredictionRequest
191
+ )
192
+
193
+ # Convert A3M files to paired MSA (auto-detects pairing mode)
194
+ result = convert_a3m_to_multimer_csv(
195
+ a3m_files={'A': 'chain_A.a3m', 'B': 'chain_B.a3m'}
196
+ )
197
+ print(f"Paired {result.num_pairs} sequences")
198
+
199
+ # Create per-chain MSA structures for Boltz2
200
+ msa_per_chain = create_paired_msa_per_chain(result)
201
+
202
+ # Create polymers with paired MSA
203
+ protein_A = Polymer(id="A", molecule_type="protein",
204
+ sequence=result.query_sequences['A'],
205
+ msa=msa_per_chain['A'])
206
+ protein_B = Polymer(id="B", molecule_type="protein",
207
+ sequence=result.query_sequences['B'],
208
+ msa=msa_per_chain['B'])
209
+
210
+ # Predict complex structure
211
+ client = Boltz2Client(base_url="http://localhost:8000")
212
+ response = await client.predict(PredictionRequest(
213
+ polymers=[protein_A, protein_B],
214
+ recycling_steps=3,
215
+ sampling_steps=200
216
+ ))
217
+ ```
218
+
219
+ #### CLI One-Command Prediction
220
+ ```bash
221
+ # Predict directly from A3M files (converts + predicts in one step)
222
+ boltz2 --base-url http://localhost:8000 multimer-msa \
223
+ chain_A.a3m chain_B.a3m \
224
+ -c A,B \
225
+ -o complex.cif
226
+
227
+ # Save all outputs: structure, paired CSVs, and confidence scores
228
+ boltz2 --base-url http://localhost:8000 multimer-msa \
229
+ chain_A.a3m chain_B.a3m \
230
+ -c A,B \
231
+ -o complex.cif \
232
+ --save-csv \ # Save paired CSV files
233
+ --save-all # Save scores JSON (confidence, pLDDT, pTM, etc.)
234
+
235
+ # With multi-endpoint load balancing
236
+ boltz2 --multi-endpoint \
237
+ --base-url "http://gpu1:8000,http://gpu2:8000,http://gpu3:8000" \
238
+ multimer-msa chain_A.a3m chain_B.a3m -c A,B -o complex.cif --save-all
239
+ ```
240
+
241
+ **Output files with `--save-all --save-csv`:**
242
+ ```
243
+ output/
244
+ ├── complex.cif # 3D structure (mmCIF)
245
+ ├── complex.scores.json # Confidence scores, pLDDT, pTM, metrics
246
+ ├── complex_chain_A.csv # Paired MSA for chain A
247
+ └── complex_chain_B.csv # Paired MSA for chain B
248
+ ```
249
+
250
+ #### Save All Outputs (Python API)
251
+ ```python
252
+ from boltz2_client import save_prediction_outputs, get_prediction_summary
253
+
254
+ # Save all outputs with one function call
255
+ paths = save_prediction_outputs(
256
+ response=response,
257
+ output_dir=Path("results"),
258
+ base_name="my_complex",
259
+ save_structure=True, # Save CIF file(s)
260
+ save_scores=True, # Save scores JSON
261
+ save_csv=True, # Save paired CSVs
262
+ conversion_result=result # From convert_a3m_to_multimer_csv
263
+ )
264
+ print(paths)
265
+ # {'structure': Path('results/my_complex.cif'),
266
+ # 'scores': Path('results/my_complex.scores.json'),
267
+ # 'csv_A': Path('results/my_complex_chain_A.csv'),
268
+ # 'csv_B': Path('results/my_complex_chain_B.csv')}
269
+
270
+ # Get a quick summary of prediction quality
271
+ summary = get_prediction_summary(response)
272
+ print(f"Confidence: {summary['confidence']:.2f}")
273
+ print(f"Quality: {summary['quality_assessment']}") # Very High/High/Medium/Low
274
+ ```
275
+
276
+ See the [A3M to Multimer MSA Guide](examples/A3M_TO_MULTIMER_MSA.md) for detailed usage.
277
+
168
278
  ### Virtual Screening
169
279
 
170
280
  ```python
@@ -382,6 +492,9 @@ The `examples/` directory contains comprehensive examples:
382
492
  - **06_yaml_configurations.py** - YAML config files
383
493
  - **07_advanced_parameters.py** - Advanced API parameters
384
494
  - **08_affinity_prediction.py** - Binding affinity prediction (IC50/pIC50)
495
+ - **15_a3m_to_multimer_csv.py** - A3M to multimer MSA conversion
496
+ - **16_colabfold_a3m_to_multimer.ipynb** - Interactive notebook for multimer MSA (NEW)
497
+ - **A3M_TO_MULTIMER_MSA.md** - Comprehensive guide for A3M conversion (NEW)
385
498
 
386
499
  ## 🧪 **Supported Prediction Types**
387
500
 
@@ -557,10 +670,12 @@ Third-party dependencies are licensed under their respective licenses - see the
557
670
 
558
671
  ### Guides
559
672
  - **[MSA Search Guide](MSA_SEARCH_GUIDE.md)** - GPU-accelerated MSA generation with NVIDIA MSA Search NIM
673
+ - **[A3M to Multimer MSA Guide](examples/A3M_TO_MULTIMER_MSA.md)** - Convert ColabFold A3M files to paired multimer format (NEW)
560
674
  - **[Affinity Prediction Guide](AFFINITY_PREDICTION_GUIDE.md)** - Comprehensive guide for binding affinity prediction
561
675
  - **[YAML Configuration Guide](YAML_GUIDE.md)** - Working with YAML configuration files
562
676
  - **[Async Programming Guide](ASYNC_GUIDE.md)** - Best practices for async operations
563
677
  - **[Covalent Complex Guide](COVALENT_COMPLEX_GUIDE.md)** - Predicting covalent bonds
678
+ - **[Multi-Endpoint Guide](MULTI_ENDPOINT_GUIDE.md)** - Load balancing across multiple NIMs
564
679
  - **[Parameters Guide](PARAMETERS.md)** - Detailed parameter documentation
565
680
 
566
681
  ## 🔗 **Links**
@@ -26,7 +26,7 @@ Example:
26
26
  >>> print(f"Confidence: {result.confidence_scores[0]:.3f}")
27
27
  """
28
28
 
29
- __version__ = "0.3.0"
29
+ __version__ = "0.3.2"
30
30
  __author__ = "NVIDIA Corporation"
31
31
  __email__ = "bionemo-support@nvidia.com"
32
32
 
@@ -71,6 +71,23 @@ from .msa_search import (
71
71
  MSASearchResponse,
72
72
  MSAFormatConverter,
73
73
  )
74
+ from .a3m_to_csv_converter import (
75
+ A3MToCSVConverter,
76
+ A3MParser,
77
+ A3MMSA,
78
+ A3MSequence,
79
+ convert_a3m_to_multimer_csv,
80
+ create_multimer_msa_request,
81
+ create_paired_msa_per_chain,
82
+ save_prediction_outputs,
83
+ get_prediction_summary,
84
+ ConversionResult,
85
+ GreedyPairingStrategy,
86
+ CompletePairingStrategy,
87
+ TaxonomyPairingStrategy,
88
+ SpeciesMapper,
89
+ SPECIES_TO_TAXID,
90
+ )
74
91
 
75
92
  # Optional imports for visualization
76
93
  try:
@@ -139,6 +156,23 @@ __all__ = [
139
156
  "MSASearchRequest",
140
157
  "MSASearchResponse",
141
158
  "MSAFormatConverter",
159
+
160
+ # A3M to CSV Multimer Converter
161
+ "A3MToCSVConverter",
162
+ "A3MParser",
163
+ "A3MMSA",
164
+ "A3MSequence",
165
+ "convert_a3m_to_multimer_csv",
166
+ "create_multimer_msa_request",
167
+ "create_paired_msa_per_chain",
168
+ "save_prediction_outputs",
169
+ "get_prediction_summary",
170
+ "ConversionResult",
171
+ "GreedyPairingStrategy",
172
+ "CompletePairingStrategy",
173
+ "TaxonomyPairingStrategy",
174
+ "SpeciesMapper",
175
+ "SPECIES_TO_TAXID",
142
176
  ]
143
177
 
144
178
  # Add visualization exports if available