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