rc-foundry 0.1.1__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 (427) hide show
  1. rc_foundry-0.1.1/.git +1 -0
  2. rc_foundry-0.1.1/.github/workflows/lint_trunk.yaml +36 -0
  3. rc_foundry-0.1.1/.gitignore +227 -0
  4. rc_foundry-0.1.1/.gitmodules +0 -0
  5. rc_foundry-0.1.1/.ipd/apptainer/rf3-dev.def +114 -0
  6. rc_foundry-0.1.1/.ipd/apptainer/rf3-full.def +81 -0
  7. rc_foundry-0.1.1/.ipd/apptainer/rfd3-full.def +81 -0
  8. rc_foundry-0.1.1/.ipd/shebang/README.md +6 -0
  9. rc_foundry-0.1.1/.ipd/shebang/mpnn_exec.sh +129 -0
  10. rc_foundry-0.1.1/.ipd/shebang/rf3_exec.sh +129 -0
  11. rc_foundry-0.1.1/.ipd/shebang/rfd3_exec.sh +129 -0
  12. rc_foundry-0.1.1/.ipd/slurm/launch_ligand_mpnn.sh +15 -0
  13. rc_foundry-0.1.1/.ipd/slurm/launch_protein_mpnn.sh +15 -0
  14. rc_foundry-0.1.1/.ipd/slurm/launch_rf3.sh +65 -0
  15. rc_foundry-0.1.1/.ipd/slurm/launch_rfd3.sh +69 -0
  16. rc_foundry-0.1.1/.pre-commit-config.yaml +8 -0
  17. rc_foundry-0.1.1/.project-root +0 -0
  18. rc_foundry-0.1.1/LICENSE.md +28 -0
  19. rc_foundry-0.1.1/Makefile +79 -0
  20. rc_foundry-0.1.1/PKG-INFO +239 -0
  21. rc_foundry-0.1.1/README.md +146 -0
  22. rc_foundry-0.1.1/docs/IPD_USAGE.md +224 -0
  23. rc_foundry-0.1.1/docs/releases/rf3/examples/3en2_from_file.cif +2867 -0
  24. rc_foundry-0.1.1/docs/releases/rf3/examples/3en2_from_json_with_msa.json +15 -0
  25. rc_foundry-0.1.1/docs/releases/rf3/examples/5hkn_from_file.cif +2471 -0
  26. rc_foundry-0.1.1/docs/releases/rf3/examples/7o1r_from_json.json +32 -0
  27. rc_foundry-0.1.1/docs/releases/rf3/examples/7xli_template_antigen_and_framework.json +14 -0
  28. rc_foundry-0.1.1/docs/releases/rf3/examples/9dfn.cif +6218 -0
  29. rc_foundry-0.1.1/docs/releases/rf3/examples/9dfn_template_ligand_and_protein.json +13 -0
  30. rc_foundry-0.1.1/docs/releases/rf3/examples/ligands/HEM.sdf +163 -0
  31. rc_foundry-0.1.1/docs/releases/rf3/examples/ligands/NAG.cif +67 -0
  32. rc_foundry-0.1.1/docs/releases/rf3/examples/msas/3en2_A.a3m.gz +0 -0
  33. rc_foundry-0.1.1/docs/releases/rf3/examples/msas/7o1r_A.a3m.gz +0 -0
  34. rc_foundry-0.1.1/docs/releases/rf3/examples/msas/8cdz_A.a3m.gz +0 -0
  35. rc_foundry-0.1.1/docs/releases/rf3/examples/multiple_examples_from_json.json +26 -0
  36. rc_foundry-0.1.1/docs/releases/rf3/examples/templates/7xli_chain_A.cif +938 -0
  37. rc_foundry-0.1.1/docs/releases/rf3/examples/templates/7xli_chain_B.cif +1017 -0
  38. rc_foundry-0.1.1/docs/releases/rfd3/examples/README.md +3 -0
  39. rc_foundry-0.1.1/examples/all.ipynb +410 -0
  40. rc_foundry-0.1.1/examples/enzymes.ipynb +123 -0
  41. rc_foundry-0.1.1/models/mpnn/README.md +146 -0
  42. rc_foundry-0.1.1/models/mpnn/src/mpnn/__init__.py +1 -0
  43. rc_foundry-0.1.1/models/mpnn/src/mpnn/collate/feature_collator.py +265 -0
  44. rc_foundry-0.1.1/models/mpnn/src/mpnn/inference.py +53 -0
  45. rc_foundry-0.1.1/models/mpnn/src/mpnn/inference_engines/mpnn.py +549 -0
  46. rc_foundry-0.1.1/models/mpnn/src/mpnn/loss/nll_loss.py +122 -0
  47. rc_foundry-0.1.1/models/mpnn/src/mpnn/metrics/nll.py +369 -0
  48. rc_foundry-0.1.1/models/mpnn/src/mpnn/metrics/sequence_recovery.py +440 -0
  49. rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/graph_embeddings.py +2372 -0
  50. rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/message_passing.py +332 -0
  51. rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/position_wise_feed_forward.py +44 -0
  52. rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/positional_encoding.py +98 -0
  53. rc_foundry-0.1.1/models/mpnn/src/mpnn/model/mpnn.py +2632 -0
  54. rc_foundry-0.1.1/models/mpnn/src/mpnn/pipelines/mpnn.py +162 -0
  55. rc_foundry-0.1.1/models/mpnn/src/mpnn/samplers/samplers.py +167 -0
  56. rc_foundry-0.1.1/models/mpnn/src/mpnn/train.py +341 -0
  57. rc_foundry-0.1.1/models/mpnn/src/mpnn/trainers/mpnn.py +193 -0
  58. rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/mpnn.py +184 -0
  59. rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/polymer_ligand_interface.py +76 -0
  60. rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/token_encodings.py +132 -0
  61. rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/user_settings.py +347 -0
  62. rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/polymer_ligand_interface.py +164 -0
  63. rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/inference.py +2397 -0
  64. rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/probability.py +37 -0
  65. rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/weights.py +309 -0
  66. rc_foundry-0.1.1/models/mpnn/tests/conftest.py +18 -0
  67. rc_foundry-0.1.1/models/mpnn/tests/test_feature_collator.py +174 -0
  68. rc_foundry-0.1.1/models/mpnn/tests/test_inference_engine.py +680 -0
  69. rc_foundry-0.1.1/models/mpnn/tests/test_inference_utils.py +766 -0
  70. rc_foundry-0.1.1/models/mpnn/tests/test_integration.py +302 -0
  71. rc_foundry-0.1.1/models/mpnn/tests/test_loss.py +58 -0
  72. rc_foundry-0.1.1/models/mpnn/tests/test_metrics.py +92 -0
  73. rc_foundry-0.1.1/models/mpnn/tests/test_model.py +345 -0
  74. rc_foundry-0.1.1/models/mpnn/tests/test_pipeline.py +514 -0
  75. rc_foundry-0.1.1/models/mpnn/tests/test_polymer_ligand_interface.py +295 -0
  76. rc_foundry-0.1.1/models/mpnn/tests/test_samplers.py +265 -0
  77. rc_foundry-0.1.1/models/mpnn/tests/test_utils.py +797 -0
  78. rc_foundry-0.1.1/models/rf3/README.md +637 -0
  79. rc_foundry-0.1.1/models/rf3/configs/callbacks/default.yaml +5 -0
  80. rc_foundry-0.1.1/models/rf3/configs/callbacks/dump_validation_structures.yaml +6 -0
  81. rc_foundry-0.1.1/models/rf3/configs/callbacks/metrics_logging.yaml +10 -0
  82. rc_foundry-0.1.1/models/rf3/configs/callbacks/train_logging.yaml +16 -0
  83. rc_foundry-0.1.1/models/rf3/configs/dataloader/default.yaml +15 -0
  84. rc_foundry-0.1.1/models/rf3/configs/datasets/base.yaml +31 -0
  85. rc_foundry-0.1.1/models/rf3/configs/datasets/pdb_and_distillation.yaml +58 -0
  86. rc_foundry-0.1.1/models/rf3/configs/datasets/pdb_only.yaml +17 -0
  87. rc_foundry-0.1.1/models/rf3/configs/datasets/train/disorder_distillation.yaml +48 -0
  88. rc_foundry-0.1.1/models/rf3/configs/datasets/train/domain_distillation.yaml +50 -0
  89. rc_foundry-0.1.1/models/rf3/configs/datasets/train/monomer_distillation.yaml +49 -0
  90. rc_foundry-0.1.1/models/rf3/configs/datasets/train/na_complex_distillation.yaml +50 -0
  91. rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/af3_weighted_sampling.yaml +8 -0
  92. rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/base.yaml +32 -0
  93. rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/plinder.yaml +54 -0
  94. rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/train_interface.yaml +51 -0
  95. rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/train_pn_unit.yaml +46 -0
  96. rc_foundry-0.1.1/models/rf3/configs/datasets/train/rna_monomer_distillation.yaml +56 -0
  97. rc_foundry-0.1.1/models/rf3/configs/datasets/val/af3_ab_set.yaml +11 -0
  98. rc_foundry-0.1.1/models/rf3/configs/datasets/val/af3_validation.yaml +11 -0
  99. rc_foundry-0.1.1/models/rf3/configs/datasets/val/base.yaml +32 -0
  100. rc_foundry-0.1.1/models/rf3/configs/datasets/val/runs_and_poses.yaml +12 -0
  101. rc_foundry-0.1.1/models/rf3/configs/debug/default.yaml +66 -0
  102. rc_foundry-0.1.1/models/rf3/configs/debug/train_specific_examples.yaml +21 -0
  103. rc_foundry-0.1.1/models/rf3/configs/experiment/pretrained/rf3.yaml +50 -0
  104. rc_foundry-0.1.1/models/rf3/configs/experiment/pretrained/rf3_with_confidence.yaml +13 -0
  105. rc_foundry-0.1.1/models/rf3/configs/experiment/quick-rf3-with-confidence.yaml +15 -0
  106. rc_foundry-0.1.1/models/rf3/configs/experiment/quick-rf3.yaml +61 -0
  107. rc_foundry-0.1.1/models/rf3/configs/hydra/default.yaml +18 -0
  108. rc_foundry-0.1.1/models/rf3/configs/hydra/no_logging.yaml +7 -0
  109. rc_foundry-0.1.1/models/rf3/configs/inference.yaml +7 -0
  110. rc_foundry-0.1.1/models/rf3/configs/inference_engine/base.yaml +23 -0
  111. rc_foundry-0.1.1/models/rf3/configs/inference_engine/rf3.yaml +33 -0
  112. rc_foundry-0.1.1/models/rf3/configs/logger/csv.yaml +6 -0
  113. rc_foundry-0.1.1/models/rf3/configs/logger/default.yaml +3 -0
  114. rc_foundry-0.1.1/models/rf3/configs/logger/wandb.yaml +15 -0
  115. rc_foundry-0.1.1/models/rf3/configs/model/components/ema.yaml +1 -0
  116. rc_foundry-0.1.1/models/rf3/configs/model/components/rf3_net.yaml +177 -0
  117. rc_foundry-0.1.1/models/rf3/configs/model/components/rf3_net_with_confidence_head.yaml +45 -0
  118. rc_foundry-0.1.1/models/rf3/configs/model/optimizers/adam.yaml +5 -0
  119. rc_foundry-0.1.1/models/rf3/configs/model/rf3.yaml +43 -0
  120. rc_foundry-0.1.1/models/rf3/configs/model/rf3_with_confidence.yaml +7 -0
  121. rc_foundry-0.1.1/models/rf3/configs/model/schedulers/af3.yaml +6 -0
  122. rc_foundry-0.1.1/models/rf3/configs/paths/data/default.yaml +43 -0
  123. rc_foundry-0.1.1/models/rf3/configs/paths/default.yaml +21 -0
  124. rc_foundry-0.1.1/models/rf3/configs/train.yaml +42 -0
  125. rc_foundry-0.1.1/models/rf3/configs/trainer/cpu.yaml +6 -0
  126. rc_foundry-0.1.1/models/rf3/configs/trainer/ddp.yaml +5 -0
  127. rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/confidence_loss.yaml +29 -0
  128. rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/diffusion_loss.yaml +9 -0
  129. rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/distogram_loss.yaml +2 -0
  130. rc_foundry-0.1.1/models/rf3/configs/trainer/loss/structure_prediction.yaml +4 -0
  131. rc_foundry-0.1.1/models/rf3/configs/trainer/loss/structure_prediction_with_confidence.yaml +2 -0
  132. rc_foundry-0.1.1/models/rf3/configs/trainer/metrics/structure_prediction.yaml +14 -0
  133. rc_foundry-0.1.1/models/rf3/configs/trainer/rf3.yaml +20 -0
  134. rc_foundry-0.1.1/models/rf3/configs/trainer/rf3_with_confidence.yaml +13 -0
  135. rc_foundry-0.1.1/models/rf3/configs/validate.yaml +45 -0
  136. rc_foundry-0.1.1/models/rf3/src/rf3/__init__.py +3 -0
  137. rc_foundry-0.1.1/models/rf3/src/rf3/_version.py +33 -0
  138. rc_foundry-0.1.1/models/rf3/src/rf3/alignment.py +79 -0
  139. rc_foundry-0.1.1/models/rf3/src/rf3/callbacks/dump_validation_structures.py +101 -0
  140. rc_foundry-0.1.1/models/rf3/src/rf3/callbacks/metrics_logging.py +324 -0
  141. rc_foundry-0.1.1/models/rf3/src/rf3/chemical.py +1529 -0
  142. rc_foundry-0.1.1/models/rf3/src/rf3/cli.py +77 -0
  143. rc_foundry-0.1.1/models/rf3/src/rf3/data/cyclic_transform.py +78 -0
  144. rc_foundry-0.1.1/models/rf3/src/rf3/data/extra_xforms.py +36 -0
  145. rc_foundry-0.1.1/models/rf3/src/rf3/data/ground_truth_template.py +463 -0
  146. rc_foundry-0.1.1/models/rf3/src/rf3/data/paired_msa.py +206 -0
  147. rc_foundry-0.1.1/models/rf3/src/rf3/data/pipeline_utils.py +128 -0
  148. rc_foundry-0.1.1/models/rf3/src/rf3/data/pipelines.py +558 -0
  149. rc_foundry-0.1.1/models/rf3/src/rf3/diffusion_samplers/inference_sampler.py +222 -0
  150. rc_foundry-0.1.1/models/rf3/src/rf3/inference.py +65 -0
  151. rc_foundry-0.1.1/models/rf3/src/rf3/inference_engines/__init__.py +5 -0
  152. rc_foundry-0.1.1/models/rf3/src/rf3/inference_engines/rf3.py +735 -0
  153. rc_foundry-0.1.1/models/rf3/src/rf3/kinematics.py +354 -0
  154. rc_foundry-0.1.1/models/rf3/src/rf3/loss/af3_confidence_loss.py +515 -0
  155. rc_foundry-0.1.1/models/rf3/src/rf3/loss/af3_losses.py +655 -0
  156. rc_foundry-0.1.1/models/rf3/src/rf3/loss/loss.py +179 -0
  157. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/chiral.py +179 -0
  158. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/clashing_chains.py +68 -0
  159. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/distogram.py +421 -0
  160. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/lddt.py +523 -0
  161. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/metadata.py +43 -0
  162. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/metric_utils.py +192 -0
  163. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/predicted_error.py +134 -0
  164. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/rasa.py +108 -0
  165. rc_foundry-0.1.1/models/rf3/src/rf3/metrics/selected_distances.py +91 -0
  166. rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3.py +527 -0
  167. rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3_blocks.py +92 -0
  168. rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3_structure.py +303 -0
  169. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/af3_auxiliary_heads.py +255 -0
  170. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/af3_diffusion_transformer.py +544 -0
  171. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/attention.py +313 -0
  172. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/layer_utils.py +127 -0
  173. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/mlff.py +118 -0
  174. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/outer_product.py +59 -0
  175. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/pairformer_layers.py +783 -0
  176. rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/structure_bias.py +56 -0
  177. rc_foundry-0.1.1/models/rf3/src/rf3/scoring.py +1787 -0
  178. rc_foundry-0.1.1/models/rf3/src/rf3/symmetry/resolve.py +284 -0
  179. rc_foundry-0.1.1/models/rf3/src/rf3/train.py +194 -0
  180. rc_foundry-0.1.1/models/rf3/src/rf3/trainers/rf3.py +570 -0
  181. rc_foundry-0.1.1/models/rf3/src/rf3/util_module.py +47 -0
  182. rc_foundry-0.1.1/models/rf3/src/rf3/utils/frames.py +109 -0
  183. rc_foundry-0.1.1/models/rf3/src/rf3/utils/inference.py +665 -0
  184. rc_foundry-0.1.1/models/rf3/src/rf3/utils/io.py +198 -0
  185. rc_foundry-0.1.1/models/rf3/src/rf3/utils/loss.py +72 -0
  186. rc_foundry-0.1.1/models/rf3/src/rf3/utils/predict_and_score.py +165 -0
  187. rc_foundry-0.1.1/models/rf3/src/rf3/utils/predicted_error.py +673 -0
  188. rc_foundry-0.1.1/models/rf3/src/rf3/utils/recycling.py +42 -0
  189. rc_foundry-0.1.1/models/rf3/src/rf3/validate.py +140 -0
  190. rc_foundry-0.1.1/models/rf3/tests/.gitkeep +0 -0
  191. rc_foundry-0.1.1/models/rf3/tests/conftest.py +10 -0
  192. rc_foundry-0.1.1/models/rf3/tests/data/5vht_from_file.cif +3986 -0
  193. rc_foundry-0.1.1/models/rf3/tests/data/5vht_from_json.json +17 -0
  194. rc_foundry-0.1.1/models/rf3/tests/data/8vkf_from_file.cif +7200 -0
  195. rc_foundry-0.1.1/models/rf3/tests/data/example_from_pdb_with_inter_chain_bond.pdb +1946 -0
  196. rc_foundry-0.1.1/models/rf3/tests/data/example_pdb_with_clashing_ligand_name.pdb +3699 -0
  197. rc_foundry-0.1.1/models/rf3/tests/data/example_with_ncaa.json +14 -0
  198. rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_model.cif +1851 -0
  199. rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_summary_confidences.json +26 -0
  200. rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_model.cif +3450 -0
  201. rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_summary_confidences.json +38 -0
  202. rc_foundry-0.1.1/models/rf3/tests/data/msas/5vht_A.a3m +7306 -0
  203. rc_foundry-0.1.1/models/rf3/tests/data/msas/8vkf_A.a3m +20000 -0
  204. rc_foundry-0.1.1/models/rf3/tests/data/multiple_examples_from_json.json +26 -0
  205. rc_foundry-0.1.1/models/rf3/tests/data/ncaa/create_cif_with_ligand_as_ncaa.ipynb +180 -0
  206. rc_foundry-0.1.1/models/rf3/tests/data/ncaa/ligand_as_ncaa.cif +1560 -0
  207. rc_foundry-0.1.1/models/rf3/tests/data/ncaa/penicillin_ts2_as_ncaa.cif +143 -0
  208. rc_foundry-0.1.1/models/rf3/tests/data/nested_examples/example_from_json.json +12 -0
  209. rc_foundry-0.1.1/models/rf3/tests/data/nested_examples/example_from_pdb_with_inter_chain_bonds.and.dots.pdb +1946 -0
  210. rc_foundry-0.1.1/models/rf3/tests/test_chiral_metrics.py +56 -0
  211. rc_foundry-0.1.1/models/rf3/tests/test_inference_regression.py +141 -0
  212. rc_foundry-0.1.1/models/rf3/tests/test_write_confidence.py +188 -0
  213. rc_foundry-0.1.1/models/rfd3/.gitignore +2 -0
  214. rc_foundry-0.1.1/models/rfd3/README.md +196 -0
  215. rc_foundry-0.1.1/models/rfd3/configs/__init__.py +0 -0
  216. rc_foundry-0.1.1/models/rfd3/configs/callbacks/design_callbacks.yaml +10 -0
  217. rc_foundry-0.1.1/models/rfd3/configs/callbacks/metrics_logging.yaml +20 -0
  218. rc_foundry-0.1.1/models/rfd3/configs/callbacks/train_logging.yaml +24 -0
  219. rc_foundry-0.1.1/models/rfd3/configs/dataloader/default.yaml +15 -0
  220. rc_foundry-0.1.1/models/rfd3/configs/dataloader/fast.yaml +11 -0
  221. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/dna_condition.yaml +3 -0
  222. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/island.yaml +28 -0
  223. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/ppi.yaml +2 -0
  224. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/sequence_design.yaml +17 -0
  225. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/tipatom.yaml +28 -0
  226. rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/unconditional.yaml +21 -0
  227. rc_foundry-0.1.1/models/rfd3/configs/datasets/design_base.yaml +97 -0
  228. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/af3_train_interface.yaml +46 -0
  229. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/af3_train_pn_unit.yaml +42 -0
  230. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base.yaml +14 -0
  231. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base_no_weights.yaml +19 -0
  232. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base_transform_args.yaml +59 -0
  233. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/na_complex_distillation.yaml +20 -0
  234. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/pdb_base.yaml +11 -0
  235. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/rfd3_train_interface.yaml +22 -0
  236. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/rfd3_train_pn_unit.yaml +23 -0
  237. rc_foundry-0.1.1/models/rfd3/configs/datasets/train/rfd3_monomer_distillation.yaml +38 -0
  238. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/bcov_ppi_easy_medium.yaml +9 -0
  239. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/design_validation_base.yaml +40 -0
  240. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_design5.yaml +9 -0
  241. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_long.yaml +13 -0
  242. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_short.yaml +13 -0
  243. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/indexed.yaml +9 -0
  244. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/mcsa_41.yaml +9 -0
  245. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/mcsa_41_short_rigid.yaml +10 -0
  246. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/ppi_inference.yaml +7 -0
  247. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/sm_binder_hbonds.yaml +13 -0
  248. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/sm_binder_hbonds_short.yaml +15 -0
  249. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unconditional.yaml +9 -0
  250. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unconditional_deep.yaml +9 -0
  251. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unindexed.yaml +8 -0
  252. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori.yaml +151 -0
  253. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_spoof_helical_bundle.yaml +7 -0
  254. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_varying_lengths.yaml +28 -0
  255. rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bpem_ori_hb.yaml +212 -0
  256. rc_foundry-0.1.1/models/rfd3/configs/debug/default.yaml +64 -0
  257. rc_foundry-0.1.1/models/rfd3/configs/debug/train_specific_examples.yaml +21 -0
  258. rc_foundry-0.1.1/models/rfd3/configs/dev.yaml +9 -0
  259. rc_foundry-0.1.1/models/rfd3/configs/experiment/debug.yaml +14 -0
  260. rc_foundry-0.1.1/models/rfd3/configs/experiment/pretrain.yaml +31 -0
  261. rc_foundry-0.1.1/models/rfd3/configs/experiment/test-uncond.yaml +10 -0
  262. rc_foundry-0.1.1/models/rfd3/configs/experiment/test-unindexed.yaml +21 -0
  263. rc_foundry-0.1.1/models/rfd3/configs/hydra/default.yaml +18 -0
  264. rc_foundry-0.1.1/models/rfd3/configs/hydra/no_logging.yaml +7 -0
  265. rc_foundry-0.1.1/models/rfd3/configs/inference.yaml +9 -0
  266. rc_foundry-0.1.1/models/rfd3/configs/inference_engine/base.yaml +15 -0
  267. rc_foundry-0.1.1/models/rfd3/configs/inference_engine/dev.yaml +20 -0
  268. rc_foundry-0.1.1/models/rfd3/configs/inference_engine/rfdiffusion3.yaml +65 -0
  269. rc_foundry-0.1.1/models/rfd3/configs/logger/csv.yaml +6 -0
  270. rc_foundry-0.1.1/models/rfd3/configs/logger/default.yaml +2 -0
  271. rc_foundry-0.1.1/models/rfd3/configs/logger/wandb.yaml +15 -0
  272. rc_foundry-0.1.1/models/rfd3/configs/model/components/ema.yaml +1 -0
  273. rc_foundry-0.1.1/models/rfd3/configs/model/components/rfd3_net.yaml +131 -0
  274. rc_foundry-0.1.1/models/rfd3/configs/model/optimizers/adam.yaml +5 -0
  275. rc_foundry-0.1.1/models/rfd3/configs/model/rfd3_base.yaml +8 -0
  276. rc_foundry-0.1.1/models/rfd3/configs/model/samplers/edm.yaml +21 -0
  277. rc_foundry-0.1.1/models/rfd3/configs/model/samplers/symmetry.yaml +10 -0
  278. rc_foundry-0.1.1/models/rfd3/configs/model/schedulers/af3.yaml +6 -0
  279. rc_foundry-0.1.1/models/rfd3/configs/paths/data/default.yaml +18 -0
  280. rc_foundry-0.1.1/models/rfd3/configs/paths/default.yaml +22 -0
  281. rc_foundry-0.1.1/models/rfd3/configs/train.yaml +28 -0
  282. rc_foundry-0.1.1/models/rfd3/configs/trainer/cpu.yaml +6 -0
  283. rc_foundry-0.1.1/models/rfd3/configs/trainer/ddp.yaml +5 -0
  284. rc_foundry-0.1.1/models/rfd3/configs/trainer/loss/losses/diffusion_loss.yaml +12 -0
  285. rc_foundry-0.1.1/models/rfd3/configs/trainer/loss/losses/sequence_loss.yaml +3 -0
  286. rc_foundry-0.1.1/models/rfd3/configs/trainer/metrics/design_metrics.yaml +22 -0
  287. rc_foundry-0.1.1/models/rfd3/configs/trainer/rfd3_base.yaml +35 -0
  288. rc_foundry-0.1.1/models/rfd3/configs/validate.yaml +34 -0
  289. rc_foundry-0.1.1/models/rfd3/docs/demo.json +34 -0
  290. rc_foundry-0.1.1/models/rfd3/docs/enzyme_design.md +26 -0
  291. rc_foundry-0.1.1/models/rfd3/docs/get_na_input.sh +18 -0
  292. rc_foundry-0.1.1/models/rfd3/docs/input.md +184 -0
  293. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/1bna.pdb +617 -0
  294. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/1q75.pdb +516 -0
  295. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/2r5z.pdb +2141 -0
  296. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/4zxb_croppped.pdb +2479 -0
  297. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/5o45_cropped.pdb +3107 -0
  298. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/5o4d.pdb +769 -0
  299. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/7v11.pdb +4532 -0
  300. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/IAI.pdb +1108 -0
  301. rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/M0255_1mg5.pdb +84 -0
  302. rc_foundry-0.1.1/models/rfd3/docs/na_binder_design.json +42 -0
  303. rc_foundry-0.1.1/models/rfd3/docs/na_binder_design.md +113 -0
  304. rc_foundry-0.1.1/models/rfd3/docs/protein_binder_design.md +33 -0
  305. rc_foundry-0.1.1/models/rfd3/docs/run_inf_tutorial.sh +16 -0
  306. rc_foundry-0.1.1/models/rfd3/docs/sm_binder_design.md +41 -0
  307. rc_foundry-0.1.1/models/rfd3/docs/symmetry.md +167 -0
  308. rc_foundry-0.1.1/models/rfd3/src/rfd3/.gitignore +7 -0
  309. rc_foundry-0.1.1/models/rfd3/src/rfd3/Makefile +76 -0
  310. rc_foundry-0.1.1/models/rfd3/src/rfd3/__init__.py +12 -0
  311. rc_foundry-0.1.1/models/rfd3/src/rfd3/callbacks.py +66 -0
  312. rc_foundry-0.1.1/models/rfd3/src/rfd3/cli.py +41 -0
  313. rc_foundry-0.1.1/models/rfd3/src/rfd3/constants.py +212 -0
  314. rc_foundry-0.1.1/models/rfd3/src/rfd3/engine.py +543 -0
  315. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/datasets.py +193 -0
  316. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/input_parsing.py +1123 -0
  317. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/legacy_input_parsing.py +717 -0
  318. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/parsing.py +165 -0
  319. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/atom_array.py +298 -0
  320. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/checks.py +241 -0
  321. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/contigs.py +63 -0
  322. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/frames.py +355 -0
  323. rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/symmetry_utils.py +398 -0
  324. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/design_metrics.py +465 -0
  325. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/hbonds_hbplus_metrics.py +308 -0
  326. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/hbonds_metrics.py +389 -0
  327. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/losses.py +325 -0
  328. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/metrics_utils.py +118 -0
  329. rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/sidechain_metrics.py +349 -0
  330. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/RFD3.py +105 -0
  331. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/RFD3_diffusion_module.py +387 -0
  332. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/cfg_utils.py +81 -0
  333. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/inference_sampler.py +635 -0
  334. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/attention.py +577 -0
  335. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/block_utils.py +580 -0
  336. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/blocks.py +777 -0
  337. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/chunked_pairwise.py +377 -0
  338. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/encoders.py +417 -0
  339. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/layer_utils.py +197 -0
  340. rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/pairformer_layers.py +128 -0
  341. rc_foundry-0.1.1/models/rfd3/src/rfd3/run_inference.py +45 -0
  342. rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/debug.py +139 -0
  343. rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/debug_utils.py +73 -0
  344. rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/testing_utils.py +356 -0
  345. rc_foundry-0.1.1/models/rfd3/src/rfd3/train.py +194 -0
  346. rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/dump_validation_structures.py +154 -0
  347. rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/fabric_trainer.py +923 -0
  348. rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/recycling.py +42 -0
  349. rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/rfd3.py +485 -0
  350. rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/trainer_utils.py +502 -0
  351. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/conditioning_base.py +508 -0
  352. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/conditioning_utils.py +200 -0
  353. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/design_transforms.py +807 -0
  354. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/dna_crop.py +523 -0
  355. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/hbonds.py +407 -0
  356. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/hbonds_hbplus.py +246 -0
  357. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/ncaa_transforms.py +153 -0
  358. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/pipelines.py +632 -0
  359. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/ppi_transforms.py +541 -0
  360. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/rasa.py +116 -0
  361. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/symmetry.py +76 -0
  362. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/training_conditions.py +552 -0
  363. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/util_transforms.py +498 -0
  364. rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/virtual_atoms.py +305 -0
  365. rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/inference.py +648 -0
  366. rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/io.py +245 -0
  367. rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/vizualize.py +276 -0
  368. rc_foundry-0.1.1/models/rfd3/tests/conftest.py +22 -0
  369. rc_foundry-0.1.1/models/rfd3/tests/test_aa_design.py +88 -0
  370. rc_foundry-0.1.1/models/rfd3/tests/test_conditioning.py +82 -0
  371. rc_foundry-0.1.1/models/rfd3/tests/test_glycines.py +60 -0
  372. rc_foundry-0.1.1/models/rfd3/tests/test_legacy_pipeline_equivalence.py +71 -0
  373. rc_foundry-0.1.1/models/rfd3/tests/test_metrics.py +51 -0
  374. rc_foundry-0.1.1/models/rfd3/tests/test_partial_diffusion.py +26 -0
  375. rc_foundry-0.1.1/models/rfd3/tests/test_selections.py +124 -0
  376. rc_foundry-0.1.1/models/rfd3/tests/test_subgraph_sampling.py +45 -0
  377. rc_foundry-0.1.1/models/rfd3/tests/test_symmetry.py +49 -0
  378. rc_foundry-0.1.1/models/rfd3/tests/test_tokenization.py +224 -0
  379. rc_foundry-0.1.1/models/rfd3/tests/test_unindexing.py +83 -0
  380. rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1p5d_0_inference_pretrain.pkl +0 -0
  381. rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1p5d_0_train_pretrain.pkl +0 -0
  382. rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1qys_0_inference_pretrain.pkl +0 -0
  383. rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1qys_0_train_pretrain.pkl +0 -0
  384. rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/af2_122_train_test_unindexed.pkl +0 -0
  385. rc_foundry-0.1.1/models/rfd3/tests/transforms/test_pipeline_regression.py +204 -0
  386. rc_foundry-0.1.1/pyproject.toml +189 -0
  387. rc_foundry-0.1.1/refactor.sh +8 -0
  388. rc_foundry-0.1.1/src/foundry/__init__.py +57 -0
  389. rc_foundry-0.1.1/src/foundry/callbacks/__init__.py +5 -0
  390. rc_foundry-0.1.1/src/foundry/callbacks/callback.py +116 -0
  391. rc_foundry-0.1.1/src/foundry/callbacks/health_logging.py +419 -0
  392. rc_foundry-0.1.1/src/foundry/callbacks/metrics_logging.py +211 -0
  393. rc_foundry-0.1.1/src/foundry/callbacks/timing_logging.py +67 -0
  394. rc_foundry-0.1.1/src/foundry/callbacks/train_logging.py +278 -0
  395. rc_foundry-0.1.1/src/foundry/common.py +108 -0
  396. rc_foundry-0.1.1/src/foundry/constants.py +28 -0
  397. rc_foundry-0.1.1/src/foundry/hydra/resolvers.py +77 -0
  398. rc_foundry-0.1.1/src/foundry/inference_engines/base.py +235 -0
  399. rc_foundry-0.1.1/src/foundry/inference_engines/checkpoint_registry.py +66 -0
  400. rc_foundry-0.1.1/src/foundry/metrics/__init__.py +12 -0
  401. rc_foundry-0.1.1/src/foundry/metrics/losses.py +30 -0
  402. rc_foundry-0.1.1/src/foundry/metrics/metric.py +319 -0
  403. rc_foundry-0.1.1/src/foundry/model/layers/blocks.py +47 -0
  404. rc_foundry-0.1.1/src/foundry/testing/__init__.py +6 -0
  405. rc_foundry-0.1.1/src/foundry/testing/fixtures.py +19 -0
  406. rc_foundry-0.1.1/src/foundry/testing/pytest_hooks.py +15 -0
  407. rc_foundry-0.1.1/src/foundry/trainers/fabric.py +923 -0
  408. rc_foundry-0.1.1/src/foundry/training/EMA.py +67 -0
  409. rc_foundry-0.1.1/src/foundry/training/checkpoint.py +61 -0
  410. rc_foundry-0.1.1/src/foundry/training/schedulers.py +91 -0
  411. rc_foundry-0.1.1/src/foundry/utils/alignment.py +86 -0
  412. rc_foundry-0.1.1/src/foundry/utils/components.py +415 -0
  413. rc_foundry-0.1.1/src/foundry/utils/datasets.py +405 -0
  414. rc_foundry-0.1.1/src/foundry/utils/ddp.py +103 -0
  415. rc_foundry-0.1.1/src/foundry/utils/instantiators.py +72 -0
  416. rc_foundry-0.1.1/src/foundry/utils/logging.py +279 -0
  417. rc_foundry-0.1.1/src/foundry/utils/rigid.py +1460 -0
  418. rc_foundry-0.1.1/src/foundry/utils/rotation_augmentation.py +65 -0
  419. rc_foundry-0.1.1/src/foundry/utils/squashfs.py +172 -0
  420. rc_foundry-0.1.1/src/foundry/utils/torch.py +317 -0
  421. rc_foundry-0.1.1/src/foundry/utils/weights.py +271 -0
  422. rc_foundry-0.1.1/src/foundry/version.py +34 -0
  423. rc_foundry-0.1.1/src/foundry_cli/__init__.py +3 -0
  424. rc_foundry-0.1.1/src/foundry_cli/download_checkpoints.py +281 -0
  425. rc_foundry-0.1.1/tests/conftest.py +10 -0
  426. rc_foundry-0.1.1/tests/test_torch_utils.py +132 -0
  427. rc_foundry-0.1.1/tests/test_weight_loading.py +209 -0
rc_foundry-0.1.1/.git ADDED
@@ -0,0 +1 @@
1
+ gitdir: /home/rohith/modelhub/.git/worktrees/release
@@ -0,0 +1,36 @@
1
+ name: lint_trunk
2
+
3
+ on:
4
+ push:
5
+ branches: [main, trunk, wip/for-release, wip/remove-chemdata]
6
+ pull_request:
7
+ branches: [main, trunk, wip/for-release, wip/remove-chemdata]
8
+ pull_request_target:
9
+ types: [ready_for_review]
10
+ workflow_dispatch:
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ lint:
18
+ name: ruff (check code style)
19
+ # NOTE: We use an ubuntu runner to not be dependent on possibly limited digs infra
20
+ # for this tiny linting job. This means we can have many lint jobs accross repos in parallel.
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.11"
27
+ cache: 'pip'
28
+ - name: Extract ruff version from requirements.txt
29
+ run: |
30
+ echo "RUFF_VERSION=$(grep 'ruff==' pyproject.toml | sed 's/.*ruff==\(.*\)/\1/')" >> $GITHUB_ENV
31
+ - name: Install ruff
32
+ run: pip install ruff==${{ env.RUFF_VERSION }}
33
+ - name: Ruff format
34
+ run: ruff format --diff src tests scripts notebooks
35
+ - name: Ruff check
36
+ run: ruff check src tests scripts notebooks
@@ -0,0 +1,227 @@
1
+ # For docs / outputs from example notebooks;
2
+ examples/*.cif
3
+ **.ckpt
4
+ **.pt
5
+
6
+ # Base .gitignore from https://github.com/github/gitignore/blob/main/Python.gitignore
7
+ *.lock
8
+ **.nfs**
9
+ **.dat
10
+
11
+ # Byte-compiled / optimized / DLL files
12
+ __pycache__/
13
+ */__pycache__/
14
+ *.py[cod]
15
+ *$py.class
16
+
17
+ # C extensions
18
+ *.so
19
+
20
+ # Distribution / packaging
21
+ .Python
22
+ build/
23
+ develop-eggs/
24
+ dist/
25
+ downloads/
26
+ eggs/
27
+ .eggs/
28
+ lib64/
29
+ parts/
30
+ sdist/
31
+ var/
32
+ wheels/
33
+ share/python-wheels/
34
+ *.egg-info/
35
+ .installed.cfg
36
+ *.egg
37
+ MANIFEST
38
+
39
+ # PyInstaller
40
+ # Usually these files are written by a python script from a template
41
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
42
+ *.manifest
43
+
44
+ # Installer logs
45
+ pip-log.txt
46
+ pip-delete-this-directory.txt
47
+
48
+ # Unit test / coverage reports
49
+ htmlcov/
50
+ .tox/
51
+ .nox/
52
+ .coverage
53
+ .coverage.*
54
+ .cache
55
+ nosetests.xml
56
+ coverage.xml
57
+ *.cover
58
+ *.py,cover
59
+ .hypothesis/
60
+ .pytest_cache/
61
+ cover/
62
+
63
+ # Translations
64
+ *.mo
65
+ *.pot
66
+
67
+ # Django stuff:
68
+ *.log
69
+ local_settings.py
70
+ db.sqlite3
71
+ db.sqlite3-journal
72
+
73
+ # Flask stuff:
74
+ instance/
75
+ .webassets-cache
76
+
77
+ # Scrapy stuff:
78
+ .scrapy
79
+
80
+ # Sphinx documentation
81
+ docs/_build/
82
+
83
+ # PyBuilder
84
+ .pybuilder/
85
+ target/
86
+
87
+ # Jupyter Notebooks (unless explicitly not ignored)
88
+ .ipynb_checkpoints
89
+ **/.ipynb
90
+
91
+ # IPython
92
+ profile_default/
93
+ ipython_config.py
94
+
95
+ # pyenv
96
+ # For a library or package, you might want to ignore these files since the code is
97
+ # intended to run in multiple environments; otherwise, check them in:
98
+ # .python-version
99
+
100
+ # pipenv
101
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
102
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
103
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
104
+ # install all needed dependencies.
105
+ #Pipfile.lock
106
+
107
+ # poetry
108
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
109
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
110
+ # commonly ignored for libraries.
111
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
112
+ #poetry.lock
113
+
114
+ # pdm
115
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
116
+ #pdm.lock
117
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
118
+ # in version control.
119
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
120
+ .pdm.toml
121
+ .pdm-python
122
+ .pdm-build/
123
+
124
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
125
+ __pypackages__/
126
+
127
+ # Celery stuff
128
+ celerybeat-schedule
129
+ celerybeat.pid
130
+
131
+ # SageMath parsed files
132
+ *.sage.py
133
+
134
+ # Environments
135
+ .env
136
+ .venv
137
+ env/
138
+ venv/
139
+ ENV/
140
+ env.bak/
141
+ venv.bak/
142
+
143
+ # Spyder project settings
144
+ .spyderproject
145
+ .spyproject
146
+
147
+ # Rope project settings
148
+ .ropeproject
149
+
150
+ # mkdocs documentation
151
+ /site
152
+
153
+ # mypy
154
+ .mypy_cache/
155
+ .dmypy.json
156
+ dmypy.json
157
+
158
+ # Pyre type checker
159
+ .pyre/
160
+
161
+ # pytype static type analyzer
162
+ .pytype/
163
+
164
+ # Cython debug symbols
165
+ cython_debug/
166
+
167
+ # PyCharm
168
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
169
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
170
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
171
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
172
+ #.idea/
173
+
174
+ # VS Code
175
+ .vscode
176
+ .cursor
177
+ .history/
178
+
179
+ # Ruff
180
+ ruff.toml
181
+ .ruff_cache
182
+
183
+ # Development
184
+ dev.py
185
+
186
+ # Pytest
187
+ *.benchmarks/
188
+
189
+ # Images
190
+ *.png
191
+ *.pdf
192
+ *.svg
193
+ *.jpg
194
+ *.jpeg
195
+ *.gif
196
+ *.bmp
197
+ *.tiff
198
+
199
+ # Versioning
200
+ **/version.py
201
+
202
+ # W&B
203
+ wandb/
204
+
205
+ # Hydra
206
+ .hydra/
207
+
208
+ # Logs
209
+ logs/
210
+
211
+ # Other
212
+ *.sif
213
+ *.out
214
+
215
+ # Misc
216
+ **/notebooks/
217
+ **/scratch/
218
+ **/outputs/
219
+ **/slurm_logs/
220
+ **/tmp/
221
+ *.ckpt
222
+ **/distillation/
223
+ **/benchmarks/
224
+
225
+ # AI
226
+ **/CLAUDE.md
227
+ **/.claude
File without changes
@@ -0,0 +1,114 @@
1
+ Bootstrap: localimage
2
+ From: /net/software/containers/versions/modelhub/pytorch_25.06-py3.sif
3
+ IncludeCmd: yes
4
+
5
+ # RF3 Development Container - Dependencies only (excludes atomworks, which we expose through a submodule for development)
6
+
7
+ # To build this Apptainer, from the project root, run:
8
+ # apptainer build rf3-dev.sif .ipd/apptainer/rf3-dev.def
9
+
10
+ %labels
11
+ Author Institute for Protein Design
12
+ Version 1.0-dev
13
+ Description RosettaFold3 - Dependencies only (for development and model training)
14
+
15
+ %setup
16
+ # Create a directory in the container to bind the host's current working directory
17
+ mkdir ${APPTAINER_ROOTFS}/foundry_host
18
+ # ... for mounting `/projects` with --bind
19
+ mkdir ${APPTAINER_ROOTFS}/projects
20
+ # ... for mounting `/databases` with --bind
21
+ mkdir ${APPTAINER_ROOTFS}/net
22
+ # ... for mounting `/squash` with --bind
23
+ mkdir ${APPTAINER_ROOTFS}/squash
24
+
25
+ %files
26
+ /etc/localtime
27
+ /etc/hosts
28
+ pyproject.toml /opt/core_pyproject.toml
29
+ models/rf3/pyproject.toml /opt/rf3_pyproject.toml
30
+ lib/atomworks/pyproject.toml /opt/atomworks_pyproject.toml
31
+
32
+ %post
33
+ ## GENERAL SETUP
34
+
35
+ # Common symlinks (within container)
36
+ ln -s /net/databases /databases
37
+ ln -s /net/software /software
38
+ ln -s /home /mnt/home
39
+ ln -s /projects /mnt/projects
40
+ ln -s /net /mnt/net
41
+
42
+ # Update system and install essential packages
43
+ apt-get update && apt-get install -y \
44
+ build-essential \
45
+ git \
46
+ libxrender1 \
47
+ libxrender-dev \
48
+ libx11-6 \
49
+ libx11-dev \
50
+ libxext6 \
51
+ libxext-dev \
52
+ && rm -rf /var/lib/apt/lists/*
53
+
54
+ ## PYTHON DEPENDENCY INSTALLATION
55
+
56
+ # Upgrade pip
57
+ python -m pip install --upgrade pip
58
+
59
+ # Install uv for fast dependency resolution
60
+ pip install uv
61
+
62
+ # Auto-generate dependency lists for both core and RF3, with all extra dependencies
63
+ # (Core)
64
+ mv /opt/core_pyproject.toml /opt/pyproject.toml
65
+ uv pip compile /opt/pyproject.toml --output-file /opt/core_requirements.txt --all-extras
66
+ rm /opt/pyproject.toml
67
+
68
+ # (RF3)
69
+ mv /opt/rf3_pyproject.toml /opt/pyproject.toml
70
+ uv pip compile /opt/pyproject.toml --output-file /opt/rf3_requirements.txt --all-extras
71
+ rm /opt/pyproject.toml
72
+
73
+ # (AtomWorks)
74
+ mv /opt/atomworks_pyproject.toml /opt/pyproject.toml
75
+ uv pip compile /opt/pyproject.toml --output-file /opt/atomworks_requirements.txt --all-extras
76
+ rm /opt/pyproject.toml
77
+
78
+ # Merge and dedupe requirements, excluding packages we don't want
79
+ # (atomworks is mounted from host; torch/numpy/nvidia-* provided by base image)
80
+ # (pynvml/packaging/pandas/markdown-it-py/triton from NGC container to avoid conflicts)
81
+ # Deduplicate by package name (keeping first occurrence) to handle version conflicts
82
+ cat /opt/core_requirements.txt /opt/rf3_requirements.txt /opt/atomworks_requirements.txt | \
83
+ grep -vE "^(atomworks|torch(|vision|audio)|numpy|nvidia-.*|pynvml|packaging|pandas|markdown-it-py|triton)==" | \
84
+ awk -F'==' '!seen[$1]++' > /opt/combined_requirements.txt
85
+
86
+ # Print combined requirements for debugging
87
+ echo "=== Combined requirements to install ==="
88
+ cat /opt/combined_requirements.txt
89
+ echo "========================================"
90
+
91
+ # Install the cleaned, combined requirements (use uv for better resolver)
92
+ uv pip install --system --break-system-packages -r /opt/combined_requirements.txt
93
+
94
+ # Clean up to minimize container size
95
+ uv cache clean
96
+ pip cache purge
97
+ apt-get clean
98
+ rm -rf /var/lib/apt/lists/* 2>/dev/null || true
99
+ rm -rf /root/.cache 2>/dev/null || true
100
+ rm -rf /opt/*.txt 2>/dev/null || true
101
+
102
+ %environment
103
+ # (Flag to increase accessible GPU memory)
104
+ export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
105
+
106
+ # (Turn off NVLink)
107
+ export NCCL_P2P_DISABLE=1
108
+
109
+ %runscript
110
+ # NOTE: The %runscript is invoked when the container is run without specifying a different command.
111
+ exec python "$@"
112
+
113
+ %help
114
+ RosettaFold3 (RF3) development container with dependencies only.
@@ -0,0 +1,81 @@
1
+ Bootstrap: localimage
2
+ From: .ipd/apptainer/rf3-dev.sif
3
+ IncludeCmd: yes
4
+
5
+ # RF3 Full Production Container - Includes foundry, rf3, and atomworks packages installed
6
+
7
+ # To build this Apptainer, from the project root, run:
8
+ # apptainer build rf3-full.sif .ipd/apptainer/rf3-full.def
9
+
10
+ %labels
11
+ Author Institute for Protein Design
12
+ Version 1.0.0
13
+ Description RosettaFold3 - Full production container with all packages installed
14
+
15
+ %setup
16
+ # Copy entire repository to container
17
+ echo "Copying repository..."
18
+
19
+ # Create base directory
20
+ mkdir -p ${APPTAINER_ROOTFS}/opt/foundry
21
+
22
+ # Copy everything except large/unnecessary files
23
+ rsync -av --info=progress2 \
24
+ --exclude='.venv' \
25
+ --exclude='__pycache__' \
26
+ --exclude='*.pyc' \
27
+ --exclude='.pytest_cache' \
28
+ --exclude='*.egg-info' \
29
+ --exclude='.ruff_cache' \
30
+ --exclude='outputs' \
31
+ --exclude='logs' \
32
+ --exclude='*.sif' \
33
+ --exclude='distillation' \
34
+ --exclude='benchmarks' \
35
+ --exclude='**/slurm_logs' \
36
+ ./ ${APPTAINER_ROOTFS}/opt/foundry/
37
+
38
+ echo "Repository copied successfully."
39
+
40
+ %post
41
+ echo "Installing packages into container..."
42
+
43
+ # Do editable installs so everything works as in development
44
+ cd /opt/foundry
45
+
46
+ # Install foundry (editable, no dependencies - already in base image)
47
+ echo "Installing foundry..."
48
+ uv pip install --system --break-system-packages --no-deps -e .
49
+
50
+ # Install rf3 (editable, no dependencies - already in base image)
51
+ echo "Installing rf3..."
52
+ cd /opt/foundry/models/rf3
53
+ uv pip install --system --break-system-packages --no-deps -e .
54
+
55
+ # Install atomworks (editable, no dependencies - already in base image)
56
+ echo "Installing atomworks..."
57
+ cd /opt/foundry/lib/atomworks
58
+ uv pip install --system --break-system-packages --no-deps -e .
59
+
60
+ # Cleanup caches only
61
+ echo "Cleaning up caches..."
62
+ uv cache clean
63
+ pip cache purge
64
+ apt-get clean
65
+ rm -rf /var/lib/apt/lists/* 2>/dev/null || true
66
+ rm -rf /root/.cache 2>/dev/null || true
67
+
68
+ echo "Package installation complete."
69
+
70
+ %runscript
71
+ # Simple runscript - just run Python with any arguments
72
+ exec python "$@"
73
+
74
+ %help
75
+ RosettaFold3 (RF3) full production container.
76
+
77
+ Contains foundry, rf3, and atomworks packages installed in site-packages.
78
+ All dependencies are included from the base rf3-dev container.
79
+
80
+ Usage:
81
+ apptainer exec --nvccli rf3-full.sif rf3 fold inputs="example.json"
@@ -0,0 +1,81 @@
1
+ Bootstrap: localimage
2
+ From: .ipd/apptainer/rf3-dev.sif
3
+ IncludeCmd: yes
4
+
5
+ # RFD3 Full Production Container - Includes foundry, rfd3, and atomworks packages installed
6
+
7
+ # To build this Apptainer, from the project root, run:
8
+ # apptainer build rfd3-full.sif .ipd/apptainer/rfd3-full.def
9
+
10
+ %labels
11
+ Author Institute for Protein Design
12
+ Version 1.0.0
13
+ Description RFDiffusion3 - Full production container with all packages installed
14
+
15
+ %setup
16
+ # Copy entire repository to container
17
+ echo "Copying repository..."
18
+
19
+ # Create base directory
20
+ mkdir -p ${APPTAINER_ROOTFS}/opt/foundry
21
+
22
+ # Copy everything except large/unnecessary files
23
+ rsync -av --info=progress2 \
24
+ --exclude='.venv' \
25
+ --exclude='__pycache__' \
26
+ --exclude='*.pyc' \
27
+ --exclude='.pytest_cache' \
28
+ --exclude='*.egg-info' \
29
+ --exclude='.ruff_cache' \
30
+ --exclude='outputs' \
31
+ --exclude='logs' \
32
+ --exclude='*.sif' \
33
+ --exclude='distillation' \
34
+ --exclude='benchmarks' \
35
+ --exclude='**/slurm_logs' \
36
+ ./ ${APPTAINER_ROOTFS}/opt/foundry/
37
+
38
+ echo "Repository copied successfully."
39
+
40
+ %post
41
+ echo "Installing packages into container..."
42
+
43
+ # Do editable installs so everything works as in development
44
+ cd /opt/foundry
45
+
46
+ # Install foundry (editable, no dependencies - already in base image)
47
+ echo "Installing foundry..."
48
+ uv pip install --system --break-system-packages --no-deps -e .[all]
49
+
50
+ # Install rfd3 (editable, no dependencies - already in base image)
51
+ echo "Installing rfd3..."
52
+ cd /opt/foundry/models/rfd3
53
+ uv pip install --system --break-system-packages --no-deps -e .
54
+
55
+ # Install atomworks (editable, no dependencies - already in base image)
56
+ echo "Installing atomworks..."
57
+ cd /opt/foundry/lib/atomworks
58
+ uv pip install --system --break-system-packages --no-deps -e .
59
+
60
+ # Cleanup caches only
61
+ echo "Cleaning up caches..."
62
+ uv cache clean
63
+ pip cache purge
64
+ apt-get clean
65
+ rm -rf /var/lib/apt/lists/* 2>/dev/null || true
66
+ rm -rf /root/.cache 2>/dev/null || true
67
+
68
+ echo "Package installation complete."
69
+
70
+ %runscript
71
+ # Simple runscript - just run Python with any arguments
72
+ exec python "$@"
73
+
74
+ %help
75
+ RFDiffusion3 (RFD3) full production container.
76
+
77
+ Contains foundry, rfd3, and atomworks packages installed in site-packages.
78
+ All dependencies are included from the base rf3-dev container.
79
+
80
+ Usage:
81
+ apptainer exec --nvccli rfd3-full.sif rfd3 run_inference inputs="example.json"
@@ -0,0 +1,6 @@
1
+ This directory contains scripts that are not to be run directly by the user.
2
+ They are [SHEBANG scripts](https://en.wikipedia.org/wiki/Shebang_(Unix)) that are used to run the appropriate apptainer container.
3
+
4
+ For example, the script `rf3_exec.sh` is used to run the RF3 apptainer container with the latest apptainer image stored locally or at the IPD.
5
+
6
+ The shebang lines (`#!/bin/bash` ...) at the top of entry point scripts like `train.py` redirect the system to here to find the correct apptainer container.
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/bash
2
+
3
+ ###################
4
+ # You can add the path to this file as the shebang line in your python script.
5
+ # Then by default, the python script will be executed with the python interpreter
6
+ # in the SIF_PATH container. Here, we launch the container with nvidia gpu and slurm support.
7
+ #
8
+ # Example shebang: #!/usr/bin/env -S /bin/sh -c '"$(dirname "$0")/.ipd/shebang/mpnn_exec.sh" "$0" "$@"'
9
+ ###################
10
+
11
+ # Let the user know this script is setting things up behind the scene
12
+ SCRIPT_PATH=$(realpath $0)
13
+ SCRIPT_DIR=$(dirname $SCRIPT_PATH)
14
+ echo '################## Start shebang info ##################'
15
+ echo "The file $SCRIPT_PATH is being run as a shebang executable.
16
+ It will...
17
+
18
+ 1. Add 'src/foundry', 'models/mpnn/src', and 'lib/atomworks/src' to your PYTHONPATH.
19
+ 2. Run your python script from the right container, which contains all dependencies.
20
+ 3. Launch the container with slurm and nvidia gpu support."
21
+
22
+ # Extract the path to the Python script from the arguments
23
+ PYTHON_SCRIPT=$(realpath "$1")
24
+ shift
25
+
26
+ # Find repository root by looking for .project-root file
27
+ find_repo_root() {
28
+ local current_dir="$1"
29
+ while [ "$current_dir" != "/" ]; do
30
+ if [ -f "$current_dir/.project-root" ]; then
31
+ echo "$current_dir"
32
+ return 0
33
+ fi
34
+ current_dir="$(dirname "$current_dir")"
35
+ done
36
+ return 1
37
+ }
38
+
39
+ echo
40
+ echo "Searching for repository root directory..."
41
+ REPO_ROOT=$(find_repo_root "$(dirname "$PYTHON_SCRIPT")")
42
+ if [ -z "$REPO_ROOT" ]; then
43
+ echo "Error: Could not find .project-root file in any parent directory"
44
+ exit 1
45
+ else
46
+ echo "... found repository root at '$REPO_ROOT'"
47
+ fi
48
+
49
+ # Function to add a directory to PYTHONPATH if it's not already included
50
+ add_to_pythonpath() {
51
+ local dir_path="$1"
52
+ if [[ ":$PYTHONPATH:" != *":$dir_path:"* ]]; then
53
+ export PYTHONPATH="$dir_path:$PYTHONPATH"
54
+ echo "Added '$dir_path' to PYTHONPATH."
55
+ else
56
+ echo "'$dir_path' is already in PYTHONPATH."
57
+ fi
58
+ }
59
+
60
+ # Add foundry, mpnn, and atomworks to PYTHONPATH
61
+ echo
62
+ echo "Adding foundry, MPNN, and atomworks to PYTHONPATH..."
63
+ FOUNDRY_PATH="$REPO_ROOT/src"
64
+ MPNN_PATH="$REPO_ROOT/models/mpnn/src"
65
+ ATOMWORKS_PATH="$REPO_ROOT/lib/atomworks/src"
66
+ add_to_pythonpath "$FOUNDRY_PATH"
67
+ add_to_pythonpath "$MPNN_PATH"
68
+ add_to_pythonpath "$ATOMWORKS_PATH"
69
+
70
+ echo
71
+ echo "Fetching the appropriate apptainer image..."
72
+
73
+ SIF_PATH="$REPO_ROOT/.ipd/apptainer/rf3-dev.sif"
74
+
75
+ echo "... looking for a local apptainer image at '$SIF_PATH'"
76
+ if [ ! -f "$SIF_PATH" ]; then
77
+ echo "... apptainer not found. To build it, run: apptainer build .ipd/apptainer/rf3-dev.sif .ipd/apptainer/rf3-dev.def"
78
+ echo "Attempting to run $PYTHON_SCRIPT with $(which python)"
79
+ SIF_PATH=""
80
+ fi
81
+
82
+ # Function to print debug=mode warning
83
+ print_debug_warning() {
84
+ echo
85
+ echo "###############################################################################"
86
+ echo "# #"
87
+ echo "# ⚠️ WARNING ⚠️ #"
88
+ echo "# RUNNING WITH DEBUGPY ON PORT $DEBUG_PORT #"
89
+ echo "# DON'T FORGET TO ATTACH A DEBUGGER #"
90
+ echo "# #"
91
+ echo "###############################################################################"
92
+ echo
93
+ }
94
+
95
+ if [ -n "$DEBUG_PORT" ]; then
96
+ print_debug_warning
97
+ python_cmd="python -m debugpy --listen $DEBUG_PORT --wait-for-client"
98
+ else
99
+ python_cmd="python"
100
+ echo
101
+ fi
102
+
103
+ if [ ! -z $SIF_PATH ]; then
104
+ echo "Running $PYTHON_SCRIPT with apptainer: $SIF_PATH."
105
+
106
+ # Determine GPU binding method: prefer --nvccli, fallback to --nv, then no GPU
107
+ GPU_FLAG=""
108
+ if command -v nvidia-container-cli &> /dev/null && [ -c /dev/nvidiactl ] 2>/dev/null; then
109
+ GPU_FLAG="--nvccli"
110
+ echo "Using --nvccli for GPU support"
111
+ elif [ -c /dev/nvidiactl ] 2>/dev/null; then
112
+ GPU_FLAG="--nv"
113
+ echo "Using --nv for GPU support"
114
+ else
115
+ echo "No GPU detected, running without GPU support"
116
+ fi
117
+
118
+ echo '################## End shebang info ####################'
119
+ echo
120
+ /usr/bin/apptainer exec $GPU_FLAG --slurm \
121
+ --bind "$REPO_ROOT:$REPO_ROOT" \
122
+ --env PYTHONPATH="\$PYTHONPATH:$PYTHONPATH" \
123
+ $SIF_PATH $python_cmd "$PYTHON_SCRIPT" "$@"
124
+ else
125
+ echo "Running $PYTHON_SCRIPT with python: $(which python)"
126
+ echo '################## End shebang info ####################'
127
+ echo
128
+ $python_cmd "$PYTHON_SCRIPT" "$@"
129
+ fi