boltz-vsynthes 1.0.41__tar.gz → 1.0.43__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.
- {boltz_vsynthes-1.0.41/src/boltz_vsynthes.egg-info → boltz_vsynthes-1.0.43}/PKG-INFO +1 -1
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/pyproject.toml +3 -1
- boltz_vsynthes-1.0.43/src/boltz/utils/sdf_splitter.py +63 -0
- boltz_vsynthes-1.0.43/src/boltz/utils/yaml_generator.py +120 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43/src/boltz_vsynthes.egg-info}/PKG-INFO +1 -1
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz_vsynthes.egg-info/SOURCES.txt +2 -0
- boltz_vsynthes-1.0.43/src/boltz_vsynthes.egg-info/entry_points.txt +4 -0
- boltz_vsynthes-1.0.41/src/boltz_vsynthes.egg-info/entry_points.txt +0 -2
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/LICENSE +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/README.md +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/setup.cfg +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/const.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/crop/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/crop/affinity.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/crop/boltz.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/crop/cropper.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/feature/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/feature/featurizer.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/feature/featurizerv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/feature/symmetry.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/date.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/filter.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/max_residues.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/resolution.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/size.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/subset.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/static/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/static/filter.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/static/ligand.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/static/polymer.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/module/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/module/inference.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/module/inferencev2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/module/training.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/module/trainingv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/mol.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/msa/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/msa/mmseqs2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/pad.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/a3m.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/csv.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/fasta.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/mmcif.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/mmcif_with_constraints.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/pdb.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/pdb_download.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/schema.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/sdf.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/yaml.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/sample/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/sample/cluster.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/sample/distillation.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/sample/random.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/sample/sampler.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/tokenize/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/tokenize/boltz.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/tokenize/boltz2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/tokenize/tokenizer.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/types.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/write/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/write/mmcif.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/write/pdb.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/write/utils.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/write/writer.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/main.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/attention.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/attentionv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/confidence_utils.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/dropout.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/initialize.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/outer_product_mean.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/pair_averaging.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/pairformer.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/relative.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/transition.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_attention/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_attention/attention.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_attention/primitives.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_attention/utils.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_mult.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/bfactor.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/confidence.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/confidencev2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/diffusion.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/diffusionv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/distogram.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/distogramv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/loss/validation.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/models/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/models/boltz1.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/models/boltz2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/affinity.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/confidence.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/confidence_utils.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/confidencev2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/diffusion.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/diffusion_conditioning.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/diffusionv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/encoders.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/encodersv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/transformers.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/transformersv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/trunk.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/trunkv2.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/utils.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/optim/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/optim/ema.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/optim/scheduler.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/potentials/__init__.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/potentials/potentials.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/potentials/schedules.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz_vsynthes.egg-info/dependency_links.txt +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz_vsynthes.egg-info/requires.txt +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz_vsynthes.egg-info/top_level.txt +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/tests/test_kernels.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/tests/test_regression.py +0 -0
- {boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/tests/test_utils.py +0 -0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "boltz-vsynthes"
|
7
|
-
version = "1.0.
|
7
|
+
version = "1.0.43"
|
8
8
|
requires-python = ">=3.10,<3.13"
|
9
9
|
description = "Boltz for VSYNTHES"
|
10
10
|
readme = "README.md"
|
@@ -39,6 +39,8 @@ dependencies = [
|
|
39
39
|
|
40
40
|
[project.scripts]
|
41
41
|
boltz = "boltz.main:cli"
|
42
|
+
boltz-split-sdf = "boltz.utils.sdf_splitter:main"
|
43
|
+
boltz-generate-yaml = "boltz.utils.yaml_generator:main"
|
42
44
|
|
43
45
|
[project.optional-dependencies]
|
44
46
|
lint = ["ruff"]
|
@@ -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()
|
@@ -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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/filter/dynamic/max_residues.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/data/parse/mmcif_with_constraints.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/outer_product_mean.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/layers/triangular_attention/utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz/model/modules/diffusion_conditioning.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.41 → boltz_vsynthes-1.0.43}/src/boltz_vsynthes.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|