Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- weight/esm-main/examples/lm-design/2N2U.pdb +1097 -0
- weight/esm-main/examples/lm-design/README.md +32 -0
- weight/esm-main/examples/lm-design/additional_requirements.txt +3 -0
- weight/esm-main/examples/lm-design/fixed_backbone.ipynb +197 -0
- weight/esm-main/examples/lm-design/free_generation.ipynb +169 -0
- weight/esm-main/examples/lm-design/lm_design.py +456 -0
- weight/esm-main/examples/lm-design/utils/fixedbb.py +56 -0
- weight/esm-main/examples/lm-design/utils/free_generation.py +94 -0
- weight/esm-main/examples/lm-design/utils/masking.py +92 -0
- weight/esm-main/examples/lm-design/utils/misc.py +41 -0
- weight/esm-main/examples/lm-design/utils/ngram.py +73 -0
- weight/esm-main/examples/lm-design/utils/pdb_loader.py +321 -0
- weight/esm-main/examples/lm-design/utils/sampling.py +201 -0
- weight/esm-main/examples/lm-design/utils/scheduler.py +69 -0
- weight/esm-main/examples/lm-design/utils/struct_models.py +128 -0
- weight/esm-main/examples/lm-design/utils/tensor.py +81 -0
- weight/esm-main/examples/protein-programming-language/README.md +25 -0
- weight/esm-main/examples/protein-programming-language/language/utilities.py +19 -0
- weight/esm-main/examples/protein-programming-language/programs/fixed_backbone.py +39 -0
- weight/esm-main/examples/protein-programming-language/programs/free_hallucination.py +24 -0
- weight/esm-main/examples/protein-programming-language/programs/functional_site_scaffolding.py +58 -0
- weight/esm-main/examples/protein-programming-language/programs/secondary_structure.py +47 -0
- weight/esm-main/examples/protein-programming-language/programs/symmetric_binding.py +64 -0
- weight/esm-main/examples/protein-programming-language/programs/symmetric_monomer.py +36 -0
- weight/esm-main/examples/protein-programming-language/programs/symmetric_two_level_multimer.py +65 -0
- weight/esm-main/examples/protein-programming-language/tutorial.ipynb +253 -0
- weight/esm-main/scripts/__init__.py +1 -0
- weight/esm-main/scripts/atlas/README.md +100 -0
- weight/esm-main/scripts/atlas/v0/full/bins.txt +72 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings.txt +673 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.40_.50.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.60_.70.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_0_.40.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.40_.50.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.60_.70.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_0_.40.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.40_.50.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.80_.90.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.50_.60.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.60_.70.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.80_.90.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.90_1.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.60_.70.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.70_.80.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.80_.90.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.90_1.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.90_1_plddt_.70_.80.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.90_1_plddt_.90_1.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_0_.40_plddt_.40_.50.txt +1 -0
- weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_0_.40_plddt_.50_.60.txt +1 -0
weight/esm-main/examples/lm-design/2N2U.pdb
ADDED
|
@@ -0,0 +1,1097 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ATOM 1 N MET A 1 2.474 14.947 -3.252 1.00 30.41 N
|
| 2 |
+
ATOM 2 CA MET A 1 1.932 13.612 -3.600 1.00 73.02 C
|
| 3 |
+
ATOM 3 C MET A 1 3.047 12.685 -4.110 1.00 44.21 C
|
| 4 |
+
ATOM 4 O MET A 1 3.901 13.105 -4.899 1.00 12.21 O
|
| 5 |
+
ATOM 5 CB MET A 1 0.773 13.733 -4.632 1.00 52.11 C
|
| 6 |
+
ATOM 6 CG MET A 1 1.118 14.483 -5.932 1.00 63.25 C
|
| 7 |
+
ATOM 7 SD MET A 1 1.519 16.227 -5.649 1.00 2.52 S
|
| 8 |
+
ATOM 8 CE MET A 1 1.918 16.775 -7.309 1.00 22.41 C
|
| 9 |
+
ATOM 9 H1 MET A 1 2.965 15.360 -4.068 1.00 37.08 H
|
| 10 |
+
ATOM 10 H2 MET A 1 3.147 14.868 -2.462 1.00 37.08 H
|
| 11 |
+
ATOM 11 H3 MET A 1 1.703 15.583 -2.968 1.00 37.08 H
|
| 12 |
+
ATOM 12 HA MET A 1 1.530 13.192 -2.682 1.00 72.41 H
|
| 13 |
+
ATOM 13 HB2 MET A 1 0.434 12.737 -4.897 1.00 52.45 H
|
| 14 |
+
ATOM 14 HB3 MET A 1 -0.052 14.254 -4.158 1.00 31.25 H
|
| 15 |
+
ATOM 15 HG2 MET A 1 1.970 14.005 -6.396 1.00 43.45 H
|
| 16 |
+
ATOM 16 HG3 MET A 1 0.268 14.429 -6.602 1.00 1.42 H
|
| 17 |
+
ATOM 17 HE1 MET A 1 2.206 17.815 -7.285 1.00 41.41 H
|
| 18 |
+
ATOM 18 HE2 MET A 1 1.055 16.655 -7.948 1.00 32.23 H
|
| 19 |
+
ATOM 19 HE3 MET A 1 2.736 16.185 -7.696 1.00 20.43 H
|
| 20 |
+
ATOM 20 N VAL A 2 3.067 11.433 -3.594 1.00 71.32 N
|
| 21 |
+
ATOM 21 CA VAL A 2 3.984 10.371 -4.058 1.00 23.32 C
|
| 22 |
+
ATOM 22 C VAL A 2 3.155 9.215 -4.628 1.00 3.23 C
|
| 23 |
+
ATOM 23 O VAL A 2 2.230 8.734 -3.970 1.00 33.21 O
|
| 24 |
+
ATOM 24 CB VAL A 2 4.908 9.812 -2.913 1.00 71.22 C
|
| 25 |
+
ATOM 25 CG1 VAL A 2 5.958 8.822 -3.481 1.00 64.04 C
|
| 26 |
+
ATOM 26 CG2 VAL A 2 5.582 10.955 -2.132 1.00 73.43 C
|
| 27 |
+
ATOM 27 H VAL A 2 2.429 11.213 -2.887 1.00 65.22 H
|
| 28 |
+
ATOM 28 HA VAL A 2 4.624 10.780 -4.847 1.00 41.13 H
|
| 29 |
+
ATOM 29 HB VAL A 2 4.283 9.259 -2.212 1.00 20.22 H
|
| 30 |
+
ATOM 30 HG11 VAL A 2 5.456 7.995 -3.971 1.00 23.31 H
|
| 31 |
+
ATOM 31 HG12 VAL A 2 6.569 8.435 -2.677 1.00 10.15 H
|
| 32 |
+
ATOM 32 HG13 VAL A 2 6.592 9.329 -4.198 1.00 53.33 H
|
| 33 |
+
ATOM 33 HG21 VAL A 2 6.201 10.548 -1.340 1.00 5.25 H
|
| 34 |
+
ATOM 34 HG22 VAL A 2 4.824 11.594 -1.697 1.00 45.50 H
|
| 35 |
+
ATOM 35 HG23 VAL A 2 6.199 11.542 -2.796 1.00 23.40 H
|
| 36 |
+
ATOM 36 N ASP A 3 3.465 8.809 -5.854 1.00 62.11 N
|
| 37 |
+
ATOM 37 CA ASP A 3 2.839 7.650 -6.508 1.00 12.32 C
|
| 38 |
+
ATOM 38 C ASP A 3 3.379 6.341 -5.886 1.00 32.51 C
|
| 39 |
+
ATOM 39 O ASP A 3 4.588 6.101 -5.921 1.00 24.12 O
|
| 40 |
+
ATOM 40 CB ASP A 3 3.148 7.741 -8.023 1.00 21.11 C
|
| 41 |
+
ATOM 41 CG ASP A 3 2.627 6.567 -8.863 1.00 53.15 C
|
| 42 |
+
ATOM 42 OD1 ASP A 3 3.349 5.554 -9.016 1.00 24.42 O
|
| 43 |
+
ATOM 43 OD2 ASP A 3 1.497 6.657 -9.390 1.00 41.22 O
|
| 44 |
+
ATOM 44 H ASP A 3 4.146 9.306 -6.356 1.00 60.51 H
|
| 45 |
+
ATOM 45 HA ASP A 3 1.763 7.711 -6.357 1.00 32.14 H
|
| 46 |
+
ATOM 46 HB2 ASP A 3 2.713 8.658 -8.412 1.00 1.32 H
|
| 47 |
+
ATOM 47 HB3 ASP A 3 4.226 7.807 -8.153 1.00 74.35 H
|
| 48 |
+
ATOM 48 N LEU A 4 2.487 5.533 -5.269 1.00 15.15 N
|
| 49 |
+
ATOM 49 CA LEU A 4 2.843 4.213 -4.688 1.00 52.22 C
|
| 50 |
+
ATOM 50 C LEU A 4 1.925 3.124 -5.275 1.00 20.20 C
|
| 51 |
+
ATOM 51 O LEU A 4 0.745 3.063 -4.956 1.00 2.34 O
|
| 52 |
+
ATOM 52 CB LEU A 4 2.705 4.235 -3.130 1.00 42.51 C
|
| 53 |
+
ATOM 53 CG LEU A 4 3.628 5.220 -2.347 1.00 71.31 C
|
| 54 |
+
ATOM 54 CD1 LEU A 4 3.306 5.178 -0.839 1.00 12.10 C
|
| 55 |
+
ATOM 55 CD2 LEU A 4 5.122 4.915 -2.605 1.00 43.25 C
|
| 56 |
+
ATOM 56 H LEU A 4 1.557 5.831 -5.200 1.00 11.54 H
|
| 57 |
+
ATOM 57 HA LEU A 4 3.877 3.979 -4.948 1.00 72.02 H
|
| 58 |
+
ATOM 58 HB2 LEU A 4 1.672 4.482 -2.888 1.00 2.21 H
|
| 59 |
+
ATOM 59 HB3 LEU A 4 2.897 3.231 -2.758 1.00 65.12 H
|
| 60 |
+
ATOM 60 HG LEU A 4 3.437 6.232 -2.692 1.00 52.31 H
|
| 61 |
+
ATOM 61 HD11 LEU A 4 3.469 4.177 -0.450 1.00 11.44 H
|
| 62 |
+
ATOM 62 HD12 LEU A 4 2.273 5.456 -0.681 1.00 74.44 H
|
| 63 |
+
ATOM 63 HD13 LEU A 4 3.940 5.874 -0.311 1.00 62.15 H
|
| 64 |
+
ATOM 64 HD21 LEU A 4 5.740 5.610 -2.048 1.00 44.31 H
|
| 65 |
+
ATOM 65 HD22 LEU A 4 5.335 5.021 -3.660 1.00 45.10 H
|
| 66 |
+
ATOM 66 HD23 LEU A 4 5.353 3.903 -2.294 1.00 1.24 H
|
| 67 |
+
ATOM 67 N LYS A 5 2.479 2.249 -6.118 1.00 33.01 N
|
| 68 |
+
ATOM 68 CA LYS A 5 1.733 1.121 -6.723 1.00 52.12 C
|
| 69 |
+
ATOM 69 C LYS A 5 2.309 -0.189 -6.172 1.00 21.32 C
|
| 70 |
+
ATOM 70 O LYS A 5 3.433 -0.552 -6.482 1.00 2.13 O
|
| 71 |
+
ATOM 71 CB LYS A 5 1.777 1.158 -8.294 1.00 71.43 C
|
| 72 |
+
ATOM 72 CG LYS A 5 0.620 1.929 -8.994 1.00 75.12 C
|
| 73 |
+
ATOM 73 CD LYS A 5 0.636 3.474 -8.780 1.00 64.51 C
|
| 74 |
+
ATOM 74 CE LYS A 5 -0.427 3.981 -7.799 1.00 65.12 C
|
| 75 |
+
ATOM 75 NZ LYS A 5 -0.444 5.466 -7.668 1.00 45.31 N
|
| 76 |
+
ATOM 76 H LYS A 5 3.436 2.355 -6.296 1.00 43.13 H
|
| 77 |
+
ATOM 77 HA LYS A 5 0.690 1.191 -6.403 1.00 52.03 H
|
| 78 |
+
ATOM 78 HB2 LYS A 5 2.711 1.616 -8.611 1.00 61.01 H
|
| 79 |
+
ATOM 79 HB3 LYS A 5 1.767 0.139 -8.672 1.00 44.23 H
|
| 80 |
+
ATOM 80 HG2 LYS A 5 0.681 1.729 -10.061 1.00 3.42 H
|
| 81 |
+
ATOM 81 HG3 LYS A 5 -0.322 1.524 -8.629 1.00 2.31 H
|
| 82 |
+
ATOM 82 HD2 LYS A 5 1.609 3.774 -8.410 1.00 52.03 H
|
| 83 |
+
ATOM 83 HD3 LYS A 5 0.473 3.960 -9.740 1.00 74.51 H
|
| 84 |
+
ATOM 84 HE2 LYS A 5 -1.400 3.662 -8.146 1.00 13.31 H
|
| 85 |
+
ATOM 85 HE3 LYS A 5 -0.242 3.548 -6.825 1.00 24.14 H
|
| 86 |
+
ATOM 86 HZ1 LYS A 5 -0.765 5.897 -8.560 1.00 73.55 H
|
| 87 |
+
ATOM 87 HZ2 LYS A 5 0.508 5.818 -7.452 1.00 1.14 H
|
| 88 |
+
ATOM 88 HZ3 LYS A 5 -1.092 5.758 -6.904 1.00 34.01 H
|
| 89 |
+
ATOM 89 N ILE A 6 1.508 -0.925 -5.391 1.00 42.42 N
|
| 90 |
+
ATOM 90 CA ILE A 6 1.982 -2.110 -4.672 1.00 44.20 C
|
| 91 |
+
ATOM 91 C ILE A 6 1.521 -3.337 -5.458 1.00 1.55 C
|
| 92 |
+
ATOM 92 O ILE A 6 0.322 -3.563 -5.585 1.00 63.22 O
|
| 93 |
+
ATOM 93 CB ILE A 6 1.437 -2.212 -3.183 1.00 21.25 C
|
| 94 |
+
ATOM 94 CG1 ILE A 6 1.885 -0.992 -2.299 1.00 53.53 C
|
| 95 |
+
ATOM 95 CG2 ILE A 6 1.885 -3.554 -2.533 1.00 0.14 C
|
| 96 |
+
ATOM 96 CD1 ILE A 6 1.127 0.312 -2.533 1.00 62.52 C
|
| 97 |
+
ATOM 97 H ILE A 6 0.548 -0.767 -5.418 1.00 60.40 H
|
| 98 |
+
ATOM 98 HA ILE A 6 3.074 -2.096 -4.636 1.00 31.21 H
|
| 99 |
+
ATOM 99 HB ILE A 6 0.347 -2.223 -3.229 1.00 54.54 H
|
| 100 |
+
ATOM 100 HG12 ILE A 6 1.759 -1.240 -1.253 1.00 22.21 H
|
| 101 |
+
ATOM 101 HG13 ILE A 6 2.937 -0.792 -2.476 1.00 74.14 H
|
| 102 |
+
ATOM 102 HG21 ILE A 6 1.518 -4.393 -3.116 1.00 62.25 H
|
| 103 |
+
ATOM 103 HG22 ILE A 6 1.487 -3.631 -1.529 1.00 60.52 H
|
| 104 |
+
ATOM 104 HG23 ILE A 6 2.968 -3.604 -2.485 1.00 32.31 H
|
| 105 |
+
ATOM 105 HD11 ILE A 6 1.250 0.624 -3.559 1.00 31.12 H
|
| 106 |
+
ATOM 106 HD12 ILE A 6 1.519 1.076 -1.876 1.00 43.43 H
|
| 107 |
+
ATOM 107 HD13 ILE A 6 0.077 0.164 -2.322 1.00 32.31 H
|
| 108 |
+
ATOM 108 N ASP A 7 2.475 -4.116 -5.981 1.00 2.13 N
|
| 109 |
+
ATOM 109 CA ASP A 7 2.172 -5.409 -6.621 1.00 30.20 C
|
| 110 |
+
ATOM 110 C ASP A 7 1.508 -6.318 -5.581 1.00 3.24 C
|
| 111 |
+
ATOM 111 O ASP A 7 1.975 -6.355 -4.452 1.00 23.12 O
|
| 112 |
+
ATOM 112 CB ASP A 7 3.472 -6.077 -7.130 1.00 61.23 C
|
| 113 |
+
ATOM 113 CG ASP A 7 3.248 -7.504 -7.682 1.00 13.42 C
|
| 114 |
+
ATOM 114 OD1 ASP A 7 2.788 -7.630 -8.836 1.00 75.25 O
|
| 115 |
+
ATOM 115 OD2 ASP A 7 3.526 -8.503 -6.966 1.00 51.34 O
|
| 116 |
+
ATOM 116 H ASP A 7 3.407 -3.836 -5.872 1.00 71.34 H
|
| 117 |
+
ATOM 117 HA ASP A 7 1.488 -5.235 -7.454 1.00 62.23 H
|
| 118 |
+
ATOM 118 HB2 ASP A 7 3.897 -5.463 -7.919 1.00 53.33 H
|
| 119 |
+
ATOM 119 HB3 ASP A 7 4.190 -6.123 -6.316 1.00 25.45 H
|
| 120 |
+
ATOM 120 N VAL A 8 0.441 -7.046 -5.953 1.00 71.44 N
|
| 121 |
+
ATOM 121 CA VAL A 8 -0.200 -8.042 -5.055 1.00 35.32 C
|
| 122 |
+
ATOM 122 C VAL A 8 -0.354 -9.369 -5.815 1.00 11.50 C
|
| 123 |
+
ATOM 123 O VAL A 8 -0.940 -9.418 -6.906 1.00 54.22 O
|
| 124 |
+
ATOM 124 CB VAL A 8 -1.586 -7.568 -4.451 1.00 1.23 C
|
| 125 |
+
ATOM 125 CG1 VAL A 8 -1.386 -6.367 -3.506 1.00 1.31 C
|
| 126 |
+
ATOM 126 CG2 VAL A 8 -2.646 -7.245 -5.532 1.00 62.52 C
|
| 127 |
+
ATOM 127 H VAL A 8 0.105 -6.994 -6.871 1.00 20.22 H
|
| 128 |
+
ATOM 128 HA VAL A 8 0.480 -8.220 -4.214 1.00 13.10 H
|
| 129 |
+
ATOM 129 HB VAL A 8 -1.972 -8.388 -3.844 1.00 23.15 H
|
| 130 |
+
ATOM 130 HG11 VAL A 8 -0.980 -5.527 -4.057 1.00 14.13 H
|
| 131 |
+
ATOM 131 HG12 VAL A 8 -0.698 -6.640 -2.715 1.00 13.42 H
|
| 132 |
+
ATOM 132 HG13 VAL A 8 -2.335 -6.085 -3.066 1.00 12.11 H
|
| 133 |
+
ATOM 133 HG21 VAL A 8 -3.584 -6.966 -5.062 1.00 2.41 H
|
| 134 |
+
ATOM 134 HG22 VAL A 8 -2.808 -8.118 -6.151 1.00 51.44 H
|
| 135 |
+
ATOM 135 HG23 VAL A 8 -2.304 -6.429 -6.154 1.00 14.32 H
|
| 136 |
+
ATOM 136 N SER A 9 0.221 -10.441 -5.243 1.00 31.44 N
|
| 137 |
+
ATOM 137 CA SER A 9 0.249 -11.784 -5.857 1.00 3.51 C
|
| 138 |
+
ATOM 138 C SER A 9 -0.835 -12.705 -5.265 1.00 1.10 C
|
| 139 |
+
ATOM 139 O SER A 9 -1.115 -13.781 -5.806 1.00 55.42 O
|
| 140 |
+
ATOM 140 CB SER A 9 1.653 -12.401 -5.671 1.00 25.52 C
|
| 141 |
+
ATOM 141 OG SER A 9 2.659 -11.532 -6.175 1.00 20.22 O
|
| 142 |
+
ATOM 142 H SER A 9 0.659 -10.304 -4.372 1.00 63.32 H
|
| 143 |
+
ATOM 143 HA SER A 9 0.058 -11.678 -6.922 1.00 51.45 H
|
| 144 |
+
ATOM 144 HB2 SER A 9 1.845 -12.572 -4.620 1.00 33.14 H
|
| 145 |
+
ATOM 145 HB3 SER A 9 1.716 -13.341 -6.208 1.00 44.33 H
|
| 146 |
+
ATOM 146 HG SER A 9 2.246 -10.793 -6.640 1.00 63.31 H
|
| 147 |
+
ATOM 147 N ASP A 10 -1.447 -12.261 -4.157 1.00 12.02 N
|
| 148 |
+
ATOM 148 CA ASP A 10 -2.502 -13.005 -3.449 1.00 74.03 C
|
| 149 |
+
ATOM 149 C ASP A 10 -3.614 -12.029 -3.007 1.00 13.33 C
|
| 150 |
+
ATOM 150 O ASP A 10 -3.389 -10.814 -2.911 1.00 63.25 O
|
| 151 |
+
ATOM 151 CB ASP A 10 -1.878 -13.789 -2.254 1.00 62.50 C
|
| 152 |
+
ATOM 152 CG ASP A 10 -2.908 -14.381 -1.272 1.00 63.35 C
|
| 153 |
+
ATOM 153 OD1 ASP A 10 -3.614 -15.343 -1.640 1.00 54.33 O
|
| 154 |
+
ATOM 154 OD2 ASP A 10 -3.041 -13.865 -0.144 1.00 62.42 O
|
| 155 |
+
ATOM 155 H ASP A 10 -1.189 -11.383 -3.804 1.00 30.43 H
|
| 156 |
+
ATOM 156 HA ASP A 10 -2.938 -13.720 -4.148 1.00 23.24 H
|
| 157 |
+
ATOM 157 HB2 ASP A 10 -1.287 -14.610 -2.648 1.00 12.43 H
|
| 158 |
+
ATOM 158 HB3 ASP A 10 -1.213 -13.129 -1.708 1.00 40.23 H
|
| 159 |
+
ATOM 159 N ASP A 11 -4.802 -12.589 -2.744 1.00 33.51 N
|
| 160 |
+
ATOM 160 CA ASP A 11 -6.028 -11.833 -2.425 1.00 52.32 C
|
| 161 |
+
ATOM 161 C ASP A 11 -6.032 -11.379 -0.952 1.00 74.13 C
|
| 162 |
+
ATOM 162 O ASP A 11 -6.364 -10.229 -0.651 1.00 43.11 O
|
| 163 |
+
ATOM 163 CB ASP A 11 -7.252 -12.743 -2.703 1.00 64.53 C
|
| 164 |
+
ATOM 164 CG ASP A 11 -8.607 -12.023 -2.569 1.00 61.24 C
|
| 165 |
+
ATOM 165 OD1 ASP A 11 -9.125 -11.885 -1.439 1.00 4.12 O
|
| 166 |
+
ATOM 166 OD2 ASP A 11 -9.166 -11.588 -3.601 1.00 72.22 O
|
| 167 |
+
ATOM 167 H ASP A 11 -4.853 -13.567 -2.736 1.00 71.11 H
|
| 168 |
+
ATOM 168 HA ASP A 11 -6.076 -10.960 -3.072 1.00 40.31 H
|
| 169 |
+
ATOM 169 HB2 ASP A 11 -7.167 -13.135 -3.714 1.00 24.24 H
|
| 170 |
+
ATOM 170 HB3 ASP A 11 -7.235 -13.583 -2.015 1.00 23.23 H
|
| 171 |
+
ATOM 171 N GLU A 12 -5.684 -12.310 -0.044 1.00 42.20 N
|
| 172 |
+
ATOM 172 CA GLU A 12 -5.738 -12.075 1.408 1.00 4.23 C
|
| 173 |
+
ATOM 173 C GLU A 12 -4.698 -11.021 1.842 1.00 23.45 C
|
| 174 |
+
ATOM 174 O GLU A 12 -4.999 -10.157 2.673 1.00 71.33 O
|
| 175 |
+
ATOM 175 CB GLU A 12 -5.527 -13.406 2.172 1.00 52.30 C
|
| 176 |
+
ATOM 176 CG GLU A 12 -5.441 -13.279 3.714 1.00 44.12 C
|
| 177 |
+
ATOM 177 CD GLU A 12 -6.738 -12.781 4.389 1.00 12.52 C
|
| 178 |
+
ATOM 178 OE1 GLU A 12 -6.916 -11.550 4.560 1.00 71.42 O
|
| 179 |
+
ATOM 179 OE2 GLU A 12 -7.580 -13.624 4.770 1.00 31.21 O
|
| 180 |
+
ATOM 180 H GLU A 12 -5.373 -13.186 -0.364 1.00 43.22 H
|
| 181 |
+
ATOM 181 HA GLU A 12 -6.731 -11.694 1.642 1.00 45.14 H
|
| 182 |
+
ATOM 182 HB2 GLU A 12 -6.346 -14.079 1.931 1.00 53.25 H
|
| 183 |
+
ATOM 183 HB3 GLU A 12 -4.605 -13.855 1.819 1.00 30.11 H
|
| 184 |
+
ATOM 184 HG2 GLU A 12 -5.191 -14.254 4.123 1.00 32.02 H
|
| 185 |
+
ATOM 185 HG3 GLU A 12 -4.634 -12.593 3.959 1.00 43.10 H
|
| 186 |
+
ATOM 186 N GLU A 13 -3.469 -11.095 1.286 1.00 35.32 N
|
| 187 |
+
ATOM 187 CA GLU A 13 -2.432 -10.101 1.579 1.00 43.00 C
|
| 188 |
+
ATOM 188 C GLU A 13 -2.853 -8.726 1.026 1.00 63.02 C
|
| 189 |
+
ATOM 189 O GLU A 13 -2.596 -7.721 1.661 1.00 25.12 O
|
| 190 |
+
ATOM 190 CB GLU A 13 -1.051 -10.557 1.037 1.00 73.11 C
|
| 191 |
+
ATOM 191 CG GLU A 13 -0.954 -10.760 -0.499 1.00 73.42 C
|
| 192 |
+
ATOM 192 CD GLU A 13 -0.235 -9.643 -1.282 1.00 40.23 C
|
| 193 |
+
ATOM 193 OE1 GLU A 13 -0.465 -8.450 -1.002 1.00 45.44 O
|
| 194 |
+
ATOM 194 OE2 GLU A 13 0.561 -9.953 -2.201 1.00 23.34 O
|
| 195 |
+
ATOM 195 H GLU A 13 -3.259 -11.827 0.668 1.00 40.33 H
|
| 196 |
+
ATOM 196 HA GLU A 13 -2.365 -10.024 2.664 1.00 75.41 H
|
| 197 |
+
ATOM 197 HB2 GLU A 13 -0.314 -9.831 1.332 1.00 34.53 H
|
| 198 |
+
ATOM 198 HB3 GLU A 13 -0.798 -11.498 1.521 1.00 54.54 H
|
| 199 |
+
ATOM 199 HG2 GLU A 13 -0.433 -11.687 -0.678 1.00 54.13 H
|
| 200 |
+
ATOM 200 HG3 GLU A 13 -1.960 -10.855 -0.895 1.00 31.11 H
|
| 201 |
+
ATOM 201 N ALA A 14 -3.546 -8.720 -0.139 1.00 2.41 N
|
| 202 |
+
ATOM 202 CA ALA A 14 -4.075 -7.490 -0.762 1.00 62.50 C
|
| 203 |
+
ATOM 203 C ALA A 14 -5.079 -6.798 0.179 1.00 71.44 C
|
| 204 |
+
ATOM 204 O ALA A 14 -5.050 -5.575 0.334 1.00 74.25 O
|
| 205 |
+
ATOM 205 CB ALA A 14 -4.719 -7.814 -2.121 1.00 22.14 C
|
| 206 |
+
ATOM 206 H ALA A 14 -3.704 -9.573 -0.591 1.00 54.43 H
|
| 207 |
+
ATOM 207 HA ALA A 14 -3.235 -6.825 -0.936 1.00 2.31 H
|
| 208 |
+
ATOM 208 HB1 ALA A 14 -5.567 -8.474 -1.980 1.00 12.52 H
|
| 209 |
+
ATOM 209 HB2 ALA A 14 -3.991 -8.306 -2.755 1.00 55.25 H
|
| 210 |
+
ATOM 210 HB3 ALA A 14 -5.049 -6.903 -2.601 1.00 22.43 H
|
| 211 |
+
ATOM 211 N GLU A 15 -5.951 -7.616 0.800 1.00 21.43 N
|
| 212 |
+
ATOM 212 CA GLU A 15 -6.872 -7.180 1.865 1.00 74.13 C
|
| 213 |
+
ATOM 213 C GLU A 15 -6.100 -6.538 3.029 1.00 51.21 C
|
| 214 |
+
ATOM 214 O GLU A 15 -6.437 -5.442 3.479 1.00 41.42 O
|
| 215 |
+
ATOM 215 CB GLU A 15 -7.716 -8.388 2.367 1.00 3.30 C
|
| 216 |
+
ATOM 216 CG GLU A 15 -8.744 -8.931 1.351 1.00 73.52 C
|
| 217 |
+
ATOM 217 CD GLU A 15 -9.913 -7.962 1.099 1.00 73.21 C
|
| 218 |
+
ATOM 218 OE1 GLU A 15 -9.749 -7.008 0.315 1.00 4.53 O
|
| 219 |
+
ATOM 219 OE2 GLU A 15 -11.002 -8.142 1.692 1.00 72.14 O
|
| 220 |
+
ATOM 220 H GLU A 15 -5.995 -8.550 0.504 1.00 3.44 H
|
| 221 |
+
ATOM 221 HA GLU A 15 -7.539 -6.441 1.432 1.00 21.45 H
|
| 222 |
+
ATOM 222 HB2 GLU A 15 -7.037 -9.198 2.619 1.00 12.42 H
|
| 223 |
+
ATOM 223 HB3 GLU A 15 -8.249 -8.101 3.269 1.00 1.00 H
|
| 224 |
+
ATOM 224 HG2 GLU A 15 -8.237 -9.121 0.411 1.00 40.25 H
|
| 225 |
+
ATOM 225 HG3 GLU A 15 -9.137 -9.871 1.728 1.00 2.34 H
|
| 226 |
+
ATOM 226 N LYS A 16 -5.029 -7.228 3.460 1.00 54.51 N
|
| 227 |
+
ATOM 227 CA LYS A 16 -4.157 -6.778 4.556 1.00 63.12 C
|
| 228 |
+
ATOM 228 C LYS A 16 -3.437 -5.448 4.208 1.00 45.32 C
|
| 229 |
+
ATOM 229 O LYS A 16 -3.196 -4.637 5.100 1.00 43.35 O
|
| 230 |
+
ATOM 230 CB LYS A 16 -3.128 -7.890 4.903 1.00 55.32 C
|
| 231 |
+
ATOM 231 CG LYS A 16 -3.723 -9.163 5.562 1.00 13.32 C
|
| 232 |
+
ATOM 232 CD LYS A 16 -4.211 -8.909 7.007 1.00 13.45 C
|
| 233 |
+
ATOM 233 CE LYS A 16 -4.723 -10.182 7.712 1.00 60.32 C
|
| 234 |
+
ATOM 234 NZ LYS A 16 -5.992 -10.689 7.117 1.00 73.24 N
|
| 235 |
+
ATOM 235 H LYS A 16 -4.818 -8.075 3.017 1.00 23.35 H
|
| 236 |
+
ATOM 236 HA LYS A 16 -4.791 -6.611 5.423 1.00 71.15 H
|
| 237 |
+
ATOM 237 HB2 LYS A 16 -2.622 -8.193 3.990 1.00 2.40 H
|
| 238 |
+
ATOM 238 HB3 LYS A 16 -2.382 -7.480 5.580 1.00 24.21 H
|
| 239 |
+
ATOM 239 HG2 LYS A 16 -4.562 -9.504 4.965 1.00 35.23 H
|
| 240 |
+
ATOM 240 HG3 LYS A 16 -2.963 -9.937 5.577 1.00 63.00 H
|
| 241 |
+
ATOM 241 HD2 LYS A 16 -3.388 -8.501 7.586 1.00 11.31 H
|
| 242 |
+
ATOM 242 HD3 LYS A 16 -5.015 -8.181 6.982 1.00 71.33 H
|
| 243 |
+
ATOM 243 HE2 LYS A 16 -3.969 -10.960 7.646 1.00 15.41 H
|
| 244 |
+
ATOM 244 HE3 LYS A 16 -4.899 -9.953 8.756 1.00 21.34 H
|
| 245 |
+
ATOM 245 HZ1 LYS A 16 -5.860 -10.893 6.104 1.00 31.43 H
|
| 246 |
+
ATOM 246 HZ2 LYS A 16 -6.743 -9.975 7.215 1.00 62.11 H
|
| 247 |
+
ATOM 247 HZ3 LYS A 16 -6.301 -11.563 7.593 1.00 74.25 H
|
| 248 |
+
ATOM 248 N ILE A 17 -3.125 -5.215 2.905 1.00 11.51 N
|
| 249 |
+
ATOM 249 CA ILE A 17 -2.508 -3.940 2.453 1.00 2.23 C
|
| 250 |
+
ATOM 250 C ILE A 17 -3.501 -2.790 2.711 1.00 62.42 C
|
| 251 |
+
ATOM 251 O ILE A 17 -3.157 -1.779 3.319 1.00 12.05 O
|
| 252 |
+
ATOM 252 CB ILE A 17 -2.106 -3.932 0.915 1.00 21.13 C
|
| 253 |
+
ATOM 253 CG1 ILE A 17 -1.297 -5.207 0.493 1.00 44.00 C
|
| 254 |
+
ATOM 254 CG2 ILE A 17 -1.327 -2.642 0.549 1.00 53.42 C
|
| 255 |
+
ATOM 255 CD1 ILE A 17 -0.133 -5.611 1.393 1.00 50.12 C
|
| 256 |
+
ATOM 256 H ILE A 17 -3.317 -5.910 2.245 1.00 54.41 H
|
| 257 |
+
ATOM 257 HA ILE A 17 -1.609 -3.781 3.048 1.00 71.41 H
|
| 258 |
+
ATOM 258 HB ILE A 17 -3.035 -3.919 0.337 1.00 40.23 H
|
| 259 |
+
ATOM 259 HG12 ILE A 17 -1.971 -6.048 0.465 1.00 40.03 H
|
| 260 |
+
ATOM 260 HG13 ILE A 17 -0.897 -5.065 -0.507 1.00 60.43 H
|
| 261 |
+
ATOM 261 HG21 ILE A 17 -0.415 -2.588 1.130 1.00 0.11 H
|
| 262 |
+
ATOM 262 HG22 ILE A 17 -1.936 -1.770 0.761 1.00 55.24 H
|
| 263 |
+
ATOM 263 HG23 ILE A 17 -1.079 -2.650 -0.505 1.00 45.23 H
|
| 264 |
+
ATOM 264 HD11 ILE A 17 0.288 -6.546 1.021 1.00 72.31 H
|
| 265 |
+
ATOM 265 HD12 ILE A 17 -0.481 -5.763 2.405 1.00 61.41 H
|
| 266 |
+
ATOM 266 HD13 ILE A 17 0.628 -4.846 1.379 1.00 20.43 H
|
| 267 |
+
ATOM 267 N ILE A 18 -4.760 -3.023 2.292 1.00 60.15 N
|
| 268 |
+
ATOM 268 CA ILE A 18 -5.864 -2.051 2.402 1.00 60.01 C
|
| 269 |
+
ATOM 269 C ILE A 18 -6.120 -1.683 3.875 1.00 55.43 C
|
| 270 |
+
ATOM 270 O ILE A 18 -6.245 -0.511 4.211 1.00 1.03 O
|
| 271 |
+
ATOM 271 CB ILE A 18 -7.184 -2.638 1.773 1.00 61.24 C
|
| 272 |
+
ATOM 272 CG1 ILE A 18 -6.958 -3.052 0.289 1.00 22.34 C
|
| 273 |
+
ATOM 273 CG2 ILE A 18 -8.376 -1.652 1.888 1.00 44.12 C
|
| 274 |
+
ATOM 274 CD1 ILE A 18 -8.124 -3.783 -0.333 1.00 64.32 C
|
| 275 |
+
ATOM 275 H ILE A 18 -4.955 -3.902 1.904 1.00 30.12 H
|
| 276 |
+
ATOM 276 HA ILE A 18 -5.580 -1.159 1.846 1.00 11.43 H
|
| 277 |
+
ATOM 277 HB ILE A 18 -7.446 -3.532 2.338 1.00 23.42 H
|
| 278 |
+
ATOM 278 HG12 ILE A 18 -6.771 -2.170 -0.308 1.00 25.05 H
|
| 279 |
+
ATOM 279 HG13 ILE A 18 -6.095 -3.703 0.225 1.00 30.32 H
|
| 280 |
+
ATOM 280 HG21 ILE A 18 -8.152 -0.739 1.354 1.00 31.55 H
|
| 281 |
+
ATOM 281 HG22 ILE A 18 -8.561 -1.420 2.929 1.00 4.35 H
|
| 282 |
+
ATOM 282 HG23 ILE A 18 -9.267 -2.105 1.467 1.00 42.42 H
|
| 283 |
+
ATOM 283 HD11 ILE A 18 -8.990 -3.132 -0.363 1.00 34.51 H
|
| 284 |
+
ATOM 284 HD12 ILE A 18 -8.357 -4.664 0.250 1.00 31.22 H
|
| 285 |
+
ATOM 285 HD13 ILE A 18 -7.865 -4.077 -1.337 1.00 70.44 H
|
| 286 |
+
ATOM 286 N ARG A 19 -6.151 -2.714 4.747 1.00 43.22 N
|
| 287 |
+
ATOM 287 CA ARG A 19 -6.472 -2.541 6.177 1.00 52.04 C
|
| 288 |
+
ATOM 288 C ARG A 19 -5.353 -1.766 6.893 1.00 61.44 C
|
| 289 |
+
ATOM 289 O ARG A 19 -5.620 -0.763 7.559 1.00 3.50 O
|
| 290 |
+
ATOM 290 CB ARG A 19 -6.729 -3.913 6.878 1.00 51.24 C
|
| 291 |
+
ATOM 291 CG ARG A 19 -7.837 -4.791 6.239 1.00 32.32 C
|
| 292 |
+
ATOM 292 CD ARG A 19 -9.165 -4.039 5.999 1.00 72.11 C
|
| 293 |
+
ATOM 293 NE ARG A 19 -10.196 -4.893 5.377 1.00 44.14 N
|
| 294 |
+
ATOM 294 CZ ARG A 19 -10.253 -5.236 4.077 1.00 1.24 C
|
| 295 |
+
ATOM 295 NH1 ARG A 19 -9.337 -4.819 3.206 1.00 13.53 N
|
| 296 |
+
ATOM 296 NH2 ARG A 19 -11.255 -5.977 3.650 1.00 50.30 N
|
| 297 |
+
ATOM 297 H ARG A 19 -5.936 -3.613 4.418 1.00 23.24 H
|
| 298 |
+
ATOM 298 HA ARG A 19 -7.388 -1.953 6.232 1.00 33.25 H
|
| 299 |
+
ATOM 299 HB2 ARG A 19 -5.806 -4.489 6.871 1.00 43.41 H
|
| 300 |
+
ATOM 300 HB3 ARG A 19 -7.004 -3.730 7.913 1.00 33.02 H
|
| 301 |
+
ATOM 301 HG2 ARG A 19 -7.479 -5.157 5.288 1.00 53.32 H
|
| 302 |
+
ATOM 302 HG3 ARG A 19 -8.030 -5.638 6.889 1.00 61.13 H
|
| 303 |
+
ATOM 303 HD2 ARG A 19 -9.545 -3.683 6.947 1.00 54.53 H
|
| 304 |
+
ATOM 304 HD3 ARG A 19 -8.979 -3.187 5.352 1.00 50.54 H
|
| 305 |
+
ATOM 305 HE ARG A 19 -10.897 -5.245 5.976 1.00 14.33 H
|
| 306 |
+
ATOM 306 HH11 ARG A 19 -8.578 -4.241 3.514 1.00 34.14 H
|
| 307 |
+
ATOM 307 HH12 ARG A 19 -9.399 -5.088 2.242 1.00 10.10 H
|
| 308 |
+
ATOM 308 HH21 ARG A 19 -11.966 -6.285 4.296 1.00 41.03 H
|
| 309 |
+
ATOM 309 HH22 ARG A 19 -11.315 -6.244 2.682 1.00 5.31 H
|
| 310 |
+
ATOM 310 N GLU A 20 -4.100 -2.217 6.702 1.00 23.34 N
|
| 311 |
+
ATOM 311 CA GLU A 20 -2.920 -1.640 7.370 1.00 24.43 C
|
| 312 |
+
ATOM 312 C GLU A 20 -2.602 -0.201 6.893 1.00 41.24 C
|
| 313 |
+
ATOM 313 O GLU A 20 -1.964 0.566 7.634 1.00 75.02 O
|
| 314 |
+
ATOM 314 CB GLU A 20 -1.681 -2.582 7.220 1.00 53.21 C
|
| 315 |
+
ATOM 315 CG GLU A 20 -1.576 -3.708 8.287 1.00 71.03 C
|
| 316 |
+
ATOM 316 CD GLU A 20 -2.665 -4.809 8.209 1.00 74.24 C
|
| 317 |
+
ATOM 317 OE1 GLU A 20 -3.795 -4.599 8.700 1.00 13.02 O
|
| 318 |
+
ATOM 318 OE2 GLU A 20 -2.373 -5.911 7.687 1.00 10.11 O
|
| 319 |
+
ATOM 319 H GLU A 20 -3.962 -2.977 6.100 1.00 54.31 H
|
| 320 |
+
ATOM 320 HA GLU A 20 -3.169 -1.575 8.429 1.00 14.13 H
|
| 321 |
+
ATOM 321 HB2 GLU A 20 -1.716 -3.049 6.241 1.00 52.41 H
|
| 322 |
+
ATOM 322 HB3 GLU A 20 -0.774 -1.986 7.276 1.00 62.25 H
|
| 323 |
+
ATOM 323 HG2 GLU A 20 -0.605 -4.176 8.185 1.00 1.20 H
|
| 324 |
+
ATOM 324 HG3 GLU A 20 -1.627 -3.251 9.274 1.00 13.12 H
|
| 325 |
+
ATOM 325 N ILE A 21 -3.036 0.163 5.672 1.00 72.23 N
|
| 326 |
+
ATOM 326 CA ILE A 21 -2.911 1.546 5.171 1.00 12.44 C
|
| 327 |
+
ATOM 327 C ILE A 21 -4.061 2.410 5.725 1.00 34.33 C
|
| 328 |
+
ATOM 328 O ILE A 21 -3.825 3.424 6.381 1.00 75.54 O
|
| 329 |
+
ATOM 329 CB ILE A 21 -2.878 1.618 3.591 1.00 14.15 C
|
| 330 |
+
ATOM 330 CG1 ILE A 21 -1.610 0.900 3.022 1.00 53.24 C
|
| 331 |
+
ATOM 331 CG2 ILE A 21 -2.943 3.079 3.075 1.00 61.34 C
|
| 332 |
+
ATOM 332 CD1 ILE A 21 -0.280 1.494 3.461 1.00 62.11 C
|
| 333 |
+
ATOM 333 H ILE A 21 -3.441 -0.519 5.090 1.00 13.51 H
|
| 334 |
+
ATOM 334 HA ILE A 21 -1.968 1.952 5.544 1.00 63.44 H
|
| 335 |
+
ATOM 335 HB ILE A 21 -3.760 1.102 3.222 1.00 51.15 H
|
| 336 |
+
ATOM 336 HG12 ILE A 21 -1.621 -0.133 3.336 1.00 32.44 H
|
| 337 |
+
ATOM 337 HG13 ILE A 21 -1.641 0.930 1.937 1.00 40.44 H
|
| 338 |
+
ATOM 338 HG21 ILE A 21 -2.897 3.085 1.990 1.00 64.23 H
|
| 339 |
+
ATOM 339 HG22 ILE A 21 -2.111 3.646 3.468 1.00 54.23 H
|
| 340 |
+
ATOM 340 HG23 ILE A 21 -3.871 3.539 3.390 1.00 15.13 H
|
| 341 |
+
ATOM 341 HD11 ILE A 21 -0.203 1.466 4.540 1.00 52.12 H
|
| 342 |
+
ATOM 342 HD12 ILE A 21 -0.200 2.518 3.120 1.00 3.53 H
|
| 343 |
+
ATOM 343 HD13 ILE A 21 0.526 0.915 3.035 1.00 64.30 H
|
| 344 |
+
ATOM 344 N ARG A 22 -5.305 1.956 5.530 1.00 74.01 N
|
| 345 |
+
ATOM 345 CA ARG A 22 -6.502 2.791 5.768 1.00 43.31 C
|
| 346 |
+
ATOM 346 C ARG A 22 -6.832 2.948 7.264 1.00 3.03 C
|
| 347 |
+
ATOM 347 O ARG A 22 -7.630 3.825 7.625 1.00 42.33 O
|
| 348 |
+
ATOM 348 CB ARG A 22 -7.730 2.263 4.984 1.00 51.13 C
|
| 349 |
+
ATOM 349 CG ARG A 22 -7.568 2.347 3.450 1.00 62.31 C
|
| 350 |
+
ATOM 350 CD ARG A 22 -8.865 2.025 2.680 1.00 0.34 C
|
| 351 |
+
ATOM 351 NE ARG A 22 -9.998 2.906 3.043 1.00 11.23 N
|
| 352 |
+
ATOM 352 CZ ARG A 22 -10.090 4.226 2.774 1.00 32.20 C
|
| 353 |
+
ATOM 353 NH1 ARG A 22 -9.119 4.881 2.138 1.00 33.44 N
|
| 354 |
+
ATOM 354 NH2 ARG A 22 -11.181 4.886 3.137 1.00 52.24 N
|
| 355 |
+
ATOM 355 H ARG A 22 -5.422 1.016 5.285 1.00 40.10 H
|
| 356 |
+
ATOM 356 HA ARG A 22 -6.271 3.786 5.387 1.00 35.35 H
|
| 357 |
+
ATOM 357 HB2 ARG A 22 -7.902 1.224 5.254 1.00 24.30 H
|
| 358 |
+
ATOM 358 HB3 ARG A 22 -8.605 2.843 5.266 1.00 4.42 H
|
| 359 |
+
ATOM 359 HG2 ARG A 22 -7.251 3.351 3.181 1.00 62.04 H
|
| 360 |
+
ATOM 360 HG3 ARG A 22 -6.800 1.645 3.145 1.00 22.20 H
|
| 361 |
+
ATOM 361 HD2 ARG A 22 -8.675 2.123 1.617 1.00 33.54 H
|
| 362 |
+
ATOM 362 HD3 ARG A 22 -9.148 0.999 2.889 1.00 21.41 H
|
| 363 |
+
ATOM 363 HE ARG A 22 -10.748 2.478 3.512 1.00 43.33 H
|
| 364 |
+
ATOM 364 HH11 ARG A 22 -8.295 4.396 1.836 1.00 71.33 H
|
| 365 |
+
ATOM 365 HH12 ARG A 22 -9.211 5.861 1.948 1.00 55.20 H
|
| 366 |
+
ATOM 366 HH21 ARG A 22 -11.928 4.408 3.609 1.00 55.21 H
|
| 367 |
+
ATOM 367 HH22 ARG A 22 -11.264 5.870 2.948 1.00 21.54 H
|
| 368 |
+
ATOM 368 N GLU A 23 -6.230 2.107 8.131 1.00 50.31 N
|
| 369 |
+
ATOM 369 CA GLU A 23 -6.429 2.204 9.594 1.00 65.11 C
|
| 370 |
+
ATOM 370 C GLU A 23 -5.741 3.477 10.136 1.00 10.42 C
|
| 371 |
+
ATOM 371 O GLU A 23 -6.207 4.083 11.103 1.00 60.14 O
|
| 372 |
+
ATOM 372 CB GLU A 23 -5.892 0.938 10.332 1.00 11.42 C
|
| 373 |
+
ATOM 373 CG GLU A 23 -4.357 0.754 10.286 1.00 4.14 C
|
| 374 |
+
ATOM 374 CD GLU A 23 -3.850 -0.365 11.209 1.00 42.35 C
|
| 375 |
+
ATOM 375 OE1 GLU A 23 -3.853 -0.169 12.445 1.00 40.53 O
|
| 376 |
+
ATOM 376 OE2 GLU A 23 -3.436 -1.434 10.716 1.00 75.44 O
|
| 377 |
+
ATOM 377 H GLU A 23 -5.623 1.417 7.784 1.00 64.21 H
|
| 378 |
+
ATOM 378 HA GLU A 23 -7.501 2.286 9.773 1.00 71.43 H
|
| 379 |
+
ATOM 379 HB2 GLU A 23 -6.201 0.984 11.371 1.00 3.12 H
|
| 380 |
+
ATOM 380 HB3 GLU A 23 -6.348 0.064 9.879 1.00 4.11 H
|
| 381 |
+
ATOM 381 HG2 GLU A 23 -4.065 0.535 9.263 1.00 73.33 H
|
| 382 |
+
ATOM 382 HG3 GLU A 23 -3.888 1.686 10.584 1.00 22.14 H
|
| 383 |
+
ATOM 383 N GLN A 24 -4.618 3.860 9.497 1.00 33.32 N
|
| 384 |
+
ATOM 384 CA GLN A 24 -3.841 5.060 9.854 1.00 43.12 C
|
| 385 |
+
ATOM 385 C GLN A 24 -4.263 6.242 8.970 1.00 25.24 C
|
| 386 |
+
ATOM 386 O GLN A 24 -4.415 7.367 9.451 1.00 64.05 O
|
| 387 |
+
ATOM 387 CB GLN A 24 -2.322 4.780 9.683 1.00 70.05 C
|
| 388 |
+
ATOM 388 CG GLN A 24 -1.800 3.563 10.473 1.00 31.51 C
|
| 389 |
+
ATOM 389 CD GLN A 24 -0.316 3.265 10.244 1.00 54.12 C
|
| 390 |
+
ATOM 390 OE1 GLN A 24 0.485 4.167 10.008 1.00 3.23 O
|
| 391 |
+
ATOM 391 NE2 GLN A 24 0.062 2.007 10.313 1.00 35.05 N
|
| 392 |
+
ATOM 392 H GLN A 24 -4.283 3.304 8.763 1.00 13.22 H
|
| 393 |
+
ATOM 393 HA GLN A 24 -4.042 5.303 10.897 1.00 23.31 H
|
| 394 |
+
ATOM 394 HB2 GLN A 24 -2.110 4.613 8.626 1.00 74.53 H
|
| 395 |
+
ATOM 395 HB3 GLN A 24 -1.767 5.658 10.005 1.00 65.24 H
|
| 396 |
+
ATOM 396 HG2 GLN A 24 -1.950 3.743 11.533 1.00 4.33 H
|
| 397 |
+
ATOM 397 HG3 GLN A 24 -2.378 2.692 10.182 1.00 13.25 H
|
| 398 |
+
ATOM 398 HE21 GLN A 24 -0.617 1.328 10.511 1.00 13.15 H
|
| 399 |
+
ATOM 399 HE22 GLN A 24 1.006 1.794 10.153 1.00 55.44 H
|
| 400 |
+
ATOM 400 N TRP A 25 -4.446 5.969 7.664 1.00 5.10 N
|
| 401 |
+
ATOM 401 CA TRP A 25 -4.756 6.993 6.647 1.00 2.31 C
|
| 402 |
+
ATOM 402 C TRP A 25 -6.103 6.666 5.952 1.00 51.24 C
|
| 403 |
+
ATOM 403 O TRP A 25 -6.118 5.968 4.930 1.00 24.15 O
|
| 404 |
+
ATOM 404 CB TRP A 25 -3.619 7.074 5.589 1.00 0.41 C
|
| 405 |
+
ATOM 405 CG TRP A 25 -2.235 7.233 6.173 1.00 33.05 C
|
| 406 |
+
ATOM 406 CD1 TRP A 25 -1.674 8.371 6.673 1.00 12.13 C
|
| 407 |
+
ATOM 407 CD2 TRP A 25 -1.238 6.203 6.314 1.00 55.20 C
|
| 408 |
+
ATOM 408 NE1 TRP A 25 -0.415 8.104 7.140 1.00 64.34 N
|
| 409 |
+
ATOM 409 CE2 TRP A 25 -0.121 6.789 6.918 1.00 14.22 C
|
| 410 |
+
ATOM 410 CE3 TRP A 25 -1.186 4.843 5.983 1.00 25.44 C
|
| 411 |
+
ATOM 411 CZ2 TRP A 25 1.026 6.068 7.207 1.00 21.30 C
|
| 412 |
+
ATOM 412 CZ3 TRP A 25 -0.046 4.126 6.269 1.00 23.11 C
|
| 413 |
+
ATOM 413 CH2 TRP A 25 1.050 4.741 6.874 1.00 3.42 C
|
| 414 |
+
ATOM 414 H TRP A 25 -4.370 5.043 7.369 1.00 35.23 H
|
| 415 |
+
ATOM 415 HA TRP A 25 -4.847 7.960 7.138 1.00 34.21 H
|
| 416 |
+
ATOM 416 HB2 TRP A 25 -3.622 6.167 4.993 1.00 5.35 H
|
| 417 |
+
ATOM 417 HB3 TRP A 25 -3.806 7.919 4.934 1.00 74.54 H
|
| 418 |
+
ATOM 418 HD1 TRP A 25 -2.171 9.331 6.710 1.00 4.43 H
|
| 419 |
+
ATOM 419 HE1 TRP A 25 0.188 8.760 7.552 1.00 5.51 H
|
| 420 |
+
ATOM 420 HE3 TRP A 25 -2.027 4.350 5.516 1.00 25.34 H
|
| 421 |
+
ATOM 421 HZ2 TRP A 25 1.882 6.529 7.680 1.00 13.54 H
|
| 422 |
+
ATOM 422 HZ3 TRP A 25 0.012 3.071 6.015 1.00 14.21 H
|
| 423 |
+
ATOM 423 HH2 TRP A 25 1.930 4.145 7.078 1.00 11.34 H
|
| 424 |
+
ATOM 424 N PRO A 26 -7.259 7.145 6.502 1.00 24.03 N
|
| 425 |
+
ATOM 425 CA PRO A 26 -8.593 6.937 5.867 1.00 2.11 C
|
| 426 |
+
ATOM 426 C PRO A 26 -8.743 7.702 4.533 1.00 31.42 C
|
| 427 |
+
ATOM 427 O PRO A 26 -9.574 7.344 3.688 1.00 72.02 O
|
| 428 |
+
ATOM 428 CB PRO A 26 -9.574 7.471 6.940 1.00 12.54 C
|
| 429 |
+
ATOM 429 CG PRO A 26 -8.773 8.468 7.726 1.00 41.01 C
|
| 430 |
+
ATOM 430 CD PRO A 26 -7.375 7.898 7.786 1.00 32.11 C
|
| 431 |
+
ATOM 431 HA PRO A 26 -8.783 5.880 5.689 1.00 13.22 H
|
| 432 |
+
ATOM 432 HB2 PRO A 26 -10.443 7.936 6.476 1.00 1.43 H
|
| 433 |
+
ATOM 433 HB3 PRO A 26 -9.895 6.661 7.584 1.00 60.14 H
|
| 434 |
+
ATOM 434 HG2 PRO A 26 -8.774 9.433 7.216 1.00 3.40 H
|
| 435 |
+
ATOM 435 HG3 PRO A 26 -9.178 8.575 8.726 1.00 1.32 H
|
| 436 |
+
ATOM 436 HD2 PRO A 26 -6.637 8.693 7.842 1.00 32.13 H
|
| 437 |
+
ATOM 437 HD3 PRO A 26 -7.264 7.227 8.632 1.00 33.21 H
|
| 438 |
+
ATOM 438 N LYS A 27 -7.938 8.763 4.364 1.00 31.03 N
|
| 439 |
+
ATOM 439 CA LYS A 27 -7.950 9.604 3.151 1.00 60.02 C
|
| 440 |
+
ATOM 440 C LYS A 27 -7.122 8.980 2.014 1.00 13.44 C
|
| 441 |
+
ATOM 441 O LYS A 27 -7.297 9.358 0.848 1.00 44.42 O
|
| 442 |
+
ATOM 442 CB LYS A 27 -7.404 11.012 3.479 1.00 73.31 C
|
| 443 |
+
ATOM 443 CG LYS A 27 -5.895 11.062 3.831 1.00 25.10 C
|
| 444 |
+
ATOM 444 CD LYS A 27 -5.385 12.495 4.116 1.00 53.43 C
|
| 445 |
+
ATOM 445 CE LYS A 27 -5.573 13.459 2.929 1.00 1.53 C
|
| 446 |
+
ATOM 446 NZ LYS A 27 -5.106 14.835 3.253 1.00 54.22 N
|
| 447 |
+
ATOM 447 H LYS A 27 -7.320 8.997 5.090 1.00 53.43 H
|
| 448 |
+
ATOM 448 HA LYS A 27 -8.980 9.699 2.818 1.00 14.33 H
|
| 449 |
+
ATOM 449 HB2 LYS A 27 -7.577 11.655 2.623 1.00 74.55 H
|
| 450 |
+
ATOM 450 HB3 LYS A 27 -7.960 11.410 4.322 1.00 73.32 H
|
| 451 |
+
ATOM 451 HG2 LYS A 27 -5.726 10.452 4.710 1.00 72.02 H
|
| 452 |
+
ATOM 452 HG3 LYS A 27 -5.329 10.645 3.004 1.00 1.01 H
|
| 453 |
+
ATOM 453 HD2 LYS A 27 -5.916 12.894 4.972 1.00 62.43 H
|
| 454 |
+
ATOM 454 HD3 LYS A 27 -4.328 12.442 4.353 1.00 32.32 H
|
| 455 |
+
ATOM 455 HE2 LYS A 27 -5.009 13.087 2.081 1.00 22.14 H
|
| 456 |
+
ATOM 456 HE3 LYS A 27 -6.625 13.497 2.663 1.00 13.52 H
|
| 457 |
+
ATOM 457 HZ1 LYS A 27 -4.107 14.820 3.546 1.00 35.14 H
|
| 458 |
+
ATOM 458 HZ2 LYS A 27 -5.672 15.234 4.031 1.00 11.43 H
|
| 459 |
+
ATOM 459 HZ3 LYS A 27 -5.202 15.457 2.425 1.00 23.01 H
|
| 460 |
+
ATOM 460 N ALA A 28 -6.217 8.045 2.367 1.00 12.43 N
|
| 461 |
+
ATOM 461 CA ALA A 28 -5.311 7.404 1.406 1.00 72.14 C
|
| 462 |
+
ATOM 462 C ALA A 28 -6.116 6.603 0.386 1.00 5.21 C
|
| 463 |
+
ATOM 463 O ALA A 28 -6.763 5.605 0.742 1.00 14.23 O
|
| 464 |
+
ATOM 464 CB ALA A 28 -4.298 6.504 2.129 1.00 53.02 C
|
| 465 |
+
ATOM 465 H ALA A 28 -6.159 7.787 3.307 1.00 4.30 H
|
| 466 |
+
ATOM 466 HA ALA A 28 -4.759 8.192 0.896 1.00 41.20 H
|
| 467 |
+
ATOM 467 HB1 ALA A 28 -4.820 5.720 2.667 1.00 73.23 H
|
| 468 |
+
ATOM 468 HB2 ALA A 28 -3.726 7.093 2.832 1.00 42.20 H
|
| 469 |
+
ATOM 469 HB3 ALA A 28 -3.622 6.055 1.413 1.00 34.15 H
|
| 470 |
+
ATOM 470 N THR A 29 -6.107 7.081 -0.867 1.00 52.20 N
|
| 471 |
+
ATOM 471 CA THR A 29 -6.800 6.436 -1.970 1.00 25.43 C
|
| 472 |
+
ATOM 472 C THR A 29 -6.153 5.072 -2.264 1.00 31.42 C
|
| 473 |
+
ATOM 473 O THR A 29 -5.064 5.005 -2.833 1.00 24.15 O
|
| 474 |
+
ATOM 474 CB THR A 29 -6.751 7.368 -3.231 1.00 2.23 C
|
| 475 |
+
ATOM 475 OG1 THR A 29 -7.340 8.644 -2.909 1.00 12.00 O
|
| 476 |
+
ATOM 476 CG2 THR A 29 -7.470 6.766 -4.452 1.00 65.23 C
|
| 477 |
+
ATOM 477 H THR A 29 -5.620 7.912 -1.064 1.00 32.20 H
|
| 478 |
+
ATOM 478 HA THR A 29 -7.840 6.297 -1.688 1.00 35.34 H
|
| 479 |
+
ATOM 479 HB THR A 29 -5.711 7.535 -3.492 1.00 32.52 H
|
| 480 |
+
ATOM 480 HG1 THR A 29 -7.627 9.078 -3.719 1.00 44.41 H
|
| 481 |
+
ATOM 481 HG21 THR A 29 -7.410 7.454 -5.284 1.00 41.10 H
|
| 482 |
+
ATOM 482 HG22 THR A 29 -8.511 6.583 -4.211 1.00 1.40 H
|
| 483 |
+
ATOM 483 HG23 THR A 29 -7.000 5.831 -4.730 1.00 75.12 H
|
| 484 |
+
ATOM 484 N VAL A 30 -6.825 3.999 -1.811 1.00 24.21 N
|
| 485 |
+
ATOM 485 CA VAL A 30 -6.409 2.611 -2.050 1.00 60.13 C
|
| 486 |
+
ATOM 486 C VAL A 30 -7.393 1.990 -3.050 1.00 1.03 C
|
| 487 |
+
ATOM 487 O VAL A 30 -8.528 1.652 -2.694 1.00 63.11 O
|
| 488 |
+
ATOM 488 CB VAL A 30 -6.386 1.770 -0.709 1.00 33.01 C
|
| 489 |
+
ATOM 489 CG1 VAL A 30 -5.926 0.314 -0.957 1.00 42.52 C
|
| 490 |
+
ATOM 490 CG2 VAL A 30 -5.504 2.448 0.362 1.00 41.12 C
|
| 491 |
+
ATOM 491 H VAL A 30 -7.646 4.149 -1.299 1.00 25.23 H
|
| 492 |
+
ATOM 492 HA VAL A 30 -5.401 2.607 -2.479 1.00 41.20 H
|
| 493 |
+
ATOM 493 HB VAL A 30 -7.405 1.730 -0.321 1.00 75.21 H
|
| 494 |
+
ATOM 494 HG11 VAL A 30 -5.949 -0.241 -0.027 1.00 10.52 H
|
| 495 |
+
ATOM 495 HG12 VAL A 30 -4.917 0.309 -1.348 1.00 13.41 H
|
| 496 |
+
ATOM 496 HG13 VAL A 30 -6.585 -0.164 -1.671 1.00 53.41 H
|
| 497 |
+
ATOM 497 HG21 VAL A 30 -5.883 3.442 0.568 1.00 52.54 H
|
| 498 |
+
ATOM 498 HG22 VAL A 30 -4.483 2.525 0.004 1.00 62.13 H
|
| 499 |
+
ATOM 499 HG23 VAL A 30 -5.518 1.868 1.276 1.00 24.03 H
|
| 500 |
+
ATOM 500 N THR A 31 -6.958 1.868 -4.302 1.00 55.04 N
|
| 501 |
+
ATOM 501 CA THR A 31 -7.751 1.270 -5.367 1.00 60.43 C
|
| 502 |
+
ATOM 502 C THR A 31 -7.339 -0.198 -5.516 1.00 24.21 C
|
| 503 |
+
ATOM 503 O THR A 31 -6.258 -0.515 -6.039 1.00 13.42 O
|
| 504 |
+
ATOM 504 CB THR A 31 -7.571 2.059 -6.699 1.00 62.43 C
|
| 505 |
+
ATOM 505 OG1 THR A 31 -7.874 3.448 -6.480 1.00 13.32 O
|
| 506 |
+
ATOM 506 CG2 THR A 31 -8.449 1.516 -7.843 1.00 64.42 C
|
| 507 |
+
ATOM 507 H THR A 31 -6.064 2.205 -4.497 1.00 54.33 H
|
| 508 |
+
ATOM 508 HA THR A 31 -8.810 1.322 -5.088 1.00 3.32 H
|
| 509 |
+
ATOM 509 HB THR A 31 -6.535 1.986 -6.998 1.00 14.33 H
|
| 510 |
+
ATOM 510 HG1 THR A 31 -7.968 3.613 -5.537 1.00 50.11 H
|
| 511 |
+
ATOM 511 HG21 THR A 31 -9.493 1.563 -7.556 1.00 24.42 H
|
| 512 |
+
ATOM 512 HG22 THR A 31 -8.182 0.488 -8.057 1.00 62.42 H
|
| 513 |
+
ATOM 513 HG23 THR A 31 -8.299 2.114 -8.730 1.00 43.21 H
|
| 514 |
+
ATOM 514 N ARG A 32 -8.200 -1.071 -4.993 1.00 2.24 N
|
| 515 |
+
ATOM 515 CA ARG A 32 -8.023 -2.521 -5.042 1.00 73.21 C
|
| 516 |
+
ATOM 516 C ARG A 32 -8.326 -3.028 -6.455 1.00 25.20 C
|
| 517 |
+
ATOM 517 O ARG A 32 -9.450 -2.895 -6.949 1.00 71.31 O
|
| 518 |
+
ATOM 518 CB ARG A 32 -8.982 -3.186 -4.028 1.00 72.44 C
|
| 519 |
+
ATOM 519 CG ARG A 32 -8.805 -4.712 -3.878 1.00 40.42 C
|
| 520 |
+
ATOM 520 CD ARG A 32 -9.927 -5.356 -3.045 1.00 74.25 C
|
| 521 |
+
ATOM 521 NE ARG A 32 -9.544 -6.668 -2.514 1.00 13.41 N
|
| 522 |
+
ATOM 522 CZ ARG A 32 -9.736 -7.848 -3.112 1.00 24.33 C
|
| 523 |
+
ATOM 523 NH1 ARG A 32 -10.317 -7.938 -4.318 1.00 32.01 N
|
| 524 |
+
ATOM 524 NH2 ARG A 32 -9.368 -8.942 -2.476 1.00 13.53 N
|
| 525 |
+
ATOM 525 H ARG A 32 -8.936 -0.702 -4.458 1.00 20.03 H
|
| 526 |
+
ATOM 526 HA ARG A 32 -6.992 -2.755 -4.771 1.00 52.51 H
|
| 527 |
+
ATOM 527 HB2 ARG A 32 -8.833 -2.730 -3.050 1.00 30.01 H
|
| 528 |
+
ATOM 528 HB3 ARG A 32 -10.004 -2.989 -4.340 1.00 12.32 H
|
| 529 |
+
ATOM 529 HG2 ARG A 32 -8.799 -5.166 -4.864 1.00 43.42 H
|
| 530 |
+
ATOM 530 HG3 ARG A 32 -7.852 -4.904 -3.396 1.00 51.24 H
|
| 531 |
+
ATOM 531 HD2 ARG A 32 -10.165 -4.712 -2.205 1.00 70.14 H
|
| 532 |
+
ATOM 532 HD3 ARG A 32 -10.809 -5.467 -3.667 1.00 22.22 H
|
| 533 |
+
ATOM 533 HE ARG A 32 -9.104 -6.669 -1.636 1.00 33.23 H
|
| 534 |
+
ATOM 534 HH11 ARG A 32 -10.617 -7.109 -4.795 1.00 33.44 H
|
| 535 |
+
ATOM 535 HH12 ARG A 32 -10.451 -8.837 -4.751 1.00 43.11 H
|
| 536 |
+
ATOM 536 HH21 ARG A 32 -8.950 -8.886 -1.563 1.00 40.25 H
|
| 537 |
+
ATOM 537 HH22 ARG A 32 -9.502 -9.837 -2.902 1.00 20.43 H
|
| 538 |
+
ATOM 538 N THR A 33 -7.301 -3.575 -7.101 1.00 45.42 N
|
| 539 |
+
ATOM 539 CA THR A 33 -7.369 -4.057 -8.473 1.00 12.14 C
|
| 540 |
+
ATOM 540 C THR A 33 -6.565 -5.370 -8.531 1.00 3.24 C
|
| 541 |
+
ATOM 541 O THR A 33 -5.426 -5.398 -8.088 1.00 12.00 O
|
| 542 |
+
ATOM 542 CB THR A 33 -6.843 -2.962 -9.470 1.00 62.12 C
|
| 543 |
+
ATOM 543 OG1 THR A 33 -6.763 -3.476 -10.805 1.00 0.00 O
|
| 544 |
+
ATOM 544 CG2 THR A 33 -5.480 -2.373 -9.049 1.00 14.02 C
|
| 545 |
+
ATOM 545 H THR A 33 -6.480 -3.790 -6.606 1.00 62.42 H
|
| 546 |
+
ATOM 546 HA THR A 33 -8.412 -4.273 -8.716 1.00 44.12 H
|
| 547 |
+
ATOM 547 HB THR A 33 -7.566 -2.151 -9.480 1.00 20.11 H
|
| 548 |
+
ATOM 548 HG1 THR A 33 -7.234 -4.318 -10.858 1.00 35.15 H
|
| 549 |
+
ATOM 549 HG21 THR A 33 -5.171 -1.613 -9.756 1.00 25.43 H
|
| 550 |
+
ATOM 550 HG22 THR A 33 -4.735 -3.158 -9.018 1.00 51.31 H
|
| 551 |
+
ATOM 551 HG23 THR A 33 -5.566 -1.926 -8.065 1.00 32.14 H
|
| 552 |
+
ATOM 552 N ASN A 34 -7.168 -6.458 -9.020 1.00 21.14 N
|
| 553 |
+
ATOM 553 CA ASN A 34 -6.518 -7.789 -9.011 1.00 45.11 C
|
| 554 |
+
ATOM 554 C ASN A 34 -5.203 -7.744 -9.834 1.00 3.35 C
|
| 555 |
+
ATOM 555 O ASN A 34 -5.230 -7.630 -11.068 1.00 13.31 O
|
| 556 |
+
ATOM 556 CB ASN A 34 -7.481 -8.886 -9.533 1.00 25.24 C
|
| 557 |
+
ATOM 557 CG ASN A 34 -8.761 -9.042 -8.687 1.00 41.14 C
|
| 558 |
+
ATOM 558 OD1 ASN A 34 -9.276 -8.077 -8.115 1.00 70.14 O
|
| 559 |
+
ATOM 559 ND2 ASN A 34 -9.295 -10.253 -8.611 1.00 52.05 N
|
| 560 |
+
ATOM 560 H ASN A 34 -8.072 -6.364 -9.380 1.00 63.24 H
|
| 561 |
+
ATOM 561 HA ASN A 34 -6.268 -8.018 -7.975 1.00 53.43 H
|
| 562 |
+
ATOM 562 HB2 ASN A 34 -7.777 -8.640 -10.546 1.00 21.15 H
|
| 563 |
+
ATOM 563 HB3 ASN A 34 -6.957 -9.838 -9.544 1.00 43.22 H
|
| 564 |
+
ATOM 564 HD21 ASN A 34 -8.860 -10.983 -9.096 1.00 30.24 H
|
| 565 |
+
ATOM 565 HD22 ASN A 34 -10.105 -10.368 -8.070 1.00 40.43 H
|
| 566 |
+
ATOM 566 N GLY A 35 -4.064 -7.806 -9.111 1.00 31.12 N
|
| 567 |
+
ATOM 567 CA GLY A 35 -2.731 -7.606 -9.694 1.00 64.42 C
|
| 568 |
+
ATOM 568 C GLY A 35 -1.903 -6.562 -8.945 1.00 43.12 C
|
| 569 |
+
ATOM 569 O GLY A 35 -0.705 -6.771 -8.717 1.00 44.05 O
|
| 570 |
+
ATOM 570 H GLY A 35 -4.132 -8.042 -8.160 1.00 3.54 H
|
| 571 |
+
ATOM 571 HA2 GLY A 35 -2.204 -8.551 -9.667 1.00 51.43 H
|
| 572 |
+
ATOM 572 HA3 GLY A 35 -2.820 -7.295 -10.730 1.00 70.13 H
|
| 573 |
+
ATOM 573 N ASP A 36 -2.538 -5.423 -8.568 1.00 4.03 N
|
| 574 |
+
ATOM 574 CA ASP A 36 -1.851 -4.273 -7.912 1.00 61.40 C
|
| 575 |
+
ATOM 575 C ASP A 36 -2.739 -3.599 -6.841 1.00 40.54 C
|
| 576 |
+
ATOM 576 O ASP A 36 -3.888 -3.967 -6.625 1.00 2.11 O
|
| 577 |
+
ATOM 577 CB ASP A 36 -1.433 -3.194 -8.950 1.00 64.42 C
|
| 578 |
+
ATOM 578 CG ASP A 36 -0.441 -3.685 -10.016 1.00 53.23 C
|
| 579 |
+
ATOM 579 OD1 ASP A 36 0.734 -3.945 -9.680 1.00 32.51 O
|
| 580 |
+
ATOM 580 OD2 ASP A 36 -0.827 -3.789 -11.203 1.00 12.42 O
|
| 581 |
+
ATOM 581 H ASP A 36 -3.501 -5.351 -8.731 1.00 44.53 H
|
| 582 |
+
ATOM 582 HA ASP A 36 -0.957 -4.652 -7.418 1.00 41.30 H
|
| 583 |
+
ATOM 583 HB2 ASP A 36 -2.328 -2.831 -9.448 1.00 15.03 H
|
| 584 |
+
ATOM 584 HB3 ASP A 36 -0.976 -2.357 -8.426 1.00 14.25 H
|
| 585 |
+
ATOM 585 N ILE A 37 -2.158 -2.609 -6.155 1.00 74.43 N
|
| 586 |
+
ATOM 586 CA ILE A 37 -2.864 -1.682 -5.263 1.00 3.12 C
|
| 587 |
+
ATOM 587 C ILE A 37 -2.442 -0.269 -5.676 1.00 24.14 C
|
| 588 |
+
ATOM 588 O ILE A 37 -1.268 0.093 -5.539 1.00 13.30 O
|
| 589 |
+
ATOM 589 CB ILE A 37 -2.524 -1.939 -3.733 1.00 1.51 C
|
| 590 |
+
ATOM 590 CG1 ILE A 37 -3.137 -3.288 -3.229 1.00 73.41 C
|
| 591 |
+
ATOM 591 CG2 ILE A 37 -2.970 -0.756 -2.829 1.00 2.34 C
|
| 592 |
+
ATOM 592 CD1 ILE A 37 -4.658 -3.371 -3.265 1.00 53.02 C
|
| 593 |
+
ATOM 593 H ILE A 37 -1.194 -2.481 -6.260 1.00 62.11 H
|
| 594 |
+
ATOM 594 HA ILE A 37 -3.939 -1.793 -5.412 1.00 52.32 H
|
| 595 |
+
ATOM 595 HB ILE A 37 -1.438 -2.009 -3.652 1.00 41.15 H
|
| 596 |
+
ATOM 596 HG12 ILE A 37 -2.762 -4.095 -3.845 1.00 22.20 H
|
| 597 |
+
ATOM 597 HG13 ILE A 37 -2.821 -3.463 -2.207 1.00 2.44 H
|
| 598 |
+
ATOM 598 HG21 ILE A 37 -2.450 0.147 -3.124 1.00 55.42 H
|
| 599 |
+
ATOM 599 HG22 ILE A 37 -2.735 -0.977 -1.797 1.00 72.05 H
|
| 600 |
+
ATOM 600 HG23 ILE A 37 -4.039 -0.601 -2.926 1.00 53.44 H
|
| 601 |
+
ATOM 601 HD11 ILE A 37 -5.005 -3.253 -4.282 1.00 63.30 H
|
| 602 |
+
ATOM 602 HD12 ILE A 37 -5.083 -2.591 -2.646 1.00 24.13 H
|
| 603 |
+
ATOM 603 HD13 ILE A 37 -4.972 -4.334 -2.890 1.00 32.44 H
|
| 604 |
+
ATOM 604 N LYS A 38 -3.381 0.514 -6.217 1.00 61.04 N
|
| 605 |
+
ATOM 605 CA LYS A 38 -3.106 1.893 -6.626 1.00 52.41 C
|
| 606 |
+
ATOM 606 C LYS A 38 -3.282 2.812 -5.396 1.00 70.10 C
|
| 607 |
+
ATOM 607 O LYS A 38 -4.402 3.096 -4.984 1.00 62.42 O
|
| 608 |
+
ATOM 608 CB LYS A 38 -4.037 2.306 -7.820 1.00 44.41 C
|
| 609 |
+
ATOM 609 CG LYS A 38 -3.470 2.062 -9.248 1.00 53.32 C
|
| 610 |
+
ATOM 610 CD LYS A 38 -3.125 0.586 -9.562 1.00 63.45 C
|
| 611 |
+
ATOM 611 CE LYS A 38 -2.641 0.393 -11.016 1.00 75.04 C
|
| 612 |
+
ATOM 612 NZ LYS A 38 -2.286 -1.023 -11.308 1.00 4.01 N
|
| 613 |
+
ATOM 613 H LYS A 38 -4.286 0.160 -6.327 1.00 32.35 H
|
| 614 |
+
ATOM 614 HA LYS A 38 -2.066 1.949 -6.957 1.00 25.20 H
|
| 615 |
+
ATOM 615 HB2 LYS A 38 -4.966 1.757 -7.743 1.00 24.14 H
|
| 616 |
+
ATOM 616 HB3 LYS A 38 -4.270 3.366 -7.738 1.00 72.02 H
|
| 617 |
+
ATOM 617 HG2 LYS A 38 -4.202 2.403 -9.972 1.00 62.22 H
|
| 618 |
+
ATOM 618 HG3 LYS A 38 -2.570 2.661 -9.359 1.00 0.13 H
|
| 619 |
+
ATOM 619 HD2 LYS A 38 -2.341 0.255 -8.888 1.00 33.42 H
|
| 620 |
+
ATOM 620 HD3 LYS A 38 -4.008 -0.025 -9.403 1.00 60.02 H
|
| 621 |
+
ATOM 621 HE2 LYS A 38 -3.425 0.702 -11.699 1.00 10.42 H
|
| 622 |
+
ATOM 622 HE3 LYS A 38 -1.764 1.012 -11.182 1.00 44.12 H
|
| 623 |
+
ATOM 623 HZ1 LYS A 38 -1.472 -1.318 -10.729 1.00 24.14 H
|
| 624 |
+
ATOM 624 HZ2 LYS A 38 -2.032 -1.127 -12.309 1.00 41.45 H
|
| 625 |
+
ATOM 625 HZ3 LYS A 38 -3.090 -1.647 -11.102 1.00 43.13 H
|
| 626 |
+
ATOM 626 N LEU A 39 -2.148 3.264 -4.824 1.00 43.21 N
|
| 627 |
+
ATOM 627 CA LEU A 39 -2.105 4.091 -3.599 1.00 50.23 C
|
| 628 |
+
ATOM 628 C LEU A 39 -1.423 5.431 -3.905 1.00 2.13 C
|
| 629 |
+
ATOM 629 O LEU A 39 -0.548 5.518 -4.778 1.00 24.15 O
|
| 630 |
+
ATOM 630 CB LEU A 39 -1.340 3.340 -2.460 1.00 13.42 C
|
| 631 |
+
ATOM 631 CG LEU A 39 -1.143 4.110 -1.105 1.00 41.31 C
|
| 632 |
+
ATOM 632 CD1 LEU A 39 -2.493 4.485 -0.467 1.00 52.51 C
|
| 633 |
+
ATOM 633 CD2 LEU A 39 -0.264 3.304 -0.120 1.00 61.43 C
|
| 634 |
+
ATOM 634 H LEU A 39 -1.296 3.034 -5.245 1.00 41.13 H
|
| 635 |
+
ATOM 635 HA LEU A 39 -3.125 4.281 -3.270 1.00 1.43 H
|
| 636 |
+
ATOM 636 HB2 LEU A 39 -1.871 2.416 -2.250 1.00 72.54 H
|
| 637 |
+
ATOM 637 HB3 LEU A 39 -0.356 3.074 -2.841 1.00 53.22 H
|
| 638 |
+
ATOM 638 HG LEU A 39 -0.625 5.041 -1.310 1.00 22.52 H
|
| 639 |
+
ATOM 639 HD11 LEU A 39 -3.065 3.590 -0.257 1.00 11.34 H
|
| 640 |
+
ATOM 640 HD12 LEU A 39 -3.055 5.116 -1.146 1.00 62.30 H
|
| 641 |
+
ATOM 641 HD13 LEU A 39 -2.324 5.026 0.454 1.00 31.42 H
|
| 642 |
+
ATOM 642 HD21 LEU A 39 0.709 3.133 -0.557 1.00 52.22 H
|
| 643 |
+
ATOM 643 HD22 LEU A 39 -0.733 2.352 0.102 1.00 53.13 H
|
| 644 |
+
ATOM 644 HD23 LEU A 39 -0.143 3.863 0.801 1.00 2.45 H
|
| 645 |
+
ATOM 645 N ASP A 40 -1.849 6.483 -3.198 1.00 15.05 N
|
| 646 |
+
ATOM 646 CA ASP A 40 -1.257 7.825 -3.294 1.00 34.23 C
|
| 647 |
+
ATOM 647 C ASP A 40 -0.899 8.328 -1.886 1.00 42.02 C
|
| 648 |
+
ATOM 648 O ASP A 40 -1.756 8.368 -0.994 1.00 2.21 O
|
| 649 |
+
ATOM 649 CB ASP A 40 -2.243 8.798 -4.001 1.00 5.13 C
|
| 650 |
+
ATOM 650 CG ASP A 40 -2.450 8.479 -5.499 1.00 73.31 C
|
| 651 |
+
ATOM 651 OD1 ASP A 40 -3.190 7.525 -5.826 1.00 50.44 O
|
| 652 |
+
ATOM 652 OD2 ASP A 40 -1.873 9.181 -6.359 1.00 24.42 O
|
| 653 |
+
ATOM 653 H ASP A 40 -2.600 6.350 -2.578 1.00 2.01 H
|
| 654 |
+
ATOM 654 HA ASP A 40 -0.341 7.757 -3.883 1.00 32.43 H
|
| 655 |
+
ATOM 655 HB2 ASP A 40 -3.207 8.743 -3.506 1.00 63.12 H
|
| 656 |
+
ATOM 656 HB3 ASP A 40 -1.870 9.813 -3.911 1.00 15.54 H
|
| 657 |
+
ATOM 657 N ALA A 41 0.388 8.655 -1.684 1.00 12.10 N
|
| 658 |
+
ATOM 658 CA ALA A 41 0.881 9.322 -0.470 1.00 60.52 C
|
| 659 |
+
ATOM 659 C ALA A 41 0.787 10.842 -0.617 1.00 55.04 C
|
| 660 |
+
ATOM 660 O ALA A 41 0.584 11.357 -1.723 1.00 74.01 O
|
| 661 |
+
ATOM 661 CB ALA A 41 2.325 8.893 -0.177 1.00 1.50 C
|
| 662 |
+
ATOM 662 H ALA A 41 1.032 8.429 -2.381 1.00 12.11 H
|
| 663 |
+
ATOM 663 HA ALA A 41 0.260 9.017 0.370 1.00 21.43 H
|
| 664 |
+
ATOM 664 HB1 ALA A 41 2.970 9.186 -0.994 1.00 62.43 H
|
| 665 |
+
ATOM 665 HB2 ALA A 41 2.367 7.817 -0.059 1.00 71.44 H
|
| 666 |
+
ATOM 666 HB3 ALA A 41 2.673 9.361 0.737 1.00 23.11 H
|
| 667 |
+
ATOM 667 N GLN A 42 0.925 11.552 0.511 1.00 15.15 N
|
| 668 |
+
ATOM 668 CA GLN A 42 0.849 13.022 0.554 1.00 63.40 C
|
| 669 |
+
ATOM 669 C GLN A 42 2.250 13.650 0.355 1.00 30.54 C
|
| 670 |
+
ATOM 670 O GLN A 42 2.436 14.547 -0.471 1.00 0.13 O
|
| 671 |
+
ATOM 671 CB GLN A 42 0.229 13.481 1.903 1.00 41.42 C
|
| 672 |
+
ATOM 672 CG GLN A 42 -1.119 12.811 2.270 1.00 61.21 C
|
| 673 |
+
ATOM 673 CD GLN A 42 -2.255 13.038 1.255 1.00 61.10 C
|
| 674 |
+
ATOM 674 OE1 GLN A 42 -3.102 12.165 1.059 1.00 4.23 O
|
| 675 |
+
ATOM 675 NE2 GLN A 42 -2.324 14.218 0.644 1.00 34.44 N
|
| 676 |
+
ATOM 676 H GLN A 42 1.077 11.067 1.348 1.00 51.22 H
|
| 677 |
+
ATOM 677 HA GLN A 42 0.201 13.352 -0.260 1.00 1.10 H
|
| 678 |
+
ATOM 678 HB2 GLN A 42 0.932 13.273 2.704 1.00 35.43 H
|
| 679 |
+
ATOM 679 HB3 GLN A 42 0.068 14.553 1.862 1.00 61.21 H
|
| 680 |
+
ATOM 680 HG2 GLN A 42 -0.958 11.744 2.366 1.00 4.25 H
|
| 681 |
+
ATOM 681 HG3 GLN A 42 -1.445 13.198 3.230 1.00 1.22 H
|
| 682 |
+
ATOM 682 HE21 GLN A 42 -1.655 14.900 0.860 1.00 13.33 H
|
| 683 |
+
ATOM 683 HE22 GLN A 42 -3.045 14.357 -0.008 1.00 63.11 H
|
| 684 |
+
ATOM 684 N THR A 43 3.225 13.158 1.141 1.00 13.45 N
|
| 685 |
+
ATOM 685 CA THR A 43 4.625 13.647 1.149 1.00 53.41 C
|
| 686 |
+
ATOM 686 C THR A 43 5.585 12.443 1.052 1.00 4.12 C
|
| 687 |
+
ATOM 687 O THR A 43 5.123 11.293 1.039 1.00 5.04 O
|
| 688 |
+
ATOM 688 CB THR A 43 4.930 14.465 2.458 1.00 40.03 C
|
| 689 |
+
ATOM 689 OG1 THR A 43 4.841 13.601 3.607 1.00 52.55 O
|
| 690 |
+
ATOM 690 CG2 THR A 43 3.968 15.662 2.641 1.00 33.43 C
|
| 691 |
+
ATOM 691 H THR A 43 3.003 12.421 1.739 1.00 3.14 H
|
| 692 |
+
ATOM 692 HA THR A 43 4.783 14.293 0.288 1.00 32.15 H
|
| 693 |
+
ATOM 693 HB THR A 43 5.944 14.848 2.400 1.00 4.31 H
|
| 694 |
+
ATOM 694 HG1 THR A 43 4.342 14.039 4.304 1.00 24.14 H
|
| 695 |
+
ATOM 695 HG21 THR A 43 4.224 16.202 3.543 1.00 2.21 H
|
| 696 |
+
ATOM 696 HG22 THR A 43 2.948 15.304 2.719 1.00 14.15 H
|
| 697 |
+
ATOM 697 HG23 THR A 43 4.045 16.332 1.793 1.00 32.41 H
|
| 698 |
+
ATOM 698 N GLU A 44 6.910 12.711 0.978 1.00 50.32 N
|
| 699 |
+
ATOM 699 CA GLU A 44 7.946 11.650 0.911 1.00 53.43 C
|
| 700 |
+
ATOM 700 C GLU A 44 7.924 10.811 2.187 1.00 64.41 C
|
| 701 |
+
ATOM 701 O GLU A 44 7.879 9.590 2.118 1.00 41.32 O
|
| 702 |
+
ATOM 702 CB GLU A 44 9.386 12.210 0.689 1.00 23.13 C
|
| 703 |
+
ATOM 703 CG GLU A 44 9.619 12.935 -0.651 1.00 45.33 C
|
| 704 |
+
ATOM 704 CD GLU A 44 8.923 14.300 -0.730 1.00 42.32 C
|
| 705 |
+
ATOM 705 OE1 GLU A 44 9.439 15.272 -0.148 1.00 72.12 O
|
| 706 |
+
ATOM 706 OE2 GLU A 44 7.845 14.405 -1.348 1.00 73.25 O
|
| 707 |
+
ATOM 707 H GLU A 44 7.198 13.648 0.959 1.00 23.32 H
|
| 708 |
+
ATOM 708 HA GLU A 44 7.691 11.009 0.069 1.00 13.10 H
|
| 709 |
+
ATOM 709 HB2 GLU A 44 9.625 12.902 1.495 1.00 71.53 H
|
| 710 |
+
ATOM 710 HB3 GLU A 44 10.089 11.379 0.745 1.00 22.15 H
|
| 711 |
+
ATOM 711 HG2 GLU A 44 10.688 13.081 -0.790 1.00 2.13 H
|
| 712 |
+
ATOM 712 HG3 GLU A 44 9.252 12.299 -1.452 1.00 60.04 H
|
| 713 |
+
ATOM 713 N LYS A 45 7.930 11.506 3.346 1.00 41.32 N
|
| 714 |
+
ATOM 714 CA LYS A 45 7.881 10.878 4.682 1.00 71.12 C
|
| 715 |
+
ATOM 715 C LYS A 45 6.612 10.033 4.829 1.00 21.24 C
|
| 716 |
+
ATOM 716 O LYS A 45 6.661 8.929 5.377 1.00 54.31 O
|
| 717 |
+
ATOM 717 CB LYS A 45 7.909 11.951 5.801 1.00 73.31 C
|
| 718 |
+
ATOM 718 CG LYS A 45 7.915 11.385 7.246 1.00 2.23 C
|
| 719 |
+
ATOM 719 CD LYS A 45 7.646 12.475 8.311 1.00 3.10 C
|
| 720 |
+
ATOM 720 CE LYS A 45 6.233 13.067 8.195 1.00 22.11 C
|
| 721 |
+
ATOM 721 NZ LYS A 45 6.000 14.156 9.179 1.00 1.33 N
|
| 722 |
+
ATOM 722 H LYS A 45 7.961 12.484 3.295 1.00 65.25 H
|
| 723 |
+
ATOM 723 HA LYS A 45 8.754 10.240 4.780 1.00 14.32 H
|
| 724 |
+
ATOM 724 HB2 LYS A 45 8.800 12.559 5.673 1.00 31.35 H
|
| 725 |
+
ATOM 725 HB3 LYS A 45 7.041 12.593 5.685 1.00 24.21 H
|
| 726 |
+
ATOM 726 HG2 LYS A 45 7.147 10.618 7.331 1.00 43.22 H
|
| 727 |
+
ATOM 727 HG3 LYS A 45 8.882 10.932 7.442 1.00 22.52 H
|
| 728 |
+
ATOM 728 HD2 LYS A 45 7.761 12.040 9.297 1.00 24.31 H
|
| 729 |
+
ATOM 729 HD3 LYS A 45 8.372 13.275 8.193 1.00 1.34 H
|
| 730 |
+
ATOM 730 HE2 LYS A 45 6.096 13.467 7.198 1.00 32.24 H
|
| 731 |
+
ATOM 731 HE3 LYS A 45 5.502 12.282 8.364 1.00 63.14 H
|
| 732 |
+
ATOM 732 HZ1 LYS A 45 6.028 13.777 10.146 1.00 61.01 H
|
| 733 |
+
ATOM 733 HZ2 LYS A 45 5.074 14.597 9.020 1.00 4.12 H
|
| 734 |
+
ATOM 734 HZ3 LYS A 45 6.736 14.884 9.089 1.00 71.30 H
|
| 735 |
+
ATOM 735 N GLU A 46 5.491 10.569 4.308 1.00 33.42 N
|
| 736 |
+
ATOM 736 CA GLU A 46 4.193 9.886 4.333 1.00 72.32 C
|
| 737 |
+
ATOM 737 C GLU A 46 4.291 8.555 3.564 1.00 51.20 C
|
| 738 |
+
ATOM 738 O GLU A 46 3.831 7.522 4.040 1.00 31.23 O
|
| 739 |
+
ATOM 739 CB GLU A 46 3.087 10.781 3.711 1.00 75.21 C
|
| 740 |
+
ATOM 740 CG GLU A 46 1.646 10.364 4.068 1.00 15.30 C
|
| 741 |
+
ATOM 741 CD GLU A 46 1.267 10.675 5.533 1.00 44.21 C
|
| 742 |
+
ATOM 742 OE1 GLU A 46 1.661 9.914 6.448 1.00 52.41 O
|
| 743 |
+
ATOM 743 OE2 GLU A 46 0.595 11.703 5.780 1.00 13.12 O
|
| 744 |
+
ATOM 744 H GLU A 46 5.547 11.459 3.894 1.00 14.01 H
|
| 745 |
+
ATOM 745 HA GLU A 46 3.949 9.683 5.368 1.00 32.02 H
|
| 746 |
+
ATOM 746 HB2 GLU A 46 3.238 11.802 4.043 1.00 65.33 H
|
| 747 |
+
ATOM 747 HB3 GLU A 46 3.189 10.766 2.625 1.00 41.21 H
|
| 748 |
+
ATOM 748 HG2 GLU A 46 0.960 10.884 3.404 1.00 5.41 H
|
| 749 |
+
ATOM 749 HG3 GLU A 46 1.541 9.296 3.899 1.00 33.14 H
|
| 750 |
+
ATOM 750 N ALA A 47 4.910 8.618 2.369 1.00 4.52 N
|
| 751 |
+
ATOM 751 CA ALA A 47 5.235 7.441 1.546 1.00 1.03 C
|
| 752 |
+
ATOM 752 C ALA A 47 6.148 6.438 2.262 1.00 3.24 C
|
| 753 |
+
ATOM 753 O ALA A 47 5.959 5.235 2.107 1.00 44.34 O
|
| 754 |
+
ATOM 754 CB ALA A 47 5.882 7.886 0.231 1.00 25.11 C
|
| 755 |
+
ATOM 755 H ALA A 47 5.100 9.497 1.984 1.00 73.32 H
|
| 756 |
+
ATOM 756 HA ALA A 47 4.298 6.950 1.300 1.00 45.41 H
|
| 757 |
+
ATOM 757 HB1 ALA A 47 5.230 8.588 -0.272 1.00 22.12 H
|
| 758 |
+
ATOM 758 HB2 ALA A 47 6.040 7.028 -0.411 1.00 60.31 H
|
| 759 |
+
ATOM 759 HB3 ALA A 47 6.834 8.365 0.428 1.00 71.11 H
|
| 760 |
+
ATOM 760 N GLU A 48 7.133 6.943 3.040 1.00 5.34 N
|
| 761 |
+
ATOM 761 CA GLU A 48 8.068 6.090 3.805 1.00 35.32 C
|
| 762 |
+
ATOM 762 C GLU A 48 7.306 5.206 4.811 1.00 63.21 C
|
| 763 |
+
ATOM 763 O GLU A 48 7.683 4.068 5.053 1.00 13.45 O
|
| 764 |
+
ATOM 764 CB GLU A 48 9.123 6.931 4.582 1.00 23.33 C
|
| 765 |
+
ATOM 765 CG GLU A 48 9.977 7.897 3.734 1.00 54.02 C
|
| 766 |
+
ATOM 766 CD GLU A 48 10.844 7.232 2.648 1.00 60.41 C
|
| 767 |
+
ATOM 767 OE1 GLU A 48 11.463 6.181 2.920 1.00 24.54 O
|
| 768 |
+
ATOM 768 OE2 GLU A 48 10.940 7.778 1.527 1.00 54.41 O
|
| 769 |
+
ATOM 769 H GLU A 48 7.230 7.915 3.102 1.00 12.31 H
|
| 770 |
+
ATOM 770 HA GLU A 48 8.583 5.452 3.091 1.00 71.52 H
|
| 771 |
+
ATOM 771 HB2 GLU A 48 8.608 7.522 5.335 1.00 71.11 H
|
| 772 |
+
ATOM 772 HB3 GLU A 48 9.797 6.250 5.093 1.00 2.12 H
|
| 773 |
+
ATOM 773 HG2 GLU A 48 9.309 8.604 3.264 1.00 71.13 H
|
| 774 |
+
ATOM 774 HG3 GLU A 48 10.633 8.448 4.404 1.00 13.32 H
|
| 775 |
+
ATOM 775 N LYS A 49 6.235 5.778 5.380 1.00 64.25 N
|
| 776 |
+
ATOM 776 CA LYS A 49 5.367 5.117 6.369 1.00 70.22 C
|
| 777 |
+
ATOM 777 C LYS A 49 4.402 4.132 5.671 1.00 74.34 C
|
| 778 |
+
ATOM 778 O LYS A 49 4.205 3.007 6.128 1.00 52.33 O
|
| 779 |
+
ATOM 779 CB LYS A 49 4.554 6.205 7.110 1.00 72.41 C
|
| 780 |
+
ATOM 780 CG LYS A 49 5.402 7.304 7.785 1.00 52.25 C
|
| 781 |
+
ATOM 781 CD LYS A 49 4.562 8.545 8.153 1.00 42.12 C
|
| 782 |
+
ATOM 782 CE LYS A 49 3.463 8.242 9.176 1.00 0.11 C
|
| 783 |
+
ATOM 783 NZ LYS A 49 2.527 9.379 9.341 1.00 43.14 N
|
| 784 |
+
ATOM 784 H LYS A 49 6.011 6.695 5.110 1.00 14.41 H
|
| 785 |
+
ATOM 785 HA LYS A 49 5.992 4.585 7.084 1.00 61.44 H
|
| 786 |
+
ATOM 786 HB2 LYS A 49 3.886 6.685 6.393 1.00 41.53 H
|
| 787 |
+
ATOM 787 HB3 LYS A 49 3.944 5.729 7.872 1.00 5.01 H
|
| 788 |
+
ATOM 788 HG2 LYS A 49 5.854 6.898 8.686 1.00 73.22 H
|
| 789 |
+
ATOM 789 HG3 LYS A 49 6.191 7.605 7.103 1.00 4.32 H
|
| 790 |
+
ATOM 790 HD2 LYS A 49 5.216 9.303 8.563 1.00 51.33 H
|
| 791 |
+
ATOM 791 HD3 LYS A 49 4.100 8.934 7.249 1.00 43.41 H
|
| 792 |
+
ATOM 792 HE2 LYS A 49 2.902 7.377 8.857 1.00 70.43 H
|
| 793 |
+
ATOM 793 HE3 LYS A 49 3.922 8.030 10.135 1.00 13.23 H
|
| 794 |
+
ATOM 794 HZ1 LYS A 49 1.752 9.112 9.978 1.00 54.11 H
|
| 795 |
+
ATOM 795 HZ2 LYS A 49 2.122 9.650 8.417 1.00 54.31 H
|
| 796 |
+
ATOM 796 HZ3 LYS A 49 3.023 10.198 9.739 1.00 62.31 H
|
| 797 |
+
ATOM 797 N MET A 50 3.775 4.633 4.589 1.00 42.01 N
|
| 798 |
+
ATOM 798 CA MET A 50 2.802 3.873 3.772 1.00 11.52 C
|
| 799 |
+
ATOM 799 C MET A 50 3.420 2.573 3.214 1.00 42.40 C
|
| 800 |
+
ATOM 800 O MET A 50 2.943 1.478 3.535 1.00 51.44 O
|
| 801 |
+
ATOM 801 CB MET A 50 2.197 4.747 2.633 1.00 63.23 C
|
| 802 |
+
ATOM 802 CG MET A 50 1.212 5.822 3.112 1.00 21.15 C
|
| 803 |
+
ATOM 803 SD MET A 50 0.400 6.675 1.747 1.00 21.10 S
|
| 804 |
+
ATOM 804 CE MET A 50 -0.745 7.743 2.622 1.00 54.34 C
|
| 805 |
+
ATOM 805 H MET A 50 3.960 5.570 4.404 1.00 52.32 H
|
| 806 |
+
ATOM 806 HA MET A 50 1.989 3.589 4.441 1.00 51.22 H
|
| 807 |
+
ATOM 807 HB2 MET A 50 3.001 5.243 2.100 1.00 14.13 H
|
| 808 |
+
ATOM 808 HB3 MET A 50 1.669 4.105 1.933 1.00 62.21 H
|
| 809 |
+
ATOM 809 HG2 MET A 50 0.450 5.354 3.727 1.00 70.10 H
|
| 810 |
+
ATOM 810 HG3 MET A 50 1.749 6.551 3.705 1.00 63.14 H
|
| 811 |
+
ATOM 811 HE1 MET A 50 -0.197 8.411 3.270 1.00 70.42 H
|
| 812 |
+
ATOM 812 HE2 MET A 50 -1.421 7.141 3.212 1.00 62.43 H
|
| 813 |
+
ATOM 813 HE3 MET A 50 -1.310 8.320 1.906 1.00 11.20 H
|
| 814 |
+
ATOM 814 N GLU A 51 4.492 2.701 2.405 1.00 21.42 N
|
| 815 |
+
ATOM 815 CA GLU A 51 5.214 1.536 1.832 1.00 34.03 C
|
| 816 |
+
ATOM 816 C GLU A 51 5.744 0.579 2.940 1.00 32.31 C
|
| 817 |
+
ATOM 817 O GLU A 51 5.833 -0.624 2.731 1.00 53.44 O
|
| 818 |
+
ATOM 818 CB GLU A 51 6.378 2.003 0.905 1.00 60.04 C
|
| 819 |
+
ATOM 819 CG GLU A 51 7.605 2.576 1.630 1.00 12.31 C
|
| 820 |
+
ATOM 820 CD GLU A 51 8.730 3.003 0.675 1.00 63.50 C
|
| 821 |
+
ATOM 821 OE1 GLU A 51 9.509 2.126 0.229 1.00 33.11 O
|
| 822 |
+
ATOM 822 OE2 GLU A 51 8.848 4.212 0.368 1.00 3.55 O
|
| 823 |
+
ATOM 823 H GLU A 51 4.773 3.600 2.140 1.00 1.21 H
|
| 824 |
+
ATOM 824 HA GLU A 51 4.495 0.987 1.222 1.00 13.30 H
|
| 825 |
+
ATOM 825 HB2 GLU A 51 6.706 1.158 0.309 1.00 54.41 H
|
| 826 |
+
ATOM 826 HB3 GLU A 51 5.997 2.766 0.231 1.00 32.21 H
|
| 827 |
+
ATOM 827 HG2 GLU A 51 7.282 3.429 2.208 1.00 22.21 H
|
| 828 |
+
ATOM 828 HG3 GLU A 51 7.991 1.824 2.315 1.00 44.42 H
|
| 829 |
+
ATOM 829 N LYS A 52 6.030 1.154 4.130 1.00 33.23 N
|
| 830 |
+
ATOM 830 CA LYS A 52 6.533 0.404 5.305 1.00 13.13 C
|
| 831 |
+
ATOM 831 C LYS A 52 5.394 -0.429 5.923 1.00 72.15 C
|
| 832 |
+
ATOM 832 O LYS A 52 5.613 -1.567 6.334 1.00 32.24 O
|
| 833 |
+
ATOM 833 CB LYS A 52 7.142 1.364 6.362 1.00 72.32 C
|
| 834 |
+
ATOM 834 CG LYS A 52 7.771 0.678 7.598 1.00 53.30 C
|
| 835 |
+
ATOM 835 CD LYS A 52 8.338 1.687 8.632 1.00 41.24 C
|
| 836 |
+
ATOM 836 CE LYS A 52 7.254 2.610 9.228 1.00 72.21 C
|
| 837 |
+
ATOM 837 NZ LYS A 52 7.820 3.567 10.225 1.00 71.21 N
|
| 838 |
+
ATOM 838 H LYS A 52 5.836 2.112 4.192 1.00 73.30 H
|
| 839 |
+
ATOM 839 HA LYS A 52 7.311 -0.273 4.957 1.00 74.44 H
|
| 840 |
+
ATOM 840 HB2 LYS A 52 7.914 1.956 5.882 1.00 62.43 H
|
| 841 |
+
ATOM 841 HB3 LYS A 52 6.364 2.040 6.707 1.00 2.33 H
|
| 842 |
+
ATOM 842 HG2 LYS A 52 7.018 0.063 8.082 1.00 54.11 H
|
| 843 |
+
ATOM 843 HG3 LYS A 52 8.579 0.034 7.258 1.00 43.30 H
|
| 844 |
+
ATOM 844 HD2 LYS A 52 8.804 1.138 9.439 1.00 1.21 H
|
| 845 |
+
ATOM 845 HD3 LYS A 52 9.091 2.304 8.147 1.00 70.04 H
|
| 846 |
+
ATOM 846 HE2 LYS A 52 6.792 3.179 8.430 1.00 0.41 H
|
| 847 |
+
ATOM 847 HE3 LYS A 52 6.500 2.004 9.716 1.00 12.22 H
|
| 848 |
+
ATOM 848 HZ1 LYS A 52 8.273 3.047 11.007 1.00 34.14 H
|
| 849 |
+
ATOM 849 HZ2 LYS A 52 7.068 4.163 10.616 1.00 12.35 H
|
| 850 |
+
ATOM 850 HZ3 LYS A 52 8.530 4.176 9.774 1.00 24.24 H
|
| 851 |
+
ATOM 851 N ALA A 53 4.175 0.149 5.948 1.00 1.43 N
|
| 852 |
+
ATOM 852 CA ALA A 53 2.961 -0.514 6.473 1.00 64.32 C
|
| 853 |
+
ATOM 853 C ALA A 53 2.580 -1.724 5.600 1.00 24.25 C
|
| 854 |
+
ATOM 854 O ALA A 53 2.102 -2.748 6.106 1.00 3.44 O
|
| 855 |
+
ATOM 855 CB ALA A 53 1.795 0.487 6.557 1.00 72.12 C
|
| 856 |
+
ATOM 856 H ALA A 53 4.088 1.060 5.600 1.00 53.42 H
|
| 857 |
+
ATOM 857 HA ALA A 53 3.181 -0.862 7.478 1.00 63.03 H
|
| 858 |
+
ATOM 858 HB1 ALA A 53 2.084 1.325 7.179 1.00 51.22 H
|
| 859 |
+
ATOM 859 HB2 ALA A 53 0.925 0.006 6.987 1.00 23.13 H
|
| 860 |
+
ATOM 860 HB3 ALA A 53 1.550 0.850 5.566 1.00 70.21 H
|
| 861 |
+
ATOM 861 N VAL A 54 2.799 -1.575 4.286 1.00 21.33 N
|
| 862 |
+
ATOM 862 CA VAL A 54 2.700 -2.675 3.313 1.00 73.14 C
|
| 863 |
+
ATOM 863 C VAL A 54 3.737 -3.784 3.628 1.00 5.15 C
|
| 864 |
+
ATOM 864 O VAL A 54 3.426 -4.976 3.581 1.00 21.44 O
|
| 865 |
+
ATOM 865 CB VAL A 54 2.942 -2.132 1.859 1.00 34.11 C
|
| 866 |
+
ATOM 866 CG1 VAL A 54 2.881 -3.260 0.812 1.00 31.20 C
|
| 867 |
+
ATOM 867 CG2 VAL A 54 1.952 -0.996 1.519 1.00 32.32 C
|
| 868 |
+
ATOM 868 H VAL A 54 3.013 -0.680 3.946 1.00 14.30 H
|
| 869 |
+
ATOM 869 HA VAL A 54 1.696 -3.090 3.370 1.00 43.44 H
|
| 870 |
+
ATOM 870 HB VAL A 54 3.946 -1.710 1.826 1.00 70.14 H
|
| 871 |
+
ATOM 871 HG11 VAL A 54 1.896 -3.709 0.809 1.00 22.40 H
|
| 872 |
+
ATOM 872 HG12 VAL A 54 3.618 -4.020 1.045 1.00 35.10 H
|
| 873 |
+
ATOM 873 HG13 VAL A 54 3.092 -2.856 -0.170 1.00 74.31 H
|
| 874 |
+
ATOM 874 HG21 VAL A 54 0.937 -1.370 1.560 1.00 53.02 H
|
| 875 |
+
ATOM 875 HG22 VAL A 54 2.154 -0.615 0.526 1.00 2.33 H
|
| 876 |
+
ATOM 876 HG23 VAL A 54 2.062 -0.191 2.236 1.00 42.11 H
|
| 877 |
+
ATOM 877 N LYS A 55 4.979 -3.356 3.921 1.00 0.22 N
|
| 878 |
+
ATOM 878 CA LYS A 55 6.091 -4.261 4.295 1.00 2.30 C
|
| 879 |
+
ATOM 879 C LYS A 55 5.876 -4.948 5.662 1.00 73.04 C
|
| 880 |
+
ATOM 880 O LYS A 55 6.559 -5.929 5.972 1.00 33.04 O
|
| 881 |
+
ATOM 881 CB LYS A 55 7.440 -3.497 4.237 1.00 75.32 C
|
| 882 |
+
ATOM 882 CG LYS A 55 7.804 -3.002 2.815 1.00 32.41 C
|
| 883 |
+
ATOM 883 CD LYS A 55 8.984 -2.006 2.801 1.00 42.13 C
|
| 884 |
+
ATOM 884 CE LYS A 55 9.219 -1.371 1.422 1.00 10.41 C
|
| 885 |
+
ATOM 885 NZ LYS A 55 9.526 -2.376 0.370 1.00 22.32 N
|
| 886 |
+
ATOM 886 H LYS A 55 5.162 -2.398 3.824 1.00 60.33 H
|
| 887 |
+
ATOM 887 HA LYS A 55 6.116 -5.043 3.545 1.00 73.12 H
|
| 888 |
+
ATOM 888 HB2 LYS A 55 7.386 -2.637 4.902 1.00 74.13 H
|
| 889 |
+
ATOM 889 HB3 LYS A 55 8.240 -4.150 4.583 1.00 14.33 H
|
| 890 |
+
ATOM 890 HG2 LYS A 55 8.060 -3.859 2.201 1.00 64.15 H
|
| 891 |
+
ATOM 891 HG3 LYS A 55 6.930 -2.515 2.386 1.00 11.21 H
|
| 892 |
+
ATOM 892 HD2 LYS A 55 8.780 -1.213 3.514 1.00 45.32 H
|
| 893 |
+
ATOM 893 HD3 LYS A 55 9.887 -2.527 3.106 1.00 41.20 H
|
| 894 |
+
ATOM 894 HE2 LYS A 55 8.331 -0.824 1.125 1.00 0.11 H
|
| 895 |
+
ATOM 895 HE3 LYS A 55 10.049 -0.679 1.491 1.00 33.34 H
|
| 896 |
+
ATOM 896 HZ1 LYS A 55 8.725 -3.023 0.243 1.00 24.41 H
|
| 897 |
+
ATOM 897 HZ2 LYS A 55 10.367 -2.928 0.639 1.00 73.44 H
|
| 898 |
+
ATOM 898 HZ3 LYS A 55 9.719 -1.900 -0.535 1.00 41.42 H
|
| 899 |
+
ATOM 899 N LYS A 56 4.914 -4.451 6.467 1.00 4.43 N
|
| 900 |
+
ATOM 900 CA LYS A 56 4.488 -5.131 7.718 1.00 44.25 C
|
| 901 |
+
ATOM 901 C LYS A 56 3.564 -6.335 7.407 1.00 20.15 C
|
| 902 |
+
ATOM 902 O LYS A 56 3.270 -7.146 8.286 1.00 70.42 O
|
| 903 |
+
ATOM 903 CB LYS A 56 3.792 -4.131 8.694 1.00 14.40 C
|
| 904 |
+
ATOM 904 CG LYS A 56 4.632 -2.879 9.056 1.00 12.44 C
|
| 905 |
+
ATOM 905 CD LYS A 56 6.056 -3.199 9.581 1.00 51.51 C
|
| 906 |
+
ATOM 906 CE LYS A 56 6.051 -4.005 10.887 1.00 24.51 C
|
| 907 |
+
ATOM 907 NZ LYS A 56 7.427 -4.281 11.378 1.00 11.43 N
|
| 908 |
+
ATOM 908 H LYS A 56 4.486 -3.601 6.220 1.00 41.43 H
|
| 909 |
+
ATOM 909 HA LYS A 56 5.383 -5.517 8.203 1.00 20.41 H
|
| 910 |
+
ATOM 910 HB2 LYS A 56 2.866 -3.792 8.242 1.00 24.11 H
|
| 911 |
+
ATOM 911 HB3 LYS A 56 3.552 -4.653 9.617 1.00 43.22 H
|
| 912 |
+
ATOM 912 HG2 LYS A 56 4.727 -2.268 8.167 1.00 43.13 H
|
| 913 |
+
ATOM 913 HG3 LYS A 56 4.100 -2.309 9.811 1.00 73.44 H
|
| 914 |
+
ATOM 914 HD2 LYS A 56 6.591 -3.763 8.826 1.00 14.14 H
|
| 915 |
+
ATOM 915 HD3 LYS A 56 6.578 -2.262 9.750 1.00 12.01 H
|
| 916 |
+
ATOM 916 HE2 LYS A 56 5.518 -3.448 11.648 1.00 10.01 H
|
| 917 |
+
ATOM 917 HE3 LYS A 56 5.547 -4.949 10.720 1.00 62.44 H
|
| 918 |
+
ATOM 918 HZ1 LYS A 56 7.392 -4.763 12.300 1.00 74.45 H
|
| 919 |
+
ATOM 919 HZ2 LYS A 56 7.957 -3.393 11.488 1.00 52.50 H
|
| 920 |
+
ATOM 920 HZ3 LYS A 56 7.935 -4.887 10.704 1.00 14.04 H
|
| 921 |
+
ATOM 921 N VAL A 57 3.092 -6.413 6.151 1.00 22.14 N
|
| 922 |
+
ATOM 922 CA VAL A 57 2.368 -7.580 5.608 1.00 10.13 C
|
| 923 |
+
ATOM 923 C VAL A 57 3.358 -8.492 4.844 1.00 25.24 C
|
| 924 |
+
ATOM 924 O VAL A 57 3.261 -9.722 4.893 1.00 61.11 O
|
| 925 |
+
ATOM 925 CB VAL A 57 1.218 -7.124 4.627 1.00 12.41 C
|
| 926 |
+
ATOM 926 CG1 VAL A 57 0.401 -8.329 4.104 1.00 1.03 C
|
| 927 |
+
ATOM 927 CG2 VAL A 57 0.306 -6.053 5.279 1.00 5.41 C
|
| 928 |
+
ATOM 928 H VAL A 57 3.227 -5.646 5.565 1.00 12.40 H
|
| 929 |
+
ATOM 929 HA VAL A 57 1.924 -8.136 6.432 1.00 61.42 H
|
| 930 |
+
ATOM 930 HB VAL A 57 1.688 -6.656 3.757 1.00 10.31 H
|
| 931 |
+
ATOM 931 HG11 VAL A 57 -0.066 -8.847 4.934 1.00 63.23 H
|
| 932 |
+
ATOM 932 HG12 VAL A 57 1.055 -9.016 3.580 1.00 35.33 H
|
| 933 |
+
ATOM 933 HG13 VAL A 57 -0.364 -7.983 3.423 1.00 33.04 H
|
| 934 |
+
ATOM 934 HG21 VAL A 57 -0.451 -5.740 4.572 1.00 14.21 H
|
| 935 |
+
ATOM 935 HG22 VAL A 57 0.901 -5.194 5.567 1.00 12.42 H
|
| 936 |
+
ATOM 936 HG23 VAL A 57 -0.176 -6.463 6.159 1.00 4.20 H
|
| 937 |
+
ATOM 937 N LYS A 58 4.332 -7.855 4.169 1.00 25.30 N
|
| 938 |
+
ATOM 938 CA LYS A 58 5.241 -8.532 3.219 1.00 52.21 C
|
| 939 |
+
ATOM 939 C LYS A 58 6.568 -7.726 3.080 1.00 13.41 C
|
| 940 |
+
ATOM 940 O LYS A 58 6.593 -6.726 2.361 1.00 41.23 O
|
| 941 |
+
ATOM 941 CB LYS A 58 4.531 -8.775 1.848 1.00 53.23 C
|
| 942 |
+
ATOM 942 CG LYS A 58 3.796 -7.569 1.242 1.00 53.12 C
|
| 943 |
+
ATOM 943 CD LYS A 58 3.174 -7.912 -0.124 1.00 11.12 C
|
| 944 |
+
ATOM 944 CE LYS A 58 2.529 -6.708 -0.793 1.00 32.11 C
|
| 945 |
+
ATOM 945 NZ LYS A 58 1.812 -7.095 -2.023 1.00 1.32 N
|
| 946 |
+
ATOM 946 H LYS A 58 4.557 -6.949 4.457 1.00 14.52 H
|
| 947 |
+
ATOM 947 HA LYS A 58 5.483 -9.502 3.648 1.00 23.41 H
|
| 948 |
+
ATOM 948 HB2 LYS A 58 5.275 -9.091 1.125 1.00 53.33 H
|
| 949 |
+
ATOM 949 HB3 LYS A 58 3.816 -9.582 1.972 1.00 71.24 H
|
| 950 |
+
ATOM 950 HG2 LYS A 58 3.007 -7.257 1.923 1.00 20.00 H
|
| 951 |
+
ATOM 951 HG3 LYS A 58 4.501 -6.753 1.119 1.00 1.32 H
|
| 952 |
+
ATOM 952 HD2 LYS A 58 3.948 -8.294 -0.785 1.00 30.35 H
|
| 953 |
+
ATOM 953 HD3 LYS A 58 2.419 -8.681 0.013 1.00 42.44 H
|
| 954 |
+
ATOM 954 HE2 LYS A 58 1.824 -6.251 -0.111 1.00 24.33 H
|
| 955 |
+
ATOM 955 HE3 LYS A 58 3.295 -5.986 -1.046 1.00 73.13 H
|
| 956 |
+
ATOM 956 HZ1 LYS A 58 1.166 -7.881 -1.828 1.00 5.21 H
|
| 957 |
+
ATOM 957 HZ2 LYS A 58 2.490 -7.404 -2.748 1.00 40.11 H
|
| 958 |
+
ATOM 958 HZ3 LYS A 58 1.266 -6.294 -2.394 1.00 21.11 H
|
| 959 |
+
ATOM 959 N PRO A 59 7.692 -8.149 3.761 1.00 23.25 N
|
| 960 |
+
ATOM 960 CA PRO A 59 8.977 -7.367 3.807 1.00 64.23 C
|
| 961 |
+
ATOM 961 C PRO A 59 9.556 -7.027 2.410 1.00 14.30 C
|
| 962 |
+
ATOM 962 O PRO A 59 10.045 -5.911 2.176 1.00 45.55 O
|
| 963 |
+
ATOM 963 CB PRO A 59 9.937 -8.298 4.600 1.00 52.51 C
|
| 964 |
+
ATOM 964 CG PRO A 59 9.030 -9.182 5.404 1.00 61.14 C
|
| 965 |
+
ATOM 965 CD PRO A 59 7.815 -9.415 4.531 1.00 40.22 C
|
| 966 |
+
ATOM 966 HA PRO A 59 8.836 -6.440 4.360 1.00 63.41 H
|
| 967 |
+
ATOM 967 HB2 PRO A 59 10.553 -8.890 3.919 1.00 34.21 H
|
| 968 |
+
ATOM 968 HB3 PRO A 59 10.574 -7.718 5.258 1.00 1.53 H
|
| 969 |
+
ATOM 969 HG2 PRO A 59 9.528 -10.123 5.629 1.00 34.23 H
|
| 970 |
+
ATOM 970 HG3 PRO A 59 8.735 -8.689 6.326 1.00 51.34 H
|
| 971 |
+
ATOM 971 HD2 PRO A 59 7.975 -10.256 3.859 1.00 41.21 H
|
| 972 |
+
ATOM 972 HD3 PRO A 59 6.936 -9.587 5.140 1.00 63.34 H
|
| 973 |
+
ATOM 973 N ASN A 60 9.438 -7.987 1.485 1.00 32.20 N
|
| 974 |
+
ATOM 974 CA ASN A 60 10.027 -7.900 0.130 1.00 45.12 C
|
| 975 |
+
ATOM 975 C ASN A 60 8.953 -7.396 -0.879 1.00 3.21 C
|
| 976 |
+
ATOM 976 O ASN A 60 8.946 -7.768 -2.055 1.00 72.14 O
|
| 977 |
+
ATOM 977 CB ASN A 60 10.601 -9.313 -0.221 1.00 44.11 C
|
| 978 |
+
ATOM 978 CG ASN A 60 11.471 -9.373 -1.483 1.00 14.35 C
|
| 979 |
+
ATOM 979 OD1 ASN A 60 10.987 -9.656 -2.576 1.00 43.45 O
|
| 980 |
+
ATOM 980 ND2 ASN A 60 12.763 -9.124 -1.337 1.00 61.44 N
|
| 981 |
+
ATOM 981 H ASN A 60 8.906 -8.785 1.699 1.00 34.24 H
|
| 982 |
+
ATOM 982 HA ASN A 60 10.844 -7.182 0.152 1.00 54.41 H
|
| 983 |
+
ATOM 983 HB2 ASN A 60 11.205 -9.652 0.611 1.00 31.33 H
|
| 984 |
+
ATOM 984 HB3 ASN A 60 9.775 -10.008 -0.341 1.00 13.21 H
|
| 985 |
+
ATOM 985 HD21 ASN A 60 13.099 -8.916 -0.436 1.00 55.24 H
|
| 986 |
+
ATOM 986 HD22 ASN A 60 13.337 -9.169 -2.133 1.00 53.43 H
|
| 987 |
+
ATOM 987 N ALA A 61 8.012 -6.563 -0.381 1.00 72.40 N
|
| 988 |
+
ATOM 988 CA ALA A 61 7.013 -5.855 -1.205 1.00 12.15 C
|
| 989 |
+
ATOM 989 C ALA A 61 7.660 -5.000 -2.317 1.00 2.12 C
|
| 990 |
+
ATOM 990 O ALA A 61 8.379 -4.028 -2.028 1.00 50.05 O
|
| 991 |
+
ATOM 991 CB ALA A 61 6.142 -4.963 -0.304 1.00 65.35 C
|
| 992 |
+
ATOM 992 H ALA A 61 7.931 -6.494 0.590 1.00 50.11 H
|
| 993 |
+
ATOM 993 HA ALA A 61 6.366 -6.606 -1.656 1.00 63.40 H
|
| 994 |
+
ATOM 994 HB1 ALA A 61 6.757 -4.206 0.174 1.00 64.32 H
|
| 995 |
+
ATOM 995 HB2 ALA A 61 5.674 -5.569 0.455 1.00 72.00 H
|
| 996 |
+
ATOM 996 HB3 ALA A 61 5.373 -4.475 -0.893 1.00 3.20 H
|
| 997 |
+
ATOM 997 N THR A 62 7.393 -5.383 -3.578 1.00 12.23 N
|
| 998 |
+
ATOM 998 CA THR A 62 7.754 -4.599 -4.761 1.00 62.13 C
|
| 999 |
+
ATOM 999 C THR A 62 6.753 -3.437 -4.911 1.00 74.50 C
|
| 1000 |
+
ATOM 1000 O THR A 62 5.599 -3.638 -5.324 1.00 34.21 O
|
| 1001 |
+
ATOM 1001 CB THR A 62 7.745 -5.481 -6.053 1.00 61.43 C
|
| 1002 |
+
ATOM 1002 OG1 THR A 62 8.586 -6.632 -5.865 1.00 32.31 O
|
| 1003 |
+
ATOM 1003 CG2 THR A 62 8.225 -4.691 -7.288 1.00 21.33 C
|
| 1004 |
+
ATOM 1004 H THR A 62 6.933 -6.228 -3.712 1.00 13.52 H
|
| 1005 |
+
ATOM 1005 HA THR A 62 8.760 -4.204 -4.617 1.00 34.20 H
|
| 1006 |
+
ATOM 1006 HB THR A 62 6.731 -5.822 -6.233 1.00 41.32 H
|
| 1007 |
+
ATOM 1007 HG1 THR A 62 8.032 -7.406 -5.713 1.00 24.01 H
|
| 1008 |
+
ATOM 1008 HG21 THR A 62 7.579 -3.837 -7.453 1.00 13.32 H
|
| 1009 |
+
ATOM 1009 HG22 THR A 62 8.199 -5.331 -8.161 1.00 52.44 H
|
| 1010 |
+
ATOM 1010 HG23 THR A 62 9.240 -4.344 -7.134 1.00 31.02 H
|
| 1011 |
+
ATOM 1011 N ILE A 63 7.193 -2.235 -4.513 1.00 62.55 N
|
| 1012 |
+
ATOM 1012 CA ILE A 63 6.368 -1.018 -4.523 1.00 72.53 C
|
| 1013 |
+
ATOM 1013 C ILE A 63 6.946 -0.032 -5.545 1.00 40.43 C
|
| 1014 |
+
ATOM 1014 O ILE A 63 8.108 0.355 -5.447 1.00 44.44 O
|
| 1015 |
+
ATOM 1015 CB ILE A 63 6.332 -0.400 -3.070 1.00 52.40 C
|
| 1016 |
+
ATOM 1016 CG1 ILE A 63 5.741 -1.456 -2.077 1.00 22.12 C
|
| 1017 |
+
ATOM 1017 CG2 ILE A 63 5.525 0.931 -3.023 1.00 31.21 C
|
| 1018 |
+
ATOM 1018 CD1 ILE A 63 6.035 -1.220 -0.619 1.00 52.01 C
|
| 1019 |
+
ATOM 1019 H ILE A 63 8.108 -2.153 -4.166 1.00 61.44 H
|
| 1020 |
+
ATOM 1020 HA ILE A 63 5.347 -1.284 -4.809 1.00 3.52 H
|
| 1021 |
+
ATOM 1021 HB ILE A 63 7.356 -0.179 -2.775 1.00 65.24 H
|
| 1022 |
+
ATOM 1022 HG12 ILE A 63 4.667 -1.473 -2.176 1.00 60.44 H
|
| 1023 |
+
ATOM 1023 HG13 ILE A 63 6.126 -2.440 -2.325 1.00 3.31 H
|
| 1024 |
+
ATOM 1024 HG21 ILE A 63 5.972 1.652 -3.698 1.00 22.24 H
|
| 1025 |
+
ATOM 1025 HG22 ILE A 63 5.538 1.331 -2.019 1.00 4.24 H
|
| 1026 |
+
ATOM 1026 HG23 ILE A 63 4.501 0.748 -3.323 1.00 30.03 H
|
| 1027 |
+
ATOM 1027 HD11 ILE A 63 5.624 -2.032 -0.041 1.00 3.42 H
|
| 1028 |
+
ATOM 1028 HD12 ILE A 63 5.587 -0.290 -0.301 1.00 54.23 H
|
| 1029 |
+
ATOM 1029 HD13 ILE A 63 7.104 -1.177 -0.468 1.00 33.51 H
|
| 1030 |
+
ATOM 1030 N ARG A 64 6.119 0.346 -6.528 1.00 73.11 N
|
| 1031 |
+
ATOM 1031 CA ARG A 64 6.498 1.223 -7.642 1.00 11.12 C
|
| 1032 |
+
ATOM 1032 C ARG A 64 6.334 2.679 -7.191 1.00 71.54 C
|
| 1033 |
+
ATOM 1033 O ARG A 64 5.209 3.179 -7.075 1.00 3.44 O
|
| 1034 |
+
ATOM 1034 CB ARG A 64 5.611 0.927 -8.887 1.00 50.44 C
|
| 1035 |
+
ATOM 1035 CG ARG A 64 5.714 -0.519 -9.430 1.00 61.44 C
|
| 1036 |
+
ATOM 1036 CD ARG A 64 7.141 -0.903 -9.876 1.00 53.01 C
|
| 1037 |
+
ATOM 1037 NE ARG A 64 7.194 -2.243 -10.491 1.00 14.33 N
|
| 1038 |
+
ATOM 1038 CZ ARG A 64 8.311 -2.981 -10.644 1.00 42.05 C
|
| 1039 |
+
ATOM 1039 NH1 ARG A 64 9.499 -2.529 -10.227 1.00 73.22 N
|
| 1040 |
+
ATOM 1040 NH2 ARG A 64 8.232 -4.165 -11.235 1.00 53.23 N
|
| 1041 |
+
ATOM 1041 H ARG A 64 5.195 0.075 -6.454 1.00 51.34 H
|
| 1042 |
+
ATOM 1042 HA ARG A 64 7.542 1.034 -7.892 1.00 14.11 H
|
| 1043 |
+
ATOM 1043 HB2 ARG A 64 4.571 1.109 -8.626 1.00 64.44 H
|
| 1044 |
+
ATOM 1044 HB3 ARG A 64 5.885 1.608 -9.686 1.00 40.01 H
|
| 1045 |
+
ATOM 1045 HG2 ARG A 64 5.403 -1.202 -8.649 1.00 30.22 H
|
| 1046 |
+
ATOM 1046 HG3 ARG A 64 5.042 -0.623 -10.276 1.00 31.22 H
|
| 1047 |
+
ATOM 1047 HD2 ARG A 64 7.495 -0.180 -10.603 1.00 34.41 H
|
| 1048 |
+
ATOM 1048 HD3 ARG A 64 7.796 -0.887 -9.011 1.00 30.15 H
|
| 1049 |
+
ATOM 1049 HE ARG A 64 6.341 -2.615 -10.814 1.00 34.33 H
|
| 1050 |
+
ATOM 1050 HH11 ARG A 64 9.573 -1.628 -9.788 1.00 34.40 H
|
| 1051 |
+
ATOM 1051 HH12 ARG A 64 10.325 -3.089 -10.349 1.00 62.13 H
|
| 1052 |
+
ATOM 1052 HH21 ARG A 64 7.349 -4.510 -11.564 1.00 45.31 H
|
| 1053 |
+
ATOM 1053 HH22 ARG A 64 9.060 -4.728 -11.358 1.00 4.01 H
|
| 1054 |
+
ATOM 1054 N LYS A 65 7.462 3.337 -6.904 1.00 55.55 N
|
| 1055 |
+
ATOM 1055 CA LYS A 65 7.479 4.683 -6.324 1.00 72.41 C
|
| 1056 |
+
ATOM 1056 C LYS A 65 7.905 5.692 -7.399 1.00 2.43 C
|
| 1057 |
+
ATOM 1057 O LYS A 65 9.062 5.704 -7.816 1.00 23.42 O
|
| 1058 |
+
ATOM 1058 CB LYS A 65 8.443 4.706 -5.106 1.00 60.12 C
|
| 1059 |
+
ATOM 1059 CG LYS A 65 8.376 5.993 -4.255 1.00 54.24 C
|
| 1060 |
+
ATOM 1060 CD LYS A 65 9.195 5.871 -2.950 1.00 13.41 C
|
| 1061 |
+
ATOM 1061 CE LYS A 65 8.968 7.038 -1.985 1.00 35.42 C
|
| 1062 |
+
ATOM 1062 NZ LYS A 65 9.707 6.834 -0.712 1.00 41.53 N
|
| 1063 |
+
ATOM 1063 H LYS A 65 8.315 2.915 -7.126 1.00 32.22 H
|
| 1064 |
+
ATOM 1064 HA LYS A 65 6.475 4.932 -5.982 1.00 63.32 H
|
| 1065 |
+
ATOM 1065 HB2 LYS A 65 8.203 3.860 -4.464 1.00 13.21 H
|
| 1066 |
+
ATOM 1066 HB3 LYS A 65 9.463 4.583 -5.461 1.00 43.42 H
|
| 1067 |
+
ATOM 1067 HG2 LYS A 65 8.763 6.822 -4.840 1.00 33.11 H
|
| 1068 |
+
ATOM 1068 HG3 LYS A 65 7.337 6.193 -4.002 1.00 21.31 H
|
| 1069 |
+
ATOM 1069 HD2 LYS A 65 8.920 4.952 -2.443 1.00 42.01 H
|
| 1070 |
+
ATOM 1070 HD3 LYS A 65 10.252 5.829 -3.202 1.00 53.53 H
|
| 1071 |
+
ATOM 1071 HE2 LYS A 65 9.308 7.959 -2.449 1.00 3.35 H
|
| 1072 |
+
ATOM 1072 HE3 LYS A 65 7.909 7.118 -1.767 1.00 24.44 H
|
| 1073 |
+
ATOM 1073 HZ1 LYS A 65 10.729 6.773 -0.895 1.00 31.12 H
|
| 1074 |
+
ATOM 1074 HZ2 LYS A 65 9.398 5.952 -0.256 1.00 40.42 H
|
| 1075 |
+
ATOM 1075 HZ3 LYS A 65 9.532 7.625 -0.059 1.00 52.21 H
|
| 1076 |
+
ATOM 1076 N THR A 66 6.938 6.492 -7.875 1.00 12.05 N
|
| 1077 |
+
ATOM 1077 CA THR A 66 7.155 7.525 -8.909 1.00 22.33 C
|
| 1078 |
+
ATOM 1078 C THR A 66 6.872 8.929 -8.328 1.00 41.33 C
|
| 1079 |
+
ATOM 1079 O THR A 66 6.038 9.081 -7.424 1.00 50.40 O
|
| 1080 |
+
ATOM 1080 CB THR A 66 6.235 7.229 -10.149 1.00 13.32 C
|
| 1081 |
+
ATOM 1081 OG1 THR A 66 6.579 5.943 -10.691 1.00 24.34 O
|
| 1082 |
+
ATOM 1082 CG2 THR A 66 6.332 8.296 -11.260 1.00 52.41 C
|
| 1083 |
+
ATOM 1083 H THR A 66 6.029 6.380 -7.523 1.00 21.01 H
|
| 1084 |
+
ATOM 1084 HA THR A 66 8.196 7.484 -9.241 1.00 53.43 H
|
| 1085 |
+
ATOM 1085 HB THR A 66 5.205 7.183 -9.803 1.00 74.00 H
|
| 1086 |
+
ATOM 1086 HG1 THR A 66 6.988 5.405 -10.002 1.00 51.01 H
|
| 1087 |
+
ATOM 1087 HG21 THR A 66 7.356 8.379 -11.606 1.00 44.00 H
|
| 1088 |
+
ATOM 1088 HG22 THR A 66 6.006 9.256 -10.874 1.00 13.21 H
|
| 1089 |
+
ATOM 1089 HG23 THR A 66 5.699 8.018 -12.090 1.00 22.21 H
|
| 1090 |
+
ATOM 1090 N GLY A 67 7.594 9.942 -8.843 1.00 30.00 N
|
| 1091 |
+
ATOM 1091 CA GLY A 67 7.390 11.330 -8.451 1.00 64.41 C
|
| 1092 |
+
ATOM 1092 C GLY A 67 8.036 11.661 -7.115 1.00 24.45 C
|
| 1093 |
+
ATOM 1093 O GLY A 67 9.264 11.719 -7.027 1.00 11.31 O
|
| 1094 |
+
ATOM 1094 H GLY A 67 8.286 9.734 -9.502 1.00 4.14 H
|
| 1095 |
+
ATOM 1095 HA2 GLY A 67 7.824 11.966 -9.214 1.00 21.32 H
|
| 1096 |
+
ATOM 1096 HA3 GLY A 67 6.326 11.541 -8.402 1.00 73.14 H
|
| 1097 |
+
TER
|
weight/esm-main/examples/lm-design/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# LM design examples
|
| 2 |
+
|
| 3 |
+
This folder contains code for demonstration of protein design using a language model. The code was used to perform the two design tasks specified at the paper [Language models generalize beyond natural proteins
|
| 4 |
+
](https://www.biorxiv.org/content/10.1101/2022.12.21.521521v1).
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
## Notebook examples
|
| 8 |
+
|
| 9 |
+
Refer to the two notebooks at this folder to run the fixed backbone and free generation design tasks.
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Shell examples
|
| 13 |
+
|
| 14 |
+
To run the two design tasks from shell, do the following:
|
| 15 |
+
|
| 16 |
+
1. First, install additional requirements: ```pip install -r additional_requirements.txt```
|
| 17 |
+
2. Running Fixed backbone design: ```python -m lm_design task=fixedbb pdb_fn=$PWD/2N2U.pdb```
|
| 18 |
+
3. Running Free generation design: ```python -m lm_design task=free_generation```
|
| 19 |
+
|
| 20 |
+
Notes:
|
| 21 |
+
Use the ```seed=<number>``` flag to generate different designs, e.g:
|
| 22 |
+
```python -m lm_design task=free_generation seed=42```
|
| 23 |
+
|
| 24 |
+
Control generated length in free generation using ```free_generation_length=<number>```, e.g:
|
| 25 |
+
```python -m lm_design task=free_generation free_generation_length=68```
|
| 26 |
+
|
| 27 |
+
Other, more advanced configurations can be observed at [config.yaml](conf/config.yaml)
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
## Paper data
|
| 31 |
+
The data from the preprint is available under [paper-data/](paper-data).
|
| 32 |
+
This includes designed sequences, their predicted structures, experimental validation results, linear projection for pairwise distance prediction, and details on dataset construction for model training.
|
weight/esm-main/examples/lm-design/additional_requirements.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nltk
|
| 2 |
+
py3Dmol
|
| 3 |
+
hydra
|
weight/esm-main/examples/lm-design/fixed_backbone.ipynb
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"id": "4f84941e",
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"source": [
|
| 8 |
+
"# Fixed Backbone design from LM\n",
|
| 9 |
+
"\n",
|
| 10 |
+
"This notebook demonstrates the Fixed Backbone design task from the paper [Language models generalize beyond natural proteins\n",
|
| 11 |
+
"](https://www.biorxiv.org/content/10.1101/2022.12.21.521521v1).\n",
|
| 12 |
+
"\n",
|
| 13 |
+
"Given an input structure as .pdb file, the LM is used iteratively in an MCMC optimization to find a sequence that folds to that structure\n"
|
| 14 |
+
]
|
| 15 |
+
},
|
| 16 |
+
{
|
| 17 |
+
"cell_type": "code",
|
| 18 |
+
"execution_count": null,
|
| 19 |
+
"id": "d378b7f4-0792-446b-9e95-f7025bee5bec",
|
| 20 |
+
"metadata": {},
|
| 21 |
+
"outputs": [],
|
| 22 |
+
"source": [
|
| 23 |
+
"# First install additional dependencies\n",
|
| 24 |
+
"!pip install -r additional_requirements.txt\n"
|
| 25 |
+
]
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"cell_type": "code",
|
| 29 |
+
"execution_count": null,
|
| 30 |
+
"id": "cfd13d6a",
|
| 31 |
+
"metadata": {},
|
| 32 |
+
"outputs": [],
|
| 33 |
+
"source": [
|
| 34 |
+
"# Imports\n",
|
| 35 |
+
"import os\n",
|
| 36 |
+
"import time\n",
|
| 37 |
+
"import hydra\n",
|
| 38 |
+
"import py3Dmol\n",
|
| 39 |
+
"from lm_design import Designer\n",
|
| 40 |
+
"\n",
|
| 41 |
+
"# Params\n",
|
| 42 |
+
"pdb_fn = os.getcwd() + '/2N2U.pdb'\n",
|
| 43 |
+
"seed = 0 # Use different seeds to get different sequence designs for the same structure\n",
|
| 44 |
+
"TASK = \"fixedbb\""
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"cell_type": "code",
|
| 49 |
+
"execution_count": null,
|
| 50 |
+
"id": "989996bf",
|
| 51 |
+
"metadata": {},
|
| 52 |
+
"outputs": [],
|
| 53 |
+
"source": [
|
| 54 |
+
"# Load hydra config from config.yaml\n",
|
| 55 |
+
"with hydra.initialize_config_module(config_module=\"conf\"):\n",
|
| 56 |
+
" cfg = hydra.compose(\n",
|
| 57 |
+
" config_name=\"config\", \n",
|
| 58 |
+
" overrides=[\n",
|
| 59 |
+
" f\"task={TASK}\", \n",
|
| 60 |
+
" f\"seed={seed}\", \n",
|
| 61 |
+
" f\"pdb_fn={pdb_fn}\", \n",
|
| 62 |
+
" # 'tasks.fixedbb.num_iter=100' # DEBUG - use a smaller number of iterations\n",
|
| 63 |
+
" ])"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "code",
|
| 68 |
+
"execution_count": null,
|
| 69 |
+
"id": "63178538",
|
| 70 |
+
"metadata": {},
|
| 71 |
+
"outputs": [],
|
| 72 |
+
"source": [
|
| 73 |
+
"# Create a designer from configuration\n",
|
| 74 |
+
"des = Designer(cfg, pdb_fn)"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "code",
|
| 79 |
+
"execution_count": null,
|
| 80 |
+
"id": "86d25575",
|
| 81 |
+
"metadata": {},
|
| 82 |
+
"outputs": [],
|
| 83 |
+
"source": [
|
| 84 |
+
"\n",
|
| 85 |
+
"# Run the designer\n",
|
| 86 |
+
"start_time = time.time()\n",
|
| 87 |
+
"des.run_from_cfg()\n",
|
| 88 |
+
"print(\"finished after %s hours\", (time.time() - start_time) / 3600)"
|
| 89 |
+
]
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"cell_type": "code",
|
| 93 |
+
"execution_count": null,
|
| 94 |
+
"id": "d6d9f742",
|
| 95 |
+
"metadata": {},
|
| 96 |
+
"outputs": [],
|
| 97 |
+
"source": [
|
| 98 |
+
"print(\"Output seq:\", des.output_seq)"
|
| 99 |
+
]
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"cell_type": "code",
|
| 103 |
+
"execution_count": null,
|
| 104 |
+
"id": "ba6c8c66",
|
| 105 |
+
"metadata": {},
|
| 106 |
+
"outputs": [],
|
| 107 |
+
"source": [
|
| 108 |
+
"\n",
|
| 109 |
+
"# Fold output with ESMFold API\n",
|
| 110 |
+
"output_seq = des.output_seq\n",
|
| 111 |
+
"# Fold with api:\n",
|
| 112 |
+
"# curl -X POST --data \"GENGEIPLEIRATTGAEVDTRAVTAVEMTEGTLGIFRLPEEDYTALENFRYNRVAGENWKPASTVIYVGGTYARLCAYAPYNSVEFKNSSLKTEAGLTMQTYAAEKDMRFAVSGGDEVWKKTPTANFELKRAYARLVLSVVRDATYPNTCKITKAKIEAFTGNIITANTVDISTGTEGSGTQTPQYIHTVTTGLKDGFAIGLPQQTFSGGVVLTLTVDGMEYSVTIPANKLSTFVRGTKYIVSLAVKGGKLTLMSDKILIDKDWAEVQTGTGGSGDDYDTSFN\" https://api.esmatlas.com/foldSequence/v1/pdb/\n",
|
| 113 |
+
"import requests\n",
|
| 114 |
+
"import json\n",
|
| 115 |
+
"url = 'https://api.esmatlas.com/foldSequence/v1/pdb/'\n",
|
| 116 |
+
"r = requests.post(url, data=output_seq)\n",
|
| 117 |
+
"output_struct = r.text\n",
|
| 118 |
+
"\n"
|
| 119 |
+
]
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"cell_type": "code",
|
| 123 |
+
"execution_count": null,
|
| 124 |
+
"id": "d5c06ab3",
|
| 125 |
+
"metadata": {},
|
| 126 |
+
"outputs": [],
|
| 127 |
+
"source": [
|
| 128 |
+
"# Visualize output structure\n",
|
| 129 |
+
"view = py3Dmol.view(width=800, height=800)\n",
|
| 130 |
+
"view.addModel(output_struct, 'pdb')\n",
|
| 131 |
+
"view.setStyle({'cartoon': {'color': 'spectrum'}})\n",
|
| 132 |
+
"view.zoomTo()\n",
|
| 133 |
+
"view.show()\n"
|
| 134 |
+
]
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"cell_type": "code",
|
| 138 |
+
"execution_count": null,
|
| 139 |
+
"id": "b7247225",
|
| 140 |
+
"metadata": {},
|
| 141 |
+
"outputs": [],
|
| 142 |
+
"source": [
|
| 143 |
+
"des.x_logits.shape"
|
| 144 |
+
]
|
| 145 |
+
},
|
| 146 |
+
{
|
| 147 |
+
"cell_type": "code",
|
| 148 |
+
"execution_count": null,
|
| 149 |
+
"id": "d8e5c184",
|
| 150 |
+
"metadata": {},
|
| 151 |
+
"outputs": [],
|
| 152 |
+
"source": [
|
| 153 |
+
"# Visualize wild type structure\n",
|
| 154 |
+
"wt_struct_file = pdb_fn\n",
|
| 155 |
+
"view = py3Dmol.view(width=800, height=800)\n",
|
| 156 |
+
"view.addModel(open(wt_struct_file).read(), 'pdb')\n",
|
| 157 |
+
"view.setStyle({'cartoon': {'color': 'spectrum'}})\n",
|
| 158 |
+
"view.zoomTo()\n",
|
| 159 |
+
"view.show()"
|
| 160 |
+
]
|
| 161 |
+
},
|
| 162 |
+
{
|
| 163 |
+
"cell_type": "code",
|
| 164 |
+
"execution_count": null,
|
| 165 |
+
"id": "222ec344",
|
| 166 |
+
"metadata": {},
|
| 167 |
+
"outputs": [],
|
| 168 |
+
"source": []
|
| 169 |
+
}
|
| 170 |
+
],
|
| 171 |
+
"metadata": {
|
| 172 |
+
"kernelspec": {
|
| 173 |
+
"display_name": "Python 3 (ipykernel)",
|
| 174 |
+
"language": "python",
|
| 175 |
+
"name": "python3"
|
| 176 |
+
},
|
| 177 |
+
"language_info": {
|
| 178 |
+
"codemirror_mode": {
|
| 179 |
+
"name": "ipython",
|
| 180 |
+
"version": 3
|
| 181 |
+
},
|
| 182 |
+
"file_extension": ".py",
|
| 183 |
+
"mimetype": "text/x-python",
|
| 184 |
+
"name": "python",
|
| 185 |
+
"nbconvert_exporter": "python",
|
| 186 |
+
"pygments_lexer": "ipython3",
|
| 187 |
+
"version": "3.7.12"
|
| 188 |
+
},
|
| 189 |
+
"vscode": {
|
| 190 |
+
"interpreter": {
|
| 191 |
+
"hash": "5502aca739f2549ad2771378ffc455b2bbb8b06f1a91617971f7097758a3cf84"
|
| 192 |
+
}
|
| 193 |
+
}
|
| 194 |
+
},
|
| 195 |
+
"nbformat": 4,
|
| 196 |
+
"nbformat_minor": 5
|
| 197 |
+
}
|
weight/esm-main/examples/lm-design/free_generation.ipynb
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"id": "e1a1c491",
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"source": [
|
| 8 |
+
"# Free Generation design\n",
|
| 9 |
+
"\n",
|
| 10 |
+
"This notebook demonstrates the Free Generation design task from the paper [Language models generalize beyond natural proteins\n",
|
| 11 |
+
"](https://www.biorxiv.org/content/10.1101/2022.12.21.521521v1).\n",
|
| 12 |
+
"\n",
|
| 13 |
+
"Given an input sequence length, the design code activates the language model and the linear projection structure head alternatingly to generate a likely sequence and structure."
|
| 14 |
+
]
|
| 15 |
+
},
|
| 16 |
+
{
|
| 17 |
+
"cell_type": "code",
|
| 18 |
+
"execution_count": null,
|
| 19 |
+
"id": "5f76a438-3afd-4096-ba36-eb9bee90f08a",
|
| 20 |
+
"metadata": {},
|
| 21 |
+
"outputs": [],
|
| 22 |
+
"source": [
|
| 23 |
+
"# First install additional dependencies\n",
|
| 24 |
+
"!pip install -r additional_requirements.txt"
|
| 25 |
+
]
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"cell_type": "code",
|
| 29 |
+
"execution_count": null,
|
| 30 |
+
"id": "59549997",
|
| 31 |
+
"metadata": {},
|
| 32 |
+
"outputs": [],
|
| 33 |
+
"source": [
|
| 34 |
+
"# Imports\n",
|
| 35 |
+
"import os\n",
|
| 36 |
+
"import time\n",
|
| 37 |
+
"import hydra\n",
|
| 38 |
+
"import py3Dmol\n",
|
| 39 |
+
"from lm_design import Designer\n",
|
| 40 |
+
"\n",
|
| 41 |
+
"# Params\n",
|
| 42 |
+
"seed = 0 # Use different seeds to get different sequence results\n",
|
| 43 |
+
"free_generation_length = 100\n",
|
| 44 |
+
"TASK = \"free_generation\""
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"cell_type": "code",
|
| 49 |
+
"execution_count": null,
|
| 50 |
+
"id": "8e27bf90",
|
| 51 |
+
"metadata": {},
|
| 52 |
+
"outputs": [],
|
| 53 |
+
"source": [
|
| 54 |
+
"# Load hydra config from config.yaml\n",
|
| 55 |
+
"with hydra.initialize_config_module(config_module=\"conf\"):\n",
|
| 56 |
+
" cfg = hydra.compose(\n",
|
| 57 |
+
" config_name=\"config\", \n",
|
| 58 |
+
" overrides=[\n",
|
| 59 |
+
" f\"task={TASK}\", \n",
|
| 60 |
+
" f\"seed={seed}\", \n",
|
| 61 |
+
" f\"free_generation_length={free_generation_length}\", \n",
|
| 62 |
+
" # 'tasks.free_generation.num_iter=100' # DEBUG - use a smaller number of iterations\n",
|
| 63 |
+
" ])"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "code",
|
| 68 |
+
"execution_count": null,
|
| 69 |
+
"id": "a95fbfb2",
|
| 70 |
+
"metadata": {},
|
| 71 |
+
"outputs": [],
|
| 72 |
+
"source": [
|
| 73 |
+
"# Create a designer from configuration\n",
|
| 74 |
+
"des = Designer(cfg)"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "code",
|
| 79 |
+
"execution_count": null,
|
| 80 |
+
"id": "e92e577b",
|
| 81 |
+
"metadata": {},
|
| 82 |
+
"outputs": [],
|
| 83 |
+
"source": [
|
| 84 |
+
"\n",
|
| 85 |
+
"# Run the designer\n",
|
| 86 |
+
"start_time = time.time()\n",
|
| 87 |
+
"des.run_from_cfg() \n",
|
| 88 |
+
"print(\"finished after %s hours\", (time.time() - start_time) / 3600)"
|
| 89 |
+
]
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"cell_type": "code",
|
| 93 |
+
"execution_count": null,
|
| 94 |
+
"id": "fb4d9456",
|
| 95 |
+
"metadata": {},
|
| 96 |
+
"outputs": [],
|
| 97 |
+
"source": [
|
| 98 |
+
"print(\"Output seq:\", des.output_seq)"
|
| 99 |
+
]
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"cell_type": "code",
|
| 103 |
+
"execution_count": null,
|
| 104 |
+
"id": "12229064",
|
| 105 |
+
"metadata": {},
|
| 106 |
+
"outputs": [],
|
| 107 |
+
"source": [
|
| 108 |
+
"# Fold output with ESMFold API\n",
|
| 109 |
+
"output_seq = des.output_seq\n",
|
| 110 |
+
"# Fold with api:\n",
|
| 111 |
+
"# curl -X POST --data \"GENGEIPLEIRATTGAEVDTRAVTAVEMTEGTLGIFRLPEEDYTALENFRYNRVAGENWKPASTVIYVGGTYARLCAYAPYNSVEFKNSSLKTEAGLTMQTYAAEKDMRFAVSGGDEVWKKTPTANFELKRAYARLVLSVVRDATYPNTCKITKAKIEAFTGNIITANTVDISTGTEGSGTQTPQYIHTVTTGLKDGFAIGLPQQTFSGGVVLTLTVDGMEYSVTIPANKLSTFVRGTKYIVSLAVKGGKLTLMSDKILIDKDWAEVQTGTGGSGDDYDTSFN\" https://api.esmatlas.com/foldSequence/v1/pdb/\n",
|
| 112 |
+
"import requests\n",
|
| 113 |
+
"import json\n",
|
| 114 |
+
"url = 'https://api.esmatlas.com/foldSequence/v1/pdb/'\n",
|
| 115 |
+
"r = requests.post(url, data=output_seq)\n",
|
| 116 |
+
"output_struct = r.text\n"
|
| 117 |
+
]
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"cell_type": "code",
|
| 121 |
+
"execution_count": null,
|
| 122 |
+
"id": "e516f069",
|
| 123 |
+
"metadata": {},
|
| 124 |
+
"outputs": [],
|
| 125 |
+
"source": [
|
| 126 |
+
"# Visualize output structure\n",
|
| 127 |
+
"view = py3Dmol.view(width=800, height=800)\n",
|
| 128 |
+
"view.addModel(output_struct, 'pdb')\n",
|
| 129 |
+
"view.setStyle({'cartoon': {'color': 'spectrum'}})\n",
|
| 130 |
+
"view.zoomTo()\n",
|
| 131 |
+
"view.show()"
|
| 132 |
+
]
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"cell_type": "code",
|
| 136 |
+
"execution_count": null,
|
| 137 |
+
"id": "c1c9a0f0",
|
| 138 |
+
"metadata": {},
|
| 139 |
+
"outputs": [],
|
| 140 |
+
"source": []
|
| 141 |
+
}
|
| 142 |
+
],
|
| 143 |
+
"metadata": {
|
| 144 |
+
"kernelspec": {
|
| 145 |
+
"display_name": "Python 3.7.12 ('esm-IF_py37')",
|
| 146 |
+
"language": "python",
|
| 147 |
+
"name": "python3"
|
| 148 |
+
},
|
| 149 |
+
"language_info": {
|
| 150 |
+
"codemirror_mode": {
|
| 151 |
+
"name": "ipython",
|
| 152 |
+
"version": 3
|
| 153 |
+
},
|
| 154 |
+
"file_extension": ".py",
|
| 155 |
+
"mimetype": "text/x-python",
|
| 156 |
+
"name": "python",
|
| 157 |
+
"nbconvert_exporter": "python",
|
| 158 |
+
"pygments_lexer": "ipython3",
|
| 159 |
+
"version": "3.7.12"
|
| 160 |
+
},
|
| 161 |
+
"vscode": {
|
| 162 |
+
"interpreter": {
|
| 163 |
+
"hash": "5502aca739f2549ad2771378ffc455b2bbb8b06f1a91617971f7097758a3cf84"
|
| 164 |
+
}
|
| 165 |
+
}
|
| 166 |
+
},
|
| 167 |
+
"nbformat": 4,
|
| 168 |
+
"nbformat_minor": 5
|
| 169 |
+
}
|
weight/esm-main/examples/lm-design/lm_design.py
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
# core
|
| 8 |
+
import logging
|
| 9 |
+
import os
|
| 10 |
+
import sys
|
| 11 |
+
import time
|
| 12 |
+
|
| 13 |
+
from omegaconf import DictConfig
|
| 14 |
+
import hydra
|
| 15 |
+
import os
|
| 16 |
+
from pathlib import Path
|
| 17 |
+
import sys
|
| 18 |
+
import time
|
| 19 |
+
import logging
|
| 20 |
+
|
| 21 |
+
import numpy as np
|
| 22 |
+
from omegaconf import DictConfig, OmegaConf
|
| 23 |
+
import torch
|
| 24 |
+
import torch.nn.functional as F
|
| 25 |
+
|
| 26 |
+
# make sure script started from the root of the this file
|
| 27 |
+
assert Path.cwd().name == 'lm-design', 'Please run this script from examples/lm-design/'
|
| 28 |
+
sys.path.append('../../')
|
| 29 |
+
from esm.data import Alphabet
|
| 30 |
+
|
| 31 |
+
from utils.scheduler import SchedulerSpec, to_scheduler, set_scheduler_repo
|
| 32 |
+
import utils.pdb_loader as pdb_loader
|
| 33 |
+
from utils.loss import get_cce_loss
|
| 34 |
+
from utils.lm import lm_marginal
|
| 35 |
+
from utils.masking import assert_valid_mask
|
| 36 |
+
from utils.sampling import (
|
| 37 |
+
set_rng_seeds,
|
| 38 |
+
)
|
| 39 |
+
from utils.constants import COORDS_ANGLE_NAMES, COORDS4D_NAMES
|
| 40 |
+
import utils.struct_models as struct_models
|
| 41 |
+
from utils.free_generation import stage_free_generation
|
| 42 |
+
from utils.fixedbb import stage_fixedbb
|
| 43 |
+
from utils.lm import WrapLmEsm
|
| 44 |
+
|
| 45 |
+
from utils.tensor import (
|
| 46 |
+
assert_shape,
|
| 47 |
+
)
|
| 48 |
+
from utils import ngram as ngram_utils
|
| 49 |
+
|
| 50 |
+
logger = logging.getLogger(__name__) # Hydra configured
|
| 51 |
+
os.environ['MKL_THREADING_LAYER'] = 'GNU'
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
class Designer:
|
| 55 |
+
cutoff_dist = 8
|
| 56 |
+
LOGITS_LARGE = 100
|
| 57 |
+
standard_AA = 'LAGVSERTIDPKQNFYMHWC'
|
| 58 |
+
|
| 59 |
+
##########################################
|
| 60 |
+
# Inits
|
| 61 |
+
##########################################
|
| 62 |
+
def __init__(
|
| 63 |
+
self,
|
| 64 |
+
cfg,
|
| 65 |
+
target_pdb_path=None,
|
| 66 |
+
device=None
|
| 67 |
+
):
|
| 68 |
+
## Initialize models
|
| 69 |
+
if device:
|
| 70 |
+
self.device = device
|
| 71 |
+
else:
|
| 72 |
+
use_cuda = torch.cuda.is_available() and not cfg.disable_cuda
|
| 73 |
+
device_idx = f":{cfg.cuda_device_idx}" if cfg.get('cuda_device_idx') else ""
|
| 74 |
+
self.device = torch.device(f'cuda{device_idx}' if use_cuda else 'cpu')
|
| 75 |
+
SEED_SENTINEL = 1238
|
| 76 |
+
self.seed = cfg.seed + SEED_SENTINEL
|
| 77 |
+
self.cfg = cfg
|
| 78 |
+
self.allowed_AA = ''.join(AA for AA in self.standard_AA if (
|
| 79 |
+
('suppress_AA' not in self.cfg) or (not AA in self.cfg.suppress_AA)))
|
| 80 |
+
|
| 81 |
+
self._init_models()
|
| 82 |
+
if target_pdb_path is None:
|
| 83 |
+
# eg notarget-L70
|
| 84 |
+
target_pdb_path = 'notarget-L100'
|
| 85 |
+
self._init_no_target(cfg.free_generation_length)
|
| 86 |
+
else:
|
| 87 |
+
target_pdb_path = Path(target_pdb_path)
|
| 88 |
+
self._init_target(target_pdb_path)
|
| 89 |
+
|
| 90 |
+
set_rng_seeds(self.seed)
|
| 91 |
+
self.schedulers = {} # reset schedulers
|
| 92 |
+
self.resuming_stage = False
|
| 93 |
+
self.init_sequences(cfg.num_seqs)
|
| 94 |
+
|
| 95 |
+
torch.backends.cudnn.benchmark = True # Slightly faster runtime for optimization
|
| 96 |
+
logger.info("Finished Designer init")
|
| 97 |
+
|
| 98 |
+
def _init_models(self):
|
| 99 |
+
self.vocab = Alphabet.from_architecture('ESM-1b')
|
| 100 |
+
self.vocab_mask_AA = torch.BoolTensor(
|
| 101 |
+
[t in self.allowed_AA for t in self.vocab.all_toks]
|
| 102 |
+
).to(self.device)
|
| 103 |
+
self.vocab_mask_AA_idx = torch.nonzero(self.vocab_mask_AA).squeeze()
|
| 104 |
+
|
| 105 |
+
self.struct_model, self.pdb_loader_params = struct_models.load(
|
| 106 |
+
self.vocab,
|
| 107 |
+
)
|
| 108 |
+
self.LM = WrapLmEsm(self.struct_model.lm, self.vocab)
|
| 109 |
+
|
| 110 |
+
# 4. Common model settings
|
| 111 |
+
def apply_common_settings(model):
|
| 112 |
+
model.to(self.device)
|
| 113 |
+
model.eval()
|
| 114 |
+
# No grads for models
|
| 115 |
+
for p in model.parameters():
|
| 116 |
+
p.requires_grad = False
|
| 117 |
+
return model
|
| 118 |
+
|
| 119 |
+
self.LM = apply_common_settings(self.LM)
|
| 120 |
+
self.struct_model = apply_common_settings(self.struct_model)
|
| 121 |
+
|
| 122 |
+
def encode(self, seq_raw, onehot=True):
|
| 123 |
+
device = self.device
|
| 124 |
+
if isinstance(seq_raw, list):
|
| 125 |
+
seq_enc = [[self.vocab.get_idx(c) for c in seq]
|
| 126 |
+
for seq in seq_raw]
|
| 127 |
+
else:
|
| 128 |
+
seq_enc = [self.vocab.get_idx(c) for c in seq_raw]
|
| 129 |
+
seq_enc = torch.LongTensor(seq_enc)
|
| 130 |
+
if onehot:
|
| 131 |
+
seq_enc = F.one_hot(seq_enc, len(self.vocab)).float()
|
| 132 |
+
return seq_enc.to(device)
|
| 133 |
+
|
| 134 |
+
def decode(self, seq_enc, onehot=True):
|
| 135 |
+
if onehot:
|
| 136 |
+
seq_enc = seq_enc.argmax(-1)
|
| 137 |
+
# for seq in seq_enc.view(-1, seq_enc.
|
| 138 |
+
assert seq_enc.dim() == 2
|
| 139 |
+
# Must do cpu conversion here!
|
| 140 |
+
# Or else pytorch runtime will do it O(L) times and incur a very
|
| 141 |
+
# large slowdown.
|
| 142 |
+
seq_enc = seq_enc.cpu()
|
| 143 |
+
seqs = [
|
| 144 |
+
''.join([self.vocab.get_tok(c) for c in _seq]) for _seq in seq_enc
|
| 145 |
+
]
|
| 146 |
+
return seqs
|
| 147 |
+
|
| 148 |
+
def _init_no_target(self, L):
|
| 149 |
+
## Initialize target and wt_seq
|
| 150 |
+
self.L = self.seqL = L
|
| 151 |
+
self.wt_metrics = {}
|
| 152 |
+
self.wt_seq = None
|
| 153 |
+
self.target_no_angles = False
|
| 154 |
+
|
| 155 |
+
# Assume naive positional indexing, to allow calling struct_pred.
|
| 156 |
+
self.pos_idx = torch.arange(self.L).long()[None,].to(self.device)
|
| 157 |
+
# Valid contacts indicate positions that had no contact in the pdb file of the protein to
|
| 158 |
+
# ignore. No target, so everything is valid.
|
| 159 |
+
self.valid_contacts = torch.ones(self.L, self.L).bool().to(self.device)
|
| 160 |
+
|
| 161 |
+
def _init_target(self, pdb_path):
|
| 162 |
+
## Initialize target and wt_seq
|
| 163 |
+
assert pdb_path.suffix == ".pdb"
|
| 164 |
+
self.target_pdb_path = pdb_path
|
| 165 |
+
|
| 166 |
+
self.pdb_id = Path(pdb_path).stem
|
| 167 |
+
self.target_data = pdb_loader.loader(
|
| 168 |
+
pdb_path=pdb_path,
|
| 169 |
+
params=self.pdb_loader_params,
|
| 170 |
+
set_diagonal=True,
|
| 171 |
+
allow_missing_residue_coords=self.cfg.allow_missing_residue_coords)
|
| 172 |
+
self.target_xyz = torch.tensor(self.target_data['xyz']).to(self.device)
|
| 173 |
+
self.pos_idx = torch.tensor(self.target_data['idx']).long()[None,].to(self.device)
|
| 174 |
+
self.coords = torch.tensor(self.target_data['coords6d']).long()[None,].to(self.device)
|
| 175 |
+
|
| 176 |
+
self.wt_seq_raw = self.target_data['fullseq'][0]
|
| 177 |
+
self.wt_seq = self.encode(self.wt_seq_raw).unsqueeze(0) # B x L x K
|
| 178 |
+
self.seqL = self.L = len(self.wt_seq_raw)
|
| 179 |
+
self.target_distancemap = torch.from_numpy(self.target_data["dist"])
|
| 180 |
+
self.target_contacts = (self.target_distancemap < self.cutoff_dist).to(self.device)
|
| 181 |
+
self.target_no_contacts = ~self.target_contacts
|
| 182 |
+
# Mark for contacts that have no nan distance values in the distance map
|
| 183 |
+
self.valid_contacts = torch.from_numpy(self.target_data['dist'] == self.target_data['dist']).to(self.device)
|
| 184 |
+
self.target_contacts &= self.valid_contacts
|
| 185 |
+
self.target_no_contacts &= self.valid_contacts
|
| 186 |
+
self.target_no_angles = self.target_data["no_angles"]
|
| 187 |
+
|
| 188 |
+
logger.info(f'Initialized target {self.pdb_id} of length {self.seqL}')
|
| 189 |
+
logger.info(f'Wildtype sequence:\n{self.wt_seq_raw}')
|
| 190 |
+
|
| 191 |
+
def init_sequences(self, num_seqs):
|
| 192 |
+
assert num_seqs == 1, "Only 1 sequence design in parallel supported for now."
|
| 193 |
+
self.B = B = self.num_seqs = num_seqs
|
| 194 |
+
|
| 195 |
+
K = len(self.vocab)
|
| 196 |
+
AA_indices = torch.arange(K, device=self.device)[self.vocab_mask_AA]
|
| 197 |
+
bt = torch.from_numpy(np.random.choice(AA_indices.cpu().numpy(), size=(B, self.L))).to(self.device)
|
| 198 |
+
self.x_seqs = F.one_hot(bt,K).float()
|
| 199 |
+
self.init_seqs = self.x_seqs.clone()
|
| 200 |
+
|
| 201 |
+
##########################################
|
| 202 |
+
# Losses
|
| 203 |
+
##########################################
|
| 204 |
+
def calc_sequence_loss(self, x_seqs, LM_losses={'CE_x_pLM': 1.0}, mask=None):
|
| 205 |
+
"""
|
| 206 |
+
Calculate pLM (LM output probabilities) based on mask-1-out over all positions.
|
| 207 |
+
Calculate seq_losses and combine according to weights in LM_losses.
|
| 208 |
+
Args:
|
| 209 |
+
x_seqs (torch.float32): [B, L, K]
|
| 210 |
+
Returns:
|
| 211 |
+
LM_loss (torch.float32): [B]
|
| 212 |
+
LM_out_logprobs (torch.float32): [B, L, K]
|
| 213 |
+
logging_dict: {other_metrics: torch.float32 [B]}
|
| 214 |
+
"""
|
| 215 |
+
B, L, K = x_seqs.shape
|
| 216 |
+
if mask is None:
|
| 217 |
+
mask = torch.ones(B, L, 1, device=self.device).bool()
|
| 218 |
+
n = assert_valid_mask(mask, x_seqs)
|
| 219 |
+
|
| 220 |
+
LM_out_logprobs = lm_marginal(self.LM, x_seqs, mask=mask)
|
| 221 |
+
|
| 222 |
+
# For loss calculations, only calculate based on the portion in `mask`.
|
| 223 |
+
x_seqs_masked = x_seqs.masked_select(mask).reshape(B, n, K)
|
| 224 |
+
losses = {
|
| 225 |
+
'CE_x_pLM': -(x_seqs_masked * LM_out_logprobs).sum(-1).mean(-1),
|
| 226 |
+
}
|
| 227 |
+
LM_loss = sum(w * losses[name] for name, w in LM_losses.items())
|
| 228 |
+
|
| 229 |
+
return LM_loss, LM_out_logprobs, losses
|
| 230 |
+
|
| 231 |
+
def calc_ngram_loss(self, x_seqs, ngram_orders=[1,2,3,4]):
|
| 232 |
+
B = x_seqs.size(0)
|
| 233 |
+
ngram_loss = torch.zeros(B).to(x_seqs)
|
| 234 |
+
seqs = self.decode(x_seqs)
|
| 235 |
+
for order in ngram_orders:
|
| 236 |
+
for i in range(len(seqs)):
|
| 237 |
+
ngram_loss[i] += ngram_utils.compute_kl_div(seqs[i], order)
|
| 238 |
+
return ngram_loss # [B]
|
| 239 |
+
|
| 240 |
+
def calc_structure_loss(self, x_seq, temp_struct=None):
|
| 241 |
+
"""Maps x_seq to the structure loss"""
|
| 242 |
+
B, L, K = x_seq.shape
|
| 243 |
+
|
| 244 |
+
res_preds = self.struct_model(x_seq)
|
| 245 |
+
|
| 246 |
+
if temp_struct is not None:
|
| 247 |
+
# Apply temp to res_preds output
|
| 248 |
+
for coord in COORDS4D_NAMES:
|
| 249 |
+
res_preds[f'{coord}_logits'] /= temp_struct
|
| 250 |
+
res_preds[f'p_{coord}'] = res_preds[f'{coord}_logits'].softmax(-1)
|
| 251 |
+
|
| 252 |
+
# Mask handling
|
| 253 |
+
mask = torch.ones_like(self.coords[:, 0, :, :]).bool()
|
| 254 |
+
target_pos_mask = self.target_contacts[None] # [1, L, L]
|
| 255 |
+
target_neg_mask = self.target_no_contacts[None] # [1, L, L]
|
| 256 |
+
target_pos_mask &= mask
|
| 257 |
+
target_neg_mask &= mask
|
| 258 |
+
# The below is also: self.valid_contacts & mask
|
| 259 |
+
target_all_mask = target_pos_mask | target_neg_mask
|
| 260 |
+
|
| 261 |
+
loss_dict = {}
|
| 262 |
+
targets = ['dist']
|
| 263 |
+
if not self.target_no_angles:
|
| 264 |
+
targets += COORDS_ANGLE_NAMES
|
| 265 |
+
for i, targetname in enumerate(targets):
|
| 266 |
+
target = self.coords[:, i, :, :]
|
| 267 |
+
if target.size(0) == 1:
|
| 268 |
+
res_preds_B = res_preds['p_dist'].shape[0]
|
| 269 |
+
target = target.repeat(res_preds_B, 1, 1)
|
| 270 |
+
else:
|
| 271 |
+
assert_shape(target, B, L, L)
|
| 272 |
+
|
| 273 |
+
|
| 274 |
+
loss_dict[f'{targetname}_cce'] = get_cce_loss(res_preds[f'p_{targetname}'], target, target_all_mask)
|
| 275 |
+
cce_pos = get_cce_loss(res_preds[f'p_{targetname}'], target, target_pos_mask)
|
| 276 |
+
cce_neg = get_cce_loss(res_preds[f'p_{targetname}'], target, target_neg_mask)
|
| 277 |
+
loss_dict[f'{targetname}_cce_norm_avg'] = (cce_pos + cce_neg) / 2
|
| 278 |
+
loss_dict[f'{targetname}_cce_pos'] = cce_pos
|
| 279 |
+
|
| 280 |
+
CHOSEN_LOSSES = ['dist_cce_pos'] # Worked best in our experiments
|
| 281 |
+
total_loss = sum(loss_dict[k] for k in CHOSEN_LOSSES)
|
| 282 |
+
|
| 283 |
+
return total_loss, loss_dict
|
| 284 |
+
|
| 285 |
+
def calc_total_loss(
|
| 286 |
+
self,
|
| 287 |
+
x,
|
| 288 |
+
mask,
|
| 289 |
+
LM_w,
|
| 290 |
+
struct_w,
|
| 291 |
+
ngram_w, ngram_orders,
|
| 292 |
+
temp_struct=None):
|
| 293 |
+
"""
|
| 294 |
+
Easy one-stop-shop that calls out to all the implemented loss calculators,
|
| 295 |
+
aggregates logs, and weights total_loss.
|
| 296 |
+
|
| 297 |
+
As a refresher:
|
| 298 |
+
calc_sequence_loss:
|
| 299 |
+
calculates \sum log p(x_i|x_\i) for i in {set bits in mask}.
|
| 300 |
+
If mask is all ones, this is equal to Pseudo-log-likelihood.
|
| 301 |
+
NOTE: every position in mask is masked *separately*
|
| 302 |
+
Therefore, there will be multiple forward passes of the LM.
|
| 303 |
+
calc_structure_loss:
|
| 304 |
+
calculates p(y|x)
|
| 305 |
+
calc_ngram_loss:
|
| 306 |
+
calculates p_ngram(x)
|
| 307 |
+
"""
|
| 308 |
+
|
| 309 |
+
if mask is not None:
|
| 310 |
+
assert_valid_mask(mask, x=x)
|
| 311 |
+
logs = {}
|
| 312 |
+
total_loss = torch.zeros(x.size(0)).to(x)
|
| 313 |
+
if LM_w:
|
| 314 |
+
lm_m_nlls, _, lm_loss_dict = self.calc_sequence_loss(x, mask=mask)
|
| 315 |
+
lm_m_nlls *= LM_w / self.L
|
| 316 |
+
total_loss += lm_m_nlls
|
| 317 |
+
logs['lm_loss'] = lm_m_nlls
|
| 318 |
+
logs.update(lm_loss_dict)
|
| 319 |
+
if struct_w:
|
| 320 |
+
struct_m_nlls, struct_loss_dict = self.calc_structure_loss(x, temp_struct=temp_struct)
|
| 321 |
+
struct_m_nlls *= struct_w
|
| 322 |
+
total_loss += struct_m_nlls
|
| 323 |
+
logs['struct_loss'] = struct_m_nlls
|
| 324 |
+
logs.update(struct_loss_dict)
|
| 325 |
+
if ngram_w:
|
| 326 |
+
ngram_m_nlls = self.calc_ngram_loss(x, ngram_orders=ngram_orders)
|
| 327 |
+
ngram_m_nlls *= ngram_w
|
| 328 |
+
total_loss += ngram_m_nlls
|
| 329 |
+
logs['ngram_loss'] = ngram_m_nlls
|
| 330 |
+
|
| 331 |
+
return total_loss, logs # [B], Dict[str:[B]]
|
| 332 |
+
|
| 333 |
+
|
| 334 |
+
##########################################
|
| 335 |
+
# YAML Execution
|
| 336 |
+
##########################################
|
| 337 |
+
|
| 338 |
+
def run_from_cfg(self):
|
| 339 |
+
"""
|
| 340 |
+
Main run-loop for the Designer. Runs a relevant design procedure from the config.
|
| 341 |
+
"""
|
| 342 |
+
logger.info(f'Designing sequence for task: {self.cfg.task}')
|
| 343 |
+
|
| 344 |
+
design_cfg = self.cfg.tasks[self.cfg.task]
|
| 345 |
+
if self.cfg.task == 'fixedbb':
|
| 346 |
+
stage_fixedbb(self, design_cfg)
|
| 347 |
+
elif self.cfg.task == 'free_generation':
|
| 348 |
+
stage_free_generation(self, **design_cfg)
|
| 349 |
+
else:
|
| 350 |
+
raise ValueError(f'Invalid task: {self.cfg.task}')
|
| 351 |
+
|
| 352 |
+
logger.info(f'Final designed sequences:')
|
| 353 |
+
for seq in self.decode(self.x_seqs):
|
| 354 |
+
logger.info(seq)
|
| 355 |
+
self.output_seq = self.decode(self.x_seqs)[0]
|
| 356 |
+
|
| 357 |
+
def init_schedulers_from_cfg(self, cfg: DictConfig):
|
| 358 |
+
"""
|
| 359 |
+
Similar to init_schedulers, but expects a stage-specific DictConfig.
|
| 360 |
+
Populates self.schedulers with dotlist key.
|
| 361 |
+
(Simplifies later OmegaConf accesses)
|
| 362 |
+
Example:
|
| 363 |
+
cfg = {
|
| 364 |
+
num_iter: 10,
|
| 365 |
+
sub_cfg: {
|
| 366 |
+
my_sched: {
|
| 367 |
+
scheduler: CosineAnnealingLR
|
| 368 |
+
initial: 1e-2
|
| 369 |
+
T_max: 200}}}
|
| 370 |
+
Effect:
|
| 371 |
+
self.schedulers['sub_cfg.my_sched'] = <Scheduler>
|
| 372 |
+
"""
|
| 373 |
+
def walk_cfg(d, parent_key='', sep='.'):
|
| 374 |
+
from collections.abc import MutableMapping
|
| 375 |
+
for k, v in d.items():
|
| 376 |
+
new_key = parent_key + sep + k if parent_key else k
|
| 377 |
+
yield (new_key, v)
|
| 378 |
+
if isinstance(v, MutableMapping):
|
| 379 |
+
yield from walk_cfg(v, new_key, sep=sep)
|
| 380 |
+
|
| 381 |
+
from typing import Optional, Dict, List, Any, Union
|
| 382 |
+
def is_sspec(maybe_sspec: Union[SchedulerSpec, Any]):
|
| 383 |
+
infer_from_key = (isinstance(maybe_sspec, DictConfig)
|
| 384 |
+
and maybe_sspec.get('scheduler', None) is not None)
|
| 385 |
+
# infer_from_type = OmegaConf.get_type(maybe_sspec) is SchedulerSpec
|
| 386 |
+
return infer_from_key
|
| 387 |
+
|
| 388 |
+
if not self.resuming_stage:
|
| 389 |
+
for name, maybe_sspec in walk_cfg(cfg, sep='.'):
|
| 390 |
+
if is_sspec(maybe_sspec):
|
| 391 |
+
assert not name in self.schedulers, f"Trying to re-register {name}"
|
| 392 |
+
self.schedulers[name] = to_scheduler(maybe_sspec)
|
| 393 |
+
|
| 394 |
+
def gen_step_cfg(self, cfg):
|
| 395 |
+
"""
|
| 396 |
+
Replace schedulers in a cfg with step-specific values.
|
| 397 |
+
Make sure to call `init_schedulers_from_cfg(cfg)` first!
|
| 398 |
+
Uses Designer state:
|
| 399 |
+
- self.schedulers
|
| 400 |
+
"""
|
| 401 |
+
step_cfg = cfg.copy()
|
| 402 |
+
for name, sched in self.schedulers.items():
|
| 403 |
+
if OmegaConf.select(step_cfg, name) is not None:
|
| 404 |
+
OmegaConf.update(step_cfg, name, sched(), merge=False)
|
| 405 |
+
return step_cfg
|
| 406 |
+
|
| 407 |
+
def stepper(self, iterable, update_schedulers=True, cfg=None):
|
| 408 |
+
self.init_schedulers_from_cfg(cfg)
|
| 409 |
+
|
| 410 |
+
for local_step in iterable:
|
| 411 |
+
yield local_step, self.gen_step_cfg(cfg)
|
| 412 |
+
|
| 413 |
+
if update_schedulers:
|
| 414 |
+
self.update_schedulers()
|
| 415 |
+
|
| 416 |
+
def update_schedulers(self):
|
| 417 |
+
for s in self.schedulers.values():
|
| 418 |
+
try:
|
| 419 |
+
s.step()
|
| 420 |
+
except AttributeError:
|
| 421 |
+
pass # constants: dummy lambda
|
| 422 |
+
|
| 423 |
+
def init_schedulers(self, **kwargs):
|
| 424 |
+
"""
|
| 425 |
+
Schedulers (always stage-specific) are initialized according to SchedulerSpec,
|
| 426 |
+
and depend on global_step
|
| 427 |
+
Optionally wrapping an optimizer class with single param group.
|
| 428 |
+
Stores the schedulers in self._schedulers
|
| 429 |
+
Returns:
|
| 430 |
+
functions which return the current value for each
|
| 431 |
+
"""
|
| 432 |
+
set_scheduler_repo(self.cfg.get('schedulers', {}))
|
| 433 |
+
for name, sspec in kwargs.items():
|
| 434 |
+
assert not name in self.schedulers, f"Trying to re-register {name}"
|
| 435 |
+
self.schedulers[name] = to_scheduler(sspec)
|
| 436 |
+
assert sys.version_info >= (3, 6), "py>=3.6 preserve kwarg and dict order see PEP468"
|
| 437 |
+
return [self.schedulers[name] for name in kwargs]
|
| 438 |
+
|
| 439 |
+
|
| 440 |
+
@hydra.main(config_path="conf/", config_name="config")
|
| 441 |
+
def main(cfg: DictConfig) -> None:
|
| 442 |
+
args_no_spaces = [arg.replace(" ", "") for arg in sys.argv[1:]]
|
| 443 |
+
logger.info(f"Running with args: {' '.join(args_no_spaces)}")
|
| 444 |
+
|
| 445 |
+
pdb_fn = cfg.pdb_fn
|
| 446 |
+
logger.info(f'Starting to optimize seq for {pdb_fn}')
|
| 447 |
+
|
| 448 |
+
start_time = time.time()
|
| 449 |
+
des = Designer(cfg, pdb_fn)
|
| 450 |
+
|
| 451 |
+
des.run_from_cfg()
|
| 452 |
+
logger.info("finished after %s hours", (time.time() - start_time) / 3600)
|
| 453 |
+
|
| 454 |
+
|
| 455 |
+
if __name__ == "__main__":
|
| 456 |
+
main() # noqa pylint: disable=no-value-for-parameter
|
weight/esm-main/examples/lm-design/utils/fixedbb.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
import logging
|
| 7 |
+
|
| 8 |
+
import torch
|
| 9 |
+
import torch.nn.functional as F
|
| 10 |
+
from torch.distributions import Bernoulli, OneHotCategorical
|
| 11 |
+
from tqdm import tqdm
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
logger = logging.getLogger(__name__)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
@torch.no_grad()
|
| 18 |
+
def stage_fixedbb(self, cfg, disable_tqdm=False):
|
| 19 |
+
"""Metropolis-Hastings sampling with uniform proposal and energy-based acceptance."""
|
| 20 |
+
B, L, K = self.x_seqs.shape
|
| 21 |
+
|
| 22 |
+
# import ipdb; ipdb.set_trace()
|
| 23 |
+
|
| 24 |
+
itr = self.stepper(range(cfg.num_iter), cfg=cfg)
|
| 25 |
+
itr = tqdm(itr, total=cfg.num_iter, disable=disable_tqdm)
|
| 26 |
+
for step, s_cfg in itr:
|
| 27 |
+
x = self.x_seqs
|
| 28 |
+
a_cfg = s_cfg.accept_reject
|
| 29 |
+
|
| 30 |
+
##############################
|
| 31 |
+
# Proposal
|
| 32 |
+
##############################
|
| 33 |
+
# Decide which position to mutate == {i}.
|
| 34 |
+
# mask 1 place
|
| 35 |
+
mask = torch.zeros((B, L, 1), dtype=torch.bool).to(x) # [B,L,1]
|
| 36 |
+
mask[:, torch.randint(0, L, (B,))] = True # [B,L,1]
|
| 37 |
+
mask = mask.bool()
|
| 38 |
+
|
| 39 |
+
# Uniform proposal distribution.
|
| 40 |
+
log_p_x_i = torch.full((B, K), fill_value=-float("inf")).to(x) # [B, K]
|
| 41 |
+
log_p_x_i[..., self.vocab_mask_AA] = 0 # [B, K]
|
| 42 |
+
p_x_i = log_p_x_i.softmax(-1)
|
| 43 |
+
xp_i = OneHotCategorical(probs=p_x_i).sample()
|
| 44 |
+
xp = x.masked_scatter(mask, xp_i) # [B,L,K]
|
| 45 |
+
|
| 46 |
+
##############################
|
| 47 |
+
# Accept / reject
|
| 48 |
+
##############################
|
| 49 |
+
# log A(x',x) = log P(x') - log P(x))
|
| 50 |
+
# for current input x, proposal x', target distribution P and symmetric proposal.
|
| 51 |
+
log_P_x = self.calc_total_loss(x, mask, **a_cfg.energy_cfg)[0] # [B]
|
| 52 |
+
log_P_xp = self.calc_total_loss(xp, mask, **a_cfg.energy_cfg)[0] # [B]
|
| 53 |
+
log_A_xp_x = (-log_P_xp - -log_P_x) / a_cfg.temperature # [B]
|
| 54 |
+
A_xp_x = (log_A_xp_x).exp().clamp(0, 1) # [B]
|
| 55 |
+
A_bools = Bernoulli(A_xp_x).sample().bool() # [B]
|
| 56 |
+
self.x_seqs = torch.where(A_bools[:, None, None], xp, x) # [B,L,K]
|
weight/esm-main/examples/lm-design/utils/free_generation.py
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
from typing import List, Optional, Dict
|
| 8 |
+
import torch
|
| 9 |
+
import tree
|
| 10 |
+
from omegaconf import DictConfig
|
| 11 |
+
|
| 12 |
+
from utils.scheduler import SchedulerSpec
|
| 13 |
+
from utils.tensor import assert_shape
|
| 14 |
+
import torch.nn.functional as F
|
| 15 |
+
from torch.distributions.categorical import Categorical
|
| 16 |
+
from utils.constants import COORDS4D_NAMES
|
| 17 |
+
from tqdm.auto import tqdm
|
| 18 |
+
|
| 19 |
+
from utils.fixedbb import stage_fixedbb
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def stage_free_generation(
|
| 23 |
+
designer,
|
| 24 |
+
num_iter: int,
|
| 25 |
+
resample_y_every: int,
|
| 26 |
+
stage_fixedbb_args: Optional[DictConfig] = None,
|
| 27 |
+
resample_y_temp: SchedulerSpec = 1.0,
|
| 28 |
+
):
|
| 29 |
+
assert resample_y_every < num_iter, \
|
| 30 |
+
"resample_y_every must be smaller than num_iter, {} {}" \
|
| 31 |
+
.format(resample_y_every, num_iter)
|
| 32 |
+
|
| 33 |
+
_T_resample_y_temp = designer.init_schedulers(resample_y_temp=resample_y_temp)[0]
|
| 34 |
+
|
| 35 |
+
def resample_y():
|
| 36 |
+
x_seq = designer.x_seqs
|
| 37 |
+
struct_preds = designer.struct_model(x_seq)
|
| 38 |
+
|
| 39 |
+
def sample_logits(preds, logits_name):
|
| 40 |
+
logits = preds[logits_name]
|
| 41 |
+
logits /= _T_resample_y_temp()
|
| 42 |
+
|
| 43 |
+
# Alter preds from logits that were changed by temp (for logging after)
|
| 44 |
+
distangle_key_name = logits_name.replace('_logits', '')
|
| 45 |
+
preds[f'p_{distangle_key_name}'] = logits.softmax(-1)
|
| 46 |
+
preds[logits_name] = logits
|
| 47 |
+
|
| 48 |
+
sampled_map = Categorical(logits=logits).sample()
|
| 49 |
+
return sampled_map
|
| 50 |
+
|
| 51 |
+
# sample structure (dist and angles) bins from logits
|
| 52 |
+
sampled_dist_and_angles = []
|
| 53 |
+
for coord_name in COORDS4D_NAMES:
|
| 54 |
+
sampled = sample_logits(struct_preds, f'{coord_name}_logits')
|
| 55 |
+
sampled_dist_and_angles.append(sampled)
|
| 56 |
+
sampled_dist_and_angles = torch.stack(sampled_dist_and_angles, dim=1)
|
| 57 |
+
|
| 58 |
+
# Logits B x L x L x K; first 3 dims are treated as batch dims:
|
| 59 |
+
set_target_structure(designer, sampled_dist_and_angles)
|
| 60 |
+
|
| 61 |
+
curr_step = 0
|
| 62 |
+
pbar = tqdm(total=num_iter, desc='stage_hallucination_joint_mh')
|
| 63 |
+
while curr_step < num_iter:
|
| 64 |
+
resample_y()
|
| 65 |
+
|
| 66 |
+
# do resample_y_every steps of gibbs p(seq|struct) sampling
|
| 67 |
+
num_iter_mh = resample_y_every
|
| 68 |
+
stage_fixedbb_args['num_iter'] = num_iter_mh
|
| 69 |
+
stage_fixedbb(designer, stage_fixedbb_args, disable_tqdm=True)
|
| 70 |
+
# Set this flag to true so inner schedulers at stage_fixedbb will keep state between calls
|
| 71 |
+
designer.resuming_stage = True
|
| 72 |
+
curr_step += num_iter_mh
|
| 73 |
+
pbar.update(num_iter_mh)
|
| 74 |
+
|
| 75 |
+
def set_target_structure(designer, sampled_dist_and_angles):
|
| 76 |
+
"""
|
| 77 |
+
Set the given sampled contacts as the target structure in designer. This allows designing
|
| 78 |
+
a sequence for that structure later.
|
| 79 |
+
"""
|
| 80 |
+
|
| 81 |
+
assert sampled_dist_and_angles.shape[0] == 1, "Only single-batch supported for now"
|
| 82 |
+
if hasattr(designer, 'coords'):
|
| 83 |
+
assert designer.coords.shape == sampled_dist_and_angles.shape
|
| 84 |
+
|
| 85 |
+
# Coords is [B=1, 4, L, L]
|
| 86 |
+
designer.coords = sampled_dist_and_angles
|
| 87 |
+
|
| 88 |
+
cutoff_bin_max = designer.pdb_loader_params['contact_bin_cutoff'][1]
|
| 89 |
+
# Use resnet predictons to determine the
|
| 90 |
+
designer.target_contacts = (designer.coords[:, 0] <= cutoff_bin_max).squeeze(0)
|
| 91 |
+
|
| 92 |
+
designer.target_no_contacts = ~designer.target_contacts
|
| 93 |
+
# TEMP; assume Batchdim==1 (also for gibbs).
|
| 94 |
+
assert_shape(designer.target_contacts, designer.L, designer.L)
|
weight/esm-main/examples/lm-design/utils/masking.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from typing import Union
|
| 7 |
+
|
| 8 |
+
import torch
|
| 9 |
+
import torch.nn.functional as F
|
| 10 |
+
from .tensor import (
|
| 11 |
+
assert_shape,
|
| 12 |
+
is_1hot_tensor,
|
| 13 |
+
)
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def apply_mask(x, mask, mask_tok_idx):
|
| 17 |
+
"""
|
| 18 |
+
Args:
|
| 19 |
+
x (torch.float32): [*, K]
|
| 20 |
+
mask (torch.float32): [*, 1]
|
| 21 |
+
mask_tok_idx (int): vocab index for mask token
|
| 22 |
+
Returns:
|
| 23 |
+
x_masked (torch.float32): [*, K] = x,
|
| 24 |
+
with mask_tok_idx inserted, where mask == 1.
|
| 25 |
+
"""
|
| 26 |
+
assert is_1hot_tensor(x)
|
| 27 |
+
K = x.size(-1)
|
| 28 |
+
x_masked = x.detach().clone()
|
| 29 |
+
x_masked[mask.squeeze(-1)] = F.one_hot(torch.tensor(mask_tok_idx), K).to(x)
|
| 30 |
+
return x_masked
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def assert_valid_mask(mask, x=None):
|
| 34 |
+
"""
|
| 35 |
+
Utility that checks if a mask is [B, L, 1], given
|
| 36 |
+
an optional tensor the mask might apply to, of size [B, L, K]
|
| 37 |
+
This utility also returns the number of set bits in the mask, in the L dim == n.
|
| 38 |
+
n is useful to know, because:
|
| 39 |
+
x_masked = x.masked_select(mask)
|
| 40 |
+
x: [B, L, K]
|
| 41 |
+
mask: [B, L, 1]
|
| 42 |
+
x_masked: [B, n, K]
|
| 43 |
+
"""
|
| 44 |
+
if x is not None:
|
| 45 |
+
assert x.dtype == torch.float, x.dtype
|
| 46 |
+
assert x.ndim == 3, x.ndim
|
| 47 |
+
assert mask.shape[:2] == x.shape[:2], (mask.shape[:2], x.shape[:2])
|
| 48 |
+
assert mask.dtype == torch.bool
|
| 49 |
+
num_masks_per_b = mask.sum(1)
|
| 50 |
+
assert (num_masks_per_b[0] == num_masks_per_b).all()
|
| 51 |
+
return num_masks_per_b[0]
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
def masked_insert_from_tokens(x, insert_mask, insert_toks):
|
| 55 |
+
"""
|
| 56 |
+
[B, L, K] -> [B, I, L, K]
|
| 57 |
+
x contains n masks per row.
|
| 58 |
+
I is a new inserted dimension made
|
| 59 |
+
by duplicating each [L, K] seq in [B] [I] times.
|
| 60 |
+
Inserted tokens come from [B, I, n] insert_toks tensor.
|
| 61 |
+
If insert_toks is [I, n], will broadcast.
|
| 62 |
+
This is most helpful for gibbs:
|
| 63 |
+
producing proposal seqs over AA_vocab.
|
| 64 |
+
len(AA_vocab)**n for n-site gibbs.
|
| 65 |
+
Args:
|
| 66 |
+
x (torch.float32): [B, L, K]
|
| 67 |
+
insert_mask (torch.bool): [B, L, 1]
|
| 68 |
+
indicating which positions to insert tokens in newly created I dim.
|
| 69 |
+
insert_toks (torch.float32): [(B?), I, mask_count=n]
|
| 70 |
+
Returns:
|
| 71 |
+
x_filled (torch.float32): [B, I, L, K]
|
| 72 |
+
"""
|
| 73 |
+
B, L, K = assert_shape(x, -1, -1, -1)
|
| 74 |
+
n = assert_valid_mask(insert_mask)
|
| 75 |
+
if insert_toks.dim() == 2:
|
| 76 |
+
I = assert_shape(insert_toks, -1, n) # [I, n]
|
| 77 |
+
insert_toks = insert_toks.unsqueeze(0).repeat(B, 1, 1) # [B, I, n]
|
| 78 |
+
else:
|
| 79 |
+
I = assert_shape(insert_toks, B, -1, n) # [B, I, n]
|
| 80 |
+
|
| 81 |
+
# 1hot -> dense (remove the need for these.)
|
| 82 |
+
x_idx = x.argmax(-1) # [B, L]
|
| 83 |
+
insert_mask = insert_mask.squeeze(-1) # [B, L]
|
| 84 |
+
|
| 85 |
+
# Open up insert dim
|
| 86 |
+
x_idx = x_idx.unsqueeze(1).repeat(1, I, 1) # [B, I, L]
|
| 87 |
+
insert_mask = insert_mask.unsqueeze(1).repeat(1, I, 1) # [B, I, L]
|
| 88 |
+
x_idx[insert_mask] = insert_toks.flatten() # [B, I, n]
|
| 89 |
+
|
| 90 |
+
# dense -> 1hot
|
| 91 |
+
x = F.one_hot(x_idx, K).to(x) # [B, I, L, K]
|
| 92 |
+
return x
|
weight/esm-main/examples/lm-design/utils/misc.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
import math
|
| 6 |
+
import sys
|
| 7 |
+
from contextlib import AbstractContextManager, contextmanager
|
| 8 |
+
import inspect
|
| 9 |
+
import logging
|
| 10 |
+
import os
|
| 11 |
+
from pathlib import Path
|
| 12 |
+
import pickle
|
| 13 |
+
import socket
|
| 14 |
+
import time
|
| 15 |
+
|
| 16 |
+
logger = logging.getLogger(__name__)
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class TimerContext(AbstractContextManager):
|
| 21 |
+
"""
|
| 22 |
+
Used to measure time and log if time threshold passed.
|
| 23 |
+
Usage:
|
| 24 |
+
with TimerContext(tag="disk usage", theshold=10.0) as tc:
|
| 25 |
+
some_long_operation() # will log warning in case this takes more than 10 seconds
|
| 26 |
+
print(tc.elapsed) # elapsed data-member contains elapsed time in secs
|
| 27 |
+
"""
|
| 28 |
+
def __init__(self, tag="N/A", threshold=None):
|
| 29 |
+
super().__init__()
|
| 30 |
+
self.tag = tag
|
| 31 |
+
self.threshold = threshold
|
| 32 |
+
|
| 33 |
+
def __enter__(self):
|
| 34 |
+
self.start = time.time()
|
| 35 |
+
return self
|
| 36 |
+
|
| 37 |
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
| 38 |
+
self.elapsed = (time.time() - self.start)
|
| 39 |
+
self.elapsed_rounded = round(self.elapsed, 2)
|
| 40 |
+
if self.threshold is not None and self.elapsed > self.threshold:
|
| 41 |
+
logger.warning(f"Timer passed threshold: {self.tag} -- {self.elapsed_rounded}")
|
weight/esm-main/examples/lm-design/utils/ngram.py
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
#
|
| 6 |
+
from collections import Counter
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
import pickle
|
| 9 |
+
import random
|
| 10 |
+
import time
|
| 11 |
+
|
| 12 |
+
from nltk import ngrams
|
| 13 |
+
import numpy as np
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
# Code for loading constants for preprocessing
|
| 17 |
+
seq_encode = ['L', 'A', 'G', 'V', 'S', 'E', 'R', 'T', 'I', 'D', 'P', 'K', 'Q', 'N', 'F', 'Y', 'M', 'H', 'W', 'C']
|
| 18 |
+
BASE = Path('./utils/ngram_stats/')
|
| 19 |
+
ngram_list = []
|
| 20 |
+
for fn in ["monogram_seg.p", "bigram_seg.p", "trigram_seg.p", "quadgram_seg.p"]:
|
| 21 |
+
with open(BASE / fn, "rb") as f:
|
| 22 |
+
ngram_list.append(pickle.load(f))
|
| 23 |
+
|
| 24 |
+
# Recompute ngram frequency based off the valid sequences used for design
|
| 25 |
+
for i, ngram_dict in enumerate(ngram_list):
|
| 26 |
+
idx_dict = {}
|
| 27 |
+
for k, v in ngram_dict.items():
|
| 28 |
+
ids = []
|
| 29 |
+
error = False
|
| 30 |
+
|
| 31 |
+
for ki in k:
|
| 32 |
+
if ki not in seq_encode:
|
| 33 |
+
error = True
|
| 34 |
+
break
|
| 35 |
+
id = seq_encode.index(ki)
|
| 36 |
+
ids.append(id)
|
| 37 |
+
|
| 38 |
+
if error:
|
| 39 |
+
continue
|
| 40 |
+
|
| 41 |
+
ids = tuple(ids)
|
| 42 |
+
idx_dict[ids] = v
|
| 43 |
+
|
| 44 |
+
total = sum(idx_dict.values())
|
| 45 |
+
# Min value for ngram is 1e-5
|
| 46 |
+
idx_dict = {k: max(v / total, 1e-5) for k, v in idx_dict.items()}
|
| 47 |
+
|
| 48 |
+
ngram_list[i] = idx_dict
|
| 49 |
+
|
| 50 |
+
def encode(seq):
|
| 51 |
+
if isinstance(seq, np.ndarray):
|
| 52 |
+
return seq # already encoded
|
| 53 |
+
elif isinstance(seq, str):
|
| 54 |
+
return np.array([seq_encode.index(AA) for AA in seq])
|
| 55 |
+
else:
|
| 56 |
+
raise ValueError(f'Unknown seq type {seq}')
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
def compute_kl_div(seq, order):
|
| 60 |
+
# Inputs Args:
|
| 61 |
+
# Seq: N dimensional numpy array consisting of numbers between 0 and 19 (inclusive)
|
| 62 |
+
# Order: integer for order of ngram used (should be between 0 and 3 for now)
|
| 63 |
+
order_dict = ngram_list[order-1]
|
| 64 |
+
seq = encode(seq) # this is not the problem.
|
| 65 |
+
|
| 66 |
+
# Compute ngram frequency rate for the input sequence
|
| 67 |
+
tup_dict = Counter(ngrams(seq,n=order))
|
| 68 |
+
total = sum(tup_dict.values())
|
| 69 |
+
tup_dict = {k: v / total for k, v in tup_dict.items()}
|
| 70 |
+
|
| 71 |
+
p = np.array(list(tup_dict.values())) # observed probabilities of ngrams
|
| 72 |
+
q = np.array([order_dict.get(k, 1e-5) for k in tup_dict.keys()]) # learned ngram probabilities
|
| 73 |
+
return np.sum(p * np.log(p/q))
|
weight/esm-main/examples/lm-design/utils/pdb_loader.py
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
#
|
| 6 |
+
# Portions of this file were adapted from the open source code
|
| 7 |
+
# https://github.com/RosettaCommons/trRosetta2/tree/main
|
| 8 |
+
# Modifications were made to loader() and get_coords6d() functions:
|
| 9 |
+
# 1. addition of `set_diagonal` flag.
|
| 10 |
+
# 2. addition of `allow_missing_residue_coords` flag.
|
| 11 |
+
# Original License information below.
|
| 12 |
+
|
| 13 |
+
# MIT License
|
| 14 |
+
|
| 15 |
+
# Copyright (c) 2021 Ivan Anishchenko, Minkyung Baek, Naozumi Hiranuma, Ian Humphrey
|
| 16 |
+
|
| 17 |
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 18 |
+
# of this software and associated documentation files (the "Software"), to deal
|
| 19 |
+
# in the Software without restriction, including without limitation the rights
|
| 20 |
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 21 |
+
# copies of the Software, and to permit persons to whom the Software is
|
| 22 |
+
# furnished to do so, subject to the following conditions:
|
| 23 |
+
|
| 24 |
+
# The above copyright notice and this permission notice shall be included in all
|
| 25 |
+
# copies or substantial portions of the Software.
|
| 26 |
+
|
| 27 |
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 28 |
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 29 |
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 30 |
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 31 |
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 32 |
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 33 |
+
# SOFTWARE.
|
| 34 |
+
|
| 35 |
+
import numpy as np
|
| 36 |
+
import scipy
|
| 37 |
+
import scipy.spatial
|
| 38 |
+
import logging
|
| 39 |
+
|
| 40 |
+
logger = logging.getLogger(__name__)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
PDB_LOADER_PARAMS_DEFAULT = { # trRosetta-v2
|
| 44 |
+
"DMIN" : 2.0,
|
| 45 |
+
"DMAX" : 20.0,
|
| 46 |
+
"DBINS" : 36,
|
| 47 |
+
"ABINS" : 36,
|
| 48 |
+
"WMIN" : 0.8,
|
| 49 |
+
"LMIN" : 150,
|
| 50 |
+
"LMAX" : 400,
|
| 51 |
+
"EPOCHS" : 10,
|
| 52 |
+
"NCPU" : 8,
|
| 53 |
+
"SLICE" : "CONT",
|
| 54 |
+
"contact_bin_cutoff": (0, 11) # both inclusive
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
# calculate dihedral angles defined by 4 sets of points
|
| 59 |
+
def get_dihedrals(a, b, c, d):
|
| 60 |
+
|
| 61 |
+
b0 = -1.0*(b - a)
|
| 62 |
+
b1 = c - b
|
| 63 |
+
b2 = d - c
|
| 64 |
+
|
| 65 |
+
b1 /= np.linalg.norm(b1, axis=-1)[:,None]
|
| 66 |
+
|
| 67 |
+
v = b0 - np.sum(b0*b1, axis=-1)[:,None]*b1
|
| 68 |
+
w = b2 - np.sum(b2*b1, axis=-1)[:,None]*b1
|
| 69 |
+
|
| 70 |
+
x = np.sum(v*w, axis=-1)
|
| 71 |
+
y = np.sum(np.cross(b1, v)*w, axis=-1)
|
| 72 |
+
|
| 73 |
+
return np.arctan2(y, x)
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
# calculate planar angles defined by 3 sets of points
|
| 77 |
+
def get_angles(a, b, c):
|
| 78 |
+
|
| 79 |
+
v = a - b
|
| 80 |
+
v /= np.linalg.norm(v, axis=-1)[:,None]
|
| 81 |
+
|
| 82 |
+
w = c - b
|
| 83 |
+
w /= np.linalg.norm(w, axis=-1)[:,None]
|
| 84 |
+
|
| 85 |
+
x = np.sum(v*w, axis=1)
|
| 86 |
+
|
| 87 |
+
return np.arccos(x)
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
def nonans(arr):
|
| 91 |
+
return not (arr != arr).any()
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
# get 6d coordinates from x,y,z coords of N,Ca,C atoms
|
| 95 |
+
def get_coords6d(xyz, dmax, allow_missing_residue_coords=False):
|
| 96 |
+
|
| 97 |
+
nres = xyz.shape[1]
|
| 98 |
+
# three anchor atoms
|
| 99 |
+
N = xyz[0]
|
| 100 |
+
Ca = xyz[1]
|
| 101 |
+
C = xyz[2]
|
| 102 |
+
if not nonans(xyz):
|
| 103 |
+
assert allow_missing_residue_coords, "Missing residue coordinates"
|
| 104 |
+
logger.warning("PDB xyz contains NaNs!! Loading anyway...")
|
| 105 |
+
# recreate Cb given N,Ca,C
|
| 106 |
+
b = Ca - N
|
| 107 |
+
c = C - Ca
|
| 108 |
+
a = np.cross(b, c)
|
| 109 |
+
Cb = -0.58273431*a + 0.56802827*b - 0.54067466*c + Ca
|
| 110 |
+
|
| 111 |
+
# fast neighbors search to collect all
|
| 112 |
+
# Cb-Cb pairs within dmax
|
| 113 |
+
kdCb = scipy.spatial.cKDTree(Cb)
|
| 114 |
+
indices = kdCb.query_ball_tree(kdCb, dmax)
|
| 115 |
+
|
| 116 |
+
# indices of contacting residues
|
| 117 |
+
idx = np.array([[i,j] for i in range(len(indices)) for j in indices[i] if i != j]).T
|
| 118 |
+
idx0 = idx[0]
|
| 119 |
+
idx1 = idx[1]
|
| 120 |
+
|
| 121 |
+
# Cb-Cb distance matrix
|
| 122 |
+
dist6d = np.full((nres, nres), 999.9)
|
| 123 |
+
dist6d[idx0,idx1] = np.linalg.norm(Cb[idx1]-Cb[idx0], axis=-1)
|
| 124 |
+
|
| 125 |
+
# matrix of Ca-Cb-Cb-Ca dihedrals
|
| 126 |
+
omega6d = np.zeros((nres, nres))
|
| 127 |
+
omega6d[idx0,idx1] = get_dihedrals(Ca[idx0], Cb[idx0], Cb[idx1], Ca[idx1])
|
| 128 |
+
|
| 129 |
+
# matrix of polar coord theta
|
| 130 |
+
theta6d = np.zeros((nres, nres))
|
| 131 |
+
theta6d[idx0,idx1] = get_dihedrals(N[idx0], Ca[idx0], Cb[idx0], Cb[idx1])
|
| 132 |
+
|
| 133 |
+
# matrix of polar coord phi
|
| 134 |
+
phi6d = np.zeros((nres, nres))
|
| 135 |
+
phi6d[idx0,idx1] = get_angles(Ca[idx0], Cb[idx0], Cb[idx1])
|
| 136 |
+
|
| 137 |
+
if nonans(xyz):
|
| 138 |
+
# Set dist values to nan where there's no pdb 3d coordinates data
|
| 139 |
+
nan_residues = ((Cb != Cb).sum(-1) > 0)
|
| 140 |
+
nan_residues_mask = (nan_residues[None] | nan_residues[None].T)
|
| 141 |
+
dist6d[nan_residues_mask] = np.nan
|
| 142 |
+
omega6d[nan_residues_mask] = np.nan
|
| 143 |
+
theta6d[nan_residues_mask] = np.nan
|
| 144 |
+
phi6d[nan_residues_mask] = np.nan
|
| 145 |
+
|
| 146 |
+
return dist6d, omega6d, theta6d, phi6d
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
def parse_PDB(pdb_path, atoms=['N','CA','C'], chain=None, return_aligned_seq=False):
|
| 150 |
+
'''
|
| 151 |
+
input: pdb_path = PDB filename
|
| 152 |
+
atoms = atoms to extract (optional)
|
| 153 |
+
output: (length, atoms, coords=(x,y,z)), sequence
|
| 154 |
+
'''
|
| 155 |
+
xyz,seq,doubles,min_resn,max_resn = {},{},{},np.inf,-np.inf
|
| 156 |
+
with open(pdb_path,"rb") as f:
|
| 157 |
+
for line in f:
|
| 158 |
+
line = line.decode("utf-8","ignore").rstrip()
|
| 159 |
+
|
| 160 |
+
if line[:6] == "HETATM" and line[17:17+3] == "MSE":
|
| 161 |
+
line = line.replace("HETATM","ATOM ")
|
| 162 |
+
line = line.replace("MSE","MET")
|
| 163 |
+
|
| 164 |
+
if line[:4] == "ATOM":
|
| 165 |
+
ch = line[21:22]
|
| 166 |
+
if ch == chain or chain is None:
|
| 167 |
+
atom = line[12:12+4].strip()
|
| 168 |
+
resi = line[17:17+3]
|
| 169 |
+
resi_extended = line[16:17 + 3].strip()
|
| 170 |
+
resn = line[22:22+5].strip()
|
| 171 |
+
x,y,z = [float(line[i:(i+8)]) for i in [30,38,46]]
|
| 172 |
+
|
| 173 |
+
if resn[-1].isalpha(): resa,resn = resn[-1],int(resn[:-1])-1
|
| 174 |
+
else: resa,resn = "",int(resn)-1
|
| 175 |
+
if resn < min_resn: min_resn = resn
|
| 176 |
+
if resn > max_resn: max_resn = resn
|
| 177 |
+
if resn not in xyz: xyz[resn] = {}
|
| 178 |
+
if resa not in xyz[resn]: xyz[resn][resa] = {}
|
| 179 |
+
if resn not in seq: seq[resn] = {}
|
| 180 |
+
if resa not in seq[resn]:
|
| 181 |
+
seq[resn][resa] = resi
|
| 182 |
+
elif seq[resn][resa] != resi_extended:
|
| 183 |
+
# doubles mark locations in the pdb file where multi residue entries are
|
| 184 |
+
# present. There's a known bug in TmAlign binary that doesn't read / skip
|
| 185 |
+
# these entries, so we mark them to create a sequence that is aligned with
|
| 186 |
+
# gap tokens in such locations.
|
| 187 |
+
doubles[resn] = True
|
| 188 |
+
|
| 189 |
+
if atom not in xyz[resn][resa]:
|
| 190 |
+
xyz[resn][resa][atom] = np.array([x,y,z])
|
| 191 |
+
|
| 192 |
+
# convert to numpy arrays, fill in missing values
|
| 193 |
+
seq_,xyz_,aligned_seq_ = [],[],[]
|
| 194 |
+
for resn in range(min_resn,max_resn+1):
|
| 195 |
+
if resn in seq:
|
| 196 |
+
for k in sorted(seq[resn]):
|
| 197 |
+
seq_.append(aa_3_N.get(seq[resn][k],20))
|
| 198 |
+
aligned_seq_.append(seq_[-1]) if resn not in doubles else aligned_seq_.append(20)
|
| 199 |
+
else:
|
| 200 |
+
seq_.append(20)
|
| 201 |
+
if resn in xyz:
|
| 202 |
+
for k in sorted(xyz[resn]):
|
| 203 |
+
for atom in atoms:
|
| 204 |
+
if atom in xyz[resn][k]: xyz_.append(xyz[resn][k][atom])
|
| 205 |
+
else: xyz_.append(np.full(3,np.nan))
|
| 206 |
+
else:
|
| 207 |
+
for atom in atoms: xyz_.append(np.full(3,np.nan))
|
| 208 |
+
|
| 209 |
+
res = [np.array(xyz_).reshape(-1,len(atoms),3), N_to_AA(np.array(seq_))]
|
| 210 |
+
if return_aligned_seq:
|
| 211 |
+
res += [N_to_AA(np.array(aligned_seq_))]
|
| 212 |
+
return res
|
| 213 |
+
|
| 214 |
+
def N_to_AA(x):
|
| 215 |
+
# [[0,1,2,3]] -> ["ARND"]
|
| 216 |
+
x = np.array(x);
|
| 217 |
+
if x.ndim == 1: x = x[None]
|
| 218 |
+
return ["".join([aa_N_1.get(a,"-") for a in y]) for y in x]
|
| 219 |
+
|
| 220 |
+
alpha_1 = list("ARNDCQEGHILKMFPSTWYV-")
|
| 221 |
+
alpha_3 = ['ALA','ARG','ASN','ASP','CYS','GLN','GLU','GLY','HIS','ILE',
|
| 222 |
+
'LEU','LYS','MET','PHE','PRO','SER','THR','TRP','TYR','VAL','GAP']
|
| 223 |
+
|
| 224 |
+
aa_3_N = {a:n for n,a in enumerate(alpha_3)}
|
| 225 |
+
aa_N_1 = {n:a for n,a in enumerate(alpha_1)}
|
| 226 |
+
|
| 227 |
+
def loader(pdb_path, params, chain=None, set_diagonal=False, allow_missing_residue_coords=False):
|
| 228 |
+
"""
|
| 229 |
+
Args:
|
| 230 |
+
pdb_path: path to pdb file
|
| 231 |
+
params: dict with hyperparams
|
| 232 |
+
chain: <unused>
|
| 233 |
+
set_diagonal: sets diagonal to specific default values.
|
| 234 |
+
"""
|
| 235 |
+
orig_xyz, seq = parse_PDB(pdb_path, atoms=['N','CA','C'], chain=None)
|
| 236 |
+
xyz = np.transpose(orig_xyz, (1,0,2))
|
| 237 |
+
idx = np.arange(xyz.shape[1])
|
| 238 |
+
# get 6D coords
|
| 239 |
+
d,o,t,p = get_coords6d(xyz, params['DMAX'], allow_missing_residue_coords)
|
| 240 |
+
no_angles = any([np.isnan(x).any() for x in [o,t,p]])
|
| 241 |
+
|
| 242 |
+
# bin 6D coords
|
| 243 |
+
if params['DMIN'] == 2.5:
|
| 244 |
+
dbins = np.linspace(params['DMIN'], params['DMAX'], params['DBINS'])
|
| 245 |
+
else:
|
| 246 |
+
dstep = (params['DMAX'] - params['DMIN']) / params['DBINS']
|
| 247 |
+
dbins = np.linspace(params['DMIN'] + dstep, params['DMAX'], params['DBINS'])
|
| 248 |
+
|
| 249 |
+
angle_step = 2.0 * np.pi / params['ABINS']
|
| 250 |
+
ab360 = np.linspace(-np.pi + angle_step, np.pi, params['ABINS'])
|
| 251 |
+
phi_last_bin = int(params['ABINS']/2)
|
| 252 |
+
if "PHI_BINS" in params:
|
| 253 |
+
phi_last_bin = params['PHI_BINS']
|
| 254 |
+
ab180 = np.linspace(angle_step, np.pi, phi_last_bin)
|
| 255 |
+
|
| 256 |
+
db = np.digitize(d, dbins).astype(np.uint8) # distance
|
| 257 |
+
ob = np.digitize(o, ab360).astype(np.uint8) # omega
|
| 258 |
+
tb = np.digitize(t, ab360).astype(np.uint8) # theta
|
| 259 |
+
pb = np.digitize(p, ab180).astype(np.uint8) # phi
|
| 260 |
+
|
| 261 |
+
# synchronize 'no contact' bins
|
| 262 |
+
ob[db == params['DBINS']] = params['ABINS']
|
| 263 |
+
tb[db == params['DBINS']] = params['ABINS']
|
| 264 |
+
pb[db == params['DBINS']] = phi_last_bin
|
| 265 |
+
|
| 266 |
+
if set_diagonal:
|
| 267 |
+
db[np.eye(db.shape[0]).astype(bool)] = 0
|
| 268 |
+
ob[np.eye(ob.shape[0]).astype(bool)] = int(params['ABINS']/2)
|
| 269 |
+
tb[np.eye(tb.shape[0]).astype(bool)] = int(params['ABINS']/2)
|
| 270 |
+
pb[np.eye(pb.shape[0]).astype(bool)] = 0
|
| 271 |
+
|
| 272 |
+
# (11/20/2021)
|
| 273 |
+
# Added masking of this diagonal as well.
|
| 274 |
+
# This matches the way contact predictions were trained.
|
| 275 |
+
d[np.eye(db.shape[0]).astype(bool)] = 0
|
| 276 |
+
|
| 277 |
+
# stack all coords together
|
| 278 |
+
if no_angles:
|
| 279 |
+
c6d = db[None, :] # only distogram, unsqueezed(0)
|
| 280 |
+
else:
|
| 281 |
+
c6d = np.stack([db,ob,tb,pb], axis=0)
|
| 282 |
+
|
| 283 |
+
# slice long chains
|
| 284 |
+
L = idx.shape[0]
|
| 285 |
+
start,stop,nres = 0,L,L
|
| 286 |
+
sel = np.arange(0, L)
|
| 287 |
+
if L > params['LMAX']:
|
| 288 |
+
|
| 289 |
+
if params['SLICE'] == 'CONT':
|
| 290 |
+
# slice continuously
|
| 291 |
+
nres = np.random.randint(params['LMIN'], params['LMAX'])
|
| 292 |
+
logger.warning("Slicing long chain %s into %s residues", pdb_path, nres)
|
| 293 |
+
# nres = params['LMAX']
|
| 294 |
+
start = np.random.randint(L-nres+1)
|
| 295 |
+
# start = 0
|
| 296 |
+
stop = start + nres
|
| 297 |
+
sel = np.arange(start,stop)
|
| 298 |
+
|
| 299 |
+
if (idx[sel][1:]-idx[sel][:-1]==1).all(): #check if idx has no gaps
|
| 300 |
+
feed_dict = {
|
| 301 |
+
"idx" : idx[sel],
|
| 302 |
+
"idx_raw" : idx,
|
| 303 |
+
"coords6d" : c6d[:,sel,:][:,:,sel],
|
| 304 |
+
"sel" : sel,
|
| 305 |
+
"dist" : d[sel,:][:,sel],
|
| 306 |
+
"fullseq" : [seq[0]],
|
| 307 |
+
'no_angles': no_angles,
|
| 308 |
+
'xyz' : orig_xyz
|
| 309 |
+
}
|
| 310 |
+
else:
|
| 311 |
+
feed_dict = {
|
| 312 |
+
"idx" : idx[sel],
|
| 313 |
+
"idx_raw" : idx,
|
| 314 |
+
"coords6d" : np.zeros(1),
|
| 315 |
+
"sel" : sel,
|
| 316 |
+
"dist" : d[sel,:][:,sel],
|
| 317 |
+
"fullseq" : [seq[0]],
|
| 318 |
+
'no_angles': no_angles,
|
| 319 |
+
'xyz' : orig_xyz
|
| 320 |
+
}
|
| 321 |
+
return feed_dict
|
weight/esm-main/examples/lm-design/utils/sampling.py
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from contextlib import contextmanager
|
| 7 |
+
import logging
|
| 8 |
+
import numpy as np
|
| 9 |
+
import random
|
| 10 |
+
from typing import Any, List, Optional, Union, Dict
|
| 11 |
+
|
| 12 |
+
import torch
|
| 13 |
+
import torch.nn.functional as F
|
| 14 |
+
|
| 15 |
+
from .tensor import (
|
| 16 |
+
assert_logprobs,
|
| 17 |
+
is_1hot_tensor,
|
| 18 |
+
)
|
| 19 |
+
|
| 20 |
+
logger = logging.getLogger(__name__)
|
| 21 |
+
|
| 22 |
+
"""
|
| 23 |
+
Mental model:
|
| 24 |
+
1. This file contains everything that enables + modifies sampling from distributions.
|
| 25 |
+
"""
|
| 26 |
+
|
| 27 |
+
SeedDict = Dict[str, Any]
|
| 28 |
+
def get_rng_states() -> SeedDict:
|
| 29 |
+
""" Retrieves a dictionary of seeds for all rngs. """
|
| 30 |
+
rng_states = {
|
| 31 |
+
'torch': torch.get_rng_state(),
|
| 32 |
+
'torch.cuda': torch.cuda.get_rng_state(),
|
| 33 |
+
'random': random.getstate(),
|
| 34 |
+
'numpy': np.random.get_state(),
|
| 35 |
+
}
|
| 36 |
+
return rng_states
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
def set_rng_states(rng_state: SeedDict):
|
| 40 |
+
""" Sets seeds of all rngs based on a dictionary of rng states. """
|
| 41 |
+
torch.set_rng_state(rng_state['torch'])
|
| 42 |
+
torch.cuda.set_rng_state(rng_state['torch.cuda'])
|
| 43 |
+
random.setstate(rng_state['random'])
|
| 44 |
+
np.random.set_state(rng_state['numpy'])
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def set_rng_seeds(seed: Union[SeedDict, int]):
|
| 48 |
+
""" Sets seeds of all rngs based on a single integer """
|
| 49 |
+
torch.manual_seed(seed)
|
| 50 |
+
torch.cuda.manual_seed(seed)
|
| 51 |
+
random.seed(seed)
|
| 52 |
+
np.random.seed(seed)
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
@contextmanager
|
| 56 |
+
def set_rng_seeds_context(seeds: Union[SeedDict, int], disable=False):
|
| 57 |
+
""" Context manager for temporarily setting seeds.
|
| 58 |
+
For example, can be used when random sampling to get
|
| 59 |
+
deterministic outputs for test cases. """
|
| 60 |
+
if disable:
|
| 61 |
+
yield
|
| 62 |
+
else:
|
| 63 |
+
rng_states = get_rng_states()
|
| 64 |
+
set_rng_seeds(seeds)
|
| 65 |
+
yield
|
| 66 |
+
set_rng_states(rng_states)
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
def top_p_filtering(logits, top_p=0.0, filter_value=-float('Inf')):
|
| 70 |
+
"""
|
| 71 |
+
Filter a distribution of logits using nucleus (top-p) filtering
|
| 72 |
+
Args:
|
| 73 |
+
logits: prob distribution shape (vocabulary size)
|
| 74 |
+
top_p >0.0: keep the top tokens with cumulative probability >= top_p (nucleus filtering).
|
| 75 |
+
Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)
|
| 76 |
+
Returns:
|
| 77 |
+
given logits with filter_value at low probabilities (not in top-p)
|
| 78 |
+
"""
|
| 79 |
+
sorted_logits, sorted_indices = torch.sort(logits, dim=-1, descending=True)
|
| 80 |
+
cumulative_probs = torch.cumsum(F.softmax(sorted_logits, dim=-1), dim=-1)
|
| 81 |
+
assert (cumulative_probs[..., -1].round() == 1).all(), "Probabilities don't add up to one"
|
| 82 |
+
|
| 83 |
+
# Remove tokens with cumulative probability above the threshold
|
| 84 |
+
sorted_indices_to_remove = cumulative_probs > top_p
|
| 85 |
+
# Shift the indices to the right to keep also the first token above the threshold
|
| 86 |
+
sorted_indices_to_remove[..., 1:] = sorted_indices_to_remove[..., :-1].clone()
|
| 87 |
+
sorted_indices_to_remove[..., 0] = False
|
| 88 |
+
# Reorder the mask to locations before sorting and apply it to logits
|
| 89 |
+
sorted_indices_to_remove = sorted_indices_to_remove.gather(-1, sorted_indices.argsort(-1))
|
| 90 |
+
logits[sorted_indices_to_remove] = filter_value
|
| 91 |
+
return logits
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def explore_ratio(probs, x_old, exploration_ratio):
|
| 95 |
+
"""
|
| 96 |
+
Description:
|
| 97 |
+
Given:
|
| 98 |
+
1. a tensor with arbitrary leading dimensions
|
| 99 |
+
and valid probabilities in the final dimension
|
| 100 |
+
2. a tensor of same size, but 1-hot in the trailing dimension
|
| 101 |
+
apply "eps-force" to all of the distributions.
|
| 102 |
+
"eps-force" is a heuristic used in 2021 to prevent self-mutations.
|
| 103 |
+
It does two things:
|
| 104 |
+
1. It bounds the probability of positions in `probs` that
|
| 105 |
+
are ==1 in `x_old` to be at most == `exploration_ratio`.
|
| 106 |
+
2. If this caused a reduction in probability mass, redistribute
|
| 107 |
+
that reduction (`overage`) among the other positions via
|
| 108 |
+
__scaling__ the other positions multiplicatively.
|
| 109 |
+
This retains the proportionality of the other positions.
|
| 110 |
+
Args:
|
| 111 |
+
probs (torch.float32): [*, K]
|
| 112 |
+
x_old: 1 hot of previous values, to cap. [*, K]
|
| 113 |
+
Example:
|
| 114 |
+
Given:
|
| 115 |
+
probs: [0.8, 0.15, 0.05]
|
| 116 |
+
x_old: [1, 0, 0]
|
| 117 |
+
exploration_ratio = 0.6
|
| 118 |
+
Return:
|
| 119 |
+
[0.8-0.2, 0.15*2, 0.05*2] == [0.6, 0.3, 0.1]
|
| 120 |
+
"""
|
| 121 |
+
assert probs.shape == x_old.shape, (probs.shape, x_old.shape)
|
| 122 |
+
assert is_1hot_tensor(x_old)
|
| 123 |
+
thresh = 1 - exploration_ratio
|
| 124 |
+
|
| 125 |
+
# Amount that x_old exceeded thresh, in all batch dims.
|
| 126 |
+
overage = ((probs * x_old).sum(-1, keepdim=True) - thresh).clamp(0) # [*]
|
| 127 |
+
|
| 128 |
+
# Push down old positions accoring to overage.
|
| 129 |
+
probs = probs - x_old * overage # [*, K]
|
| 130 |
+
|
| 131 |
+
# Scale up all other positions (probs_fresh) so that it sums to overage.
|
| 132 |
+
probs_fresh = probs * (1-x_old) + 1e-8 # [*, K]
|
| 133 |
+
probs = probs + probs_fresh * overage / probs_fresh.sum(-1, keepdim=True) # [*, K]
|
| 134 |
+
|
| 135 |
+
return probs
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
def modify_logits(
|
| 139 |
+
# Input:
|
| 140 |
+
logits,
|
| 141 |
+
|
| 142 |
+
# Settings:
|
| 143 |
+
x_old = None,
|
| 144 |
+
mask = None,
|
| 145 |
+
force_propose_new_tokens = None,
|
| 146 |
+
nucleus_sampling_rate = None,
|
| 147 |
+
epsilon_force_mutation_ratio = None,
|
| 148 |
+
epsilon_greedy_bypass = None,
|
| 149 |
+
temperature = None,
|
| 150 |
+
):
|
| 151 |
+
"""
|
| 152 |
+
General purpose modifier of logits/logprobs.
|
| 153 |
+
Args:
|
| 154 |
+
logits: [*, K] (potentially batched) tensor of distributions in final dim, K.
|
| 155 |
+
x_old: [*, K] optional one-hot tensor representing current values.
|
| 156 |
+
Some subsequent flags use this to promote sampling of new values.
|
| 157 |
+
mask: [K] Boolean tensor for final dimension.
|
| 158 |
+
Probability mass is only allowed where mask == True.
|
| 159 |
+
force_propose_new_tokens (bool): If true, don't allow any probability mass on returns logprobs where x_old == True.
|
| 160 |
+
nucleus_sampling_rate (float in range [0, 1]): Fraction of nucleus sampling to use.
|
| 161 |
+
epsilon_force_mutation_ratio (float in range [0, 1]): Fraction of eps-force to use.
|
| 162 |
+
epsilon_greedy_bypass (float in range [0, 1]): Fraction of epsilon greedy to use.
|
| 163 |
+
temperature (float): The temperature used for conversion of logits -> probs in Softmax operation.
|
| 164 |
+
|
| 165 |
+
Returns:
|
| 166 |
+
logprobs [*, K]. This is good for numerical precision issues, and is a bit nicer than logits.
|
| 167 |
+
"""
|
| 168 |
+
# Ensure logprobs at the start
|
| 169 |
+
logprobs = logits.log_softmax(-1)
|
| 170 |
+
assert_logprobs(logprobs)
|
| 171 |
+
K = logprobs.size(-1)
|
| 172 |
+
if x_old is not None:
|
| 173 |
+
assert logprobs.shape == x_old.shape
|
| 174 |
+
|
| 175 |
+
# Handle optional specification of mask, which will clear some positions.
|
| 176 |
+
if mask is None:
|
| 177 |
+
mask = torch.ones(K, device=logprobs.device).bool()
|
| 178 |
+
logits = logprobs.masked_fill(~mask, -float('inf'))
|
| 179 |
+
|
| 180 |
+
# Do logprob-based modifications.
|
| 181 |
+
if force_propose_new_tokens:
|
| 182 |
+
logits = logits.masked_fill(x_old.bool(), -float('inf'))
|
| 183 |
+
if nucleus_sampling_rate is not None:
|
| 184 |
+
logits = top_p_filtering(logits=logits, top_p=nucleus_sampling_rate)
|
| 185 |
+
|
| 186 |
+
# Convert to probs for prob-based modifications.
|
| 187 |
+
probs = F.softmax(logits/temperature, dim=-1)
|
| 188 |
+
|
| 189 |
+
# Do prob-based modifications.
|
| 190 |
+
if epsilon_force_mutation_ratio is not None:
|
| 191 |
+
probs = explore_ratio(probs, x_old, epsilon_force_mutation_ratio)
|
| 192 |
+
if epsilon_greedy_bypass is not None and torch.rand(1) < epsilon_greedy_bypass: # do only for valid AA's?
|
| 193 |
+
probs = torch.ones_like(probs) / K
|
| 194 |
+
|
| 195 |
+
# 4. probs -> logits
|
| 196 |
+
# NOTE: This eps used to be way too high.
|
| 197 |
+
# Keep in mind that eps needs to be lower than 1e-32 for proper test case matching
|
| 198 |
+
# in some cases, when adding the global EPS.
|
| 199 |
+
log_probs = (probs + 1e-100).log()
|
| 200 |
+
logits = log_probs.masked_fill(~mask, -float('inf'))
|
| 201 |
+
return logits
|
weight/esm-main/examples/lm-design/utils/scheduler.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from typing import Any, Optional, Union
|
| 7 |
+
from numbers import Number
|
| 8 |
+
|
| 9 |
+
import torch
|
| 10 |
+
|
| 11 |
+
SCHEDULER_REPOSITORY = {}
|
| 12 |
+
|
| 13 |
+
class Scheduler:
|
| 14 |
+
def __init__(
|
| 15 |
+
self, optimizer: Optional[Any], scheduler: str, initial: float, **schedulerspec
|
| 16 |
+
):
|
| 17 |
+
if optimizer is None:
|
| 18 |
+
# Dummy optimizer to wrap with lr_scheduler
|
| 19 |
+
dummy = torch.tensor([], requires_grad=True)
|
| 20 |
+
optimizer = torch.optim.SGD([dummy], lr=initial)
|
| 21 |
+
self.dummy_optimizer = optimizer
|
| 22 |
+
else:
|
| 23 |
+
self.dummy_optimizer = None
|
| 24 |
+
self.name = scheduler
|
| 25 |
+
self._scheduler = getattr(torch.optim.lr_scheduler, self.name)(
|
| 26 |
+
optimizer, **schedulerspec
|
| 27 |
+
)
|
| 28 |
+
self.initial = initial
|
| 29 |
+
|
| 30 |
+
def step(self):
|
| 31 |
+
if self.dummy_optimizer:
|
| 32 |
+
self.dummy_optimizer.step() # Avoid UserWarning about step order
|
| 33 |
+
self._scheduler.step()
|
| 34 |
+
|
| 35 |
+
def __call__(self):
|
| 36 |
+
return self._scheduler.get_last_lr()[0]
|
| 37 |
+
|
| 38 |
+
SchedulerSpecDict = dict
|
| 39 |
+
SchedulerSpec = Union[float, str, SchedulerSpecDict]
|
| 40 |
+
|
| 41 |
+
class ConstantSchedule():
|
| 42 |
+
"""
|
| 43 |
+
Schedule that returns a constant value, defined at init.
|
| 44 |
+
Pickle-able, as opposed to `lambda: value`.
|
| 45 |
+
"""
|
| 46 |
+
def __init__(self, value: Number):
|
| 47 |
+
self.value = value
|
| 48 |
+
def __call__(self):
|
| 49 |
+
return self.value
|
| 50 |
+
|
| 51 |
+
def to_scheduler(sspec: SchedulerSpec):
|
| 52 |
+
""" Helper for initializing schedulers from config. """
|
| 53 |
+
if isinstance(sspec, str):
|
| 54 |
+
sspec = SCHEDULER_REPOSITORY[sspec]
|
| 55 |
+
optimizer = None
|
| 56 |
+
elif isinstance(sspec, tuple):
|
| 57 |
+
# There is an actual optimizer to wrap
|
| 58 |
+
optimizer, sspec = sspec
|
| 59 |
+
else:
|
| 60 |
+
optimizer = None
|
| 61 |
+
# Initialize real Scheduler, or dummy lambda
|
| 62 |
+
if isinstance(sspec, Number):
|
| 63 |
+
return ConstantSchedule(sspec)
|
| 64 |
+
else:
|
| 65 |
+
return Scheduler(optimizer, **sspec)
|
| 66 |
+
|
| 67 |
+
def set_scheduler_repo(repo: dict):
|
| 68 |
+
global SCHEDULER_REPOSITORY
|
| 69 |
+
SCHEDULER_REPOSITORY = repo
|
weight/esm-main/examples/lm-design/utils/struct_models.py
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
import logging
|
| 7 |
+
from typing import Tuple, Dict
|
| 8 |
+
import torch
|
| 9 |
+
from torch import nn
|
| 10 |
+
from esm.data import Alphabet
|
| 11 |
+
from utils.tensor import add_eos_bos, is_1hot_tensor
|
| 12 |
+
from torch import nn
|
| 13 |
+
from torch.nn import functional as F
|
| 14 |
+
from abc import ABC, abstractmethod
|
| 15 |
+
import hydra
|
| 16 |
+
import os
|
| 17 |
+
|
| 18 |
+
from utils.linear_projection import LinearProjectionDistogramModel
|
| 19 |
+
|
| 20 |
+
logger = logging.getLogger(__name__) # Hydra configured
|
| 21 |
+
|
| 22 |
+
PDB_LOADER_PARAM_REGISTRY = {
|
| 23 |
+
'LinearProjectionDist-1A': {
|
| 24 |
+
"DMIN": 2.5,
|
| 25 |
+
"DMAX": 20.0,
|
| 26 |
+
"DBINS": 17,
|
| 27 |
+
"ABINS": 17,
|
| 28 |
+
"PHI_BINS": 7,
|
| 29 |
+
"WMIN": 0.8,
|
| 30 |
+
"LMIN": 150,
|
| 31 |
+
"LMAX": 400,
|
| 32 |
+
"EPOCHS": 10,
|
| 33 |
+
"NCPU": 8,
|
| 34 |
+
"SLICE": "CONT",
|
| 35 |
+
"contact_bin_cutoff": (0, 5) # both inclusive
|
| 36 |
+
},
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class WrapStruct(nn.Module, ABC):
|
| 41 |
+
"""
|
| 42 |
+
Wraps structure models used by Designer.
|
| 43 |
+
Companion of WrapLM.
|
| 44 |
+
"""
|
| 45 |
+
def __init__(self, model, vocab, has_eos=False):
|
| 46 |
+
super().__init__()
|
| 47 |
+
self.model = model
|
| 48 |
+
self.vocab = vocab
|
| 49 |
+
self.has_eos = has_eos
|
| 50 |
+
|
| 51 |
+
@abstractmethod
|
| 52 |
+
def forward(self, seq1h, pos_idx=None):
|
| 53 |
+
raise NotImplementedError
|
| 54 |
+
|
| 55 |
+
@property
|
| 56 |
+
def msa_based(self):
|
| 57 |
+
return False
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def load(vocab: Alphabet) -> Tuple[nn.Module, Dict]:
|
| 61 |
+
|
| 62 |
+
pdb_loader_params = PDB_LOADER_PARAM_REGISTRY['LinearProjectionDist-1A']
|
| 63 |
+
model = load_model()
|
| 64 |
+
has_eos = True
|
| 65 |
+
return WrapStructModel(model, vocab, has_eos), pdb_loader_params
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
def load_model():
|
| 69 |
+
model_url_path = 'https://dl.fbaipublicfiles.com/fair-esm/examples/lm_design/linear_projection_model.pt'
|
| 70 |
+
local_model_path = hydra.utils.to_absolute_path('./linear_projection_model.pt')
|
| 71 |
+
if not os.path.exists(local_model_path):
|
| 72 |
+
logger.info(f'Downloading linear projection model from {model_url_path} to {local_model_path}')
|
| 73 |
+
os.system(f'wget {model_url_path} -O {local_model_path}')
|
| 74 |
+
|
| 75 |
+
# load model_path
|
| 76 |
+
state = torch.load(local_model_path, map_location='cpu')
|
| 77 |
+
# chkpt_args = state['cfg']
|
| 78 |
+
model = LinearProjectionDistogramModel()
|
| 79 |
+
model_state = state['model']
|
| 80 |
+
model.load_state_dict(model_state)
|
| 81 |
+
from esm.pretrained import esm2_t33_650M_UR50D
|
| 82 |
+
base_model, alphabet = esm2_t33_650M_UR50D()
|
| 83 |
+
model.base_model = base_model
|
| 84 |
+
return model
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
class WrapStructModel(WrapStruct):
|
| 88 |
+
def forward(self, seq1h, pos_idx=None):
|
| 89 |
+
assert is_1hot_tensor(seq1h)
|
| 90 |
+
B, L, K = seq1h.shape
|
| 91 |
+
# Prepend bos/cls only.
|
| 92 |
+
eos_idx = self.vocab.eos_idx if self.has_eos else None
|
| 93 |
+
seq1h = add_eos_bos(seq1h, bos_idx=self.vocab.cls_idx, eos_idx=eos_idx)
|
| 94 |
+
# In designer, all seqs have same length.
|
| 95 |
+
src_lengths = torch.full((B,), L + 1 + int(self.has_eos)).to(seq1h).long()
|
| 96 |
+
|
| 97 |
+
# In some cases, a vocab padded to 64 positions
|
| 98 |
+
# with dummy character was used.
|
| 99 |
+
# As a workaround, pad K dimensions up to 64 (embed_dim),
|
| 100 |
+
# then remove this portion after to get K tokens back.
|
| 101 |
+
embed_dim = self.model.base_model.embed_tokens.weight.size(0)
|
| 102 |
+
if embed_dim != K:
|
| 103 |
+
seq1h = torch.cat([
|
| 104 |
+
seq1h,
|
| 105 |
+
torch.zeros(B, L+1, embed_dim - K).to(seq1h)
|
| 106 |
+
], -1)
|
| 107 |
+
|
| 108 |
+
# Call forward. bos/eos will be stripped inside.
|
| 109 |
+
out_dict = self.model(seq1h, src_lengths=src_lengths)
|
| 110 |
+
return self._process_output(out_dict)
|
| 111 |
+
|
| 112 |
+
@property
|
| 113 |
+
def lm(self):
|
| 114 |
+
return self.model.base_model
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
@staticmethod
|
| 118 |
+
def _process_output(out_dict):
|
| 119 |
+
for k in ('logits', 'theta_logits', 'phi_logits', 'omega_logits'):
|
| 120 |
+
out_dict[k] = out_dict[k].permute(0, 2, 3, 1).contiguous()
|
| 121 |
+
|
| 122 |
+
if 'logits' in out_dict:
|
| 123 |
+
out_dict['dist_logits'] = out_dict['logits']
|
| 124 |
+
del out_dict['logits']
|
| 125 |
+
for k in [k for k in out_dict if k.endswith('_logits')]:
|
| 126 |
+
targetname = k[:-len('_logits')]
|
| 127 |
+
out_dict[f'p_{targetname}'] = F.softmax(out_dict[k], -1)
|
| 128 |
+
return out_dict
|
weight/esm-main/examples/lm-design/utils/tensor.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
#
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from typing import List, Optional
|
| 7 |
+
|
| 8 |
+
import torch
|
| 9 |
+
import torch.nn.functional as F
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def get_line_info():
|
| 13 |
+
from inspect import getframeinfo, currentframe
|
| 14 |
+
|
| 15 |
+
caller = getframeinfo(currentframe().f_back)
|
| 16 |
+
return f"{caller.filename}:{caller.lineno}"
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def assert_shape(tensor, *shape_args):
|
| 20 |
+
# This only returns the unbound shapes
|
| 21 |
+
source = f'{get_line_info()}:'
|
| 22 |
+
assert len(tensor.shape) == len(shape_args), f"{source} should have {len(shape_args)} dimensions, actually has shape {tensor.shape}"
|
| 23 |
+
unbound = []
|
| 24 |
+
for i, ii in enumerate(shape_args):
|
| 25 |
+
if ii == -1:
|
| 26 |
+
unbound.append(tensor.shape[i])
|
| 27 |
+
else:
|
| 28 |
+
assert (
|
| 29 |
+
tensor.shape[i] == ii
|
| 30 |
+
), f"{source} shape should be {shape_args}, actually {tensor.shape}"
|
| 31 |
+
if len(unbound) == 1:
|
| 32 |
+
return unbound[0]
|
| 33 |
+
return unbound
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def assert_probs(tensor: torch.FloatTensor):
|
| 37 |
+
""" Assert that [*,K] input tensor is valid probs in final dim. """
|
| 38 |
+
assert is_prob_tensor(tensor)
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
def assert_logprobs(tensor: torch.FloatTensor):
|
| 42 |
+
""" Assert that [*,K] input tensor is valid logprobs in final dim. """
|
| 43 |
+
try:
|
| 44 |
+
assert_probs(tensor.exp())
|
| 45 |
+
except AssertionError:
|
| 46 |
+
raise AssertionError('Not logprobs, perhaps you have logits and need to apply F.log_softmax?')
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
def is_1hot_tensor(x1h):
|
| 50 |
+
return x1h.min() == 0 and x1h.max() == 1 and \
|
| 51 |
+
x1h.shape[-1] > 1 and (x1h.sum(-1) == 1).all()
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
def is_prob_tensor(p, atol=1e-3):
|
| 55 |
+
return (
|
| 56 |
+
p.min() >= 0
|
| 57 |
+
and p.max() <= 1
|
| 58 |
+
and torch.isclose(
|
| 59 |
+
p.sum(axis=-1), torch.ones_like(p.sum(axis=-1)), atol=atol).all()
|
| 60 |
+
).item()
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
def add_eos_bos(
|
| 64 |
+
seq1h,
|
| 65 |
+
bos_idx: Optional[int] = None,
|
| 66 |
+
eos_idx: Optional[int] = None,
|
| 67 |
+
):
|
| 68 |
+
"""
|
| 69 |
+
Helper for (possibly) prepending bos/cls and appending eos tokens.
|
| 70 |
+
"""
|
| 71 |
+
B, L, K = seq1h.shape
|
| 72 |
+
|
| 73 |
+
to_concat = []
|
| 74 |
+
if bos_idx is not None:
|
| 75 |
+
to_concat.append(F.one_hot(torch.full([B,1], bos_idx), K).to(seq1h))
|
| 76 |
+
to_concat.append(seq1h)
|
| 77 |
+
if eos_idx is not None:
|
| 78 |
+
to_concat.append(F.one_hot(torch.full([B,1], eos_idx), K).to(seq1h))
|
| 79 |
+
seq1h = torch.cat(to_concat, axis=1)
|
| 80 |
+
|
| 81 |
+
return seq1h
|
weight/esm-main/examples/protein-programming-language/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Protein programming language
|
| 2 |
+
|
| 3 |
+
This repository contains an implementation of the programming language described in the paper [A high-level programming language for generative protein design](https://www.biorxiv.org/content/10.1101/2022.12.21.521526v1).
|
| 4 |
+
|
| 5 |
+
## Tutorial
|
| 6 |
+
|
| 7 |
+
We have provided a [tutorial notebook](tutorial.ipynb) describing the basics of writing programs and running optimization loops.
|
| 8 |
+
The notebook can be run in Colab:
|
| 9 |
+
|
| 10 |
+
[<img src="https://colab.research.google.com/assets/colab-badge.svg">](https://colab.research.google.com/github/facebookresearch/esm/blob/main/examples/protein-programming-language/tutorial.ipynb)
|
| 11 |
+
|
| 12 |
+
## Design programs
|
| 13 |
+
|
| 14 |
+
We have also provided some example programs as described in our original paper.
|
| 15 |
+
|
| 16 |
+
| Design task | Figure in paper | Program file |
|
| 17 |
+
|:--------------------------------------------|:----------------|:----------------------------------------------------------------------------|
|
| 18 |
+
| Free hallucination | Figure 2A | [free_hallucination.py](programs/free_hallucination.py) |
|
| 19 |
+
| Fixed backbone design | Figure 2D | [fixed_backbone.py](programs/fixed_backbone.py) |
|
| 20 |
+
| Secondary structure design | Figure 2G | [secondary_structure.py](programs/secondary_structure.py) |
|
| 21 |
+
| Functional site scaffolding | Figure 2H | [functional_site_scaffolding.py](programs/functional_site_scaffolding.py) |
|
| 22 |
+
| Symmetric monomer design | Figure 3A | [symmetric_monomer.py](programs/symmetric_monomer.py) |
|
| 23 |
+
| Two-level symmetric<br>homo-oligomer design | Figure 4A | [symmetric_two_level_multimer.py](programs/symmetric_two_level_multimer.py) |
|
| 24 |
+
| Symmetric binding site<br>scaffolding | Figure 5A | [symmetric_binding.py](programs/symmetric_binding.py) |
|
| 25 |
+
|
weight/esm-main/examples/protein-programming-language/language/utilities.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from io import StringIO
|
| 7 |
+
from typing import Union
|
| 8 |
+
|
| 9 |
+
import numpy as np
|
| 10 |
+
from biotite.structure import AtomArray
|
| 11 |
+
from biotite.structure.io.pdb import PDBFile
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def pdb_file_to_atomarray(pdb_path: Union[str, StringIO]) -> AtomArray:
|
| 15 |
+
return PDBFile.read(pdb_path).get_structure(model=1)
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def get_atomarray_in_residue_range(atoms: AtomArray, start: int, end: int) -> AtomArray:
|
| 19 |
+
return atoms[np.logical_and(atoms.res_id >= start, atoms.res_id < end)]
|
weight/esm-main/examples/protein-programming-language/programs/fixed_backbone.py
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from copy import deepcopy
|
| 7 |
+
|
| 8 |
+
from biotite.database.rcsb import fetch
|
| 9 |
+
from biotite.structure import AtomArray
|
| 10 |
+
|
| 11 |
+
from language import (
|
| 12 |
+
FixedLengthSequenceSegment,
|
| 13 |
+
MaximizePLDDT,
|
| 14 |
+
MaximizePTM,
|
| 15 |
+
MinimizeCRmsd,
|
| 16 |
+
MinimizeDRmsd,
|
| 17 |
+
MinimizeSurfaceHydrophobics,
|
| 18 |
+
ProgramNode,
|
| 19 |
+
pdb_file_to_atomarray,
|
| 20 |
+
sequence_from_atomarray,
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def fixed_backbone_6mrs() -> ProgramNode:
|
| 25 |
+
template_atoms: AtomArray = pdb_file_to_atomarray(fetch("6mrs", format="pdb"))
|
| 26 |
+
|
| 27 |
+
sequence_length = len(sequence_from_atomarray(template_atoms))
|
| 28 |
+
sequence = FixedLengthSequenceSegment(sequence_length)
|
| 29 |
+
|
| 30 |
+
return ProgramNode(
|
| 31 |
+
sequence_segment=sequence,
|
| 32 |
+
energy_function_terms=[
|
| 33 |
+
MaximizePTM(),
|
| 34 |
+
MaximizePLDDT(),
|
| 35 |
+
MinimizeSurfaceHydrophobics(),
|
| 36 |
+
MinimizeCRmsd(template=template_atoms, backbone_only=True),
|
| 37 |
+
MinimizeDRmsd(template=template_atoms, backbone_only=True),
|
| 38 |
+
],
|
| 39 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/free_hallucination.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from language import (
|
| 7 |
+
FixedLengthSequenceSegment,
|
| 8 |
+
MaximizePLDDT,
|
| 9 |
+
MaximizePTM,
|
| 10 |
+
MinimizeSurfaceHydrophobics,
|
| 11 |
+
ProgramNode,
|
| 12 |
+
)
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
def free_hallucination(sequence_length: int) -> ProgramNode:
|
| 16 |
+
sequence = FixedLengthSequenceSegment(sequence_length)
|
| 17 |
+
return ProgramNode(
|
| 18 |
+
sequence_segment=sequence,
|
| 19 |
+
energy_function_terms=[
|
| 20 |
+
MaximizePTM(),
|
| 21 |
+
MaximizePLDDT(),
|
| 22 |
+
MinimizeSurfaceHydrophobics(),
|
| 23 |
+
],
|
| 24 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/functional_site_scaffolding.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from copy import deepcopy
|
| 7 |
+
|
| 8 |
+
from biotite.database.rcsb import fetch
|
| 9 |
+
from biotite.structure import AtomArray
|
| 10 |
+
|
| 11 |
+
from language import (
|
| 12 |
+
ConstantSequenceSegment,
|
| 13 |
+
MaximizePLDDT,
|
| 14 |
+
MaximizePTM,
|
| 15 |
+
MaximizeSurfaceExposure,
|
| 16 |
+
MinimizeCRmsd,
|
| 17 |
+
MinimizeDRmsd,
|
| 18 |
+
MinimizeSurfaceHydrophobics,
|
| 19 |
+
ProgramNode,
|
| 20 |
+
VariableLengthSequenceSegment,
|
| 21 |
+
get_atomarray_in_residue_range,
|
| 22 |
+
pdb_file_to_atomarray,
|
| 23 |
+
sequence_from_atomarray,
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def scaffolding_ace2() -> ProgramNode:
|
| 28 |
+
binding_site_atoms: AtomArray = pdb_file_to_atomarray(fetch("6m0j", format="pdb"))
|
| 29 |
+
binding_site_atoms = get_atomarray_in_residue_range(
|
| 30 |
+
binding_site_atoms, start=23, end=42
|
| 31 |
+
)
|
| 32 |
+
binding_site_sequence: str = sequence_from_atomarray(binding_site_atoms)
|
| 33 |
+
print(binding_site_sequence)
|
| 34 |
+
|
| 35 |
+
leader_amino_acid_sequence = VariableLengthSequenceSegment(50)
|
| 36 |
+
binding_site_sequence = ConstantSequenceSegment(binding_site_sequence)
|
| 37 |
+
follower_amino_acid_sequence = VariableLengthSequenceSegment(50)
|
| 38 |
+
|
| 39 |
+
return ProgramNode(
|
| 40 |
+
energy_function_terms=[
|
| 41 |
+
MaximizePTM(),
|
| 42 |
+
MaximizePLDDT(),
|
| 43 |
+
MinimizeSurfaceHydrophobics(),
|
| 44 |
+
],
|
| 45 |
+
children=[
|
| 46 |
+
ProgramNode(sequence_segment=leader_amino_acid_sequence),
|
| 47 |
+
ProgramNode(
|
| 48 |
+
sequence_segment=binding_site_sequence,
|
| 49 |
+
energy_function_terms=[
|
| 50 |
+
MaximizeSurfaceExposure(),
|
| 51 |
+
MinimizeCRmsd(template=binding_site_atoms),
|
| 52 |
+
MinimizeDRmsd(template=binding_site_atoms),
|
| 53 |
+
],
|
| 54 |
+
energy_function_weights=[1.0, 10.0, 10.0],
|
| 55 |
+
),
|
| 56 |
+
ProgramNode(sequence_segment=follower_amino_acid_sequence),
|
| 57 |
+
]
|
| 58 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/secondary_structure.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from language import (
|
| 7 |
+
FixedLengthSequenceSegment,
|
| 8 |
+
MaximizePLDDT,
|
| 9 |
+
MaximizePTM,
|
| 10 |
+
MatchSecondaryStructure,
|
| 11 |
+
MinimizeSurfaceHydrophobics,
|
| 12 |
+
ProgramNode,
|
| 13 |
+
)
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def secondary_structure(
|
| 17 |
+
node1_sse: str = 'a',
|
| 18 |
+
node2_sse: str = 'b',
|
| 19 |
+
) -> ProgramNode:
|
| 20 |
+
"""
|
| 21 |
+
Free hallucinates a protein while controlling the secondary structure
|
| 22 |
+
corresponding to different segments of the sequence.
|
| 23 |
+
Specify `'a'` for alpha helix, `'b'` for beta sheet, and `'c'` for coils.
|
| 24 |
+
"""
|
| 25 |
+
node1 = ProgramNode(
|
| 26 |
+
sequence_segment=FixedLengthSequenceSegment(50),
|
| 27 |
+
energy_function_terms=[
|
| 28 |
+
MatchSecondaryStructure(node1_sse),
|
| 29 |
+
#TODO(brianhie): Add globularity here.
|
| 30 |
+
]
|
| 31 |
+
)
|
| 32 |
+
node2 = ProgramNode(
|
| 33 |
+
sequence_segment=FixedLengthSequenceSegment(50),
|
| 34 |
+
energy_function_terms=[
|
| 35 |
+
MatchSecondaryStructure(node2_sse),
|
| 36 |
+
#TODO(brianhie): Add globularity here.
|
| 37 |
+
]
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
return ProgramNode(
|
| 41 |
+
energy_function_terms=[
|
| 42 |
+
MaximizePTM(),
|
| 43 |
+
MaximizePLDDT(),
|
| 44 |
+
MinimizeSurfaceHydrophobics(),
|
| 45 |
+
],
|
| 46 |
+
children=[node1, node2,],
|
| 47 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/symmetric_binding.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from copy import deepcopy
|
| 7 |
+
|
| 8 |
+
from biotite.database.rcsb import fetch
|
| 9 |
+
from biotite.structure import AtomArray
|
| 10 |
+
|
| 11 |
+
from language import (
|
| 12 |
+
ConstantSequenceSegment,
|
| 13 |
+
FixedLengthSequenceSegment,
|
| 14 |
+
MaximizePLDDT,
|
| 15 |
+
MaximizePTM,
|
| 16 |
+
MaximizeSurfaceExposure,
|
| 17 |
+
MinimizeCRmsd,
|
| 18 |
+
MinimizeDRmsd,
|
| 19 |
+
MinimizeSurfaceHydrophobics,
|
| 20 |
+
ProgramNode,
|
| 21 |
+
SymmetryRing,
|
| 22 |
+
get_atomarray_in_residue_range,
|
| 23 |
+
pdb_file_to_atomarray,
|
| 24 |
+
sequence_from_atomarray,
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def symmetric_binding_il10(num_binding_sites: int = 3) -> ProgramNode:
|
| 29 |
+
binding_site_atoms: AtomArray = pdb_file_to_atomarray(fetch("1y6k", format="pdb"))
|
| 30 |
+
binding_site_atoms = get_atomarray_in_residue_range(
|
| 31 |
+
binding_site_atoms, start=31, end=40
|
| 32 |
+
)
|
| 33 |
+
binding_site_sequence: str = sequence_from_atomarray(binding_site_atoms)
|
| 34 |
+
|
| 35 |
+
leader_amino_acid_sequence = FixedLengthSequenceSegment(45)
|
| 36 |
+
binding_site_sequence = ConstantSequenceSegment(binding_site_sequence)
|
| 37 |
+
follower_amino_acid_sequence = FixedLengthSequenceSegment(45)
|
| 38 |
+
|
| 39 |
+
def _binder_protomer_program() -> ProgramNode:
|
| 40 |
+
return ProgramNode(
|
| 41 |
+
children=[
|
| 42 |
+
ProgramNode(sequence_segment=leader_amino_acid_sequence),
|
| 43 |
+
ProgramNode(
|
| 44 |
+
sequence_segment=binding_site_sequence,
|
| 45 |
+
energy_function_terms=[
|
| 46 |
+
MaximizeSurfaceExposure(),
|
| 47 |
+
MinimizeCRmsd(template=binding_site_atoms),
|
| 48 |
+
MinimizeDRmsd(template=binding_site_atoms),
|
| 49 |
+
],
|
| 50 |
+
energy_function_weights=[1.0, 10.0, 10.0],
|
| 51 |
+
),
|
| 52 |
+
ProgramNode(sequence_segment=follower_amino_acid_sequence),
|
| 53 |
+
]
|
| 54 |
+
)
|
| 55 |
+
|
| 56 |
+
return ProgramNode(
|
| 57 |
+
energy_function_terms=[
|
| 58 |
+
MaximizePTM(),
|
| 59 |
+
MaximizePLDDT(),
|
| 60 |
+
SymmetryRing(),
|
| 61 |
+
MinimizeSurfaceHydrophobics(),
|
| 62 |
+
],
|
| 63 |
+
children=[_binder_protomer_program() for _ in range(num_binding_sites)],
|
| 64 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/symmetric_monomer.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from language import (
|
| 7 |
+
FixedLengthSequenceSegment,
|
| 8 |
+
MaximizePLDDT,
|
| 9 |
+
MaximizePTM,
|
| 10 |
+
MinimizeSurfaceHydrophobics,
|
| 11 |
+
ProgramNode,
|
| 12 |
+
SymmetryRing,
|
| 13 |
+
)
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def symmetric_monomer(num_protomers: int) -> ProgramNode:
|
| 17 |
+
protomer_sequence = FixedLengthSequenceSegment(50)
|
| 18 |
+
def _make_protomer_node():
|
| 19 |
+
# A new ProgramNode must be made for each new protomer,
|
| 20 |
+
# but the sequence can (and should) be shared.
|
| 21 |
+
return ProgramNode(
|
| 22 |
+
sequence_segment=protomer_sequence
|
| 23 |
+
)
|
| 24 |
+
|
| 25 |
+
return ProgramNode(
|
| 26 |
+
energy_function_terms=[
|
| 27 |
+
MaximizePTM(),
|
| 28 |
+
MaximizePLDDT(),
|
| 29 |
+
SymmetryRing(),
|
| 30 |
+
MinimizeSurfaceHydrophobics(),
|
| 31 |
+
],
|
| 32 |
+
children=[
|
| 33 |
+
_make_protomer_node()
|
| 34 |
+
for _ in range(num_protomers)
|
| 35 |
+
],
|
| 36 |
+
)
|
weight/esm-main/examples/protein-programming-language/programs/symmetric_two_level_multimer.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
| 2 |
+
|
| 3 |
+
# This source code is licensed under the MIT license found in the
|
| 4 |
+
# LICENSE file in the root directory of this source tree.
|
| 5 |
+
|
| 6 |
+
from language import (
|
| 7 |
+
FixedLengthSequenceSegment,
|
| 8 |
+
MaximizePLDDT,
|
| 9 |
+
MaximizePTM,
|
| 10 |
+
MinimizeSurfaceHydrophobics,
|
| 11 |
+
ProgramNode,
|
| 12 |
+
SymmetryRing,
|
| 13 |
+
MaximizeGlobularity,
|
| 14 |
+
)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def symmetric_two_level_multimer(
|
| 18 |
+
num_chains: int,
|
| 19 |
+
num_protomers_per_chain: int,
|
| 20 |
+
protomer_sequence_length: int = 50,
|
| 21 |
+
) -> ProgramNode:
|
| 22 |
+
"""
|
| 23 |
+
Programs a homo-oligomeric protein with two-level symmetry.
|
| 24 |
+
The number of chains in the multimer is specified by `num_chains`.
|
| 25 |
+
A protomer sequence, with length `protomer_sequence_length`, is
|
| 26 |
+
repeated `num_protomers_per_chain` times.
|
| 27 |
+
For example, a two-chain protein with three protomers per chain
|
| 28 |
+
would repeat the protomer six times.
|
| 29 |
+
"""
|
| 30 |
+
|
| 31 |
+
# The basic repeated unit.
|
| 32 |
+
protomer_sequence = FixedLengthSequenceSegment(protomer_sequence_length)
|
| 33 |
+
def _make_protomer_node():
|
| 34 |
+
return ProgramNode(sequence_segment=protomer_sequence)
|
| 35 |
+
|
| 36 |
+
# Protomers are symmetrically combined into a chain.
|
| 37 |
+
def _make_chain_node():
|
| 38 |
+
return ProgramNode(
|
| 39 |
+
energy_function_terms=[
|
| 40 |
+
SymmetryRing(),
|
| 41 |
+
MaximizeGlobularity(),
|
| 42 |
+
],
|
| 43 |
+
energy_function_weights=[1., 0.05,],
|
| 44 |
+
children=[
|
| 45 |
+
_make_protomer_node()
|
| 46 |
+
for _ in range(num_protomers_per_chain)
|
| 47 |
+
],
|
| 48 |
+
)
|
| 49 |
+
|
| 50 |
+
# Chains are symmetrically combined into a multimer.
|
| 51 |
+
return ProgramNode(
|
| 52 |
+
energy_function_terms=[
|
| 53 |
+
MaximizePTM(),
|
| 54 |
+
MaximizePLDDT(),
|
| 55 |
+
SymmetryRing(),
|
| 56 |
+
MinimizeSurfaceHydrophobics(),
|
| 57 |
+
],
|
| 58 |
+
children=[
|
| 59 |
+
_make_chain_node()
|
| 60 |
+
for _ in range(num_chains)
|
| 61 |
+
],
|
| 62 |
+
children_are_different_chains=True,
|
| 63 |
+
)
|
| 64 |
+
|
| 65 |
+
|
weight/esm-main/examples/protein-programming-language/tutorial.ipynb
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# High-level protein programming language tutorial\n",
|
| 8 |
+
"\n",
|
| 9 |
+
"In this notebook, we will walk through creating a simple program encoding a symmetric protein and running an optimization run.\n",
|
| 10 |
+
"At the end of the notebook, we will also link to examples of more complex design programs.\n",
|
| 11 |
+
"\n",
|
| 12 |
+
"We design proteins guided by [ESMFold](https://github.com/facebookresearch/esm#esmfold), so let's get set up by loading the ESMFold model."
|
| 13 |
+
]
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"cell_type": "code",
|
| 17 |
+
"execution_count": 1,
|
| 18 |
+
"metadata": {},
|
| 19 |
+
"outputs": [],
|
| 20 |
+
"source": [
|
| 21 |
+
"%load_ext autoreload\n",
|
| 22 |
+
"%autoreload 2"
|
| 23 |
+
]
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"cell_type": "code",
|
| 27 |
+
"execution_count": 2,
|
| 28 |
+
"metadata": {},
|
| 29 |
+
"outputs": [],
|
| 30 |
+
"source": [
|
| 31 |
+
"from language import EsmFoldv1\n",
|
| 32 |
+
"\n",
|
| 33 |
+
"folding_callback = EsmFoldv1()\n",
|
| 34 |
+
"folding_callback.load(device=\"cuda:0\")"
|
| 35 |
+
]
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"cell_type": "markdown",
|
| 39 |
+
"metadata": {},
|
| 40 |
+
"source": [
|
| 41 |
+
"Now let's write a program.\n",
|
| 42 |
+
"Our high-level programming language is organized by a *syntax tree*, where *leaf nodes* correspond to protein sequence segments. To begin, let's create a leaf node defined on a fixed-length sequence segment with 25 amino acid residues:"
|
| 43 |
+
]
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"cell_type": "code",
|
| 47 |
+
"execution_count": 3,
|
| 48 |
+
"metadata": {},
|
| 49 |
+
"outputs": [],
|
| 50 |
+
"source": [
|
| 51 |
+
"from language import FixedLengthSequenceSegment\n",
|
| 52 |
+
"from language import ProgramNode\n",
|
| 53 |
+
"\n",
|
| 54 |
+
"protomer = FixedLengthSequenceSegment(25)\n",
|
| 55 |
+
"def make_protomer_node():\n",
|
| 56 |
+
" return ProgramNode(sequence_segment=protomer)"
|
| 57 |
+
]
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"cell_type": "markdown",
|
| 61 |
+
"metadata": {},
|
| 62 |
+
"source": [
|
| 63 |
+
"For this tutorial, we will make a symmetric protein by repeating the above protomer sequence $N$ times, where $N$ is the desired rotational symmetry.\n",
|
| 64 |
+
"\n",
|
| 65 |
+
"Our programming language enables *internal nodes* in the syntax tree that let us hierarchically control multiple child nodes. To program a protein with 3-fold symmetry, let's create an internal node with $N = 3$ children."
|
| 66 |
+
]
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"cell_type": "code",
|
| 70 |
+
"execution_count": 4,
|
| 71 |
+
"metadata": {},
|
| 72 |
+
"outputs": [],
|
| 73 |
+
"source": [
|
| 74 |
+
"N = 3\n",
|
| 75 |
+
"_node = ProgramNode(\n",
|
| 76 |
+
" children=[make_protomer_node() for _ in range(N)],\n",
|
| 77 |
+
")"
|
| 78 |
+
]
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"cell_type": "markdown",
|
| 82 |
+
"metadata": {},
|
| 83 |
+
"source": [
|
| 84 |
+
"To complete our programming language, we require a set of *constraints*.\n",
|
| 85 |
+
"An important set of constraints to apply to all proteins is to maximize ESMFold's confidence in the model structure, which we quantify by the pTM and mean pLDDT scores.\n",
|
| 86 |
+
"We also want to constrain the protein to have rotational symmetry.\n",
|
| 87 |
+
"\n",
|
| 88 |
+
"Adding those three constraints (on pTM, pLDDT, and symmetry) completes the simple program for a symmetric protein.\n",
|
| 89 |
+
"We can also weight different constraints differently; for this tutorial, we will double the weight on the symmetry constraint.\n",
|
| 90 |
+
"The constraints are compiled into a single *energy function* (right now, via a linear combination of constraint functions), which we will use to guide the optimization algorithm\n",
|
| 91 |
+
"\n",
|
| 92 |
+
"The code below will add the constraints and weights, compile the program, and print out a summary of the energy function."
|
| 93 |
+
]
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"cell_type": "code",
|
| 97 |
+
"execution_count": 6,
|
| 98 |
+
"metadata": {},
|
| 99 |
+
"outputs": [
|
| 100 |
+
{
|
| 101 |
+
"name": "stdout",
|
| 102 |
+
"output_type": "stream",
|
| 103 |
+
"text": [
|
| 104 |
+
"root:MaximizePTM = 1.0 * 0.84\n",
|
| 105 |
+
"root:MaximizePLDDT = 1.0 * 0.65\n",
|
| 106 |
+
"root:SymmetryRing = 1.0 * 0.57\n"
|
| 107 |
+
]
|
| 108 |
+
}
|
| 109 |
+
],
|
| 110 |
+
"source": [
|
| 111 |
+
"from language import MaximizePTM, MaximizePLDDT, SymmetryRing\n",
|
| 112 |
+
"\n",
|
| 113 |
+
"# Define the program.\n",
|
| 114 |
+
"program = ProgramNode(\n",
|
| 115 |
+
" energy_function_terms=[MaximizePTM(), MaximizePLDDT(), SymmetryRing()],\n",
|
| 116 |
+
" energy_function_weights=[1.0, 1.0, 1.0],\n",
|
| 117 |
+
" children=[make_protomer_node() for _ in range(N)],\n",
|
| 118 |
+
")\n",
|
| 119 |
+
"\n",
|
| 120 |
+
"# Set up the program.\n",
|
| 121 |
+
"sequence, residue_indices = program.get_sequence_and_set_residue_index_ranges()\n",
|
| 122 |
+
"\n",
|
| 123 |
+
"# Compute and print the energy function.\n",
|
| 124 |
+
"energy_terms = program.get_energy_term_functions()\n",
|
| 125 |
+
"folding_output = folding_callback.fold(sequence, residue_indices)\n",
|
| 126 |
+
"for name, weight, energy_fn in energy_terms:\n",
|
| 127 |
+
" print(f\"{name} = {weight:.1f} * {energy_fn(folding_output):.2f}\")"
|
| 128 |
+
]
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"cell_type": "markdown",
|
| 132 |
+
"metadata": {},
|
| 133 |
+
"source": [
|
| 134 |
+
"We are now ready to use this program to guide an optimization loop to design a protein sequence and structure.\n",
|
| 135 |
+
"We currently perform simulated annealing of an MCMC optimization algorithm to do design.\n",
|
| 136 |
+
"The code below will set up the simulated annealing algorithm, including the relevant parameters, and run the optimization loop. "
|
| 137 |
+
]
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"cell_type": "code",
|
| 141 |
+
"execution_count": null,
|
| 142 |
+
"metadata": {},
|
| 143 |
+
"outputs": [
|
| 144 |
+
{
|
| 145 |
+
"data": {
|
| 146 |
+
"application/vnd.jupyter.widget-view+json": {
|
| 147 |
+
"model_id": "2883ee40821e4f5ca4f699b96fe837e2",
|
| 148 |
+
"version_major": 2,
|
| 149 |
+
"version_minor": 0
|
| 150 |
+
},
|
| 151 |
+
"text/plain": [
|
| 152 |
+
"Output()"
|
| 153 |
+
]
|
| 154 |
+
},
|
| 155 |
+
"metadata": {},
|
| 156 |
+
"output_type": "display_data"
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"data": {
|
| 160 |
+
"text/html": [
|
| 161 |
+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">/private/home/brianhie/protein-bert-model/examples/protein-programming-language/language/optimize.py:56: \n",
|
| 162 |
+
"RuntimeWarning: overflow encountered in exp\n",
|
| 163 |
+
" np.exp(energy_differential / temperature),\n",
|
| 164 |
+
"</pre>\n"
|
| 165 |
+
],
|
| 166 |
+
"text/plain": [
|
| 167 |
+
"/private/home/brianhie/protein-bert-model/examples/protein-programming-language/language/optimize.py:56: \n",
|
| 168 |
+
"RuntimeWarning: overflow encountered in exp\n",
|
| 169 |
+
" np.exp(energy_differential / temperature),\n"
|
| 170 |
+
]
|
| 171 |
+
},
|
| 172 |
+
"metadata": {},
|
| 173 |
+
"output_type": "display_data"
|
| 174 |
+
}
|
| 175 |
+
],
|
| 176 |
+
"source": [
|
| 177 |
+
"from language import run_simulated_annealing\n",
|
| 178 |
+
"\n",
|
| 179 |
+
"optimized_program = run_simulated_annealing(\n",
|
| 180 |
+
" program=program,\n",
|
| 181 |
+
" initial_temperature=1.0,\n",
|
| 182 |
+
" annealing_rate=0.97,\n",
|
| 183 |
+
" total_num_steps=10_000,\n",
|
| 184 |
+
" folding_callback=folding_callback,\n",
|
| 185 |
+
" display_progress=True,\n",
|
| 186 |
+
")\n",
|
| 187 |
+
"print(\"Final sequence = {}\".format(optimized_program.get_sequence_and_set_residue_index_ranges()[0]))"
|
| 188 |
+
]
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"cell_type": "markdown",
|
| 192 |
+
"metadata": {},
|
| 193 |
+
"source": [
|
| 194 |
+
"This program provides a minimal example of symmetric protein design, but we can also design much more complex proteins, as described in [our paper](https://www.biorxiv.org/content/10.1101/2022.12.21.521526v1).\n",
|
| 195 |
+
"\n",
|
| 196 |
+
"We provide example programs corresponding to our paper figures, as described in the table below:\n",
|
| 197 |
+
"\n",
|
| 198 |
+
"| Design task | Figure in paper | Program file |\n",
|
| 199 |
+
"|:--------------------------------------------|:---------------|:----------------------------------------------------------------------------|\n",
|
| 200 |
+
"| Free hallucination | Figure 2A | [free_hallucination.py](programs/free_hallucination.py) |\n",
|
| 201 |
+
"| Fixed backbone design | Figure 2D | [fixed_backbone.py](programs/fixed_backbone.py) |\n",
|
| 202 |
+
"| Secondary structure design | Figure 2G | [secondary_structure.py](programs/secondary_structure.py) |\n",
|
| 203 |
+
"| Functional site scaffolding | Figure 2H | [functional_site_scaffolding.py](programs/functional_site_scaffolding.py) |\n",
|
| 204 |
+
"| Symmetric monomer design | Figure 3A | [symmetric_monomer.py](programs/symmetric_monomer.py) |\n",
|
| 205 |
+
"| Two-level symmetric<br>homo-oligomer design | Figure 4A | [symmetric_two_level_multimer.py](programs/symmetric_two_level_multimer.py) |\n",
|
| 206 |
+
"| Symmetric binding site<br>scaffolding | Figure 5A | [symmetric_binding.py](programs/symmetric_binding.py) |\n",
|
| 207 |
+
"\n",
|
| 208 |
+
"These can easily be imported and run.\n",
|
| 209 |
+
"For example, the following code imports a symmetric binding site scaffolding program and computes the energy."
|
| 210 |
+
]
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"cell_type": "code",
|
| 214 |
+
"execution_count": null,
|
| 215 |
+
"metadata": {},
|
| 216 |
+
"outputs": [],
|
| 217 |
+
"source": [
|
| 218 |
+
"from programs.symmetric_binding import symmetric_binding_il10\n",
|
| 219 |
+
"\n",
|
| 220 |
+
"program = symmetric_binding_il10()\n",
|
| 221 |
+
"\n",
|
| 222 |
+
"sequence, residue_indices = program.get_sequence_and_set_residue_index_ranges()\n",
|
| 223 |
+
"\n",
|
| 224 |
+
"folding_output = folding_callback.fold(sequence, residue_indices)\n",
|
| 225 |
+
"\n",
|
| 226 |
+
"energy_terms = program.get_energy_term_functions()\n",
|
| 227 |
+
"for name, weight, energy_fn in energy_terms:\n",
|
| 228 |
+
" print(f\"{name} = {weight:.1f} * {energy_fn(folding_output):.2f}\")"
|
| 229 |
+
]
|
| 230 |
+
}
|
| 231 |
+
],
|
| 232 |
+
"metadata": {
|
| 233 |
+
"kernelspec": {
|
| 234 |
+
"display_name": "Python 3 (ipykernel)",
|
| 235 |
+
"language": "python",
|
| 236 |
+
"name": "python3"
|
| 237 |
+
},
|
| 238 |
+
"language_info": {
|
| 239 |
+
"codemirror_mode": {
|
| 240 |
+
"name": "ipython",
|
| 241 |
+
"version": 3
|
| 242 |
+
},
|
| 243 |
+
"file_extension": ".py",
|
| 244 |
+
"mimetype": "text/x-python",
|
| 245 |
+
"name": "python",
|
| 246 |
+
"nbconvert_exporter": "python",
|
| 247 |
+
"pygments_lexer": "ipython3",
|
| 248 |
+
"version": "3.8.13"
|
| 249 |
+
}
|
| 250 |
+
},
|
| 251 |
+
"nbformat": 4,
|
| 252 |
+
"nbformat_minor": 2
|
| 253 |
+
}
|
weight/esm-main/scripts/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
weight/esm-main/scripts/atlas/README.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ESM Metagenomic Atlas
|
| 2 |
+
|
| 3 |
+
The [ESM Metagenomic Atlas](https://esmatlas.com) is a resource of more than 700 million metagenomic protein structures predicted by ESMFold.
|
| 4 |
+
See our [blog post](https://ai.facebook.com/blog/protein-folding-esmfold-metagenomics/) to learn more.
|
| 5 |
+
|
| 6 |
+
The first `v0` version of the Atlas was released on November 1st 2022,
|
| 7 |
+
corresponding to the sequences in the `2022_05` release of the MGnify protein database described [here](https://ftp.ebi.ac.uk/pub/databases/metagenomics/peptide_database/2022_05/README.txt).
|
| 8 |
+
An update `v2023_02` was released on March 17th 2023, corresponding to the sequences in the `2023_02` release of the MGnify protein database described [here](https://ftp.ebi.ac.uk/pub/databases/metagenomics/peptide_database/2023_02/).
|
| 9 |
+
|
| 10 |
+
Here we provide bulk download instructions for the tarballs of predicted structures, as well as foldseek databases, and LM embeddings for every sequence in the Atlas.
|
| 11 |
+
|
| 12 |
+
The structures in the ESM Metagenomic Atlas were predicted with `esm.pretrained.esmfold_v0()` for Atlas `v0`, while Atlas `v2023_02` used `esm.pretrained.esmfold_v1()`.
|
| 13 |
+
We find that protein structures with predicted LDDT > 0.7 and predict TM > 0.7 to be both reasonably well structured and interesting.
|
| 14 |
+
Therefore, we provide both the small set of "high confidence" metagenomic structures from Atlas `v0`, as well as the full set.
|
| 15 |
+
The small set of structures is built from taking a 30% sequence identity clustering of MGnify90 `2022_05`, and using the best structure from each cluster.
|
| 16 |
+
The best structure is selected using the score pTM * pLDDT.
|
| 17 |
+
|
| 18 |
+
The high confidence structures are around 1TB in size.
|
| 19 |
+
|
| 20 |
+
The full database is available as PDB structures and is 15TB in size for `v0`.
|
| 21 |
+
|
| 22 |
+
As an entrypoint into the database, the metadata is available as a small (~25 GB) file [metadata.sqlite](https://dl.fbaipublicfiles.com/esmatlas/v2023_02/metadata-rc2.sqlite.gz) / [metadata.parquet](https://dl.fbaipublicfiles.com/esmatlas/v2023_02/metadata-rc2.parquet).
|
| 23 |
+
You can load the file with pandas: `df = pd.read_parquet('metadata.parquet')`.
|
| 24 |
+
The dataframe has 773,846,840 records, and the file size is around 16GB.
|
| 25 |
+
This dataframe has 10 columns:
|
| 26 |
+
- `id` is the MGnify ID
|
| 27 |
+
- `ptm` is the predicted TM score
|
| 28 |
+
- `plddt` is the predicted average lddt
|
| 29 |
+
- `num_conf` is the number of residues with plddt > 0.7
|
| 30 |
+
- `len` is the total residues in the protein
|
| 31 |
+
- `is_fragment` indicates whether the protein sequence is identified as a fragment in the MGnify90 sequence database.
|
| 32 |
+
- `sequenceChecksum` is the CRC64 hash of the sequence. Can be used for cheaper lookups.
|
| 33 |
+
- `esmfold_version` is the version of ESMFold, matching the model accessible as `esm.pretrained.esmfold_v{0,1}`
|
| 34 |
+
- `atlas_version` is the Atlas version where this structure first appeared. Note: some of the predictions appearing for the first time in `v0` are also part of Atlas `v2023_02`.
|
| 35 |
+
- `sequence_dbs` is the metagenomic source databases where this structure is part of, as `MGnify90_2022_05`, comma-separated if it exists in more than one release, as `MGnify90_2022_05,MGnify90_2023_02`.
|
| 36 |
+
|
| 37 |
+
Proteins longer than 1280 residues were not folded. To select only the records without missing structures use `df[~df.plddt.isna()]`.
|
| 38 |
+
|
| 39 |
+
We recommend using `s5cmd` or `aria2c` to download files (can be installed via conda package manager).
|
| 40 |
+
To download any of the structures provided, you can use this `aria2c` command:
|
| 41 |
+
```
|
| 42 |
+
aria2c --dir=/path/to/download/to --input-file=url-file-provided.txt
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
# Full database
|
| 47 |
+
|
| 48 |
+
We separate the database by pTM and pLDDT.
|
| 49 |
+
This will allow you to download structures based on your needs - for example you can choose to download only the most high confidence structures.
|
| 50 |
+
Structures are provided by the bins given in this repo under [v0/full/bins.txt](v0/full/bins.txt) and [v2023_02/full/bins.txt](v2023_02/full/bins.txt).
|
| 51 |
+
For example, the foldseek database containing ptm from 0.60 to 0.70 and plddt from 0.80 to 0.90 is named `tm_.60_.70_plddt_.80_.90.DB`.
|
| 52 |
+
The data are given as bundles of 500k or 1M structures each.
|
| 53 |
+
|
| 54 |
+
* **Bulk Predicted structures**: see `{v0,v2023_02}/full/tarballs/`. The URLs for all shards of a single bundle will be in e.g. [v0/full/tarballs/tm_.60_.70_plddt_.80_.90.txt](v0/full/tarballs/tm_.60_.70_plddt_.80_.90.txt). The URLs for all tarballs across bins and their shards is available under `{v0,v2023_02}/full/tarballs.txt`.
|
| 55 |
+
* **Foldseek DBs** `{v0,v2023_02}/full/foldseekdb/` and `{v0,v2023_02}/full/foldseekdb.txt`
|
| 56 |
+
* **Bulk Embeddings (NEW)** under `{v0,v2023_02}/full/esm2_embeddings/` and `{v0,v2023_02}/full/esm2_embeddings.txt`.
|
| 57 |
+
* Note: Individual LM embeddings can be fetched via the API endpoint `/fetchEmbedding/ESM2/:id` as described on <https://esmatlas.com/about#api>
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
# High confidence MGnify30 structures
|
| 61 |
+
|
| 62 |
+
The high confidence MGnify30 structures are built using this procedure:
|
| 63 |
+
1. MGnify90 is clustered down to 30% sequence similarity with `mmseqs easy-linclust --kmer-per-seq 100 -cluster-mode 2 --cov-mode 1 -c 0.8`.
|
| 64 |
+
1. Structures are filtered to >0.7 pTM and pLDDT
|
| 65 |
+
1. Structures are sorted by `pTM * pLDDT` and the best from each cluster is chosen as the representative.
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
We provide the urls to v0 in [v0/highquality_clust30/tarballs.txt](v0/highquality_clust30/tarballs.txt) and [v0/highquality_clust30/foldseekdb.txt](v0/highquality_clust30/foldseekdb.txt).
|
| 69 |
+
|
| 70 |
+
As a reminder, please use `aria2c --dir=/path/to/download/to --input-file=v0/highquality_clust30/foldseekdb.txt` to download the foldseek database
|
| 71 |
+
|
| 72 |
+
The sequences corresponding to the high confidence structures can be downloaded from <https://dl.fbaipublicfiles.com/esmatlas/v0/highquality_clust30/highquality_clust30.fasta>.
|
| 73 |
+
|
| 74 |
+
# Citation
|
| 75 |
+
If you use any of the ESM Metagenomic Atlas data in your work, please cite
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
```bibtex
|
| 79 |
+
@article{lin2022evolutionary,
|
| 80 |
+
title={Evolutionary-scale prediction of atomic level protein structure with a language model},
|
| 81 |
+
author={Lin, Zeming and Akin, Halil and Rao, Roshan and Hie, Brian and Zhu, Zhongkai and Lu, Wenting and Smetanin, Nikita and Verkuil, Robert and Kabeli, Ori and Shmueli, Yaniv and dos Santos Costa, Allan and Fazel-Zarandi, Maryam and Sercu, Tom and Candido, Salvatore and Rives, Alexander},
|
| 82 |
+
year={2022},
|
| 83 |
+
journal={bioRxiv},
|
| 84 |
+
note={bioRxiv 2022.07.20.500902},
|
| 85 |
+
url={https://doi.org/10.1101/2022.07.20.500902},
|
| 86 |
+
}
|
| 87 |
+
```
|
| 88 |
+
|
| 89 |
+
## License <a name="license"></a>
|
| 90 |
+
|
| 91 |
+
ESM Metagenomic Atlas (also referred to as “ESM Metagenomic Structure Atlas” or “ESM Atlas”) data is available under a CC BY 4.0 license for academic and commercial use. Copyright (c) Meta Platforms, Inc. All Rights Reserved. Use of the ESM Metagenomic Atlas data is subject to the Meta Open Source [Terms of Use](https://opensource.fb.com/legal/terms/) and [Privacy Policy](https://opensource.fb.com/legal/privacy/).
|
| 92 |
+
|
| 93 |
+
If you make use of a structure predicted by ESMFold, please cite the following paper:
|
| 94 |
+
|
| 95 |
+
```
|
| 96 |
+
Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Nikita Smetanin, Robert Verkuil, Ori Kabeli, Yaniv Shmueli, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Sal Candido, Alexander Rives.
|
| 97 |
+
Evolutionary-scale prediction of atomic level protein structure with a language model.
|
| 98 |
+
Science 379, 6637 (2023).
|
| 99 |
+
https://www.science.org/doi/abs/10.1126/science.ade2574
|
| 100 |
+
```
|
weight/esm-main/scripts/atlas/v0/full/bins.txt
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
tm_.40_.50_plddt_.40_.50
|
| 2 |
+
tm_.40_.50_plddt_.50_.60
|
| 3 |
+
tm_.40_.50_plddt_.60_.70
|
| 4 |
+
tm_.40_.50_plddt_.70_.80
|
| 5 |
+
tm_.40_.50_plddt_.80_.90
|
| 6 |
+
tm_.40_.50_plddt_.90_1
|
| 7 |
+
tm_.40_.50_plddt_0_.40
|
| 8 |
+
tm_.50_.60_plddt_.40_.50
|
| 9 |
+
tm_.50_.60_plddt_.50_.60
|
| 10 |
+
tm_.50_.60_plddt_.60_.70
|
| 11 |
+
tm_.50_.60_plddt_.70_.80
|
| 12 |
+
tm_.50_.60_plddt_.80_.90
|
| 13 |
+
tm_.50_.60_plddt_.90_1
|
| 14 |
+
tm_.50_.60_plddt_0_.40
|
| 15 |
+
tm_.60_.70_plddt_.40_.50
|
| 16 |
+
tm_.60_.70_plddt_.50_.60
|
| 17 |
+
tm_.60_.70_plddt_.60_.70
|
| 18 |
+
tm_.60_.70_plddt_.70_.80
|
| 19 |
+
tm_.60_.70_plddt_.80_.90
|
| 20 |
+
tm_.60_.70_plddt_.90_1
|
| 21 |
+
tm_.60_.70_plddt_0_.40
|
| 22 |
+
tm_.70_.80_plddt_.40_.50
|
| 23 |
+
tm_.70_.80_plddt_.50_.60
|
| 24 |
+
tm_.70_.80_plddt_.60_.70
|
| 25 |
+
tm_.70_.80_plddt_.70_.80
|
| 26 |
+
tm_.70_.80_plddt_.80_.90
|
| 27 |
+
tm_.70_.80_plddt_.90_1
|
| 28 |
+
tm_.70_.80_plddt_0_.40
|
| 29 |
+
tm_.80_.90_plddt_.50_.60
|
| 30 |
+
tm_.80_.90_plddt_.60_.70
|
| 31 |
+
tm_.80_.90_plddt_.70_.80
|
| 32 |
+
tm_.80_.90_plddt_.80_.90
|
| 33 |
+
tm_.80_.90_plddt_.90_1
|
| 34 |
+
tm_.90_1_plddt_.70_.80
|
| 35 |
+
tm_.90_1_plddt_.80_.90
|
| 36 |
+
tm_.90_1_plddt_.90_1
|
| 37 |
+
tm_0_.40_plddt_.40_.50
|
| 38 |
+
tm_0_.40_plddt_.50_.60
|
| 39 |
+
tm_0_.40_plddt_.60_.70
|
| 40 |
+
tm_0_.40_plddt_.70_.80
|
| 41 |
+
tm_0_.40_plddt_.80_.90
|
| 42 |
+
tm_0_.40_plddt_.90_1
|
| 43 |
+
tm_0_.40_plddt_0_.40
|
| 44 |
+
backfill_v0_tm_.40_.50_plddt_.40_.50
|
| 45 |
+
backfill_v0_tm_.50_.60_plddt_0_.40
|
| 46 |
+
backfill_v0_tm_.70_.80_plddt_.70_.80
|
| 47 |
+
backfill_v0_tm_.90_1_plddt_.80_.90
|
| 48 |
+
backfill_v0_tm_.40_.50_plddt_.50_.60
|
| 49 |
+
backfill_v0_tm_.60_.70_plddt_.40_.50
|
| 50 |
+
backfill_v0_tm_.70_.80_plddt_.80_.90
|
| 51 |
+
backfill_v0_tm_.90_1_plddt_.90_1
|
| 52 |
+
backfill_v0_tm_.40_.50_plddt_.60_.70
|
| 53 |
+
backfill_v0_tm_.60_.70_plddt_.50_.60
|
| 54 |
+
backfill_v0_tm_.70_.80_plddt_.90_1
|
| 55 |
+
backfill_v0_tm_0_.40_plddt_.40_.50
|
| 56 |
+
backfill_v0_tm_.40_.50_plddt_0_.40
|
| 57 |
+
backfill_v0_tm_.60_.70_plddt_.60_.70
|
| 58 |
+
backfill_v0_tm_.80_.90_plddt_.60_.70
|
| 59 |
+
backfill_v0_tm_0_.40_plddt_.50_.60
|
| 60 |
+
backfill_v0_tm_.50_.60_plddt_.40_.50
|
| 61 |
+
backfill_v0_tm_.60_.70_plddt_.70_.80
|
| 62 |
+
backfill_v0_tm_.80_.90_plddt_.70_.80
|
| 63 |
+
backfill_v0_tm_0_.40_plddt_0_.40
|
| 64 |
+
backfill_v0_tm_.50_.60_plddt_.50_.60
|
| 65 |
+
backfill_v0_tm_.60_.70_plddt_.80_.90
|
| 66 |
+
backfill_v0_tm_.80_.90_plddt_.80_.90
|
| 67 |
+
backfill_v0_tm_.50_.60_plddt_.60_.70
|
| 68 |
+
backfill_v0_tm_.70_.80_plddt_.50_.60
|
| 69 |
+
backfill_v0_tm_.80_.90_plddt_.90_1
|
| 70 |
+
backfill_v0_tm_.50_.60_plddt_.70_.80
|
| 71 |
+
backfill_v0_tm_.70_.80_plddt_.60_.70
|
| 72 |
+
backfill_v0_tm_.90_1_plddt_.70_.80
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings.txt
ADDED
|
@@ -0,0 +1,673 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.40_.50_00.npz
|
| 2 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.40_.50_01.npz
|
| 3 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.40_.50_02.npz
|
| 4 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_00.npz
|
| 5 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_01.npz
|
| 6 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_02.npz
|
| 7 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_03.npz
|
| 8 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_04.npz
|
| 9 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_05.npz
|
| 10 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_06.npz
|
| 11 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_07.npz
|
| 12 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_08.npz
|
| 13 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_09.npz
|
| 14 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_10.npz
|
| 15 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_11.npz
|
| 16 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_12.npz
|
| 17 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.50_.60_13.npz
|
| 18 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_00.npz
|
| 19 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_01.npz
|
| 20 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_02.npz
|
| 21 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_03.npz
|
| 22 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_04.npz
|
| 23 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_05.npz
|
| 24 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_06.npz
|
| 25 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_07.npz
|
| 26 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_08.npz
|
| 27 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_09.npz
|
| 28 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_10.npz
|
| 29 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_11.npz
|
| 30 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_12.npz
|
| 31 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_13.npz
|
| 32 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_14.npz
|
| 33 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_15.npz
|
| 34 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_16.npz
|
| 35 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_17.npz
|
| 36 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_18.npz
|
| 37 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_19.npz
|
| 38 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_20.npz
|
| 39 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.60_.70_21.npz
|
| 40 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_00.npz
|
| 41 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_01.npz
|
| 42 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_02.npz
|
| 43 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_03.npz
|
| 44 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_04.npz
|
| 45 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_05.npz
|
| 46 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_06.npz
|
| 47 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_07.npz
|
| 48 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_08.npz
|
| 49 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_09.npz
|
| 50 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_10.npz
|
| 51 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_11.npz
|
| 52 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_12.npz
|
| 53 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_13.npz
|
| 54 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_14.npz
|
| 55 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_15.npz
|
| 56 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_16.npz
|
| 57 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_17.npz
|
| 58 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.70_.80_18.npz
|
| 59 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_00.npz
|
| 60 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_01.npz
|
| 61 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_02.npz
|
| 62 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_03.npz
|
| 63 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_04.npz
|
| 64 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.80_.90_05.npz
|
| 65 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_.90_1_00.npz
|
| 66 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.40_.50_plddt_0_.40_00.npz
|
| 67 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.40_.50_00.npz
|
| 68 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_00.npz
|
| 69 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_01.npz
|
| 70 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_02.npz
|
| 71 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_03.npz
|
| 72 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_04.npz
|
| 73 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.50_.60_05.npz
|
| 74 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_00.npz
|
| 75 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_01.npz
|
| 76 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_02.npz
|
| 77 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_03.npz
|
| 78 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_04.npz
|
| 79 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_05.npz
|
| 80 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_06.npz
|
| 81 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_07.npz
|
| 82 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_08.npz
|
| 83 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_09.npz
|
| 84 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_10.npz
|
| 85 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_11.npz
|
| 86 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_12.npz
|
| 87 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_13.npz
|
| 88 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_14.npz
|
| 89 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_15.npz
|
| 90 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_16.npz
|
| 91 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.60_.70_17.npz
|
| 92 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_00.npz
|
| 93 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_01.npz
|
| 94 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_02.npz
|
| 95 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_03.npz
|
| 96 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_04.npz
|
| 97 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_05.npz
|
| 98 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_06.npz
|
| 99 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_07.npz
|
| 100 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_08.npz
|
| 101 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_09.npz
|
| 102 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_10.npz
|
| 103 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_11.npz
|
| 104 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_12.npz
|
| 105 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_13.npz
|
| 106 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_14.npz
|
| 107 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_15.npz
|
| 108 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_16.npz
|
| 109 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_17.npz
|
| 110 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_18.npz
|
| 111 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_19.npz
|
| 112 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_20.npz
|
| 113 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_21.npz
|
| 114 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_22.npz
|
| 115 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_23.npz
|
| 116 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_24.npz
|
| 117 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.70_.80_25.npz
|
| 118 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_00.npz
|
| 119 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_01.npz
|
| 120 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_02.npz
|
| 121 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_03.npz
|
| 122 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_04.npz
|
| 123 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_05.npz
|
| 124 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_06.npz
|
| 125 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_07.npz
|
| 126 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_08.npz
|
| 127 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_09.npz
|
| 128 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_10.npz
|
| 129 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_11.npz
|
| 130 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_12.npz
|
| 131 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_13.npz
|
| 132 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_14.npz
|
| 133 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.80_.90_15.npz
|
| 134 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.90_1_00.npz
|
| 135 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_.90_1_01.npz
|
| 136 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.50_.60_plddt_0_.40_00.npz
|
| 137 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.40_.50_00.npz
|
| 138 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.50_.60_00.npz
|
| 139 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_00.npz
|
| 140 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_01.npz
|
| 141 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_02.npz
|
| 142 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_03.npz
|
| 143 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_04.npz
|
| 144 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_05.npz
|
| 145 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_06.npz
|
| 146 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_07.npz
|
| 147 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_08.npz
|
| 148 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_09.npz
|
| 149 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.60_.70_10.npz
|
| 150 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_00.npz
|
| 151 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_01.npz
|
| 152 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_02.npz
|
| 153 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_03.npz
|
| 154 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_04.npz
|
| 155 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_05.npz
|
| 156 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_06.npz
|
| 157 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_07.npz
|
| 158 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_08.npz
|
| 159 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_09.npz
|
| 160 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_10.npz
|
| 161 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_11.npz
|
| 162 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_12.npz
|
| 163 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_13.npz
|
| 164 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_14.npz
|
| 165 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_15.npz
|
| 166 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_16.npz
|
| 167 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_17.npz
|
| 168 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_18.npz
|
| 169 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_19.npz
|
| 170 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_20.npz
|
| 171 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_21.npz
|
| 172 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_22.npz
|
| 173 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_23.npz
|
| 174 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_24.npz
|
| 175 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_25.npz
|
| 176 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.70_.80_26.npz
|
| 177 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_00.npz
|
| 178 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_01.npz
|
| 179 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_02.npz
|
| 180 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_03.npz
|
| 181 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_04.npz
|
| 182 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_05.npz
|
| 183 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_06.npz
|
| 184 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_07.npz
|
| 185 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_08.npz
|
| 186 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_09.npz
|
| 187 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_10.npz
|
| 188 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_11.npz
|
| 189 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_12.npz
|
| 190 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_13.npz
|
| 191 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_14.npz
|
| 192 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_15.npz
|
| 193 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_16.npz
|
| 194 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_17.npz
|
| 195 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_18.npz
|
| 196 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_19.npz
|
| 197 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_20.npz
|
| 198 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_21.npz
|
| 199 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_22.npz
|
| 200 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_23.npz
|
| 201 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_24.npz
|
| 202 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_25.npz
|
| 203 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_26.npz
|
| 204 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_27.npz
|
| 205 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.80_.90_28.npz
|
| 206 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_00.npz
|
| 207 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_01.npz
|
| 208 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_02.npz
|
| 209 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_03.npz
|
| 210 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_04.npz
|
| 211 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_.90_1_05.npz
|
| 212 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.60_.70_plddt_0_.40_00.npz
|
| 213 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.40_.50_00.npz
|
| 214 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.50_.60_00.npz
|
| 215 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.60_.70_00.npz
|
| 216 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.60_.70_01.npz
|
| 217 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_00.npz
|
| 218 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_01.npz
|
| 219 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_02.npz
|
| 220 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_03.npz
|
| 221 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_04.npz
|
| 222 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_05.npz
|
| 223 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_06.npz
|
| 224 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_07.npz
|
| 225 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_08.npz
|
| 226 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_09.npz
|
| 227 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_10.npz
|
| 228 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_11.npz
|
| 229 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_12.npz
|
| 230 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_13.npz
|
| 231 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_14.npz
|
| 232 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_15.npz
|
| 233 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_16.npz
|
| 234 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_17.npz
|
| 235 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_18.npz
|
| 236 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_19.npz
|
| 237 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_20.npz
|
| 238 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.70_.80_21.npz
|
| 239 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_00.npz
|
| 240 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_01.npz
|
| 241 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_02.npz
|
| 242 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_03.npz
|
| 243 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_04.npz
|
| 244 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_05.npz
|
| 245 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_06.npz
|
| 246 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_07.npz
|
| 247 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_08.npz
|
| 248 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_09.npz
|
| 249 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_10.npz
|
| 250 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_11.npz
|
| 251 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_12.npz
|
| 252 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_13.npz
|
| 253 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_14.npz
|
| 254 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_15.npz
|
| 255 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_16.npz
|
| 256 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_17.npz
|
| 257 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_18.npz
|
| 258 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_19.npz
|
| 259 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_20.npz
|
| 260 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_21.npz
|
| 261 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_22.npz
|
| 262 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_23.npz
|
| 263 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_24.npz
|
| 264 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_25.npz
|
| 265 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_26.npz
|
| 266 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_27.npz
|
| 267 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_28.npz
|
| 268 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_29.npz
|
| 269 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_30.npz
|
| 270 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_31.npz
|
| 271 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_32.npz
|
| 272 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_33.npz
|
| 273 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_34.npz
|
| 274 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_35.npz
|
| 275 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_36.npz
|
| 276 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_37.npz
|
| 277 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_38.npz
|
| 278 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_39.npz
|
| 279 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_40.npz
|
| 280 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_41.npz
|
| 281 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_42.npz
|
| 282 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.80_.90_43.npz
|
| 283 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_00.npz
|
| 284 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_01.npz
|
| 285 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_02.npz
|
| 286 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_03.npz
|
| 287 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_04.npz
|
| 288 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_05.npz
|
| 289 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_06.npz
|
| 290 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_07.npz
|
| 291 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_08.npz
|
| 292 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_09.npz
|
| 293 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_10.npz
|
| 294 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_11.npz
|
| 295 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_12.npz
|
| 296 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_.90_1_13.npz
|
| 297 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.70_.80_plddt_0_.40_00.npz
|
| 298 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.50_.60_00.npz
|
| 299 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.60_.70_00.npz
|
| 300 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.70_.80_00.npz
|
| 301 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.70_.80_01.npz
|
| 302 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.70_.80_02.npz
|
| 303 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.70_.80_03.npz
|
| 304 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_00.npz
|
| 305 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_01.npz
|
| 306 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_02.npz
|
| 307 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_03.npz
|
| 308 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_04.npz
|
| 309 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_05.npz
|
| 310 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_06.npz
|
| 311 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_07.npz
|
| 312 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_08.npz
|
| 313 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_09.npz
|
| 314 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_10.npz
|
| 315 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_11.npz
|
| 316 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_12.npz
|
| 317 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_13.npz
|
| 318 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_14.npz
|
| 319 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_15.npz
|
| 320 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_16.npz
|
| 321 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_17.npz
|
| 322 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_18.npz
|
| 323 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_19.npz
|
| 324 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_20.npz
|
| 325 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_21.npz
|
| 326 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_22.npz
|
| 327 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_23.npz
|
| 328 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_24.npz
|
| 329 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_25.npz
|
| 330 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_26.npz
|
| 331 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_27.npz
|
| 332 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_28.npz
|
| 333 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_29.npz
|
| 334 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_30.npz
|
| 335 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_31.npz
|
| 336 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_32.npz
|
| 337 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_33.npz
|
| 338 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_34.npz
|
| 339 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_35.npz
|
| 340 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_36.npz
|
| 341 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_37.npz
|
| 342 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_38.npz
|
| 343 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_39.npz
|
| 344 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_40.npz
|
| 345 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_41.npz
|
| 346 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_42.npz
|
| 347 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_43.npz
|
| 348 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_44.npz
|
| 349 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.80_.90_45.npz
|
| 350 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_00.npz
|
| 351 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_01.npz
|
| 352 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_02.npz
|
| 353 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_03.npz
|
| 354 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_04.npz
|
| 355 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_05.npz
|
| 356 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_06.npz
|
| 357 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_07.npz
|
| 358 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_08.npz
|
| 359 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_09.npz
|
| 360 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_10.npz
|
| 361 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_11.npz
|
| 362 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_12.npz
|
| 363 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_13.npz
|
| 364 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_14.npz
|
| 365 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_15.npz
|
| 366 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_16.npz
|
| 367 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_17.npz
|
| 368 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_18.npz
|
| 369 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_19.npz
|
| 370 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_20.npz
|
| 371 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_21.npz
|
| 372 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_22.npz
|
| 373 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_23.npz
|
| 374 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_24.npz
|
| 375 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_25.npz
|
| 376 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_26.npz
|
| 377 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_27.npz
|
| 378 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_28.npz
|
| 379 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_29.npz
|
| 380 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_30.npz
|
| 381 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_31.npz
|
| 382 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_32.npz
|
| 383 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_33.npz
|
| 384 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_34.npz
|
| 385 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_35.npz
|
| 386 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.80_.90_plddt_.90_1_36.npz
|
| 387 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.70_.80_00.npz
|
| 388 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.80_.90_00.npz
|
| 389 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.80_.90_01.npz
|
| 390 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.80_.90_02.npz
|
| 391 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.80_.90_03.npz
|
| 392 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.80_.90_04.npz
|
| 393 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_00.npz
|
| 394 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_01.npz
|
| 395 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_02.npz
|
| 396 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_03.npz
|
| 397 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_04.npz
|
| 398 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_05.npz
|
| 399 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_06.npz
|
| 400 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_07.npz
|
| 401 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_08.npz
|
| 402 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_09.npz
|
| 403 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_10.npz
|
| 404 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_11.npz
|
| 405 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_12.npz
|
| 406 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_13.npz
|
| 407 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_14.npz
|
| 408 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_15.npz
|
| 409 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_16.npz
|
| 410 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_17.npz
|
| 411 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_18.npz
|
| 412 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_19.npz
|
| 413 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_20.npz
|
| 414 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_21.npz
|
| 415 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_22.npz
|
| 416 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_23.npz
|
| 417 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_24.npz
|
| 418 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_25.npz
|
| 419 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_26.npz
|
| 420 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_27.npz
|
| 421 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_28.npz
|
| 422 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_29.npz
|
| 423 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_30.npz
|
| 424 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_31.npz
|
| 425 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_32.npz
|
| 426 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_33.npz
|
| 427 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_34.npz
|
| 428 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_35.npz
|
| 429 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_36.npz
|
| 430 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_37.npz
|
| 431 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_38.npz
|
| 432 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_39.npz
|
| 433 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_40.npz
|
| 434 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_41.npz
|
| 435 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_42.npz
|
| 436 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_43.npz
|
| 437 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_44.npz
|
| 438 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_45.npz
|
| 439 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_46.npz
|
| 440 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_47.npz
|
| 441 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_48.npz
|
| 442 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_49.npz
|
| 443 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_50.npz
|
| 444 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_51.npz
|
| 445 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_52.npz
|
| 446 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_53.npz
|
| 447 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_54.npz
|
| 448 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_.90_1_plddt_.90_1_55.npz
|
| 449 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_00.npz
|
| 450 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_01.npz
|
| 451 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_02.npz
|
| 452 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_03.npz
|
| 453 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_04.npz
|
| 454 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_05.npz
|
| 455 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_06.npz
|
| 456 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_07.npz
|
| 457 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_08.npz
|
| 458 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_09.npz
|
| 459 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_10.npz
|
| 460 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_11.npz
|
| 461 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_12.npz
|
| 462 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_13.npz
|
| 463 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_14.npz
|
| 464 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_15.npz
|
| 465 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_16.npz
|
| 466 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_17.npz
|
| 467 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_18.npz
|
| 468 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_19.npz
|
| 469 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_20.npz
|
| 470 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_21.npz
|
| 471 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_22.npz
|
| 472 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_23.npz
|
| 473 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_24.npz
|
| 474 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_25.npz
|
| 475 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_26.npz
|
| 476 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_27.npz
|
| 477 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_28.npz
|
| 478 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_29.npz
|
| 479 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_30.npz
|
| 480 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_31.npz
|
| 481 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_32.npz
|
| 482 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_33.npz
|
| 483 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_34.npz
|
| 484 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_35.npz
|
| 485 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_36.npz
|
| 486 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_37.npz
|
| 487 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_38.npz
|
| 488 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_39.npz
|
| 489 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_40.npz
|
| 490 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_41.npz
|
| 491 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_42.npz
|
| 492 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_43.npz
|
| 493 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_44.npz
|
| 494 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_45.npz
|
| 495 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_46.npz
|
| 496 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_47.npz
|
| 497 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_48.npz
|
| 498 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_49.npz
|
| 499 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_50.npz
|
| 500 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_51.npz
|
| 501 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.40_.50_52.npz
|
| 502 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_00.npz
|
| 503 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_01.npz
|
| 504 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_02.npz
|
| 505 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_03.npz
|
| 506 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_04.npz
|
| 507 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_05.npz
|
| 508 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_06.npz
|
| 509 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_07.npz
|
| 510 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_08.npz
|
| 511 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_09.npz
|
| 512 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_10.npz
|
| 513 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_11.npz
|
| 514 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_12.npz
|
| 515 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_13.npz
|
| 516 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_14.npz
|
| 517 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_15.npz
|
| 518 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_16.npz
|
| 519 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_17.npz
|
| 520 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_18.npz
|
| 521 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_19.npz
|
| 522 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_20.npz
|
| 523 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_21.npz
|
| 524 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_22.npz
|
| 525 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_23.npz
|
| 526 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_24.npz
|
| 527 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_25.npz
|
| 528 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_26.npz
|
| 529 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_27.npz
|
| 530 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_28.npz
|
| 531 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_29.npz
|
| 532 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_30.npz
|
| 533 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_31.npz
|
| 534 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_32.npz
|
| 535 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_33.npz
|
| 536 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_34.npz
|
| 537 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_35.npz
|
| 538 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_36.npz
|
| 539 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_37.npz
|
| 540 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_38.npz
|
| 541 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_39.npz
|
| 542 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_40.npz
|
| 543 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_41.npz
|
| 544 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_42.npz
|
| 545 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_43.npz
|
| 546 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_44.npz
|
| 547 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_45.npz
|
| 548 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.50_.60_46.npz
|
| 549 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_00.npz
|
| 550 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_01.npz
|
| 551 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_02.npz
|
| 552 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_03.npz
|
| 553 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_04.npz
|
| 554 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_05.npz
|
| 555 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_06.npz
|
| 556 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_07.npz
|
| 557 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_08.npz
|
| 558 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_09.npz
|
| 559 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_10.npz
|
| 560 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_11.npz
|
| 561 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_12.npz
|
| 562 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_13.npz
|
| 563 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_14.npz
|
| 564 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_15.npz
|
| 565 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_16.npz
|
| 566 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_17.npz
|
| 567 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_18.npz
|
| 568 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_19.npz
|
| 569 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_20.npz
|
| 570 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_21.npz
|
| 571 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_22.npz
|
| 572 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_23.npz
|
| 573 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_24.npz
|
| 574 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_25.npz
|
| 575 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_26.npz
|
| 576 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_27.npz
|
| 577 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_28.npz
|
| 578 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_29.npz
|
| 579 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_30.npz
|
| 580 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_31.npz
|
| 581 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_32.npz
|
| 582 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.60_.70_33.npz
|
| 583 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_00.npz
|
| 584 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_01.npz
|
| 585 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_02.npz
|
| 586 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_03.npz
|
| 587 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_04.npz
|
| 588 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_05.npz
|
| 589 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_06.npz
|
| 590 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_07.npz
|
| 591 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_08.npz
|
| 592 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_09.npz
|
| 593 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_10.npz
|
| 594 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_11.npz
|
| 595 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.70_.80_12.npz
|
| 596 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.80_.90_00.npz
|
| 597 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.80_.90_01.npz
|
| 598 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_.90_1_00.npz
|
| 599 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_00.npz
|
| 600 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_01.npz
|
| 601 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_02.npz
|
| 602 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_03.npz
|
| 603 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_04.npz
|
| 604 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_05.npz
|
| 605 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_06.npz
|
| 606 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_07.npz
|
| 607 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_08.npz
|
| 608 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_09.npz
|
| 609 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_10.npz
|
| 610 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_11.npz
|
| 611 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_12.npz
|
| 612 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_13.npz
|
| 613 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_14.npz
|
| 614 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_15.npz
|
| 615 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_16.npz
|
| 616 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_17.npz
|
| 617 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_18.npz
|
| 618 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_19.npz
|
| 619 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_20.npz
|
| 620 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_21.npz
|
| 621 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_22.npz
|
| 622 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_23.npz
|
| 623 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_24.npz
|
| 624 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_25.npz
|
| 625 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_26.npz
|
| 626 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_27.npz
|
| 627 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_28.npz
|
| 628 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_29.npz
|
| 629 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_30.npz
|
| 630 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_31.npz
|
| 631 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_32.npz
|
| 632 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_33.npz
|
| 633 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_34.npz
|
| 634 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_35.npz
|
| 635 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_36.npz
|
| 636 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_37.npz
|
| 637 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_38.npz
|
| 638 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_39.npz
|
| 639 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_40.npz
|
| 640 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_41.npz
|
| 641 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_42.npz
|
| 642 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_43.npz
|
| 643 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_44.npz
|
| 644 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/tm_0_.40_plddt_0_.40_45.npz
|
| 645 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.40_.50.npz
|
| 646 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.50_.60.npz
|
| 647 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.60_.70.npz
|
| 648 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_0_.40.npz
|
| 649 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.40_.50.npz
|
| 650 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.50_.60.npz
|
| 651 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.60_.70.npz
|
| 652 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.70_.80.npz
|
| 653 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_0_.40.npz
|
| 654 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.40_.50.npz
|
| 655 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.50_.60.npz
|
| 656 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.60_.70.npz
|
| 657 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.70_.80.npz
|
| 658 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.80_.90.npz
|
| 659 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.50_.60.npz
|
| 660 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.60_.70.npz
|
| 661 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.70_.80.npz
|
| 662 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.80_.90.npz
|
| 663 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.90_1.npz
|
| 664 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.60_.70.npz
|
| 665 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.70_.80.npz
|
| 666 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.80_.90.npz
|
| 667 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.90_1.npz
|
| 668 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.90_1_plddt_.70_.80.npz
|
| 669 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.90_1_plddt_.80_.90.npz
|
| 670 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.90_1_plddt_.90_1.npz
|
| 671 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_0_.40_plddt_.40_.50.npz
|
| 672 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_0_.40_plddt_.50_.60.npz
|
| 673 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_0_.40_plddt_0_.40.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.40_.50.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.40_.50.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.60_.70.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.60_.70.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_0_.40.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_0_.40.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.40_.50.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.40_.50.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.60_.70.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.60_.70.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_0_.40.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_0_.40.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.40_.50.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.40_.50.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.80_.90.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.80_.90.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.50_.60.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.50_.60.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.60_.70.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.60_.70.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.80_.90.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.80_.90.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.70_.80_plddt_.90_1.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.70_.80_plddt_.90_1.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.60_.70.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.60_.70.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.70_.80.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.70_.80.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.80_.90.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.80_.90.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.80_.90_plddt_.90_1.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.80_.90_plddt_.90_1.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.90_1_plddt_.70_.80.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.90_1_plddt_.70_.80.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.90_1_plddt_.90_1.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.90_1_plddt_.90_1.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_0_.40_plddt_.40_.50.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_0_.40_plddt_.40_.50.npz
|
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_0_.40_plddt_.50_.60.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_0_.40_plddt_.50_.60.npz
|