boltz-vsynthes 1.0.32__py3-none-any.whl → 1.0.33__py3-none-any.whl

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.
@@ -2,6 +2,7 @@ from collections.abc import Mapping
2
2
  from dataclasses import dataclass
3
3
  from pathlib import Path
4
4
  from typing import Optional
5
+ import json
5
6
 
6
7
  import click
7
8
  import numpy as np
@@ -1425,15 +1426,43 @@ def parse_boltz_schema( # noqa: C901, PLR0915, PLR0912
1425
1426
  protein_chains.add(chain_name)
1426
1427
 
1427
1428
  # Add affinity info
1428
- if chain.affinity and affinity_info is not None:
1429
- msg = "Cannot compute affinity for multiple ligands!"
1430
- raise ValueError(msg)
1431
-
1432
1429
  if chain.affinity:
1433
- affinity_info = AffinityInfo(
1434
- chain_id=asym_id,
1435
- mw=chain.affinity_mw,
1436
- )
1430
+ # If this is a protein binder, we need to create affinity info for each ligand
1431
+ if chain_name in affinity_proteins:
1432
+ # Find all ligand chains
1433
+ ligand_chains = [
1434
+ (name, c) for name, c in chains.items()
1435
+ if c.type == const.chain_type_ids["NONPOLYMER"]
1436
+ ]
1437
+ if not ligand_chains:
1438
+ msg = "No ligand chains found for protein binder!"
1439
+ raise ValueError(msg)
1440
+
1441
+ # Create affinity info for each ligand
1442
+ for ligand_name, ligand_chain in ligand_chains:
1443
+ affinity_info = AffinityInfo(
1444
+ chain_id=asym_id,
1445
+ mw=chain.affinity_mw,
1446
+ )
1447
+ # Save the affinity info in a subfolder named after the ligand
1448
+ output_dir = Path(f"output/{ligand_name}")
1449
+ output_dir.mkdir(parents=True, exist_ok=True)
1450
+ # Save the affinity info
1451
+ with open(output_dir / "affinity_info.json", "w") as f:
1452
+ json.dump({
1453
+ "chain_id": asym_id,
1454
+ "mw": chain.affinity_mw,
1455
+ "ligand_name": ligand_name
1456
+ }, f)
1457
+ else:
1458
+ # This is a ligand binder
1459
+ if affinity_info is not None:
1460
+ msg = "Cannot compute affinity for multiple ligands!"
1461
+ raise ValueError(msg)
1462
+ affinity_info = AffinityInfo(
1463
+ chain_id=asym_id,
1464
+ mw=chain.affinity_mw,
1465
+ )
1437
1466
 
1438
1467
  # Find all copies of this chain in the assembly
1439
1468
  entity_id = int(chain.entity)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boltz-vsynthes
3
- Version: 1.0.32
3
+ Version: 1.0.33
4
4
  Summary: Boltz for VSYNTHES
5
5
  Requires-Python: <3.13,>=3.10
6
6
  Description-Content-Type: text/markdown
@@ -40,7 +40,7 @@ boltz/data/parse/mmcif.py,sha256=25kEXCkx-OuaawAs7cdz0fxdRu5_CCO0AV00u84PrjQ,368
40
40
  boltz/data/parse/mmcif_with_constraints.py,sha256=WHYZckSqUwu-Nb9vmVmxHmC7uxwVrF7AVUeVKsc5wGQ,51473
41
41
  boltz/data/parse/pdb.py,sha256=iybk4p2UgUy_ABGprDq_xxyPSdm1HAZsGTM0lhxVEwM,1654
42
42
  boltz/data/parse/pdb_download.py,sha256=wge-scX-lOatX0q83W1wOsaql99rYp-6uGWSHEc995M,2718
43
- boltz/data/parse/schema.py,sha256=liL6Dl4P1bEq-nYwm8DOAXPfl32yYi84MgrcFXpR-0M,64220
43
+ boltz/data/parse/schema.py,sha256=5eU-_NR-g2XTtDpYXoREAy84DWTyHN8yRiXngd4BShs,65676
44
44
  boltz/data/parse/sdf.py,sha256=fs3MQVClDcCzxJaeVYiDuoh-fUrYc8Tcd5Bz8ws3FKI,2052
45
45
  boltz/data/parse/yaml.py,sha256=GRFRMtDD4PQ4PIpA_S1jj0vRaEu2LlZd_g4rN1zUrNo,1505
46
46
  boltz/data/sample/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -107,9 +107,9 @@ boltz/model/optim/scheduler.py,sha256=nB4jz0CZ4pR4n08LQngExL_pNycIdYI8AXVoHPnZWQ
107
107
  boltz/model/potentials/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
108
  boltz/model/potentials/potentials.py,sha256=vev8Vjfs-ML1hyrdv_R8DynG4wSFahJ6nzPWp7CYQqw,17507
109
109
  boltz/model/potentials/schedules.py,sha256=m7XJjfuF9uTX3bR9VisXv1rvzJjxiD8PobXRpcBBu1c,968
110
- boltz_vsynthes-1.0.32.dist-info/licenses/LICENSE,sha256=8GZ_1eZsUeG6jdqgJJxtciWzADfgLEV4LY8sKUOsJhc,1102
111
- boltz_vsynthes-1.0.32.dist-info/METADATA,sha256=mGtHYvFndm8HdHsMfvXFMu5x4CwNVAAgdP5o_CVGBgU,7171
112
- boltz_vsynthes-1.0.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
- boltz_vsynthes-1.0.32.dist-info/entry_points.txt,sha256=n5a5I35ntu9lmyr16oZgHPFY0b0YxjiixY7m7nbMTLc,41
114
- boltz_vsynthes-1.0.32.dist-info/top_level.txt,sha256=MgU3Jfb-ctWm07YGMts68PMjSh9v26D0gfG3dFRmVFA,6
115
- boltz_vsynthes-1.0.32.dist-info/RECORD,,
110
+ boltz_vsynthes-1.0.33.dist-info/licenses/LICENSE,sha256=8GZ_1eZsUeG6jdqgJJxtciWzADfgLEV4LY8sKUOsJhc,1102
111
+ boltz_vsynthes-1.0.33.dist-info/METADATA,sha256=XadtfwQoBLRNyaCe61wdMoCixayUE05BNfA7Y7hblgI,7171
112
+ boltz_vsynthes-1.0.33.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
+ boltz_vsynthes-1.0.33.dist-info/entry_points.txt,sha256=n5a5I35ntu9lmyr16oZgHPFY0b0YxjiixY7m7nbMTLc,41
114
+ boltz_vsynthes-1.0.33.dist-info/top_level.txt,sha256=MgU3Jfb-ctWm07YGMts68PMjSh9v26D0gfG3dFRmVFA,6
115
+ boltz_vsynthes-1.0.33.dist-info/RECORD,,