boltz-vsynthes 1.0.41__tar.gz → 1.0.42__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 (125) hide show
  1. {boltz_vsynthes-1.0.41/src/boltz_vsynthes.egg-info → boltz_vsynthes-1.0.42}/PKG-INFO +1 -1
  2. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/pyproject.toml +1 -1
  3. boltz_vsynthes-1.0.42/src/boltz/utils/sdf_splitter.py +63 -0
  4. boltz_vsynthes-1.0.42/src/boltz/utils/yaml_generator.py +120 -0
  5. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42/src/boltz_vsynthes.egg-info}/PKG-INFO +1 -1
  6. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz_vsynthes.egg-info/SOURCES.txt +2 -0
  7. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/LICENSE +0 -0
  8. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/README.md +0 -0
  9. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/setup.cfg +0 -0
  10. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/__init__.py +0 -0
  11. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/__init__.py +0 -0
  12. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/const.py +0 -0
  13. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/crop/__init__.py +0 -0
  14. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/crop/affinity.py +0 -0
  15. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/crop/boltz.py +0 -0
  16. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/crop/cropper.py +0 -0
  17. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/feature/__init__.py +0 -0
  18. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/feature/featurizer.py +0 -0
  19. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/feature/featurizerv2.py +0 -0
  20. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/feature/symmetry.py +0 -0
  21. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/__init__.py +0 -0
  22. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/__init__.py +0 -0
  23. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/date.py +0 -0
  24. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/filter.py +0 -0
  25. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/max_residues.py +0 -0
  26. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/resolution.py +0 -0
  27. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/size.py +0 -0
  28. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/dynamic/subset.py +0 -0
  29. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/static/__init__.py +0 -0
  30. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/static/filter.py +0 -0
  31. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/static/ligand.py +0 -0
  32. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/filter/static/polymer.py +0 -0
  33. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/module/__init__.py +0 -0
  34. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/module/inference.py +0 -0
  35. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/module/inferencev2.py +0 -0
  36. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/module/training.py +0 -0
  37. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/module/trainingv2.py +0 -0
  38. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/mol.py +0 -0
  39. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/msa/__init__.py +0 -0
  40. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/msa/mmseqs2.py +0 -0
  41. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/pad.py +0 -0
  42. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/__init__.py +0 -0
  43. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/a3m.py +0 -0
  44. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/csv.py +0 -0
  45. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/fasta.py +0 -0
  46. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/mmcif.py +0 -0
  47. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/mmcif_with_constraints.py +0 -0
  48. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/pdb.py +0 -0
  49. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/pdb_download.py +0 -0
  50. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/schema.py +0 -0
  51. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/sdf.py +0 -0
  52. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/parse/yaml.py +0 -0
  53. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/sample/__init__.py +0 -0
  54. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/sample/cluster.py +0 -0
  55. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/sample/distillation.py +0 -0
  56. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/sample/random.py +0 -0
  57. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/sample/sampler.py +0 -0
  58. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/tokenize/__init__.py +0 -0
  59. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/tokenize/boltz.py +0 -0
  60. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/tokenize/boltz2.py +0 -0
  61. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/tokenize/tokenizer.py +0 -0
  62. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/types.py +0 -0
  63. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/write/__init__.py +0 -0
  64. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/write/mmcif.py +0 -0
  65. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/write/pdb.py +0 -0
  66. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/write/utils.py +0 -0
  67. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/data/write/writer.py +0 -0
  68. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/main.py +0 -0
  69. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/__init__.py +0 -0
  70. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/__init__.py +0 -0
  71. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/attention.py +0 -0
  72. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/attentionv2.py +0 -0
  73. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/confidence_utils.py +0 -0
  74. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/dropout.py +0 -0
  75. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/initialize.py +0 -0
  76. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/outer_product_mean.py +0 -0
  77. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/pair_averaging.py +0 -0
  78. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/pairformer.py +0 -0
  79. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/relative.py +0 -0
  80. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/transition.py +0 -0
  81. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/triangular_attention/__init__.py +0 -0
  82. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/triangular_attention/attention.py +0 -0
  83. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/triangular_attention/primitives.py +0 -0
  84. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/triangular_attention/utils.py +0 -0
  85. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/layers/triangular_mult.py +0 -0
  86. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/__init__.py +0 -0
  87. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/bfactor.py +0 -0
  88. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/confidence.py +0 -0
  89. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/confidencev2.py +0 -0
  90. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/diffusion.py +0 -0
  91. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/diffusionv2.py +0 -0
  92. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/distogram.py +0 -0
  93. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/distogramv2.py +0 -0
  94. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/loss/validation.py +0 -0
  95. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/models/__init__.py +0 -0
  96. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/models/boltz1.py +0 -0
  97. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/models/boltz2.py +0 -0
  98. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/__init__.py +0 -0
  99. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/affinity.py +0 -0
  100. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/confidence.py +0 -0
  101. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/confidence_utils.py +0 -0
  102. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/confidencev2.py +0 -0
  103. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/diffusion.py +0 -0
  104. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/diffusion_conditioning.py +0 -0
  105. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/diffusionv2.py +0 -0
  106. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/encoders.py +0 -0
  107. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/encodersv2.py +0 -0
  108. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/transformers.py +0 -0
  109. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/transformersv2.py +0 -0
  110. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/trunk.py +0 -0
  111. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/trunkv2.py +0 -0
  112. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/modules/utils.py +0 -0
  113. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/optim/__init__.py +0 -0
  114. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/optim/ema.py +0 -0
  115. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/optim/scheduler.py +0 -0
  116. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/potentials/__init__.py +0 -0
  117. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/potentials/potentials.py +0 -0
  118. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz/model/potentials/schedules.py +0 -0
  119. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz_vsynthes.egg-info/dependency_links.txt +0 -0
  120. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz_vsynthes.egg-info/entry_points.txt +0 -0
  121. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz_vsynthes.egg-info/requires.txt +0 -0
  122. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/src/boltz_vsynthes.egg-info/top_level.txt +0 -0
  123. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/tests/test_kernels.py +0 -0
  124. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/tests/test_regression.py +0 -0
  125. {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.42}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boltz-vsynthes
3
- Version: 1.0.41
3
+ Version: 1.0.42
4
4
  Summary: Boltz for VSYNTHES
5
5
  Requires-Python: <3.13,>=3.10
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "boltz-vsynthes"
7
- version = "1.0.41"
7
+ version = "1.0.42"
8
8
  requires-python = ">=3.10,<3.13"
9
9
  description = "Boltz for VSYNTHES"
10
10
  readme = "README.md"
@@ -0,0 +1,63 @@
1
+ from pathlib import Path
2
+ from typing import Optional
3
+ from rdkit import Chem
4
+
5
+ def split_sdf_to_individuals(
6
+ input_sdf: Path,
7
+ output_dir: Path,
8
+ prefix: str = "ligand_",
9
+ start_index: int = 1,
10
+ ) -> None:
11
+ """Split a large SDF file into individual SDF files, one molecule per file.
12
+
13
+ Parameters
14
+ ----------
15
+ input_sdf : Path
16
+ Path to the input SDF file.
17
+ output_dir : Path
18
+ Path to the output directory where individual files will be saved.
19
+ prefix : str, optional
20
+ Prefix for output filenames, by default "ligand_".
21
+ start_index : int, optional
22
+ Starting index for output filenames, by default 1.
23
+ """
24
+ # Create output directory if it doesn't exist
25
+ output_dir.mkdir(parents=True, exist_ok=True)
26
+
27
+ # Read all molecules from input SDF
28
+ supplier = Chem.SDMolSupplier(str(input_sdf))
29
+ molecules = [mol for mol in supplier if mol is not None]
30
+ total_molecules = len(molecules)
31
+
32
+ # Write each molecule to a separate file
33
+ for i, mol in enumerate(molecules):
34
+ # Create output filename
35
+ output_file = output_dir / f"{prefix}{start_index + i}.sdf"
36
+
37
+ # Write molecule to file
38
+ writer = Chem.SDWriter(str(output_file))
39
+ writer.write(mol)
40
+ writer.close()
41
+
42
+ print(f"Created {output_file}")
43
+
44
+ def main():
45
+ import argparse
46
+
47
+ parser = argparse.ArgumentParser(description="Split a large SDF file into individual files")
48
+ parser.add_argument("input_sdf", type=str, help="Path to input SDF file")
49
+ parser.add_argument("output_dir", type=str, help="Path to output directory")
50
+ parser.add_argument("--prefix", type=str, default="ligand_", help="Prefix for output filenames")
51
+ parser.add_argument("--start-index", type=int, default=1, help="Starting index for output filenames")
52
+
53
+ args = parser.parse_args()
54
+
55
+ split_sdf_to_individuals(
56
+ input_sdf=Path(args.input_sdf),
57
+ output_dir=Path(args.output_dir),
58
+ prefix=args.prefix,
59
+ start_index=args.start_index,
60
+ )
61
+
62
+ if __name__ == "__main__":
63
+ main()
@@ -0,0 +1,120 @@
1
+ from pathlib import Path
2
+ import yaml
3
+ from typing import Optional, Dict, Any
4
+ import string
5
+
6
+ def get_next_ligand_id(config: Dict[str, Any]) -> str:
7
+ """Get the next available ligand ID based on existing IDs in the config.
8
+
9
+ Parameters
10
+ ----------
11
+ config : Dict[str, Any]
12
+ The configuration dictionary.
13
+
14
+ Returns
15
+ -------
16
+ str
17
+ The next available ligand ID.
18
+ """
19
+ # Get all existing IDs
20
+ existing_ids = set()
21
+ for item in config["sequences"]:
22
+ for key in item:
23
+ if "id" in item[key]:
24
+ existing_ids.add(item[key]["id"])
25
+
26
+ # Find the first available letter
27
+ for letter in string.ascii_uppercase:
28
+ if letter not in existing_ids:
29
+ return letter
30
+
31
+ # If we run out of single letters, use AA, AB, etc.
32
+ for first in string.ascii_uppercase:
33
+ for second in string.ascii_uppercase:
34
+ new_id = first + second
35
+ if new_id not in existing_ids:
36
+ return new_id
37
+
38
+ raise ValueError("Ran out of available ligand IDs!")
39
+
40
+ def generate_yamls_from_sdfs(
41
+ template_yaml: Path,
42
+ sdf_dir: Path,
43
+ output_dir: Path,
44
+ yaml_prefix: str = "config_",
45
+ start_index: int = 1,
46
+ ) -> None:
47
+ """Generate YAML files from a template and a folder of SDF files.
48
+
49
+ Parameters
50
+ ----------
51
+ template_yaml : Path
52
+ Path to the template YAML file.
53
+ sdf_dir : Path
54
+ Path to the directory containing SDF files.
55
+ output_dir : Path
56
+ Path to the output directory where YAML files will be saved.
57
+ yaml_prefix : str, optional
58
+ Prefix for output YAML filenames, by default "config_".
59
+ start_index : int, optional
60
+ Starting index for output filenames, by default 1.
61
+ """
62
+ # Create output directory if it doesn't exist
63
+ output_dir.mkdir(parents=True, exist_ok=True)
64
+
65
+ # Load template YAML
66
+ with open(template_yaml) as f:
67
+ template = yaml.safe_load(f)
68
+
69
+ # Get all SDF files
70
+ sdf_files = sorted(sdf_dir.glob("*.sdf"))
71
+
72
+ # Generate YAML for each SDF
73
+ for i, sdf_file in enumerate(sdf_files):
74
+ # Create a copy of the template
75
+ config = template.copy()
76
+
77
+ # Get next available ligand ID
78
+ ligand_id = get_next_ligand_id(config)
79
+
80
+ # Update ligand information
81
+ for item in config["sequences"]:
82
+ if "ligand" in item:
83
+ item["ligand"]["id"] = ligand_id
84
+ item["ligand"]["sdf"] = str(sdf_file)
85
+
86
+ # Update affinity information if present
87
+ if "properties" in config:
88
+ for prop in config["properties"]:
89
+ if "affinity" in prop:
90
+ prop["affinity"]["binder"] = ligand_id
91
+
92
+ # Write YAML file
93
+ output_file = output_dir / f"{yaml_prefix}{start_index + i}.yaml"
94
+ with open(output_file, "w") as f:
95
+ yaml.dump(config, f, default_flow_style=False)
96
+
97
+ print(f"Created {output_file} with ligand ID {ligand_id}")
98
+
99
+ def main():
100
+ import argparse
101
+
102
+ parser = argparse.ArgumentParser(description="Generate YAML files from a template and SDF files")
103
+ parser.add_argument("template_yaml", type=str, help="Path to template YAML file")
104
+ parser.add_argument("sdf_dir", type=str, help="Path to directory containing SDF files")
105
+ parser.add_argument("output_dir", type=str, help="Path to output directory")
106
+ parser.add_argument("--yaml-prefix", type=str, default="config_", help="Prefix for output YAML filenames")
107
+ parser.add_argument("--start-index", type=int, default=1, help="Starting index for output filenames")
108
+
109
+ args = parser.parse_args()
110
+
111
+ generate_yamls_from_sdfs(
112
+ template_yaml=Path(args.template_yaml),
113
+ sdf_dir=Path(args.sdf_dir),
114
+ output_dir=Path(args.output_dir),
115
+ yaml_prefix=args.yaml_prefix,
116
+ start_index=args.start_index,
117
+ )
118
+
119
+ if __name__ == "__main__":
120
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boltz-vsynthes
3
- Version: 1.0.41
3
+ Version: 1.0.42
4
4
  Summary: Boltz for VSYNTHES
5
5
  Requires-Python: <3.13,>=3.10
6
6
  Description-Content-Type: text/markdown
@@ -110,6 +110,8 @@ src/boltz/model/optim/scheduler.py
110
110
  src/boltz/model/potentials/__init__.py
111
111
  src/boltz/model/potentials/potentials.py
112
112
  src/boltz/model/potentials/schedules.py
113
+ src/boltz/utils/sdf_splitter.py
114
+ src/boltz/utils/yaml_generator.py
113
115
  src/boltz_vsynthes.egg-info/PKG-INFO
114
116
  src/boltz_vsynthes.egg-info/SOURCES.txt
115
117
  src/boltz_vsynthes.egg-info/dependency_links.txt
File without changes