rc-foundry 0.1.7__tar.gz → 0.1.9__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 (437) hide show
  1. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/PKG-INFO +6 -2
  2. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/README.md +5 -1
  3. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/examples/all.ipynb +1 -0
  4. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/cli.py +13 -4
  5. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/inference.py +3 -1
  6. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/demo.json +2 -1
  7. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/na_binder_design.json +10 -5
  8. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/na_binder_design.md +10 -5
  9. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/protein_binder_design.json +4 -2
  10. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/protein_binder_design.md +11 -2
  11. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/symmetry.md +70 -13
  12. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/engine.py +11 -3
  13. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/datasets.py +1 -1
  14. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/input_parsing.py +31 -0
  15. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/symmetry/atom_array.py +78 -9
  16. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/symmetry/checks.py +12 -4
  17. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/symmetry/frames.py +248 -0
  18. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/symmetry/symmetry_utils.py +5 -5
  19. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/inference_sampler.py +11 -1
  20. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/block_utils.py +33 -33
  21. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/chunked_pairwise.py +84 -82
  22. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/symmetry.py +16 -7
  23. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/utils/inference.py +4 -28
  24. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/ddp.py +1 -1
  25. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/logging.py +1 -1
  26. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/version.py +2 -2
  27. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/.github/workflows/lint_production.yaml +0 -0
  28. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/.gitignore +0 -0
  29. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/.gitmodules +0 -0
  30. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/.pre-commit-config.yaml +0 -0
  31. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/.project-root +0 -0
  32. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/LICENSE.md +0 -0
  33. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/Makefile +0 -0
  34. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/_static/cover.png +0 -0
  35. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/_static/image.png +0 -0
  36. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/_static/prot_dna.png +0 -0
  37. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/_static/superimposed_80_residue_protein.png +0 -0
  38. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/3en2_from_file.cif +0 -0
  39. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/3en2_from_json_with_msa.json +0 -0
  40. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/5hkn_from_file.cif +0 -0
  41. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/7o1r_from_json.json +0 -0
  42. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/7xli_template_antigen_and_framework.json +0 -0
  43. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/9dfn.cif +0 -0
  44. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/9dfn_template_ligand_and_protein.json +0 -0
  45. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/ligands/HEM.sdf +0 -0
  46. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/ligands/NAG.cif +0 -0
  47. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/msas/3en2_A.a3m.gz +0 -0
  48. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/msas/7o1r_A.a3m.gz +0 -0
  49. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/msas/8cdz_A.a3m.gz +0 -0
  50. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/multiple_examples_from_json.json +0 -0
  51. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/templates/7xli_chain_A.cif +0 -0
  52. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rf3/examples/templates/7xli_chain_B.cif +0 -0
  53. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/docs/releases/rfd3/examples/README.md +0 -0
  54. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/examples/enzymes.ipynb +0 -0
  55. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/examples/ipd_design_pipeline_collab.ipynb +0 -0
  56. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/README.md +0 -0
  57. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/__init__.py +0 -0
  58. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/collate/feature_collator.py +0 -0
  59. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/inference.py +0 -0
  60. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/inference_engines/mpnn.py +0 -0
  61. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/loss/nll_loss.py +0 -0
  62. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/metrics/nll.py +0 -0
  63. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/metrics/sequence_recovery.py +0 -0
  64. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/model/layers/graph_embeddings.py +0 -0
  65. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/model/layers/message_passing.py +0 -0
  66. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/model/layers/position_wise_feed_forward.py +0 -0
  67. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/model/layers/positional_encoding.py +0 -0
  68. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/model/mpnn.py +0 -0
  69. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/pipelines/mpnn.py +0 -0
  70. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/samplers/samplers.py +0 -0
  71. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/train.py +0 -0
  72. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/trainers/mpnn.py +0 -0
  73. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/transforms/feature_aggregation/mpnn.py +0 -0
  74. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/transforms/feature_aggregation/polymer_ligand_interface.py +0 -0
  75. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/transforms/feature_aggregation/token_encodings.py +0 -0
  76. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/transforms/feature_aggregation/user_settings.py +0 -0
  77. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/transforms/polymer_ligand_interface.py +0 -0
  78. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/utils/inference.py +0 -0
  79. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/utils/probability.py +0 -0
  80. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/src/mpnn/utils/weights.py +0 -0
  81. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/conftest.py +0 -0
  82. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_feature_collator.py +0 -0
  83. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_inference_engine.py +0 -0
  84. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_inference_utils.py +0 -0
  85. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_integration.py +0 -0
  86. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_loss.py +0 -0
  87. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_metrics.py +0 -0
  88. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_model.py +0 -0
  89. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_pipeline.py +0 -0
  90. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_polymer_ligand_interface.py +0 -0
  91. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_samplers.py +0 -0
  92. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/mpnn/tests/test_utils.py +0 -0
  93. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/README.md +0 -0
  94. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/callbacks/default.yaml +0 -0
  95. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/callbacks/dump_validation_structures.yaml +0 -0
  96. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/callbacks/metrics_logging.yaml +0 -0
  97. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/callbacks/train_logging.yaml +0 -0
  98. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/dataloader/default.yaml +0 -0
  99. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/base.yaml +0 -0
  100. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/pdb_and_distillation.yaml +0 -0
  101. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/pdb_only.yaml +0 -0
  102. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/disorder_distillation.yaml +0 -0
  103. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/domain_distillation.yaml +0 -0
  104. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/monomer_distillation.yaml +0 -0
  105. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/na_complex_distillation.yaml +0 -0
  106. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/pdb/af3_weighted_sampling.yaml +0 -0
  107. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/pdb/base.yaml +0 -0
  108. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/pdb/plinder.yaml +0 -0
  109. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/pdb/train_interface.yaml +0 -0
  110. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/pdb/train_pn_unit.yaml +0 -0
  111. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/train/rna_monomer_distillation.yaml +0 -0
  112. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/val/af3_ab_set.yaml +0 -0
  113. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/val/af3_validation.yaml +0 -0
  114. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/val/base.yaml +0 -0
  115. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/datasets/val/runs_and_poses.yaml +0 -0
  116. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/debug/default.yaml +0 -0
  117. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/debug/train_specific_examples.yaml +0 -0
  118. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/experiment/pretrained/rf3.yaml +0 -0
  119. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/experiment/pretrained/rf3_with_confidence.yaml +0 -0
  120. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/experiment/quick-rf3-with-confidence.yaml +0 -0
  121. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/experiment/quick-rf3.yaml +0 -0
  122. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/hydra/default.yaml +0 -0
  123. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/hydra/no_logging.yaml +0 -0
  124. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/inference.yaml +0 -0
  125. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/inference_engine/base.yaml +0 -0
  126. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/inference_engine/rf3.yaml +0 -0
  127. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/logger/csv.yaml +0 -0
  128. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/logger/default.yaml +0 -0
  129. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/logger/wandb.yaml +0 -0
  130. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/components/ema.yaml +0 -0
  131. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/components/rf3_net.yaml +0 -0
  132. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/components/rf3_net_with_confidence_head.yaml +0 -0
  133. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/optimizers/adam.yaml +0 -0
  134. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/rf3.yaml +0 -0
  135. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/rf3_with_confidence.yaml +0 -0
  136. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/model/schedulers/af3.yaml +0 -0
  137. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/paths/data/default.yaml +0 -0
  138. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/paths/default.yaml +0 -0
  139. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/train.yaml +0 -0
  140. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/cpu.yaml +0 -0
  141. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/ddp.yaml +0 -0
  142. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/loss/losses/confidence_loss.yaml +0 -0
  143. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/loss/losses/diffusion_loss.yaml +0 -0
  144. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/loss/losses/distogram_loss.yaml +0 -0
  145. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/loss/structure_prediction.yaml +0 -0
  146. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/loss/structure_prediction_with_confidence.yaml +0 -0
  147. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/metrics/structure_prediction.yaml +0 -0
  148. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/rf3.yaml +0 -0
  149. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/trainer/rf3_with_confidence.yaml +0 -0
  150. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/configs/validate.yaml +0 -0
  151. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/__init__.py +0 -0
  152. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/_version.py +0 -0
  153. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/alignment.py +0 -0
  154. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/callbacks/dump_validation_structures.py +0 -0
  155. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/callbacks/metrics_logging.py +0 -0
  156. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/chemical.py +0 -0
  157. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/cyclic_transform.py +0 -0
  158. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/extra_xforms.py +0 -0
  159. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/ground_truth_template.py +0 -0
  160. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/paired_msa.py +0 -0
  161. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/pipeline_utils.py +0 -0
  162. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/data/pipelines.py +0 -0
  163. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/diffusion_samplers/inference_sampler.py +0 -0
  164. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/inference_engines/__init__.py +0 -0
  165. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/inference_engines/rf3.py +0 -0
  166. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/kinematics.py +0 -0
  167. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/loss/af3_confidence_loss.py +0 -0
  168. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/loss/af3_losses.py +0 -0
  169. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/loss/loss.py +0 -0
  170. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/chiral.py +0 -0
  171. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/clashing_chains.py +0 -0
  172. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/distogram.py +0 -0
  173. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/lddt.py +0 -0
  174. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/metadata.py +0 -0
  175. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/metric_utils.py +0 -0
  176. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/predicted_error.py +0 -0
  177. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/rasa.py +0 -0
  178. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/metrics/selected_distances.py +0 -0
  179. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/RF3.py +0 -0
  180. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/RF3_blocks.py +0 -0
  181. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/RF3_structure.py +0 -0
  182. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/af3_auxiliary_heads.py +0 -0
  183. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/af3_diffusion_transformer.py +0 -0
  184. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/attention.py +0 -0
  185. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/layer_utils.py +0 -0
  186. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/mlff.py +0 -0
  187. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/outer_product.py +0 -0
  188. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/pairformer_layers.py +0 -0
  189. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/model/layers/structure_bias.py +0 -0
  190. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/scoring.py +0 -0
  191. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/symmetry/resolve.py +0 -0
  192. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/train.py +0 -0
  193. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/trainers/rf3.py +0 -0
  194. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/util_module.py +0 -0
  195. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/frames.py +0 -0
  196. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/inference.py +0 -0
  197. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/io.py +0 -0
  198. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/loss.py +0 -0
  199. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/predict_and_score.py +0 -0
  200. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/predicted_error.py +0 -0
  201. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/utils/recycling.py +0 -0
  202. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/src/rf3/validate.py +0 -0
  203. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/.gitkeep +0 -0
  204. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/conftest.py +0 -0
  205. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/5vht_from_file.cif +0 -0
  206. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/5vht_from_json.json +0 -0
  207. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/8vkf_from_file.cif +0 -0
  208. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/example_from_pdb_with_inter_chain_bond.pdb +0 -0
  209. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/example_pdb_with_clashing_ligand_name.pdb +0 -0
  210. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/example_with_ncaa.json +0 -0
  211. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_model.cif +0 -0
  212. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_summary_confidences.json +0 -0
  213. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_model.cif +0 -0
  214. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_summary_confidences.json +0 -0
  215. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/msas/5vht_A.a3m +0 -0
  216. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/msas/8vkf_A.a3m +0 -0
  217. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/multiple_examples_from_json.json +0 -0
  218. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/ncaa/create_cif_with_ligand_as_ncaa.ipynb +0 -0
  219. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/ncaa/ligand_as_ncaa.cif +0 -0
  220. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/ncaa/penicillin_ts2_as_ncaa.cif +0 -0
  221. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/nested_examples/example_from_json.json +0 -0
  222. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/data/nested_examples/example_from_pdb_with_inter_chain_bonds.and.dots.pdb +0 -0
  223. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/test_chiral_metrics.py +0 -0
  224. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/test_inference_regression.py +0 -0
  225. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rf3/tests/test_write_confidence.py +0 -0
  226. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/.gitignore +0 -0
  227. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/README.md +0 -0
  228. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/__init__.py +0 -0
  229. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/callbacks/design_callbacks.yaml +0 -0
  230. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/callbacks/metrics_logging.yaml +0 -0
  231. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/callbacks/train_logging.yaml +0 -0
  232. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/dataloader/default.yaml +0 -0
  233. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/dataloader/fast.yaml +0 -0
  234. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/dna_condition.yaml +0 -0
  235. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/island.yaml +0 -0
  236. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/ppi.yaml +0 -0
  237. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/sequence_design.yaml +0 -0
  238. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/tipatom.yaml +0 -0
  239. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/conditions/unconditional.yaml +0 -0
  240. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/design_base.yaml +0 -0
  241. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/af3_train_interface.yaml +0 -0
  242. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/af3_train_pn_unit.yaml +0 -0
  243. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/base.yaml +0 -0
  244. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/base_no_weights.yaml +0 -0
  245. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/base_transform_args.yaml +0 -0
  246. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/na_complex_distillation.yaml +0 -0
  247. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/pdb_base.yaml +0 -0
  248. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/rfd3_train_interface.yaml +0 -0
  249. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/pdb/rfd3_train_pn_unit.yaml +0 -0
  250. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/train/rfd3_monomer_distillation.yaml +0 -0
  251. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/bcov_ppi_easy_medium.yaml +0 -0
  252. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/design_validation_base.yaml +0 -0
  253. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/dna_binder_design5.yaml +0 -0
  254. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/dna_binder_long.yaml +0 -0
  255. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/dna_binder_short.yaml +0 -0
  256. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/indexed.yaml +0 -0
  257. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/mcsa_41.yaml +0 -0
  258. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/mcsa_41_short_rigid.yaml +0 -0
  259. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/ppi_inference.yaml +0 -0
  260. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/sm_binder_hbonds.yaml +0 -0
  261. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/sm_binder_hbonds_short.yaml +0 -0
  262. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/unconditional.yaml +0 -0
  263. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/unconditional_deep.yaml +0 -0
  264. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/unindexed.yaml +0 -0
  265. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori.yaml +0 -0
  266. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_spoof_helical_bundle.yaml +0 -0
  267. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_varying_lengths.yaml +0 -0
  268. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/datasets/val/val_examples/bpem_ori_hb.yaml +0 -0
  269. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/debug/default.yaml +0 -0
  270. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/debug/train_specific_examples.yaml +0 -0
  271. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/dev.yaml +0 -0
  272. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/experiment/debug.yaml +0 -0
  273. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/experiment/pretrain.yaml +0 -0
  274. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/experiment/test-uncond.yaml +0 -0
  275. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/experiment/test-unindexed.yaml +0 -0
  276. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/hydra/default.yaml +0 -0
  277. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/hydra/no_logging.yaml +0 -0
  278. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/inference.yaml +0 -0
  279. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/inference_engine/base.yaml +0 -0
  280. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/inference_engine/dev.yaml +0 -0
  281. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/inference_engine/rfdiffusion3.yaml +0 -0
  282. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/logger/csv.yaml +0 -0
  283. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/logger/default.yaml +0 -0
  284. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/logger/wandb.yaml +0 -0
  285. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/components/ema.yaml +0 -0
  286. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/components/rfd3_net.yaml +0 -0
  287. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/optimizers/adam.yaml +0 -0
  288. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/rfd3_base.yaml +0 -0
  289. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/samplers/edm.yaml +0 -0
  290. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/samplers/symmetry.yaml +0 -0
  291. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/model/schedulers/af3.yaml +0 -0
  292. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/paths/data/default.yaml +0 -0
  293. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/paths/default.yaml +0 -0
  294. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/train.yaml +0 -0
  295. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/cpu.yaml +0 -0
  296. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/ddp.yaml +0 -0
  297. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/loss/losses/diffusion_loss.yaml +0 -0
  298. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/loss/losses/sequence_loss.yaml +0 -0
  299. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/metrics/design_metrics.yaml +0 -0
  300. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/trainer/rfd3_base.yaml +0 -0
  301. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/configs/validate.yaml +0 -0
  302. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/conditioning.png +0 -0
  303. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/dna.png +0 -0
  304. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/enzyme.png +0 -0
  305. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/input_selection.png +0 -0
  306. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/input_selection_large.png +0 -0
  307. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/overview.png +0 -0
  308. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/partial_diff.png +0 -0
  309. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/ppi.png +0 -0
  310. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/sm.png +0 -0
  311. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/symm.png +0 -0
  312. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/.assets/trajectory.png +0 -0
  313. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/enzyme_design.json +0 -0
  314. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/enzyme_design.md +0 -0
  315. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/get_na_input.sh +0 -0
  316. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input.md +0 -0
  317. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/1bna.pdb +0 -0
  318. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/1q75.pdb +0 -0
  319. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/2r5z.pdb +0 -0
  320. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/4zxb_cropped.pdb +0 -0
  321. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/5o45_cropped.pdb +0 -0
  322. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/5o4d.pdb +0 -0
  323. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/7v11.pdb +0 -0
  324. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/IAI.pdb +0 -0
  325. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/M0255_1mg5.pdb +0 -0
  326. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/symmetry_examples/1bfr_C2.pdb +0 -0
  327. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/symmetry_examples/1e3v_C2.pdb +0 -0
  328. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/symmetry_examples/1j79_C2.pdb +0 -0
  329. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/input_pdbs/symmetry_examples/6t8h_C3.pdb +0 -0
  330. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/run_inf_tutorial.sh +0 -0
  331. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/sm_binder_design.json +0 -0
  332. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/docs/sm_binder_design.md +0 -0
  333. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/.gitignore +0 -0
  334. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/Makefile +0 -0
  335. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/__init__.py +0 -0
  336. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/callbacks.py +0 -0
  337. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/cli.py +0 -0
  338. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/constants.py +0 -0
  339. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/legacy_input_parsing.py +0 -0
  340. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/parsing.py +0 -0
  341. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/inference/symmetry/contigs.py +0 -0
  342. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/design_metrics.py +0 -0
  343. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/hbonds_hbplus_metrics.py +0 -0
  344. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/hbonds_metrics.py +0 -0
  345. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/losses.py +0 -0
  346. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/metrics_utils.py +0 -0
  347. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/metrics/sidechain_metrics.py +0 -0
  348. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/RFD3.py +0 -0
  349. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/RFD3_diffusion_module.py +0 -0
  350. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/cfg_utils.py +0 -0
  351. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/attention.py +0 -0
  352. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/blocks.py +0 -0
  353. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/encoders.py +0 -0
  354. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/layer_utils.py +0 -0
  355. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/model/layers/pairformer_layers.py +0 -0
  356. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/run_inference.py +0 -0
  357. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/testing/debug.py +0 -0
  358. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/testing/debug_utils.py +0 -0
  359. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/testing/testing_utils.py +0 -0
  360. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/train.py +0 -0
  361. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/trainer/dump_validation_structures.py +0 -0
  362. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/trainer/fabric_trainer.py +0 -0
  363. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/trainer/recycling.py +0 -0
  364. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/trainer/rfd3.py +0 -0
  365. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/trainer/trainer_utils.py +0 -0
  366. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/conditioning_base.py +0 -0
  367. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/conditioning_utils.py +0 -0
  368. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/design_transforms.py +0 -0
  369. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/dna_crop.py +0 -0
  370. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/hbonds.py +0 -0
  371. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/hbonds_hbplus.py +0 -0
  372. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/ncaa_transforms.py +0 -0
  373. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/pipelines.py +0 -0
  374. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/ppi_transforms.py +0 -0
  375. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/rasa.py +0 -0
  376. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/training_conditions.py +0 -0
  377. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/util_transforms.py +0 -0
  378. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/transforms/virtual_atoms.py +0 -0
  379. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/utils/io.py +0 -0
  380. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/src/rfd3/utils/vizualize.py +0 -0
  381. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/conftest.py +0 -0
  382. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_aa_design.py +0 -0
  383. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_conditioning.py +0 -0
  384. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_glycines.py +0 -0
  385. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_legacy_pipeline_equivalence.py +0 -0
  386. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_metrics.py +0 -0
  387. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_partial_diffusion.py +0 -0
  388. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_selections.py +0 -0
  389. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_subgraph_sampling.py +0 -0
  390. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_symmetry.py +0 -0
  391. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_tokenization.py +0 -0
  392. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/test_unindexing.py +0 -0
  393. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/regression_test_data/1p5d_0_inference_pretrain.pkl +0 -0
  394. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/regression_test_data/1p5d_0_train_pretrain.pkl +0 -0
  395. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/regression_test_data/1qys_0_inference_pretrain.pkl +0 -0
  396. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/regression_test_data/1qys_0_train_pretrain.pkl +0 -0
  397. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/regression_test_data/af2_122_train_test_unindexed.pkl +0 -0
  398. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/models/rfd3/tests/transforms/test_pipeline_regression.py +0 -0
  399. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/pyproject.toml +1 -1
  400. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/refactor.sh +0 -0
  401. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/__init__.py +0 -0
  402. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/__init__.py +0 -0
  403. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/callback.py +0 -0
  404. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/health_logging.py +0 -0
  405. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/metrics_logging.py +0 -0
  406. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/timing_logging.py +0 -0
  407. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/callbacks/train_logging.py +0 -0
  408. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/common.py +0 -0
  409. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/constants.py +0 -0
  410. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/hydra/resolvers.py +0 -0
  411. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/inference_engines/base.py +0 -0
  412. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/inference_engines/checkpoint_registry.py +0 -0
  413. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/metrics/__init__.py +0 -0
  414. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/metrics/losses.py +0 -0
  415. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/metrics/metric.py +0 -0
  416. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/model/layers/blocks.py +0 -0
  417. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/testing/__init__.py +0 -0
  418. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/testing/fixtures.py +0 -0
  419. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/testing/pytest_hooks.py +0 -0
  420. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/trainers/fabric.py +0 -0
  421. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/training/EMA.py +0 -0
  422. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/training/checkpoint.py +0 -0
  423. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/training/schedulers.py +0 -0
  424. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/alignment.py +0 -0
  425. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/components.py +0 -0
  426. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/datasets.py +0 -0
  427. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/instantiators.py +0 -0
  428. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/rigid.py +0 -0
  429. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/rotation_augmentation.py +0 -0
  430. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/squashfs.py +0 -0
  431. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/torch.py +0 -0
  432. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry/utils/weights.py +0 -0
  433. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry_cli/__init__.py +0 -0
  434. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/src/foundry_cli/download_checkpoints.py +0 -0
  435. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/tests/conftest.py +0 -0
  436. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/tests/test_torch_utils.py +0 -0
  437. {rc_foundry-0.1.7 → rc_foundry-0.1.9}/tests/test_weight_loading.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rc-foundry
3
- Version: 0.1.7
3
+ Version: 0.1.9
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
@@ -97,11 +97,15 @@ Foundry provides tooling and infrastructure for using and training all classes o
97
97
 
98
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
99
 
100
+
101
+ > [!NOTE]
102
+ > We have a slack now! Join for updates and to get your questions answered [here](https://join.slack.com/t/proteinmodelfoundry/shared_invite/zt-3kpwru8c6-nrmTW6LNHnSE7h16GNnfLA).
103
+
100
104
  ## Getting Started
101
105
  ### Quickstart guide
102
106
  **Installation**
103
107
  ```bash
104
- pip install rc-foundry[all]
108
+ pip install "rc-foundry[all]"
105
109
  ```
106
110
 
107
111
  **Downloading weights** Models can be downloaded to a target folder with:
@@ -4,11 +4,15 @@ Foundry provides tooling and infrastructure for using and training all classes o
4
4
 
5
5
  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.
6
6
 
7
+
8
+ > [!NOTE]
9
+ > We have a slack now! Join for updates and to get your questions answered [here](https://join.slack.com/t/proteinmodelfoundry/shared_invite/zt-3kpwru8c6-nrmTW6LNHnSE7h16GNnfLA).
10
+
7
11
  ## Getting Started
8
12
  ### Quickstart guide
9
13
  **Installation**
10
14
  ```bash
11
- pip install rc-foundry[all]
15
+ pip install "rc-foundry[all]"
12
16
  ```
13
17
 
14
18
  **Downloading weights** Models can be downloaded to a target folder with:
@@ -91,6 +91,7 @@
91
91
  "config = RFD3InferenceConfig(\n",
92
92
  " specification={\n",
93
93
  " 'length': 80, # Generate 80-residue proteins\n",
94
+ " 'extra': {}, # We are not using any extra specifications here.\n",
94
95
  " },\n",
95
96
  " diffusion_batch_size=2, # Generate 2 structures per batch\n",
96
97
  ")\n",
@@ -23,10 +23,19 @@ def fold(
23
23
  configure_minimal_inference_logging()
24
24
 
25
25
  # Find the RF3 configs directory relative to this file
26
- # This file is at: models/rf3/src/rf3/cli.py
27
- # Configs are at: models/rf3/configs/
28
- rf3_package_dir = Path(__file__).parent.parent.parent # Go up to models/rf3/
29
- config_path = str(rf3_package_dir / "configs")
26
+ # In development: models/rf3/src/rf3/cli.py -> models/rf3/configs/
27
+ # When installed: site-packages/rf3/cli.py -> site-packages/rf3/configs/
28
+ rf3_file_dir = Path(__file__).parent
29
+
30
+ # Check if we're in installed mode (configs are sibling to this file)
31
+ # or development mode (configs are ../../../configs)
32
+ if (rf3_file_dir / "configs").exists():
33
+ # Installed mode
34
+ config_path = str(rf3_file_dir / "configs")
35
+ else:
36
+ # Development mode
37
+ rf3_package_dir = rf3_file_dir.parent.parent # Go up to models/rf3/
38
+ config_path = str(rf3_package_dir / "configs")
30
39
 
31
40
  # Get all arguments
32
41
  args = ctx.params.get("args", []) + ctx.args
@@ -16,7 +16,9 @@ rootutils.setup_root(__file__, indicator=".project-root", pythonpath=True)
16
16
 
17
17
  load_dotenv(override=True)
18
18
 
19
- _config_path = os.path.join(os.environ["PROJECT_ROOT"], "models/rf3/configs")
19
+ _config_path = os.path.join(
20
+ os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "configs"
21
+ )
20
22
 
21
23
 
22
24
  @hydra.main(
@@ -29,6 +29,7 @@
29
29
  "input": "./input_pdbs/1bna.pdb",
30
30
  "contig": "A1-10,/0,B15-24,/0,120-130",
31
31
  "length": "140-150",
32
- "ori_token": [24,20,10]
32
+ "ori_token": [24,20,10],
33
+ "is_non_loopy": true
33
34
  }
34
35
  }
@@ -3,25 +3,29 @@
3
3
  "input": "./input_pdbs/1bna.pdb",
4
4
  "contig": "A1-10,/0,B15-24,/0,120-130",
5
5
  "length": "140-150",
6
- "ori_token": [24,20,10]
6
+ "ori_token": [24,20,10],
7
+ "is_non_loopy": true
7
8
  },
8
9
  "ssDNA_basic": {
9
10
  "input": "./input_pdbs/5o4d.pdb",
10
11
  "contig": "A1-23,/0,120-130",
11
12
  "length": "143-153",
12
- "ori_token": [-5,-10,8]
13
+ "ori_token": [-5,-10,8],
14
+ "is_non_loopy": true
13
15
  },
14
16
  "ssDNA_diffused_from_dsDNA_pdb":{
15
17
  "input": "./input_pdbs/1bna.pdb",
16
18
  "contig": "A1-10,/0,120-130",
17
19
  "length": "130-140",
18
- "select_fixed_atoms": {"A1-10":""}
20
+ "select_fixed_atoms": {"A1-10":""},
21
+ "is_non_loopy": true
19
22
  },
20
23
  "RNA_basic": {
21
24
  "input": "./input_pdbs/1q75.pdb",
22
25
  "contig": "A1-15,/0,120-130",
23
26
  "length": "135-145",
24
- "ori_token": [15,2,-4]
27
+ "ori_token": [15,2,-4],
28
+ "is_non_loopy": true
25
29
  },
26
30
  "dsDNA_complex": {
27
31
  "input": "./input_pdbs/2r5z.pdb",
@@ -36,7 +40,8 @@
36
40
  },
37
41
  "ori_token":[25,35,20],
38
42
  "select_hbond_acceptor": {"C16":"N7,O6", "D31-32":"N7", "D28-30":"OP1,OP2,O3',O5'"},
39
- "select_hbond_donor": {"D31-32":"N6"}
43
+ "select_hbond_donor": {"D31-32":"N6"},
44
+ "is_non_loopy": true
40
45
 
41
46
  }
42
47
  }
@@ -30,7 +30,8 @@ The length attribute should be the sum of all polymer lengths. in this case (120
30
30
  "input": "./input_pdbs/1bna.pdb",
31
31
  "contig": "A1-10,/0,B15-24,/0,120-130",
32
32
  "length": "140-150",
33
- "ori_token": [24,20,10]
33
+ "ori_token": [24,20,10],
34
+ "is_non_loopy": true
34
35
  }
35
36
  }
36
37
  ```
@@ -45,7 +46,8 @@ Similar to the previous example, but done for a PDB containing one DNA strand (A
45
46
  "input": "./input_pdbs/5o4d.pdb",
46
47
  "contig": "A1-23,/0,120-130",
47
48
  "length": "143-153",
48
- "ori_token": [-5,-10,8]
49
+ "ori_token": [-5,-10,8],
50
+ "is_non_loopy": true
49
51
  }
50
52
  }
51
53
  ```
@@ -59,7 +61,8 @@ Similar to the previous example but the input PDB has a dsDNA. One of the chains
59
61
  "input": "./input_pdbs/1bna.pdb",
60
62
  "contig": "A1-10,/0,120-130",
61
63
  "length": "130-140",
62
- "select_fixed_atoms": {"A1-10":""}
64
+ "select_fixed_atoms": {"A1-10":""},
65
+ "is_non_loopy": true
63
66
  }
64
67
  }
65
68
  ```
@@ -74,7 +77,8 @@ Example on RNA. Similar to the ssDNA example, example 2.
74
77
  "input": "./input_pdbs/1q75.pdb",
75
78
  "contig": "A1-15,/0,120-130",
76
79
  "length": "135-145",
77
- "ori_token": [15,2,-4]
80
+ "ori_token": [15,2,-4],
81
+ "is_non_loopy": true
78
82
  }
79
83
  }
80
84
  ```
@@ -104,7 +108,8 @@ To run this without warnings, you will need to install [hbplus](https://www.ebi.
104
108
  },
105
109
  "ori_token":[25,35,20],
106
110
  "select_hbond_acceptor": {"C16":"N7,O6", "D31-32":"N7", "D28-30":"OP1,OP2,O3',O5'"},
107
- "select_hbond_donor": {"D31-32":"N6"}
111
+ "select_hbond_donor": {"D31-32":"N6"},
112
+ "is_non_loopy": true
108
113
 
109
114
  }
110
115
  }
@@ -8,7 +8,8 @@
8
8
  "E64": "CD2,CZ",
9
9
  "E88": "CG,CZ",
10
10
  "E96": "CD1,CZ"
11
- }
11
+ },
12
+ "is_non_loopy": true
12
13
  },
13
14
  "pdl1": {
14
15
  "dialect": 2,
@@ -19,6 +20,7 @@
19
20
  "A56": "CG,OH",
20
21
  "A115": "CG,SD",
21
22
  "A123": "CD2,OH"
22
- }
23
+ },
24
+ "is_non_loopy": true
23
25
  }
24
26
  }
@@ -5,6 +5,13 @@ RFD3 is a highly proficient protein binder designer. The following arguments hav
5
5
  - infer_ori_strategy: how RFD3 decides to place the origin of the generated protein binder with respect to the target. We find that using the "hotspots" strategy works best
6
6
  - select_hotspots: which atoms on the target should be bound (dictionary of residues on the target and atoms in those residues)
7
7
 
8
+ In addition, we strongly recommend the following setting, which encourages the model to make more structured designs:
9
+ - is_non_loopy: true
10
+
11
+ Some useful command-line overrides to experiment with include `inference_sampler.step_scale` (defaults to 1.5) and
12
+ `inference_sampler.gamma_0` (defaults to 0.6). Increasing the `step_scale` and decreasing `gamma_0` yields lower-temperature
13
+ designs, which tends to increase designability and decrease diversity.
14
+
8
15
  If you would like to run the examples below, `protein_binder_design.json`, located in this directory, contains the example code. You can run it via:
9
16
  ```
10
17
  rfd3 design out_dir=inference_outputs/protein_binder/0 \
@@ -35,7 +42,8 @@ The input files for the different examples are provided in `foundry/models/rfd3/
35
42
  "E64": "CD2,CZ",
36
43
  "E88": "CG,CZ",
37
44
  "E96": "CD1,CZ",
38
- }
45
+ },
46
+ "is_non_loopy": true
39
47
  },
40
48
  "pdl1": {
41
49
  "dialect": 2,
@@ -46,7 +54,8 @@ The input files for the different examples are provided in `foundry/models/rfd3/
46
54
  "A56": "CG,OH",
47
55
  "A115": "CG,SD",
48
56
  "A123": "CD2,OH",
49
- }
57
+ },
58
+ "is_non_loopy": true
50
59
  }
51
60
  }
52
61
  ```
@@ -16,33 +16,40 @@ symmetry:
16
16
  is_unsym_motif: "Y1-11,Z16-25"
17
17
  is_symmetric_motif: true
18
18
  ```
19
- - `id` : Symmetry group ID; e.g. "C3" for a cyclic protein with 3 subunits, "D2" for a dihedral protein with 2 subunits. Note that only C and D symmetry types are supported currently.
19
+ - `id` : Symmetry group ID. Supported symmetry types:
20
+ - **Cyclic (C)**: e.g. "C3" for a cyclic protein with 3 subunits
21
+ - **Dihedral (D)**: e.g. "D2" for a dihedral protein with 4 subunits (2×2)
22
+ - **Tetrahedral (T)**: "T" for tetrahedral symmetry with 12 subunits
23
+ - **Octahedral (O)**: "O" for octahedral symmetry with 24 subunits
24
+ - **Icosahedral (I)**: "I" for icosahedral symmetry with 60 subunits
20
25
  - `is_unsym_motif` : Comma separated string list of contig/ligand names that should NOT be symmetrized (e.g. DNA strands). If not provided, all motifs are assumed to be symmetrized. See [Designs with motifs](#designs-with-motifs) section for details.
21
26
  - `is_symmetric_motif`: Boolean value whether the input motif is symmetric. Currently only symmetric input motifs are supported, therefore, `true` by default.
22
27
 
28
+ > **⚠️ Memory Warning:** Memory requirements scale quadratically with the number of subunits. For larger complexes (especially T, O, and I symmetries), memory usage can become very high. Always use `diffusion_batch_size=1` for symmetry, and consider enabling `low_memory_mode=True` for higher-order symmetries. The memory footprint increases dramatically as both the number of subunits and the length of each subunit increase. Note: many higher order symmetires run out of memory even on large cards such as H200s, we are working on optimizations to make these networks more memory efficient.
29
+
23
30
 
24
31
  ## Example command
25
32
  You can run the following example command:
26
33
  ```
27
34
  ./src/modelhub/inference.py inference_sampler.kind=symmetry out_dir=logs/inference_outs/sym_demo/0 ckpt_path=$cur_ckpt inputs=./projects/aa_design/tests/test_data/sym_tests.json diffusion_batch_size=1
28
35
  ```
29
- - `inference_sampler.kind`: Set `symmetry` to tern on symmetry mode.
30
- - `diffusion_batch_size` : `8` by default, but it is recommended to set it to `1` for symmetry due to memory limitations.
31
- - `low_memory_mode` : Additionally you can set this to `True` if you have memory constraints (e.g. "CUDA error: out of memory"). However, this will significantly slow the inference.
36
+ - `inference_sampler.kind`: Set `symmetry` to turn on symmetry mode.
37
+ - `diffusion_batch_size` : **Must be set to `1` for all symmetry types** due to memory limitations. Memory scales quadratically with the number of subunits.
38
+ - `low_memory_mode` : **Strongly recommended** for T, O, and I symmetries. Set to `True` if you encounter memory errors (e.g. "CUDA error: out of memory"). Note that this will significantly slow the inference but is often necessary for larger complexes.
32
39
 
33
40
 
34
41
  ## Unconditional multimer design
35
42
 
36
- As mentioned above, we currently only support C and D symmetry types.
37
- The following provides a general overview of the types of symmetry and examples of how to run:
43
+ The following provides a general overview of the supported symmetry types and examples of how to run:
38
44
 
39
- ### Cyclic
40
- **Defaults:**
45
+ ### Cyclic (C)
46
+ Cyclic symmetry with n-fold rotational symmetry around a single axis. Generates n identical subunits.
41
47
 
42
48
  ```json
43
49
  {
44
50
  "uncond_C15": {
45
51
  "length": 100,
52
+ "is_non_loopy": true,
46
53
  "symmetry": {
47
54
  "id": "C15"
48
55
  }
@@ -50,13 +57,14 @@ The following provides a general overview of the types of symmetry and examples
50
57
  }
51
58
  ```
52
59
 
53
- ### Dihedrals
54
- **Defaults:**
60
+ ### Dihedral (D)
61
+ Dihedral symmetry combines n-fold rotational symmetry with a 2-fold rotation perpendicular to the main axis. Generates 2n identical subunits.
55
62
 
56
63
  ```json
57
64
  {
58
65
  "uncond_D4": {
59
66
  "length": 100,
67
+ "is_non_loopy": true,
60
68
  "symmetry": {
61
69
  "id": "D4"
62
70
  }
@@ -64,9 +72,57 @@ The following provides a general overview of the types of symmetry and examples
64
72
  }
65
73
  ```
66
74
 
75
+ ### Tetrahedral (T)
76
+ Tetrahedral symmetry based on the symmetry of a tetrahedron. Generates 12 identical subunits.
77
+
78
+ ```json
79
+ {
80
+ "uncond_T": {
81
+ "length": 100,
82
+ "symmetry": {
83
+ "id": "T"
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ ### Octahedral (O)
90
+ Octahedral symmetry based on the symmetry of a cube/octahedron. Generates 24 identical subunits.
91
+
92
+ ```json
93
+ {
94
+ "uncond_O": {
95
+ "length": 100,
96
+ "symmetry": {
97
+ "id": "O"
98
+ }
99
+ }
100
+ }
101
+ ```
102
+
103
+ ### Icosahedral (I)
104
+ Icosahedral symmetry based on the symmetry of an icosahedron/dodecahedron. Generates 60 identical subunits. This is the largest point group symmetry and is commonly found in viral capsids.
105
+
106
+ ```json
107
+ {
108
+ "uncond_I": {
109
+ "length": 100,
110
+ "symmetry": {
111
+ "id": "I"
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ > **⚠️ Memory Warning:** Memory requirements increase dramatically with the number of subunits and subunit length. The memory footprint scales approximately quadratically with the number of subunits due to pairwise interactions. For higher-order symmetries (T: 12 subunits, O: 24 subunits, I: 60 subunits), it is **essential** to:
118
+ > - Set `diffusion_batch_size=1` (required for all symmetry types)
119
+ > - Enable `low_memory_mode=True` for T, O, and I symmetries
120
+ > - Consider reducing subunit length if you encounter out-of-memory errors
121
+ > - For icosahedral symmetry (60 subunits), expect memory usage to be 25-100× higher than a single chain design
122
+
67
123
  ## Designs with motifs
68
124
 
69
- As mentioned above, symmetry sampling currently only supports pre-symmetrized motifs around the origin. Therefore, `is_symmetric_motif` is set to `true` by default.
125
+ Symmetry sampling currently only supports pre-symmetrized motifs around the origin. Therefore, `is_symmetric_motif` is set to `true` by default.
70
126
  The following are example JSON specifications for different symmetric motif scaffolding. You can also find the corresponding input PDBs in `docs/input_pdbs/symmetry_examples`. Although we only give JSON examples, you can also use YAML for everything shown below.
71
127
 
72
128
  The tasks that these examples describe are as follows:
@@ -122,7 +178,7 @@ The tasks that these examples describe are as follows:
122
178
  "M52": "CG,SD,CE"
123
179
  }
124
180
  },
125
- "uncond_unsym_C3_6t8h": {
181
+ "unsym_C3_6t8h": {
126
182
  "symmetry": {
127
183
  "id": "C3",
128
184
  "is_symmetric_motif": true,
@@ -130,7 +186,8 @@ The tasks that these examples describe are as follows:
130
186
  },
131
187
  "input": "symmetry_examples/6t8h_C3.pdb",
132
188
  "contig": "150-150,/0,Y1-11,/0,Z16-25",
133
- "length": null
189
+ "length": null,
190
+ "is_non_loopy": true
134
191
  }
135
192
  }
136
193
  ```
@@ -21,11 +21,13 @@ from rfd3.constants import SAVED_CONDITIONING_ANNOTATIONS
21
21
  from rfd3.inference.datasets import (
22
22
  assemble_distributed_inference_loader_from_json,
23
23
  )
24
- from rfd3.inference.input_parsing import DesignInputSpecification
24
+ from rfd3.inference.input_parsing import (
25
+ DesignInputSpecification,
26
+ ensure_input_is_abspath,
27
+ )
25
28
  from rfd3.model.inference_sampler import SampleDiffusionConfig
26
29
  from rfd3.utils.inference import (
27
30
  ensure_inference_sampler_matches_design_spec,
28
- ensure_input_is_abspath,
29
31
  )
30
32
  from rfd3.utils.io import (
31
33
  CIF_LIKE_EXTENSIONS,
@@ -391,7 +393,13 @@ class RFD3InferenceEngine(BaseInferenceEngine):
391
393
  design_specifications = {}
392
394
  for prefix, example_spec in inputs.items():
393
395
  # Record task name in the specification
394
- example_spec["extra"]["task_name"] = prefix
396
+ if isinstance(example_spec, DesignInputSpecification):
397
+ example_spec.extra = example_spec.extra or {}
398
+ example_spec.extra["task_name"] = prefix
399
+ else:
400
+ if "extra" not in example_spec:
401
+ example_spec["extra"] = {}
402
+ example_spec["extra"]["task_name"] = prefix
395
403
 
396
404
  # ... Create n_batches for example
397
405
  for batch_id in range((n_batches) if exists(n_batches) else 1):
@@ -14,8 +14,8 @@ from atomworks.ml.transforms.base import Compose, Transform
14
14
  from omegaconf import DictConfig, OmegaConf
15
15
  from rfd3.inference.input_parsing import (
16
16
  DesignInputSpecification,
17
+ ensure_input_is_abspath,
17
18
  )
18
- from rfd3.utils.inference import ensure_input_is_abspath
19
19
  from torch.utils.data import (
20
20
  DataLoader,
21
21
  SequentialSampler,
@@ -5,6 +5,7 @@ import os
5
5
  import time
6
6
  import warnings
7
7
  from contextlib import contextmanager
8
+ from os import PathLike
8
9
  from typing import Any, Dict, List, Optional, Union
9
10
 
10
11
  import numpy as np
@@ -1121,3 +1122,33 @@ def accumulate_components(
1121
1122
  if atom_array_accum.bonds is None:
1122
1123
  atom_array_accum.bonds = BondList(atom_array_accum.array_length())
1123
1124
  return atom_array_accum
1125
+
1126
+
1127
+ def ensure_input_is_abspath(args: Dict[str, Any], path: PathLike | None):
1128
+ """
1129
+ Ensures the input source is an absolute path if exists, if not it will convert
1130
+
1131
+ args:
1132
+ args: Inference specification for atom array
1133
+ path: None or file to which the input is relative to.
1134
+ """
1135
+ if isinstance(args, str):
1136
+ raise ValueError(
1137
+ "Expected args to be a dictionary, got a string: {}. If you are using an input JSON ensure it contains dictionaries of arguments".format(
1138
+ args
1139
+ )
1140
+ )
1141
+ if "input" not in args or not exists(args["input"]):
1142
+ return args
1143
+ input = str(args["input"])
1144
+ if not os.path.isabs(input):
1145
+ if path is None:
1146
+ raise ValueError(
1147
+ "Input path is relative, but no base path was provided to resolve it against."
1148
+ )
1149
+ input = os.path.abspath(os.path.join(os.path.dirname(str(path)), input))
1150
+ logger.info(
1151
+ f"Input source path is relative, converted to absolute path: {input}"
1152
+ )
1153
+ args["input"] = input
1154
+ return args
@@ -1,3 +1,5 @@
1
+ import string
2
+
1
3
  import numpy as np
2
4
  from rfd3.inference.symmetry.frames import (
3
5
  decompose_symmetry_frame,
@@ -7,6 +9,68 @@ from rfd3.inference.symmetry.frames import (
7
9
  FIXED_TRANSFORM_ID = -1
8
10
  FIXED_ENTITY_ID = -1
9
11
 
12
+ # Alphabet for chain ID generation (uppercase letters only, per wwPDB convention)
13
+ _CHAIN_ALPHABET = string.ascii_uppercase
14
+
15
+
16
+ def index_to_chain_id(index: int) -> str:
17
+ """
18
+ Convert a zero-based index to a chain ID following wwPDB convention.
19
+
20
+ The naming follows the wwPDB-assigned chain ID system:
21
+ - 0-25: A-Z (single letter)
22
+ - 26-701: AA-ZZ (double letter)
23
+ - 702-18277: AAA-ZZZ (triple letter)
24
+ - And so on...
25
+
26
+ This is similar to Excel column naming (A, B, ..., Z, AA, AB, ...).
27
+
28
+ Arguments:
29
+ index: zero-based index (0 -> 'A', 25 -> 'Z', 26 -> 'AA', etc.)
30
+ Returns:
31
+ chain_id: string chain identifier
32
+ """
33
+ if index < 0:
34
+ raise ValueError(f"Chain index must be non-negative, got {index}")
35
+
36
+ result = ""
37
+ remaining = index
38
+
39
+ # Convert to bijective base-26 (like Excel columns)
40
+ while True:
41
+ result = _CHAIN_ALPHABET[remaining % 26] + result
42
+ remaining = remaining // 26 - 1
43
+ if remaining < 0:
44
+ break
45
+
46
+ return result
47
+
48
+
49
+ def chain_id_to_index(chain_id: str) -> int:
50
+ """
51
+ Convert a chain ID back to a zero-based index.
52
+
53
+ Inverse of index_to_chain_id.
54
+
55
+ Arguments:
56
+ chain_id: string chain identifier (e.g., 'A', 'Z', 'AA', 'AB')
57
+ Returns:
58
+ index: zero-based index
59
+ """
60
+ if not chain_id or not all(c in _CHAIN_ALPHABET for c in chain_id):
61
+ raise ValueError(f"Invalid chain ID: {chain_id}")
62
+
63
+ # Offset for all shorter chain IDs (26 + 26^2 + ... + 26^(len-1))
64
+ offset = sum(26**k for k in range(1, len(chain_id)))
65
+
66
+ # Value within the current length group (standard base-26)
67
+ value = 0
68
+ for char in chain_id:
69
+ value = value * 26 + _CHAIN_ALPHABET.index(char)
70
+
71
+ return offset + value
72
+
73
+
10
74
  ########################################################
11
75
  # Symmetry annotations
12
76
  ########################################################
@@ -247,11 +311,13 @@ def reset_chain_ids(atom_array, start_id):
247
311
  Reset the chain ids and pn_unit_iids of an atom array to start from the given id.
248
312
  Arguments:
249
313
  atom_array: atom array with chain_ids and pn_unit_iids annotated
314
+ start_id: starting chain ID (e.g., 'A')
250
315
  """
251
316
  chain_ids = np.unique(atom_array.chain_id)
252
- new_chain_range = range(ord(start_id), ord(start_id) + len(chain_ids))
253
- for new_id, old_id in zip(new_chain_range, chain_ids):
254
- atom_array.chain_id[atom_array.chain_id == old_id] = chr(new_id)
317
+ start_index = chain_id_to_index(start_id)
318
+ for i, old_id in enumerate(chain_ids):
319
+ new_id = index_to_chain_id(start_index + i)
320
+ atom_array.chain_id[atom_array.chain_id == old_id] = new_id
255
321
  atom_array.pn_unit_iid = atom_array.chain_id
256
322
  return atom_array
257
323
 
@@ -259,15 +325,18 @@ def reset_chain_ids(atom_array, start_id):
259
325
  def reannotate_chain_ids(atom_array, offset, multiplier=0):
260
326
  """
261
327
  Reannotate the chain ids and pn_unit_iids of an atom array.
328
+
329
+ Uses wwPDB-style chain IDs (A-Z, AA-ZZ, AAA-ZZZ, ...) to support
330
+ any number of chains.
331
+
262
332
  Arguments:
263
333
  atom_array: protein atom array with chain_ids and pn_unit_iids annotated
264
- offset: offset to add to the chain ids
265
- multiplier: multiplier to add to the chain ids
334
+ offset: offset to add to the chain ids (typically num_chains in ASU)
335
+ multiplier: multiplier for the offset (typically transform index)
266
336
  """
267
- chain_ids_int = (
268
- np.array([ord(c) for c in atom_array.chain_id]) + offset * multiplier
269
- )
270
- chain_ids = np.array([chr(id) for id in chain_ids_int], dtype=str)
337
+ chain_ids_indices = np.array([chain_id_to_index(c) for c in atom_array.chain_id])
338
+ new_indices = chain_ids_indices + offset * multiplier
339
+ chain_ids = np.array([index_to_chain_id(idx) for idx in new_indices], dtype="U4")
271
340
  atom_array.chain_id = chain_ids
272
341
  atom_array.pn_unit_iid = chain_ids
273
342
  return atom_array
@@ -24,7 +24,16 @@ def check_symmetry_config(
24
24
  assert sym_conf.id, "symmetry_id is required. e.g. {'id': 'C2'}"
25
25
  # if unsym motif is provided, check that each motif name is in the atom array
26
26
 
27
+ is_motif_atom = get_motif_features(atom_array)["is_motif_atom"]
27
28
  is_unsym_motif = np.zeros(atom_array.shape[0], dtype=bool)
29
+
30
+ if not is_motif_atom.any():
31
+ sym_conf.is_symmetric_motif = None
32
+ ranked_logger.warning(
33
+ "No motifs found in atom array. Setting is_symmetric_motif to None."
34
+ )
35
+ return sym_conf
36
+
28
37
  if sym_conf.is_unsym_motif:
29
38
  assert (
30
39
  src_atom_array is not None
@@ -36,21 +45,20 @@ def check_symmetry_config(
36
45
  if (sm and n not in sm.split(",")) and (n not in atom_array.src_component):
37
46
  raise ValueError(f"Unsym motif {n} not found in atom_array")
38
47
 
39
- is_motif_token = get_motif_features(atom_array)["is_motif_token"]
40
48
  if (
41
- is_motif_token[~is_unsym_motif].any()
49
+ is_motif_atom[~is_unsym_motif].any()
42
50
  and not sym_conf.is_symmetric_motif
43
51
  and not has_dist_cond
44
52
  ):
45
53
  raise ValueError(
46
- "Asymmetric motif inputs should be distance constrained."
47
- "Use atomwise_fixed_dist to constrain the distance between the motif atoms."
54
+ "Asymmetric motif inputs are not supported yet. Please provide a symmetric motif."
48
55
  )
49
56
 
50
57
  if partial and not sym_conf.is_symmetric_motif:
51
58
  raise ValueError(
52
59
  "Partial diffusion with symmetry is only supported for symmetric inputs."
53
60
  )
61
+ return sym_conf
54
62
 
55
63
 
56
64
  def check_atom_array_is_symmetric(atom_array):