boltz2-python-client 0.5.0__tar.gz → 0.5.1__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 (99) hide show
  1. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/CHANGELOG.md +6 -0
  2. {boltz2_python_client-0.5.0/boltz2_python_client.egg-info → boltz2_python_client-0.5.1}/PKG-INFO +30 -5
  3. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/README.md +29 -4
  4. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/__init__.py +1 -1
  5. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/cli/info.py +7 -0
  6. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1/boltz2_python_client.egg-info}/PKG-INFO +30 -5
  7. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/LICENSE +0 -0
  8. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/MANIFEST.in +0 -0
  9. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/__main__.py +0 -0
  10. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/a3m/__init__.py +0 -0
  11. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/a3m/converter.py +0 -0
  12. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/a3m/pairing.py +0 -0
  13. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/a3m/parser.py +0 -0
  14. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/a3m_to_csv_converter.py +0 -0
  15. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/cli/__init__.py +0 -0
  16. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/cli/msa.py +0 -0
  17. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/cli/predict.py +0 -0
  18. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/cli/screen.py +0 -0
  19. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/client.py +0 -0
  20. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/data/__init__.py +0 -0
  21. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/data/speclist.txt +0 -0
  22. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/exceptions.py +0 -0
  23. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/models.py +0 -0
  24. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/msa_search.py +0 -0
  25. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/multi_endpoint_client.py +0 -0
  26. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/utils.py +0 -0
  27. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_client/virtual_screening.py +0 -0
  28. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_python_client.egg-info/SOURCES.txt +0 -0
  29. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_python_client.egg-info/dependency_links.txt +0 -0
  30. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_python_client.egg-info/entry_points.txt +0 -0
  31. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_python_client.egg-info/requires.txt +0 -0
  32. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/boltz2_python_client.egg-info/top_level.txt +0 -0
  33. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/a3m_to_multimer_msa.md +0 -0
  34. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/affinity_prediction.md +0 -0
  35. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/async.md +0 -0
  36. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/covalent_complex.md +0 -0
  37. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/msa_search.md +0 -0
  38. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/multi_endpoint.md +0 -0
  39. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/parameters.md +0 -0
  40. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/virtual_screening.md +0 -0
  41. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/docs/yaml.md +0 -0
  42. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/01_basic_protein_folding.py +0 -0
  43. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/02_protein_structure_prediction_with_msa.py +0 -0
  44. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/03_protein_ligand_complex.py +0 -0
  45. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/04_covalent_bonding.py +0 -0
  46. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/05_dna_protein_complex.py +0 -0
  47. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/06_yaml_configurations.py +0 -0
  48. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/07_advanced_parameters.py +0 -0
  49. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/08_affinity_prediction_simple.py +0 -0
  50. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/09_virtual_screening.py +0 -0
  51. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/10_msa_search_integration.py +0 -0
  52. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/11_msa_search_large_protein.py +0 -0
  53. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/12_msa_affinity_prediction.py +0 -0
  54. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/13_a3m_to_multimer_csv.py +0 -0
  55. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/README.md +0 -0
  56. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/barnase_barstar_with_msa.py +0 -0
  57. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/cdk4_msa_affinity_example.py +0 -0
  58. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/comprehensive_multi_endpoint_demo.py +0 -0
  59. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/cdk2_target.txt +0 -0
  60. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/cdk4_msa_affinity/cdk4_palbociclib_results.json +0 -0
  61. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/kinase_y7w_affinity.json +0 -0
  62. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/msa-kras-g12c_combined.a3m +0 -0
  63. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/multi_protein_complex.yaml +0 -0
  64. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/protein_ligand.yaml +0 -0
  65. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/sars_cov2_mpro_nirmatrelvir.yaml +0 -0
  66. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/data/test_msa_endpoint_curl.sh +0 -0
  67. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/msa_search_simple_demo.py +0 -0
  68. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/multi_endpoint_screening.py +0 -0
  69. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/01_multimer_prediction.ipynb +0 -0
  70. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/02_cdk4_msa_affinity_prediction.ipynb +0 -0
  71. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/03_colabfold_a3m_to_multimer.ipynb +0 -0
  72. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/boltz2_comprehensive_demo.ipynb +0 -0
  73. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/boltz2_demo.ipynb +0 -0
  74. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/boltz2_nim_DNA_Protein_Complex_example_py3Dmol.ipynb +0 -0
  75. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/examples/notebooks/boltz2_nim_protein_ligand_covalent_complex_molstar_visualization.ipynb +0 -0
  76. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/PyYAML-LICENSE +0 -0
  77. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/README.md +0 -0
  78. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/aiofiles-LICENSE +0 -0
  79. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/aiohttp-LICENSE +0 -0
  80. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/click-LICENSE +0 -0
  81. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/httpx-LICENSE +0 -0
  82. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/py3Dmol-LICENSE +0 -0
  83. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/pydantic-LICENSE +0 -0
  84. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/rich-LICENSE +0 -0
  85. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/licenses/typing-extensions-LICENSE +0 -0
  86. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/pyproject.toml +0 -0
  87. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/setup.cfg +0 -0
  88. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/__init__.py +0 -0
  89. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/conftest.py +0 -0
  90. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/constants.py +0 -0
  91. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_a3m_to_csv_converter.py +0 -0
  92. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_basic.py +0 -0
  93. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_cli_multi_endpoint.py +0 -0
  94. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_comprehensive_stress.py +0 -0
  95. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_examples_syntax.py +0 -0
  96. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_integration_scenarios.py +0 -0
  97. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_live_endpoints.py +0 -0
  98. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_msa_search.py +0 -0
  99. {boltz2_python_client-0.5.0 → boltz2_python_client-0.5.1}/tests/test_multi_endpoint_functionality.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.5.1] - 2026-04-07
6
+
7
+ ### Fixed
8
+ - CLI `metadata` command now shows a clear error for SageMaker endpoints instead of a cryptic `NoneType` error
9
+ - SageMaker endpoint exception handling cleanup in CLI
10
+
5
11
  ## [0.5.0] - 2026-04-07
6
12
 
7
13
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: boltz2-python-client
3
- Version: 0.5.0
3
+ Version: 0.5.1
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>
@@ -167,18 +167,43 @@ client = Boltz2Client(
167
167
  ### AWS SageMaker Endpoint
168
168
 
169
169
  ```python
170
- client = Boltz2Client(
170
+ from boltz2_client import Boltz2SyncClient
171
+
172
+ # Requires: pip install "boltz2-python-client[sagemaker]"
173
+ # AWS credentials must be configured (e.g. via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
174
+ # environment variables, ~/.aws/credentials, or an IAM role)
175
+
176
+ client = Boltz2SyncClient(
171
177
  endpoint_type="sagemaker",
172
178
  sagemaker_endpoint_name="my-boltz2-endpoint",
173
179
  sagemaker_region="us-east-1",
174
180
  )
175
- ```
176
181
 
177
- Requires `pip install "boltz2-python-client[sagemaker]"` and AWS credentials.
182
+ # Health check (calls describe_endpoint under the hood)
183
+ health = client.health_check()
184
+ print(f"Endpoint status: {health.status}")
185
+
186
+ # Predict protein structure — same API as local/hosted endpoints
187
+ result = client.predict_protein_structure(
188
+ sequence="MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
189
+ recycling_steps=3,
190
+ sampling_steps=200,
191
+ )
192
+ print(f"Confidence: {result.confidence_scores[0]:.3f}")
193
+
194
+ # Protein-ligand with affinity prediction
195
+ result = client.predict_protein_ligand_complex(
196
+ protein_sequence="MKTVRQERLK...",
197
+ ligand_smiles="CC(=O)OC1=CC=CC=C1C(=O)O",
198
+ predict_affinity=True,
199
+ )
200
+ ```
178
201
 
179
202
  ```bash
180
- # CLI
203
+ # CLI — all commands work with SageMaker by adding the endpoint flags
181
204
  boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint health
205
+ boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint \
206
+ protein "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
182
207
  ```
183
208
 
184
209
  ## Supported Prediction Types
@@ -121,18 +121,43 @@ client = Boltz2Client(
121
121
  ### AWS SageMaker Endpoint
122
122
 
123
123
  ```python
124
- client = Boltz2Client(
124
+ from boltz2_client import Boltz2SyncClient
125
+
126
+ # Requires: pip install "boltz2-python-client[sagemaker]"
127
+ # AWS credentials must be configured (e.g. via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
128
+ # environment variables, ~/.aws/credentials, or an IAM role)
129
+
130
+ client = Boltz2SyncClient(
125
131
  endpoint_type="sagemaker",
126
132
  sagemaker_endpoint_name="my-boltz2-endpoint",
127
133
  sagemaker_region="us-east-1",
128
134
  )
129
- ```
130
135
 
131
- Requires `pip install "boltz2-python-client[sagemaker]"` and AWS credentials.
136
+ # Health check (calls describe_endpoint under the hood)
137
+ health = client.health_check()
138
+ print(f"Endpoint status: {health.status}")
139
+
140
+ # Predict protein structure — same API as local/hosted endpoints
141
+ result = client.predict_protein_structure(
142
+ sequence="MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
143
+ recycling_steps=3,
144
+ sampling_steps=200,
145
+ )
146
+ print(f"Confidence: {result.confidence_scores[0]:.3f}")
147
+
148
+ # Protein-ligand with affinity prediction
149
+ result = client.predict_protein_ligand_complex(
150
+ protein_sequence="MKTVRQERLK...",
151
+ ligand_smiles="CC(=O)OC1=CC=CC=C1C(=O)O",
152
+ predict_affinity=True,
153
+ )
154
+ ```
132
155
 
133
156
  ```bash
134
- # CLI
157
+ # CLI — all commands work with SageMaker by adding the endpoint flags
135
158
  boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint health
159
+ boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint \
160
+ protein "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
136
161
  ```
137
162
 
138
163
  ## Supported Prediction Types
@@ -26,7 +26,7 @@ Example:
26
26
  >>> print(f"Confidence: {result.confidence_scores[0]:.3f}")
27
27
  """
28
28
 
29
- __version__ = "0.5.0"
29
+ __version__ = "0.5.1"
30
30
  __author__ = "NVIDIA Corporation"
31
31
  __email__ = "bionemo-support@nvidia.com"
32
32
 
@@ -78,6 +78,11 @@ def metadata(ctx):
78
78
  """Get service metadata and model information."""
79
79
  async def get_metadata():
80
80
  try:
81
+ if ctx.obj.get('endpoint_type') == 'sagemaker':
82
+ print_error("Metadata endpoint is not available for SageMaker endpoints.")
83
+ print_error("Use 'boltz2 ... health' to check SageMaker endpoint status.")
84
+ raise click.Abort()
85
+
81
86
  client = create_client(ctx)
82
87
 
83
88
  with Progress(
@@ -108,6 +113,8 @@ def metadata(ctx):
108
113
 
109
114
  console.print(table)
110
115
 
116
+ except click.Abort:
117
+ raise
111
118
  except Exception as e:
112
119
  print_error(f"Failed to get metadata: {e}")
113
120
  raise click.Abort()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: boltz2-python-client
3
- Version: 0.5.0
3
+ Version: 0.5.1
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>
@@ -167,18 +167,43 @@ client = Boltz2Client(
167
167
  ### AWS SageMaker Endpoint
168
168
 
169
169
  ```python
170
- client = Boltz2Client(
170
+ from boltz2_client import Boltz2SyncClient
171
+
172
+ # Requires: pip install "boltz2-python-client[sagemaker]"
173
+ # AWS credentials must be configured (e.g. via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
174
+ # environment variables, ~/.aws/credentials, or an IAM role)
175
+
176
+ client = Boltz2SyncClient(
171
177
  endpoint_type="sagemaker",
172
178
  sagemaker_endpoint_name="my-boltz2-endpoint",
173
179
  sagemaker_region="us-east-1",
174
180
  )
175
- ```
176
181
 
177
- Requires `pip install "boltz2-python-client[sagemaker]"` and AWS credentials.
182
+ # Health check (calls describe_endpoint under the hood)
183
+ health = client.health_check()
184
+ print(f"Endpoint status: {health.status}")
185
+
186
+ # Predict protein structure — same API as local/hosted endpoints
187
+ result = client.predict_protein_structure(
188
+ sequence="MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
189
+ recycling_steps=3,
190
+ sampling_steps=200,
191
+ )
192
+ print(f"Confidence: {result.confidence_scores[0]:.3f}")
193
+
194
+ # Protein-ligand with affinity prediction
195
+ result = client.predict_protein_ligand_complex(
196
+ protein_sequence="MKTVRQERLK...",
197
+ ligand_smiles="CC(=O)OC1=CC=CC=C1C(=O)O",
198
+ predict_affinity=True,
199
+ )
200
+ ```
178
201
 
179
202
  ```bash
180
- # CLI
203
+ # CLI — all commands work with SageMaker by adding the endpoint flags
181
204
  boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint health
205
+ boltz2 --endpoint-type sagemaker --sagemaker-endpoint-name my-boltz2-endpoint \
206
+ protein "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
182
207
  ```
183
208
 
184
209
  ## Supported Prediction Types