rc-foundry 0.1.2__py3-none-any.whl → 0.1.4__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.
@@ -69,15 +69,25 @@ class BaseInferenceEngine:
69
69
  self.verbose = verbose
70
70
 
71
71
  # Resolve checkpoint path
72
- if '.' not in str(ckpt_path):
72
+ if "." not in str(ckpt_path):
73
73
  # Assume registered model
74
74
  name = str(ckpt_path)
75
- assert name in REGISTERED_CHECKPOINTS, 'Checkpoint provided not and not in registered checkpoints'
75
+ assert (
76
+ name in REGISTERED_CHECKPOINTS
77
+ ), "Checkpoint provided not and not in registered checkpoints"
76
78
  ckpt = REGISTERED_CHECKPOINTS[name]
77
-
79
+
78
80
  ckpt_path = ckpt.get_default_path()
79
- ranked_logger.info("Using checkpoint from default installation directory, got: {}".format(str(ckpt_path)))
80
- assert os.path.exists(ckpt_path), 'Invalid checkpoint: {}. And could not find checkpoint in default installation location: {}'.format(name, ckpt_path)
81
+ ranked_logger.info(
82
+ "Using checkpoint from default installation directory, got: {}".format(
83
+ str(ckpt_path)
84
+ )
85
+ )
86
+ assert os.path.exists(
87
+ ckpt_path
88
+ ), "Invalid checkpoint: {}. And could not find checkpoint in default installation location: {}".format(
89
+ name, ckpt_path
90
+ )
81
91
  self.ckpt_path = Path(ckpt_path).resolve()
82
92
 
83
93
  # Set random seed (only if seed is not None)
@@ -1,4 +1,5 @@
1
- '''Management of checkpoints'''
1
+ """Management of checkpoints"""
2
+
2
3
  import os
3
4
  from dataclasses import dataclass
4
5
  from pathlib import Path
@@ -11,10 +12,13 @@ def get_default_checkpoint_dir() -> Path:
11
12
  1. FOUNDRY_CHECKPOINTS_DIR environment variable
12
13
  2. ~/.foundry/checkpoints
13
14
  """
14
- if "FOUNDRY_CHECKPOINTS_DIR" in os.environ and os.environ.get("FOUNDRY_CHECKPOINTS_DIR"):
15
+ if "FOUNDRY_CHECKPOINTS_DIR" in os.environ and os.environ.get(
16
+ "FOUNDRY_CHECKPOINTS_DIR"
17
+ ):
15
18
  return Path(os.environ["FOUNDRY_CHECKPOINTS_DIR"]).absolute()
16
19
  return Path.home() / ".foundry" / "checkpoints"
17
20
 
21
+
18
22
  @dataclass
19
23
  class RegisteredCheckpoint:
20
24
  url: str
@@ -28,39 +32,39 @@ class RegisteredCheckpoint:
28
32
 
29
33
  REGISTERED_CHECKPOINTS = {
30
34
  "rfd3": RegisteredCheckpoint(
31
- url = "https://files.ipd.uw.edu/pub/rfd3/rfd3_foundry_2025_12_01_remapped.ckpt",
32
- filename = "rfd3_latest.ckpt",
33
- description = "RFdiffusion3 checkpoint",
35
+ url="https://files.ipd.uw.edu/pub/rfd3/rfd3_foundry_2025_12_01_remapped.ckpt",
36
+ filename="rfd3_latest.ckpt",
37
+ description="RFdiffusion3 checkpoint",
34
38
  ),
35
- "rf3": RegisteredCheckpoint(
36
- url = "https://files.ipd.uw.edu/pub/rf3/rf3_foundry_01_24_latest_remapped.ckpt",
37
- filename= "rf3_foundry_01_24_latest_remapped.ckpt",
38
- description= "latest RF3 checkpoint trained with data until 1/2024 (expect best performance)",
39
+ "rf3": RegisteredCheckpoint(
40
+ url="https://files.ipd.uw.edu/pub/rf3/rf3_foundry_01_24_latest_remapped.ckpt",
41
+ filename="rf3_foundry_01_24_latest_remapped.ckpt",
42
+ description="latest RF3 checkpoint trained with data until 1/2024 (expect best performance)",
39
43
  ),
40
- "proteinmpnn": RegisteredCheckpoint(
41
- url = "https://files.ipd.uw.edu/pub/ligandmpnn/proteinmpnn_v_48_020.pt",
42
- filename= "proteinmpnn_v_48_020.pt",
43
- description= "ProteinMPNN checkpoint",
44
+ "proteinmpnn": RegisteredCheckpoint(
45
+ url="https://files.ipd.uw.edu/pub/ligandmpnn/proteinmpnn_v_48_020.pt",
46
+ filename="proteinmpnn_v_48_020.pt",
47
+ description="ProteinMPNN checkpoint",
44
48
  ),
45
49
  "ligandmpnn": RegisteredCheckpoint(
46
- url = "https://files.ipd.uw.edu/pub/ligandmpnn/ligandmpnn_v_32_010_25.pt",
47
- filename= "ligandmpnn_v_32_010_25.pt",
48
- description= "LigandMPNN checkpoint",
50
+ url="https://files.ipd.uw.edu/pub/ligandmpnn/ligandmpnn_v_32_010_25.pt",
51
+ filename="ligandmpnn_v_32_010_25.pt",
52
+ description="LigandMPNN checkpoint",
49
53
  ),
50
54
  # Other models
51
55
  "rf3_preprint_921": RegisteredCheckpoint(
52
- url = "https://files.ipd.uw.edu/pub/rf3/rf3_foundry_09_21_preprint_remapped.ckpt",
53
- filename = "rf3_foundry_09_21_preprint_remapped.ckpt",
54
- description = "RF3 preprint checkpoint trained with data until 9/2021",
56
+ url="https://files.ipd.uw.edu/pub/rf3/rf3_foundry_09_21_preprint_remapped.ckpt",
57
+ filename="rf3_foundry_09_21_preprint_remapped.ckpt",
58
+ description="RF3 preprint checkpoint trained with data until 9/2021",
55
59
  ),
56
60
  "rf3_preprint_124": RegisteredCheckpoint(
57
- url = "https://files.ipd.uw.edu/pub/rf3/rf3_foundry_01_24_preprint_remapped.ckpt",
58
- filename = "rf3_foundry_01_24_preprint_remapped.ckpt",
59
- description= "RF3 preprint checkpoint trained with data until 1/2024",
61
+ url="https://files.ipd.uw.edu/pub/rf3/rf3_foundry_01_24_preprint_remapped.ckpt",
62
+ filename="rf3_foundry_01_24_preprint_remapped.ckpt",
63
+ description="RF3 preprint checkpoint trained with data until 1/2024",
64
+ ),
65
+ "solublempnn": RegisteredCheckpoint(
66
+ url="https://files.ipd.uw.edu/pub/ligandmpnn/solublempnn_v_48_020.pt",
67
+ filename="solublempnn_v_48_020.pt",
68
+ description="SolubleMPNN checkpoint",
60
69
  ),
61
- "solublempnn": RegisteredCheckpoint(
62
- url = "https://files.ipd.uw.edu/pub/ligandmpnn/solublempnn_v_48_020.pt",
63
- filename= "solublempnn_v_48_020.pt",
64
- description= "SolubleMPNN checkpoint"
65
- )
66
70
  }
foundry/version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.1.2'
32
- __version_tuple__ = version_tuple = (0, 1, 2)
31
+ __version__ = version = '0.1.4'
32
+ __version_tuple__ = version_tuple = (0, 1, 4)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -28,6 +28,7 @@ load_dotenv(override=True)
28
28
  app = typer.Typer(help="Foundry model checkpoint installation utilities")
29
29
  console = Console()
30
30
 
31
+
31
32
  def download_file(url: str, dest: Path, verify_hash: Optional[str] = None) -> None:
32
33
  """Download a file with progress bar and optional hash verification.
33
34
 
@@ -80,9 +81,7 @@ def download_file(url: str, dest: Path, verify_hash: Optional[str] = None) -> No
80
81
  console.print("[green]✓[/green] Hash verification passed")
81
82
 
82
83
 
83
- def install_model(
84
- model_name: str, checkpoint_dir: Path, force: bool = False
85
- ) -> None:
84
+ def install_model(model_name: str, checkpoint_dir: Path, force: bool = False) -> None:
86
85
  """Install a single model checkpoint.
87
86
 
88
87
  Args:
@@ -96,7 +95,7 @@ def install_model(
96
95
  raise typer.Exit(1)
97
96
 
98
97
  checkpoint_info = REGISTERED_CHECKPOINTS[model_name]
99
- dest_path = checkpoint_dir / checkpoint_info["filename"]
98
+ dest_path = checkpoint_dir / checkpoint_info.filename
100
99
 
101
100
  # Check if already exists
102
101
  if dest_path.exists() and not force:
@@ -107,13 +106,11 @@ def install_model(
107
106
  return
108
107
 
109
108
  console.print(
110
- f"[cyan]Installing {model_name}:[/cyan] {checkpoint_info['description']}"
109
+ f"[cyan]Installing {model_name}:[/cyan] {checkpoint_info.description}"
111
110
  )
112
111
 
113
112
  try:
114
- download_file(
115
- checkpoint_info["url"], dest_path, checkpoint_info.get("sha256")
116
- )
113
+ download_file(checkpoint_info.url, dest_path, checkpoint_info.sha256)
117
114
  console.print(
118
115
  f"[green]✓[/green] Successfully installed {model_name} to {dest_path}"
119
116
  )
@@ -157,7 +154,7 @@ def install(
157
154
 
158
155
  # Expand 'all' to all available models
159
156
  if "all" in models:
160
- models_to_install = ['rfd3', 'proteinmpnn', 'ligandmpnn', 'rf3']
157
+ models_to_install = ["rfd3", "proteinmpnn", "ligandmpnn", "rf3"]
161
158
  else:
162
159
  models_to_install = models
163
160
 
@@ -166,15 +163,16 @@ def install(
166
163
  install_model(model_name, checkpoint_dir, force)
167
164
  console.print()
168
165
 
169
- set_key(
170
- dotenv_path=find_dotenv(),
171
- key_to_set='FOUNDRY_CHECKPOINTS_DIR',
172
- value_to_set=str(checkpoint_dir),
173
- export = False,
174
- )
175
- console.print(
176
- f"Set checkpoint installation directory to: {checkpoint_dir}"
177
- )
166
+ # Try to persist checkpoint dir to .env (optional, may not exist in Colab etc.)
167
+ dotenv_path = find_dotenv()
168
+ if dotenv_path:
169
+ set_key(
170
+ dotenv_path=dotenv_path,
171
+ key_to_set="FOUNDRY_CHECKPOINTS_DIR",
172
+ value_to_set=str(checkpoint_dir),
173
+ export=False,
174
+ )
175
+ console.print(f"Saved FOUNDRY_CHECKPOINTS_DIR to {dotenv_path}")
178
176
 
179
177
  console.print("[bold green]Installation complete![/bold green]")
180
178
 
@@ -184,7 +182,7 @@ def list_models():
184
182
  """List available model checkpoints."""
185
183
  console.print("[bold]Available models:[/bold]\n")
186
184
  for name, info in REGISTERED_CHECKPOINTS.items():
187
- console.print(f" [cyan]{name:8}[/cyan] - {info['description']}")
185
+ console.print(f" [cyan]{name:8}[/cyan] - {info.description}")
188
186
 
189
187
 
190
188
  @app.command()
@@ -208,9 +206,7 @@ def show(
208
206
 
209
207
  checkpoint_files = list(checkpoint_dir.glob("*.ckpt"))
210
208
  if not checkpoint_files:
211
- console.print(
212
- f"[yellow]No checkpoint files found in {checkpoint_dir}[/yellow]"
213
- )
209
+ console.print(f"[yellow]No checkpoint files found in {checkpoint_dir}[/yellow]")
214
210
  raise typer.Exit(0)
215
211
 
216
212
  console.print(f"[bold]Installed checkpoints in {checkpoint_dir}:[/bold]\n")
@@ -246,9 +242,7 @@ def clean(
246
242
  # List files to delete
247
243
  checkpoint_files = list(checkpoint_dir.glob("*.ckpt"))
248
244
  if not checkpoint_files:
249
- console.print(
250
- f"[yellow]No checkpoint files found in {checkpoint_dir}[/yellow]"
251
- )
245
+ console.print(f"[yellow]No checkpoint files found in {checkpoint_dir}[/yellow]")
252
246
  raise typer.Exit(0)
253
247
 
254
248
  console.print("[bold]Files to delete:[/bold]")
@@ -54,11 +54,18 @@ class MPNNInferenceEngine:
54
54
  self.out_directory = out_directory
55
55
  self.write_fasta = write_fasta
56
56
  self.write_structures = write_structures
57
-
57
+
58
58
  # allow null for checkpoint path when foundry-installed
59
59
  # TODO: Currently this assumes the model type is the key in the registered path. Rework needed
60
- self.checkpoint_path = str(REGISTERED_CHECKPOINTS[self.model_type.replace('_', '')].get_default_path()) \
61
- if not checkpoint_path else checkpoint_path
60
+ self.checkpoint_path = (
61
+ str(
62
+ REGISTERED_CHECKPOINTS[
63
+ self.model_type.replace("_", "")
64
+ ].get_default_path()
65
+ )
66
+ if not checkpoint_path
67
+ else checkpoint_path
68
+ )
62
69
 
63
70
  # Determine the device.
64
71
  if device is not None:
mpnn/utils/inference.py CHANGED
@@ -362,7 +362,7 @@ def build_arg_parser() -> argparse.ArgumentParser:
362
362
  "--fixed_residues",
363
363
  type=str,
364
364
  help=(
365
- 'List of residue IDs to fix: e.g. \'["A35","B40","C52"]\' or "A35,B40,C52"',
365
+ 'List of residue IDs to fix: e.g. \'["A35","B40","C52"]\' or "A35,B40,C52"'
366
366
  ),
367
367
  default=MPNN_PER_INPUT_INFERENCE_DEFAULTS["fixed_residues"],
368
368
  )
@@ -371,20 +371,20 @@ def build_arg_parser() -> argparse.ArgumentParser:
371
371
  type=str,
372
372
  help=(
373
373
  "List of residue IDs to design: "
374
- 'e.g. \'["A35","B40","C52"]\' or "A35,B40,C52"',
374
+ 'e.g. \'["A35","B40","C52"]\' or "A35,B40,C52"'
375
375
  ),
376
376
  default=MPNN_PER_INPUT_INFERENCE_DEFAULTS["designed_residues"],
377
377
  )
378
378
  design_group.add_argument(
379
379
  "--fixed_chains",
380
380
  type=str,
381
- help=('List of chain IDs to fix: e.g. \'["A","B"]\' or "A,B"',),
381
+ help=('List of chain IDs to fix: e.g. \'["A","B"]\' or "A,B"'),
382
382
  default=MPNN_PER_INPUT_INFERENCE_DEFAULTS["fixed_chains"],
383
383
  )
384
384
  design_group.add_argument(
385
385
  "--designed_chains",
386
386
  type=str,
387
- help=('List of chain IDs to design: e.g. \'["A","B"]\' or "A,B"',),
387
+ help=('List of chain IDs to design: e.g. \'["A","B"]\' or "A,B"'),
388
388
  default=MPNN_PER_INPUT_INFERENCE_DEFAULTS["designed_chains"],
389
389
  )
390
390
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rc-foundry
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Shared utilities and training infrastructure for biomolecular structure prediction models.
5
5
  Author-email: Institute for Protein Design <contact@ipd.uw.edu>
6
6
  License: BSD 3-Clause License
@@ -95,6 +95,8 @@ Description-Content-Type: text/markdown
95
95
 
96
96
  Foundry provides tooling and infrastructure for using and training all classes of models for protein design, including design (RFD3), inverse folding (ProteinMPNN) and protein folding (RF3).
97
97
 
98
+ All models within Foundry rely on [AtomWorks](https://github.com/RosettaCommons/atomworks) - a unified framework for manipulating and processing biomolecular structures - for both training and inference.
99
+
98
100
  ## Getting Started
99
101
  ### Quickstart guide
100
102
  **Installation**
@@ -107,21 +109,21 @@ pip install rc-foundry[all]
107
109
  ```
108
110
  foundry install all --checkpoint_dir <path/to/ckpt/dir>
109
111
  ```
110
- This will download all the models supported (including multiple checkpoints of rf3) but as a beginner you can start with:
112
+ This will download all the models supported (including multiple checkpoints of RF3) but as a beginner you can start with:
111
113
  ```
112
114
  foundry install rfd3 ligandmpnn rf3 --checkpoint_dir <path/to/ckpt/dir>
113
115
  ```
114
116
 
115
117
  >*See `examples/all.ipynb` for how to run each model in a notebook.*
116
118
 
117
- ### RFdiffusion3
119
+ ### RFdiffusion3 (RFD3)
118
120
 
119
121
  [RFdiffusion3](https://www.biorxiv.org/content/10.1101/2025.09.18.676967v2) is an all-atom generative model capable of designing protein structures under complex constraints.
120
122
 
121
123
  > *See [models/rfd3/README.md](models/rfd3/README.md) for complete documentation.*
122
124
 
123
125
  <div align="center">
124
- <img src="docs/_static/rfd3_trajectory.png" alt="RFdiffusion3 generation trajectory." width="400">
126
+ <img src="models/rfd3/docs/.assets/trajectory.png" alt="RFdiffusion3 generation trajectory." width="700">
125
127
  </div>
126
128
 
127
129
  ### ProteinMPNN
@@ -129,7 +131,8 @@ foundry install rfd3 ligandmpnn rf3 --checkpoint_dir <path/to/ckpt/dir>
129
131
 
130
132
  > *See [models/mpnn/README.md](models/mpnn/README.md) for complete documentation.*
131
133
 
132
- ### RosettaFold3
134
+
135
+ ### RosettaFold3 (RF3)
133
136
 
134
137
  [RF3](https://doi.org/10.1101/2025.08.14.670328) is a structure prediction neural network that narrows the gap between closed-source AF-3 and open-source alternatives.
135
138
 
@@ -1,7 +1,7 @@
1
1
  foundry/__init__.py,sha256=H8S1nl5v6YeW8ggn1jKy4GdtH7c-FGS-j7CqUCAEnAU,1926
2
2
  foundry/common.py,sha256=Aur8mH-CNmcUqSsw7VgaCQSW5sH1Bqf8Da91jzxPV1Y,3035
3
3
  foundry/constants.py,sha256=0n1wBKCvNuw3QaQehSbmsHYkIdaGn3tLeRFItBrdeHY,913
4
- foundry/version.py,sha256=Ok5oAXdWgR9aghaFXTafTeDW6sYO3uVe6d2Nket57R4,704
4
+ foundry/version.py,sha256=rLCrf4heo25FJtBY-2Ap7ZuWW-5FS7sqTjsolIUuI5c,704
5
5
  foundry/callbacks/__init__.py,sha256=VsRT1e4sqlJHPcTCsfupMEx82Iz-LoOAGPpwvf_OJeE,126
6
6
  foundry/callbacks/callback.py,sha256=xZBo_suP4bLrP6gl5uJPbaXm00DXigePa6dMeDxucgg,3890
7
7
  foundry/callbacks/health_logging.py,sha256=tEtkByOlaAA7nnelxb7PbM9_dcIgOsdbxCdQY3K5pMc,16664
@@ -9,8 +9,8 @@ foundry/callbacks/metrics_logging.py,sha256=Vekzs831d-HE7TfLJZnQ45iPeG9ziQWLQaMB
9
9
  foundry/callbacks/timing_logging.py,sha256=u-r0hKp7fWOY3mLk7CcuIwHgZbhte13m5M09xNgatZA,2343
10
10
  foundry/callbacks/train_logging.py,sha256=Xs3tmZA88qLxmdSOwt-x8YKN4NKb1kVm59uptNXl4Qo,10399
11
11
  foundry/hydra/resolvers.py,sha256=xyJzo6OeWAc_LOu8RiHhX7_CRNoLZ22626AvYHXYl4U,2186
12
- foundry/inference_engines/base.py,sha256=qv5Gnk6NIxMpIxZ3oeOJurqMMUzBCZgfzHckb7SSzmU,8227
13
- foundry/inference_engines/checkpoint_registry.py,sha256=xRN3PjtmcnN7aEEhDR0MKhp1yaMDXHRXdLAGTDxi_Yk,2563
12
+ foundry/inference_engines/base.py,sha256=ZHdlmGUqH4-p3v4RdrLH-Ps8_zalr7j5mQ4x-S53N4M,8375
13
+ foundry/inference_engines/checkpoint_registry.py,sha256=kt2Z1JhrAjoOiEpkIIQ0sLttie1ceL8OgXUBmmyA6iw,2544
14
14
  foundry/metrics/__init__.py,sha256=qL4wwaiQ7EtR30pmZ9MCknqx909BJcNvHVmNJUaz_WM,236
15
15
  foundry/metrics/losses.py,sha256=2CLUmf7oCdFUCvgJukdNkff0FVG3BlATI-NI60TtpVY,903
16
16
  foundry/metrics/metric.py,sha256=23pKh_Ra0EcHGo5cSzYQQrUGr5zWRxeufKSJ58tfXXo,12687
@@ -34,12 +34,12 @@ foundry/utils/squashfs.py,sha256=QlcwuJyVe-QVfIOS7o1QfLhaCQPNzzox7ln4n8dcYEg,523
34
34
  foundry/utils/torch.py,sha256=OLsqoxw4CTXbGzWUHernLUT7uQjLu0tVPtD8h8747DI,11211
35
35
  foundry/utils/weights.py,sha256=btz4S02xff2vgiq4xMfiXuhK1ERafqQPtmimo1DmoWY,10381
36
36
  foundry_cli/__init__.py,sha256=0BxY2RUKJLaMXUGgypPCwlTskTEFdVnkhTR4C4ft2Kw,52
37
- foundry_cli/download_checkpoints.py,sha256=TLwflDCm9RBCOfpv0KEiQegEp6DjnUIi4fGHiIHLrgc,8382
37
+ foundry_cli/download_checkpoints.py,sha256=UCNdy4VZyJe1PH_lnVLqy-VSMuTu875mGGd99ma7fTQ,8426
38
38
  mpnn/__init__.py,sha256=hgQcXFaCbAxFrhydVAy0xj8yC7UJF-GCCFhqD0sZ7I4,57
39
39
  mpnn/inference.py,sha256=wPtGR325eVRVeesXoWtBK6b_-VcU8BZae5IfQN3-mvA,1669
40
40
  mpnn/train.py,sha256=9eQGBd3rdNF5Zr2w8oUgETbqxBavNBajtA6Vbc5zESE,10239
41
41
  mpnn/collate/feature_collator.py,sha256=LpzAFWo1VMa06dJLmfUWZsKe4xvLZjHbx4RICg2lgbQ,10510
42
- mpnn/inference_engines/mpnn.py,sha256=985Ce84dWKNZk_5_dk1eJScYIgBGUKUhy-xDVCu15PA,21631
42
+ mpnn/inference_engines/mpnn.py,sha256=PmDEsIFipdk2fY57FA-vCp4evoU83DVVuUVmlViUtWk,21725
43
43
  mpnn/loss/nll_loss.py,sha256=KmdNe-BCzGYtijjappzBArQcT1gHVlJnKdY1PYQ4mhU,5947
44
44
  mpnn/metrics/nll.py,sha256=T6oMeUOEeHZzOMTH8NHFtsH9vUwLAsHQDPszzj4YKXI,15299
45
45
  mpnn/metrics/sequence_recovery.py,sha256=YDw_LmH-a3ajBYWK0mucJEQvw0_VEyxvrBN7da4vX8Q,19034
@@ -56,7 +56,7 @@ mpnn/transforms/feature_aggregation/mpnn.py,sha256=jkhyMCqJipKQ2PvjqPkvvClhoiXx_
56
56
  mpnn/transforms/feature_aggregation/polymer_ligand_interface.py,sha256=gDdt9RZd0PO0YJdouNr0qsHFZV1i-5ewU6XuJrwPY54,2870
57
57
  mpnn/transforms/feature_aggregation/token_encodings.py,sha256=qVlUky4HcDSU5drrZpZBnUvTSGdT6C7MN8f_owa81Bw,2227
58
58
  mpnn/transforms/feature_aggregation/user_settings.py,sha256=uKyIDXz-QG0-KWQO1kqPlMj6i7RoVM6yH4iGNXFStoU,15007
59
- mpnn/utils/inference.py,sha256=pVZuzEldHjxLHSUYH4PvdWIFRemAfi46424Ne3Rey4k,96543
59
+ mpnn/utils/inference.py,sha256=QLeukqLpedMNmvjbYgvLwDS5k7Q__NWILDSEbETkoCI,96539
60
60
  mpnn/utils/probability.py,sha256=EYisliXNGXjuSPbzZwcIKjlhyINikGsqQndGBEbQoPI,990
61
61
  mpnn/utils/weights.py,sha256=VsaIcOWTv8G-WJ9denxLRm3FQ9l6L66AVQN08E9BMSg,16411
62
62
  rf3/__init__.py,sha256=XBb5hF2RqBPHODGRmjiRbfTXgOGfOzdY91GbS4Vex00,70
@@ -119,7 +119,7 @@ rfd3/__init__.py,sha256=2Wto2IsUIj2lGag9m_gqgdCwBNl5p21-Xnr7W_RpU3c,348
119
119
  rfd3/callbacks.py,sha256=Zjt8RiaYWquoKOwRmC_wCUbRbov-V4zd2_73zjhgDHE,2783
120
120
  rfd3/cli.py,sha256=TZpZouXGmwAMFaH8hp4r3q9tbUi1xlcN8n_r8hO2q8c,1424
121
121
  rfd3/constants.py,sha256=wLvDzrThpOrK8T3wGFNQeGrhAXOJQze8l3v_7pjIdMM,13141
122
- rfd3/engine.py,sha256=HCIHgB_4xFBYz7d7DGnqibnFcdC7RGXQ6qHgUJEvm2M,20889
122
+ rfd3/engine.py,sha256=La_dB48Ewz0IdY1ocxvSWg-PXVAsySm0OGvwyz42lI8,20824
123
123
  rfd3/run_inference.py,sha256=dubMwEFkNPOq_yYf0ny37qvvEkRjNNPRFksZgmEFkUc,1520
124
124
  rfd3/train.py,sha256=rHswffIUhOae3_iYyvAiQ3jALoFuzrcRUgMlbJLinlI,7947
125
125
  rfd3/inference/datasets.py,sha256=u-2U7deHXu-iOs7doiKKynewP-NEyJfdORSTDzUSaQI,6538
@@ -148,7 +148,7 @@ rfd3/model/layers/chunked_pairwise.py,sha256=de5Qc3P7GEfZlX-QLaKfJxr6Ky5vgLcWWog
148
148
  rfd3/model/layers/encoders.py,sha256=CqByjHNSbtMIaNP_h2iEJZdTbm-N8SGo1bZgvRNpMJ8,15207
149
149
  rfd3/model/layers/layer_utils.py,sha256=UPYo-DYa__93KONSEj2YZWLtBqvYNSA9_wHDDPhVrIc,5710
150
150
  rfd3/model/layers/pairformer_layers.py,sha256=uimskhN-Ec0apEXAU6JqomyKX5-6ormrEsCFJotkBtM,3991
151
- rfd3/testing/debug.py,sha256=JqpSKbSp1l9V_3trLNzpdt3gazqrSOSq7NrmcuGjpJQ,4059
151
+ rfd3/testing/debug.py,sha256=EeuGCEKyp-caoiskjnyfi88TfnJr5lcnPT2z4gblqvY,3958
152
152
  rfd3/testing/debug_utils.py,sha256=i_GjrsRjeaREv6hlX2sEmeztpo9w9rg7Ne3VT5-YILA,2170
153
153
  rfd3/testing/testing_utils.py,sha256=CtpTDxePbCluzuvd6jBfJNI2a3_8Ry2Whbgcf-5upiM,12202
154
154
  rfd3/trainer/dump_validation_structures.py,sha256=qY8s2hPBflJTXPiIUnqFFE9g36y_7s39MEcMRrxZUmA,6027
@@ -172,9 +172,9 @@ rfd3/transforms/util_transforms.py,sha256=2AcLkzx-73ZFgcWD1cIHv7NyniRPI4_zThHK8a
172
172
  rfd3/transforms/virtual_atoms.py,sha256=UpmxzPPd5FaJigcRoxgLSHHrLLOqsCvZ5PPZfQSGqII,12547
173
173
  rfd3/utils/inference.py,sha256=RQp5CCy6Z6uHVZ2Mx0zmmGluYEOrASke4bABtfRjpy0,26448
174
174
  rfd3/utils/io.py,sha256=wbdjUTQkDc3RCSM7gdogA-XOKR68HeQ-cfvyN4pP90w,9849
175
- rfd3/utils/vizualize.py,sha256=cumsMtSFQ8lfVtJDDQ9mpfMf9GSyM55RYmKl9H61_TM,11147
176
- rc_foundry-0.1.2.dist-info/METADATA,sha256=41TPsF9MGq2ab237zdmSqI4a6BujF7hyq3fvW78tsEA,10358
177
- rc_foundry-0.1.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
178
- rc_foundry-0.1.2.dist-info/entry_points.txt,sha256=BmiWCbWGtrd_lSOFMuCLBXyo84B7Nco-alj7hB0Yw9A,130
179
- rc_foundry-0.1.2.dist-info/licenses/LICENSE.md,sha256=NKtPCJ7QMysFmzeDg56ZfUStvgzbq5sOvRQv7_ddZOs,1533
180
- rc_foundry-0.1.2.dist-info/RECORD,,
175
+ rfd3/utils/vizualize.py,sha256=HPlczrA3zkOuxV5X05eOvy_Oga9e3cPnFUXOEP4RR_g,11046
176
+ rc_foundry-0.1.4.dist-info/METADATA,sha256=hzcS1buvLzRRAv7rPRgKwYjeNDL_iTGyR6u8CRpL-Ic,10585
177
+ rc_foundry-0.1.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
178
+ rc_foundry-0.1.4.dist-info/entry_points.txt,sha256=BmiWCbWGtrd_lSOFMuCLBXyo84B7Nco-alj7hB0Yw9A,130
179
+ rc_foundry-0.1.4.dist-info/licenses/LICENSE.md,sha256=NKtPCJ7QMysFmzeDg56ZfUStvgzbq5sOvRQv7_ddZOs,1533
180
+ rc_foundry-0.1.4.dist-info/RECORD,,
rfd3/engine.py CHANGED
@@ -15,7 +15,6 @@ from toolz import merge_with
15
15
 
16
16
  from foundry.common import exists
17
17
  from foundry.inference_engines.base import BaseInferenceEngine
18
- from foundry.inference_engines.checkpoint_registry import REGISTERED_CHECKPOINTS
19
18
  from foundry.utils.alignment import weighted_rigid_align
20
19
  from foundry.utils.ddp import RankedLogger
21
20
  from rfd3.constants import SAVED_CONDITIONING_ANNOTATIONS
@@ -38,7 +37,9 @@ ranked_logger = RankedLogger(__name__, rank_zero_only=True)
38
37
 
39
38
  @dataclass(kw_only=True)
40
39
  class RFD3InferenceConfig:
41
- ckpt_path: str | Path = 'rfd3' # Defaults to foundry installation upon instantiation
40
+ ckpt_path: str | Path = (
41
+ "rfd3" # Defaults to foundry installation upon instantiation
42
+ )
42
43
  diffusion_batch_size: int = 16
43
44
 
44
45
  # RFD3 specific
rfd3/testing/debug.py CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env -S /bin/sh -c '"$(dirname "$0")/../../../scripts/shebang/modelhub_exec.sh" "$0" "$@"'
2
1
  # JBs debugging file, please create your own and go crazy!
3
2
  import logging
4
3
  import os
rfd3/utils/vizualize.py CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env -S /bin/sh -c '"$(dirname "$0")/../../../scripts/shebang/modelhub_exec.sh" "$0" "$@"'
2
1
  """
3
2
  If you add the `/path/to/visualize.py` to your .bashrc/.zshrc like this:
4
3