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.
- rc_foundry-0.1.1/.git +1 -0
- rc_foundry-0.1.1/.github/workflows/lint_trunk.yaml +36 -0
- rc_foundry-0.1.1/.gitignore +227 -0
- rc_foundry-0.1.1/.gitmodules +0 -0
- rc_foundry-0.1.1/.ipd/apptainer/rf3-dev.def +114 -0
- rc_foundry-0.1.1/.ipd/apptainer/rf3-full.def +81 -0
- rc_foundry-0.1.1/.ipd/apptainer/rfd3-full.def +81 -0
- rc_foundry-0.1.1/.ipd/shebang/README.md +6 -0
- rc_foundry-0.1.1/.ipd/shebang/mpnn_exec.sh +129 -0
- rc_foundry-0.1.1/.ipd/shebang/rf3_exec.sh +129 -0
- rc_foundry-0.1.1/.ipd/shebang/rfd3_exec.sh +129 -0
- rc_foundry-0.1.1/.ipd/slurm/launch_ligand_mpnn.sh +15 -0
- rc_foundry-0.1.1/.ipd/slurm/launch_protein_mpnn.sh +15 -0
- rc_foundry-0.1.1/.ipd/slurm/launch_rf3.sh +65 -0
- rc_foundry-0.1.1/.ipd/slurm/launch_rfd3.sh +69 -0
- rc_foundry-0.1.1/.pre-commit-config.yaml +8 -0
- rc_foundry-0.1.1/.project-root +0 -0
- rc_foundry-0.1.1/LICENSE.md +28 -0
- rc_foundry-0.1.1/Makefile +79 -0
- rc_foundry-0.1.1/PKG-INFO +239 -0
- rc_foundry-0.1.1/README.md +146 -0
- rc_foundry-0.1.1/docs/IPD_USAGE.md +224 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/3en2_from_file.cif +2867 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/3en2_from_json_with_msa.json +15 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/5hkn_from_file.cif +2471 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/7o1r_from_json.json +32 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/7xli_template_antigen_and_framework.json +14 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/9dfn.cif +6218 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/9dfn_template_ligand_and_protein.json +13 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/ligands/HEM.sdf +163 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/ligands/NAG.cif +67 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/msas/3en2_A.a3m.gz +0 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/msas/7o1r_A.a3m.gz +0 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/msas/8cdz_A.a3m.gz +0 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/multiple_examples_from_json.json +26 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/templates/7xli_chain_A.cif +938 -0
- rc_foundry-0.1.1/docs/releases/rf3/examples/templates/7xli_chain_B.cif +1017 -0
- rc_foundry-0.1.1/docs/releases/rfd3/examples/README.md +3 -0
- rc_foundry-0.1.1/examples/all.ipynb +410 -0
- rc_foundry-0.1.1/examples/enzymes.ipynb +123 -0
- rc_foundry-0.1.1/models/mpnn/README.md +146 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/__init__.py +1 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/collate/feature_collator.py +265 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/inference.py +53 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/inference_engines/mpnn.py +549 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/loss/nll_loss.py +122 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/metrics/nll.py +369 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/metrics/sequence_recovery.py +440 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/graph_embeddings.py +2372 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/message_passing.py +332 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/position_wise_feed_forward.py +44 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/model/layers/positional_encoding.py +98 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/model/mpnn.py +2632 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/pipelines/mpnn.py +162 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/samplers/samplers.py +167 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/train.py +341 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/trainers/mpnn.py +193 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/mpnn.py +184 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/polymer_ligand_interface.py +76 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/token_encodings.py +132 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/feature_aggregation/user_settings.py +347 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/transforms/polymer_ligand_interface.py +164 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/inference.py +2397 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/probability.py +37 -0
- rc_foundry-0.1.1/models/mpnn/src/mpnn/utils/weights.py +309 -0
- rc_foundry-0.1.1/models/mpnn/tests/conftest.py +18 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_feature_collator.py +174 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_inference_engine.py +680 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_inference_utils.py +766 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_integration.py +302 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_loss.py +58 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_metrics.py +92 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_model.py +345 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_pipeline.py +514 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_polymer_ligand_interface.py +295 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_samplers.py +265 -0
- rc_foundry-0.1.1/models/mpnn/tests/test_utils.py +797 -0
- rc_foundry-0.1.1/models/rf3/README.md +637 -0
- rc_foundry-0.1.1/models/rf3/configs/callbacks/default.yaml +5 -0
- rc_foundry-0.1.1/models/rf3/configs/callbacks/dump_validation_structures.yaml +6 -0
- rc_foundry-0.1.1/models/rf3/configs/callbacks/metrics_logging.yaml +10 -0
- rc_foundry-0.1.1/models/rf3/configs/callbacks/train_logging.yaml +16 -0
- rc_foundry-0.1.1/models/rf3/configs/dataloader/default.yaml +15 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/base.yaml +31 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/pdb_and_distillation.yaml +58 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/pdb_only.yaml +17 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/disorder_distillation.yaml +48 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/domain_distillation.yaml +50 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/monomer_distillation.yaml +49 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/na_complex_distillation.yaml +50 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/af3_weighted_sampling.yaml +8 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/base.yaml +32 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/plinder.yaml +54 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/train_interface.yaml +51 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/pdb/train_pn_unit.yaml +46 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/train/rna_monomer_distillation.yaml +56 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/val/af3_ab_set.yaml +11 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/val/af3_validation.yaml +11 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/val/base.yaml +32 -0
- rc_foundry-0.1.1/models/rf3/configs/datasets/val/runs_and_poses.yaml +12 -0
- rc_foundry-0.1.1/models/rf3/configs/debug/default.yaml +66 -0
- rc_foundry-0.1.1/models/rf3/configs/debug/train_specific_examples.yaml +21 -0
- rc_foundry-0.1.1/models/rf3/configs/experiment/pretrained/rf3.yaml +50 -0
- rc_foundry-0.1.1/models/rf3/configs/experiment/pretrained/rf3_with_confidence.yaml +13 -0
- rc_foundry-0.1.1/models/rf3/configs/experiment/quick-rf3-with-confidence.yaml +15 -0
- rc_foundry-0.1.1/models/rf3/configs/experiment/quick-rf3.yaml +61 -0
- rc_foundry-0.1.1/models/rf3/configs/hydra/default.yaml +18 -0
- rc_foundry-0.1.1/models/rf3/configs/hydra/no_logging.yaml +7 -0
- rc_foundry-0.1.1/models/rf3/configs/inference.yaml +7 -0
- rc_foundry-0.1.1/models/rf3/configs/inference_engine/base.yaml +23 -0
- rc_foundry-0.1.1/models/rf3/configs/inference_engine/rf3.yaml +33 -0
- rc_foundry-0.1.1/models/rf3/configs/logger/csv.yaml +6 -0
- rc_foundry-0.1.1/models/rf3/configs/logger/default.yaml +3 -0
- rc_foundry-0.1.1/models/rf3/configs/logger/wandb.yaml +15 -0
- rc_foundry-0.1.1/models/rf3/configs/model/components/ema.yaml +1 -0
- rc_foundry-0.1.1/models/rf3/configs/model/components/rf3_net.yaml +177 -0
- rc_foundry-0.1.1/models/rf3/configs/model/components/rf3_net_with_confidence_head.yaml +45 -0
- rc_foundry-0.1.1/models/rf3/configs/model/optimizers/adam.yaml +5 -0
- rc_foundry-0.1.1/models/rf3/configs/model/rf3.yaml +43 -0
- rc_foundry-0.1.1/models/rf3/configs/model/rf3_with_confidence.yaml +7 -0
- rc_foundry-0.1.1/models/rf3/configs/model/schedulers/af3.yaml +6 -0
- rc_foundry-0.1.1/models/rf3/configs/paths/data/default.yaml +43 -0
- rc_foundry-0.1.1/models/rf3/configs/paths/default.yaml +21 -0
- rc_foundry-0.1.1/models/rf3/configs/train.yaml +42 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/cpu.yaml +6 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/ddp.yaml +5 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/confidence_loss.yaml +29 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/diffusion_loss.yaml +9 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/loss/losses/distogram_loss.yaml +2 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/loss/structure_prediction.yaml +4 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/loss/structure_prediction_with_confidence.yaml +2 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/metrics/structure_prediction.yaml +14 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/rf3.yaml +20 -0
- rc_foundry-0.1.1/models/rf3/configs/trainer/rf3_with_confidence.yaml +13 -0
- rc_foundry-0.1.1/models/rf3/configs/validate.yaml +45 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/__init__.py +3 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/_version.py +33 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/alignment.py +79 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/callbacks/dump_validation_structures.py +101 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/callbacks/metrics_logging.py +324 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/chemical.py +1529 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/cli.py +77 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/cyclic_transform.py +78 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/extra_xforms.py +36 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/ground_truth_template.py +463 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/paired_msa.py +206 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/pipeline_utils.py +128 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/data/pipelines.py +558 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/diffusion_samplers/inference_sampler.py +222 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/inference.py +65 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/inference_engines/__init__.py +5 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/inference_engines/rf3.py +735 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/kinematics.py +354 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/loss/af3_confidence_loss.py +515 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/loss/af3_losses.py +655 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/loss/loss.py +179 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/chiral.py +179 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/clashing_chains.py +68 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/distogram.py +421 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/lddt.py +523 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/metadata.py +43 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/metric_utils.py +192 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/predicted_error.py +134 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/rasa.py +108 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/metrics/selected_distances.py +91 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3.py +527 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3_blocks.py +92 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/RF3_structure.py +303 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/af3_auxiliary_heads.py +255 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/af3_diffusion_transformer.py +544 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/attention.py +313 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/layer_utils.py +127 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/mlff.py +118 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/outer_product.py +59 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/pairformer_layers.py +783 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/model/layers/structure_bias.py +56 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/scoring.py +1787 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/symmetry/resolve.py +284 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/train.py +194 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/trainers/rf3.py +570 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/util_module.py +47 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/frames.py +109 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/inference.py +665 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/io.py +198 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/loss.py +72 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/predict_and_score.py +165 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/predicted_error.py +673 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/utils/recycling.py +42 -0
- rc_foundry-0.1.1/models/rf3/src/rf3/validate.py +140 -0
- rc_foundry-0.1.1/models/rf3/tests/.gitkeep +0 -0
- rc_foundry-0.1.1/models/rf3/tests/conftest.py +10 -0
- rc_foundry-0.1.1/models/rf3/tests/data/5vht_from_file.cif +3986 -0
- rc_foundry-0.1.1/models/rf3/tests/data/5vht_from_json.json +17 -0
- rc_foundry-0.1.1/models/rf3/tests/data/8vkf_from_file.cif +7200 -0
- rc_foundry-0.1.1/models/rf3/tests/data/example_from_pdb_with_inter_chain_bond.pdb +1946 -0
- rc_foundry-0.1.1/models/rf3/tests/data/example_pdb_with_clashing_ligand_name.pdb +3699 -0
- rc_foundry-0.1.1/models/rf3/tests/data/example_with_ncaa.json +14 -0
- rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_model.cif +1851 -0
- rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/5vht_from_file/5vht_from_file_summary_confidences.json +26 -0
- rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_model.cif +3450 -0
- rc_foundry-0.1.1/models/rf3/tests/data/inference_regression_tests/8vkf_from_file/8vkf_from_file_summary_confidences.json +38 -0
- rc_foundry-0.1.1/models/rf3/tests/data/msas/5vht_A.a3m +7306 -0
- rc_foundry-0.1.1/models/rf3/tests/data/msas/8vkf_A.a3m +20000 -0
- rc_foundry-0.1.1/models/rf3/tests/data/multiple_examples_from_json.json +26 -0
- rc_foundry-0.1.1/models/rf3/tests/data/ncaa/create_cif_with_ligand_as_ncaa.ipynb +180 -0
- rc_foundry-0.1.1/models/rf3/tests/data/ncaa/ligand_as_ncaa.cif +1560 -0
- rc_foundry-0.1.1/models/rf3/tests/data/ncaa/penicillin_ts2_as_ncaa.cif +143 -0
- rc_foundry-0.1.1/models/rf3/tests/data/nested_examples/example_from_json.json +12 -0
- rc_foundry-0.1.1/models/rf3/tests/data/nested_examples/example_from_pdb_with_inter_chain_bonds.and.dots.pdb +1946 -0
- rc_foundry-0.1.1/models/rf3/tests/test_chiral_metrics.py +56 -0
- rc_foundry-0.1.1/models/rf3/tests/test_inference_regression.py +141 -0
- rc_foundry-0.1.1/models/rf3/tests/test_write_confidence.py +188 -0
- rc_foundry-0.1.1/models/rfd3/.gitignore +2 -0
- rc_foundry-0.1.1/models/rfd3/README.md +196 -0
- rc_foundry-0.1.1/models/rfd3/configs/__init__.py +0 -0
- rc_foundry-0.1.1/models/rfd3/configs/callbacks/design_callbacks.yaml +10 -0
- rc_foundry-0.1.1/models/rfd3/configs/callbacks/metrics_logging.yaml +20 -0
- rc_foundry-0.1.1/models/rfd3/configs/callbacks/train_logging.yaml +24 -0
- rc_foundry-0.1.1/models/rfd3/configs/dataloader/default.yaml +15 -0
- rc_foundry-0.1.1/models/rfd3/configs/dataloader/fast.yaml +11 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/dna_condition.yaml +3 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/island.yaml +28 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/ppi.yaml +2 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/sequence_design.yaml +17 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/tipatom.yaml +28 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/conditions/unconditional.yaml +21 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/design_base.yaml +97 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/af3_train_interface.yaml +46 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/af3_train_pn_unit.yaml +42 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base.yaml +14 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base_no_weights.yaml +19 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/base_transform_args.yaml +59 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/na_complex_distillation.yaml +20 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/pdb_base.yaml +11 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/rfd3_train_interface.yaml +22 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/pdb/rfd3_train_pn_unit.yaml +23 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/train/rfd3_monomer_distillation.yaml +38 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/bcov_ppi_easy_medium.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/design_validation_base.yaml +40 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_design5.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_long.yaml +13 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/dna_binder_short.yaml +13 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/indexed.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/mcsa_41.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/mcsa_41_short_rigid.yaml +10 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/ppi_inference.yaml +7 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/sm_binder_hbonds.yaml +13 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/sm_binder_hbonds_short.yaml +15 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unconditional.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unconditional_deep.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/unindexed.yaml +8 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori.yaml +151 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_spoof_helical_bundle.yaml +7 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bcov_ppi_easy_medium_with_ori_varying_lengths.yaml +28 -0
- rc_foundry-0.1.1/models/rfd3/configs/datasets/val/val_examples/bpem_ori_hb.yaml +212 -0
- rc_foundry-0.1.1/models/rfd3/configs/debug/default.yaml +64 -0
- rc_foundry-0.1.1/models/rfd3/configs/debug/train_specific_examples.yaml +21 -0
- rc_foundry-0.1.1/models/rfd3/configs/dev.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/experiment/debug.yaml +14 -0
- rc_foundry-0.1.1/models/rfd3/configs/experiment/pretrain.yaml +31 -0
- rc_foundry-0.1.1/models/rfd3/configs/experiment/test-uncond.yaml +10 -0
- rc_foundry-0.1.1/models/rfd3/configs/experiment/test-unindexed.yaml +21 -0
- rc_foundry-0.1.1/models/rfd3/configs/hydra/default.yaml +18 -0
- rc_foundry-0.1.1/models/rfd3/configs/hydra/no_logging.yaml +7 -0
- rc_foundry-0.1.1/models/rfd3/configs/inference.yaml +9 -0
- rc_foundry-0.1.1/models/rfd3/configs/inference_engine/base.yaml +15 -0
- rc_foundry-0.1.1/models/rfd3/configs/inference_engine/dev.yaml +20 -0
- rc_foundry-0.1.1/models/rfd3/configs/inference_engine/rfdiffusion3.yaml +65 -0
- rc_foundry-0.1.1/models/rfd3/configs/logger/csv.yaml +6 -0
- rc_foundry-0.1.1/models/rfd3/configs/logger/default.yaml +2 -0
- rc_foundry-0.1.1/models/rfd3/configs/logger/wandb.yaml +15 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/components/ema.yaml +1 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/components/rfd3_net.yaml +131 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/optimizers/adam.yaml +5 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/rfd3_base.yaml +8 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/samplers/edm.yaml +21 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/samplers/symmetry.yaml +10 -0
- rc_foundry-0.1.1/models/rfd3/configs/model/schedulers/af3.yaml +6 -0
- rc_foundry-0.1.1/models/rfd3/configs/paths/data/default.yaml +18 -0
- rc_foundry-0.1.1/models/rfd3/configs/paths/default.yaml +22 -0
- rc_foundry-0.1.1/models/rfd3/configs/train.yaml +28 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/cpu.yaml +6 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/ddp.yaml +5 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/loss/losses/diffusion_loss.yaml +12 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/loss/losses/sequence_loss.yaml +3 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/metrics/design_metrics.yaml +22 -0
- rc_foundry-0.1.1/models/rfd3/configs/trainer/rfd3_base.yaml +35 -0
- rc_foundry-0.1.1/models/rfd3/configs/validate.yaml +34 -0
- rc_foundry-0.1.1/models/rfd3/docs/demo.json +34 -0
- rc_foundry-0.1.1/models/rfd3/docs/enzyme_design.md +26 -0
- rc_foundry-0.1.1/models/rfd3/docs/get_na_input.sh +18 -0
- rc_foundry-0.1.1/models/rfd3/docs/input.md +184 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/1bna.pdb +617 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/1q75.pdb +516 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/2r5z.pdb +2141 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/4zxb_croppped.pdb +2479 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/5o45_cropped.pdb +3107 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/5o4d.pdb +769 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/7v11.pdb +4532 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/IAI.pdb +1108 -0
- rc_foundry-0.1.1/models/rfd3/docs/input_pdbs/M0255_1mg5.pdb +84 -0
- rc_foundry-0.1.1/models/rfd3/docs/na_binder_design.json +42 -0
- rc_foundry-0.1.1/models/rfd3/docs/na_binder_design.md +113 -0
- rc_foundry-0.1.1/models/rfd3/docs/protein_binder_design.md +33 -0
- rc_foundry-0.1.1/models/rfd3/docs/run_inf_tutorial.sh +16 -0
- rc_foundry-0.1.1/models/rfd3/docs/sm_binder_design.md +41 -0
- rc_foundry-0.1.1/models/rfd3/docs/symmetry.md +167 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/.gitignore +7 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/Makefile +76 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/__init__.py +12 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/callbacks.py +66 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/cli.py +41 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/constants.py +212 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/engine.py +543 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/datasets.py +193 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/input_parsing.py +1123 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/legacy_input_parsing.py +717 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/parsing.py +165 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/atom_array.py +298 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/checks.py +241 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/contigs.py +63 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/frames.py +355 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/inference/symmetry/symmetry_utils.py +398 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/design_metrics.py +465 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/hbonds_hbplus_metrics.py +308 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/hbonds_metrics.py +389 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/losses.py +325 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/metrics_utils.py +118 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/metrics/sidechain_metrics.py +349 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/RFD3.py +105 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/RFD3_diffusion_module.py +387 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/cfg_utils.py +81 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/inference_sampler.py +635 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/attention.py +577 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/block_utils.py +580 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/blocks.py +777 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/chunked_pairwise.py +377 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/encoders.py +417 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/layer_utils.py +197 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/model/layers/pairformer_layers.py +128 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/run_inference.py +45 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/debug.py +139 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/debug_utils.py +73 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/testing/testing_utils.py +356 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/train.py +194 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/dump_validation_structures.py +154 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/fabric_trainer.py +923 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/recycling.py +42 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/rfd3.py +485 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/trainer/trainer_utils.py +502 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/conditioning_base.py +508 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/conditioning_utils.py +200 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/design_transforms.py +807 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/dna_crop.py +523 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/hbonds.py +407 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/hbonds_hbplus.py +246 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/ncaa_transforms.py +153 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/pipelines.py +632 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/ppi_transforms.py +541 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/rasa.py +116 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/symmetry.py +76 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/training_conditions.py +552 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/util_transforms.py +498 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/transforms/virtual_atoms.py +305 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/inference.py +648 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/io.py +245 -0
- rc_foundry-0.1.1/models/rfd3/src/rfd3/utils/vizualize.py +276 -0
- rc_foundry-0.1.1/models/rfd3/tests/conftest.py +22 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_aa_design.py +88 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_conditioning.py +82 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_glycines.py +60 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_legacy_pipeline_equivalence.py +71 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_metrics.py +51 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_partial_diffusion.py +26 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_selections.py +124 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_subgraph_sampling.py +45 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_symmetry.py +49 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_tokenization.py +224 -0
- rc_foundry-0.1.1/models/rfd3/tests/test_unindexing.py +83 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1p5d_0_inference_pretrain.pkl +0 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1p5d_0_train_pretrain.pkl +0 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1qys_0_inference_pretrain.pkl +0 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/1qys_0_train_pretrain.pkl +0 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/regression_test_data/af2_122_train_test_unindexed.pkl +0 -0
- rc_foundry-0.1.1/models/rfd3/tests/transforms/test_pipeline_regression.py +204 -0
- rc_foundry-0.1.1/pyproject.toml +189 -0
- rc_foundry-0.1.1/refactor.sh +8 -0
- rc_foundry-0.1.1/src/foundry/__init__.py +57 -0
- rc_foundry-0.1.1/src/foundry/callbacks/__init__.py +5 -0
- rc_foundry-0.1.1/src/foundry/callbacks/callback.py +116 -0
- rc_foundry-0.1.1/src/foundry/callbacks/health_logging.py +419 -0
- rc_foundry-0.1.1/src/foundry/callbacks/metrics_logging.py +211 -0
- rc_foundry-0.1.1/src/foundry/callbacks/timing_logging.py +67 -0
- rc_foundry-0.1.1/src/foundry/callbacks/train_logging.py +278 -0
- rc_foundry-0.1.1/src/foundry/common.py +108 -0
- rc_foundry-0.1.1/src/foundry/constants.py +28 -0
- rc_foundry-0.1.1/src/foundry/hydra/resolvers.py +77 -0
- rc_foundry-0.1.1/src/foundry/inference_engines/base.py +235 -0
- rc_foundry-0.1.1/src/foundry/inference_engines/checkpoint_registry.py +66 -0
- rc_foundry-0.1.1/src/foundry/metrics/__init__.py +12 -0
- rc_foundry-0.1.1/src/foundry/metrics/losses.py +30 -0
- rc_foundry-0.1.1/src/foundry/metrics/metric.py +319 -0
- rc_foundry-0.1.1/src/foundry/model/layers/blocks.py +47 -0
- rc_foundry-0.1.1/src/foundry/testing/__init__.py +6 -0
- rc_foundry-0.1.1/src/foundry/testing/fixtures.py +19 -0
- rc_foundry-0.1.1/src/foundry/testing/pytest_hooks.py +15 -0
- rc_foundry-0.1.1/src/foundry/trainers/fabric.py +923 -0
- rc_foundry-0.1.1/src/foundry/training/EMA.py +67 -0
- rc_foundry-0.1.1/src/foundry/training/checkpoint.py +61 -0
- rc_foundry-0.1.1/src/foundry/training/schedulers.py +91 -0
- rc_foundry-0.1.1/src/foundry/utils/alignment.py +86 -0
- rc_foundry-0.1.1/src/foundry/utils/components.py +415 -0
- rc_foundry-0.1.1/src/foundry/utils/datasets.py +405 -0
- rc_foundry-0.1.1/src/foundry/utils/ddp.py +103 -0
- rc_foundry-0.1.1/src/foundry/utils/instantiators.py +72 -0
- rc_foundry-0.1.1/src/foundry/utils/logging.py +279 -0
- rc_foundry-0.1.1/src/foundry/utils/rigid.py +1460 -0
- rc_foundry-0.1.1/src/foundry/utils/rotation_augmentation.py +65 -0
- rc_foundry-0.1.1/src/foundry/utils/squashfs.py +172 -0
- rc_foundry-0.1.1/src/foundry/utils/torch.py +317 -0
- rc_foundry-0.1.1/src/foundry/utils/weights.py +271 -0
- rc_foundry-0.1.1/src/foundry/version.py +34 -0
- rc_foundry-0.1.1/src/foundry_cli/__init__.py +3 -0
- rc_foundry-0.1.1/src/foundry_cli/download_checkpoints.py +281 -0
- rc_foundry-0.1.1/tests/conftest.py +10 -0
- rc_foundry-0.1.1/tests/test_torch_utils.py +132 -0
- 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
|