wuxing0105 commited on
Commit
a3d534b
·
verified ·
1 Parent(s): 08ffca9

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. weight/esm-main/examples/README.md +11 -0
  2. weight/esm-main/examples/contact_prediction.ipynb +0 -0
  3. weight/esm-main/examples/data/1a3a_1_A.a3m +0 -0
  4. weight/esm-main/examples/data/P62593.fasta +0 -0
  5. weight/esm-main/examples/data/UniRef50_UPI0003108055.a3m +0 -0
  6. weight/esm-main/examples/data/UniRef50_UPI0003674933.a3m +0 -0
  7. weight/esm-main/examples/data/hhblits_uniclust_2017_10_5ahw_1_A.a3m +0 -0
  8. weight/esm-main/examples/data/some_proteins.fasta +30 -0
  9. weight/esm-main/examples/esm2_infer_fairscale_fsdp_cpu_offloading.py +56 -0
  10. weight/esm-main/examples/esm_structural_dataset.ipynb +0 -0
  11. weight/esm-main/examples/inverse_folding/README.md +258 -0
  12. weight/esm-main/examples/inverse_folding/data/4uv3.cif +0 -0
  13. weight/esm-main/examples/inverse_folding/data/4uv3.pdb +0 -0
  14. weight/esm-main/examples/inverse_folding/data/5YH2.cif +0 -0
  15. weight/esm-main/examples/inverse_folding/data/5YH2.pdb +0 -0
  16. weight/esm-main/examples/inverse_folding/data/5YH2_mutated_seqs.fasta +8 -0
  17. weight/esm-main/examples/inverse_folding/notebook.ipynb +0 -0
  18. weight/esm-main/examples/inverse_folding/notebook_multichain.ipynb +0 -0
  19. weight/esm-main/examples/inverse_folding/output/5YH2_mutated_seqs_scores.csv +5 -0
  20. weight/esm-main/examples/inverse_folding/output/sampled_sequences.fasta +6 -0
  21. weight/esm-main/examples/inverse_folding/sample_sequences.py +124 -0
  22. weight/esm-main/examples/inverse_folding/score_log_likelihoods.py +131 -0
  23. weight/esm-main/examples/lm-design/__init__.py +0 -0
  24. weight/esm-main/examples/lm-design/conf/__init__.py +0 -0
  25. weight/esm-main/examples/lm-design/conf/config.yaml +62 -0
  26. weight/esm-main/examples/lm-design/paper-data/README.md +74 -0
  27. weight/esm-main/examples/lm-design/paper-data/artificial_sequence_purge_ids.txt +1027 -0
  28. weight/esm-main/examples/lm-design/paper-data/data.csv +277 -0
  29. weight/esm-main/examples/lm-design/paper-data/uniref90_jackhmmer_purge_ids.txt +0 -0
  30. weight/esm-main/examples/lm-design/utils/__init__.py +0 -0
  31. weight/esm-main/examples/lm-design/utils/constants.py +13 -0
  32. weight/esm-main/examples/lm-design/utils/linear_projection.py +138 -0
  33. weight/esm-main/examples/lm-design/utils/lm.py +102 -0
  34. weight/esm-main/examples/lm-design/utils/loss.py +29 -0
  35. weight/esm-main/examples/lm-design/utils/ngram_stats/bigram_seg.p +0 -0
  36. weight/esm-main/examples/lm-design/utils/ngram_stats/monogram_seg.p +0 -0
  37. weight/esm-main/examples/protein-programming-language/language/__init__.py +22 -0
  38. weight/esm-main/examples/protein-programming-language/language/energy.py +317 -0
  39. weight/esm-main/examples/protein-programming-language/language/folding_callbacks.py +78 -0
  40. weight/esm-main/examples/protein-programming-language/language/optimize.py +158 -0
  41. weight/esm-main/examples/protein-programming-language/language/program.py +127 -0
  42. weight/esm-main/examples/protein-programming-language/language/sequence.py +221 -0
  43. weight/esm-main/examples/protein-programming-language/programs/__init__.py +1 -0
  44. weight/esm-main/examples/sup_variant_prediction.ipynb +0 -0
  45. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.50_.60.txt +1 -0
  46. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.50_.60.txt +1 -0
  47. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.70_.80.txt +1 -0
  48. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.50_.60.txt +1 -0
  49. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.60_.70.txt +1 -0
  50. weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.70_.80.txt +1 -0
weight/esm-main/examples/README.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # What's in this directory
2
+
3
+ * The notebooks are introduced and summarized in `../README.md`
4
+ * `data/some_proteins.fasta` and its smaller version, `data/few_proteins.fasta` are a random selection of UniRef50 sequences used in the second example of `../README.md`
5
+ * `data/1a3a_1_A.a3m`, `data/1xcr_1_A.a3m`, `data/5ahw_1_A.a3m` are MSAs distributed with trRosetta, used in `contact_prediction.ipynb`
6
+ * `data/P62593.fasta` is introduced and used in `sup_variant_prediction.ipynb`
7
+ * Example MSAs genereated in the same way as the MSAs used for MSA Transformer pre-training:
8
+ - `data/UniRef50_E9K9Y4.a3m`, `data/UniRef50_UPI0003108055.a3m`, `data/UniRef50_UPI0003674933.a3m`, from the same sequences as trRosetta:
9
+ `data/hhblits_uniclust_2017_10_1a3a_1_A.a3m`, `data/hhblits_uniclust_2017_10_1xcr_1_A.a3m`, `data/hhblits_uniclust_2017_10_5ahw_1_A.a3m`.
10
+ - Generated with: `hhblits -i UniRef50_$id.fas -oa3m UniRef50_$id.a3m -n 3 -d /uniclust30_2017_10/uniclust30_2017_10`.
11
+ * `esm2_infer_fairscale_fsdp_cpu_offloading.py` shows how to load the ESM-2 15B model with Fairscale's FSDP's CPU offloading capability on a single GPU
weight/esm-main/examples/contact_prediction.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/1a3a_1_A.a3m ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/P62593.fasta ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/UniRef50_UPI0003108055.a3m ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/UniRef50_UPI0003674933.a3m ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/hhblits_uniclust_2017_10_5ahw_1_A.a3m ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/data/some_proteins.fasta ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ >UniRef50_A0A1E3NP16
2
+ AVIYYRFRSQKPDHIATIKFDGTGLTVFELKRDIILANNLLHSTDVDIVLYSTEDIQDTKSWGYQNGGSSSAGERELDDDNEVVPRSTTVLVRRTMTPKKNKGNVQRYVAGKPRLQVSGTNSVNKSISLGNNVGGTMNFGDAATNGDEDDMIKKMFSVQDEQWSQQQDVMATATRVDNFRTNVNEPVPEYYICYKCGEKGKHHIKNCPKNNDPNWEGVRVRKTTGIPKSHLKAIENPEDTIRDSNSSGNTTYMVNDEGKYVVAVADTKAWEKYQKTKKGESGGYLNGDVDVDDGELKDPETGKLWKSPVRIPCCNKIFSRKIIEDKLIDSDFTCPSCGKEQIYLDTLVADEELQAKVDEYVKNLSENKNNDGNSPKRRQVNPAGATANTSQLPQIPMMPMPPINMQMPPMNIGMPPFMPFMPMPGMNP
3
+ >UniRef50_UPI000836A30F
4
+ MTLRTLLALSILALAAAATVQARPGAPPCSPLGLKYQPGACEKWKREHPDVNPDGVVQTVTIVNNSSSVLGGYVTFWHANNEHTDVDLPGVKPGETWTANGSWTVGQAPYYLLYSSFQDSYGDPVTFYAVPISKYPALAKKLPPEPDNCQSNHFRMVFGDGPQYVYEQHSGAVVTGGQTDKNTLCQILGCPTGGSTAGGLNTQNRTTSRSAPQPVYFRSCDP
5
+ >UniRef50_A0A2G8L8Y3
6
+ MAQKRYEENLSPYAELFRSKLIEDFHLLESFDEHGKSDAPKYYSKDFEDPARQDKMMLENPHGLVKFQVYSRKEPGEHFMLVLILSNSIALGLQAEVSESDDPKFAGLKLALDIFDYCSLFLFMVEIILKWIDNFWSFWSDNWNIFDFAVTVGSFVPEIINFFAGDIGGSMVRVIVRNLRVFRILRSLKMVSRFRQVRLIALAIGKAFSAITFIMLLLFTFLYIFAITGIIFFDTYTRSERQDLKYKDSFRSLPRAMITLFQLFTLDQWYKLLNDMWKVMDSMIPLGYIILWICIGSFIFRNVFVGIMVNNFQSIRNDLFEEVKEQEAARQIIQDTEKFNEELSRQEKKLNANRRGTLYQSPTVQPPKPNQPQPSQLAGLDNSETDEQSVSQEDESNTDGQTSLSGTDSYDLLGESSDSLFRRSSDGMIDKDKLSTNWEKTVHDNLTLLTSTPSETLWPRDTLFRYFQLMESLMENLQERQDLQDLAYHSLLQIFDSFDTSA
7
+ >UniRef50_A0A1D5ZRM3
8
+ MPCVAHECHPRLPAANHCRSLSCLGTPAAGWSSGDDDREEDELDTKQVILNEMRNREMRKRSSRCSVDSPTLSGAFAWSFTPLHPRSSIEKVSCTEEEKEAASDSDNESEAFFSVKSFFTRSTSRAATVASSTDMDPPATWEGLRGCEGWPFGLCP
9
+ >UniRef50_UPI0003108055
10
+ MPADAREYLESKHATRRFDRPAEVAGVVAFLLSDDTSFVIGAGYLVDGGYTALRAARGRLGPRRQAAPAVKLLPNTDSPR
11
+ >UniRef50_A0A223SCH7
12
+ MGPPRWWKGITGLAAVVHRADPEDKADLYAKMGLYLEYHPETRIVEARIKPRLHDVCESKVSEGGLEPPCP
13
+ >UniRef50_A0A090SUK6
14
+ MKTPEDRVFRATDEYSDFVMACRYKGNEREFVIASHDKLNEAQVETLTSYLSGEWFKKTYITGIMNDSDGVLSQHEEYGDEVFCQPLDELRVDRYIMMV
15
+ >UniRef50_V4AGU2
16
+ MHLGSIYLMVVLLIYFAYTDDRKERENVDVINPEENLVQDDEQYVGDSTENIEKSGSEEEEEDKEAIEEEEDEEEELNYRYIPEPAQDIVDNGKKYIQVHCSFKQDESLIRHPSNCSRYFVCSYGVVEEMPVCDDGEVFSIQVSECVKKGSENDDCDKLPFDSPPEITRGTQPSLIWHPRHKSPRSQFRQPTTLQMKVPHIELESFTCSATGKVLSHHSENCAWYYNCSAHPDAVMQTFYSGFIMECPYPQLFSTETKQCEDFEDVKCGDRYEPKSPCDYRANHCHETSHCIPCWVRYASCLELPDGLNPWSELEWKPFFVECYKERTVFQGVCDKSAVFSPLTRACETPYSIPRQHGGWRPVCDGRRDGIYADEYGRCDIYYVCKGYIFTGFFRCEKGEMFNPVISICQKPEAVPYPCGDLEMPNICESSLNGYHLDMFGRCTHYFECKDQQLEGISMCPSGIFNPELQICESSRDQPKPCGNLTNLCTHKNDGFHSDENDCTKVFQCERGLTMTSYDCSGSVRTECDVCNTPTECNDKPNGLYPNLKEGVGYYYDCVRSQIQNHYKCDKEKGGPIFNPVKQRCFYPEDLCKEVFSLKIAW
17
+ >UniRef50_R5PKX9
18
+ MQGGEQDVFEHRQVREKVIALKNHADAAAQGAAEFERLSFEQDVAALDGFETDQAAQKRGFAAARRPENHRDFFVVKREVDAVENHSVAELLYETARFQNNVIGHFYAFHFFSRALAASDTGQHARK
19
+ >UniRef50_UPI0003674933
20
+ MKKKEDILNLEHTLLPWMGRTMKVLDYFIGDFLNLKGIELTKVQWILLKKLNEQNGQPQQNLAFLTNRDKASLARLITTMEKKKLVERIPSKIDGRINHIFITKHGCEILQKSAPVIEKVVGCIQEGISPEEIETVIKVMQKVNNNINRASN
21
+ >UniRef50_E9K9Y4
22
+ MADNVLMAYHIVHDPDERAKHVLNTKKLYKWRITEKTKGTPVVGNVALVQTQFAKRTPVMIYATKEVANDLSDLQPVKVFTNNRDQETVNQTFDDLMR
23
+ >UniRef50_A0A2C9LWN7
24
+ MGKITGLLFFLFTSVRVTPSMKNTVNDIYRVRKDVLTKYRNTEEYDLGQRKGPLKQMDTRETRTPYGHFNSDTAFISPKNILKATRPLAFHLGNLKNQTSPCSTWNLTVDCSYKSLDHIESSWFPSNTTVLLLNNNKLVTLHNETFAQLTNLTRLDLSSNDIRRIDAGAFQGLHNLQELNLHMHCCNFTDHYSLESVFAPLRNLRILNAMHNSDVGVLTYSYTFLTRLPLLQSLSIDFDLDTLYCGPEFNDLKNLTFLQFSGQVMYIDDRSFQNVAQLKNLSMDHLSNINNISHNAFKPLSNLKVLTMYHVLLYVQEILSLLEPFQGRNMTEITLDTTTRTLTQVNPTRNGILTNHDTKYLMNICLESFTLIDNRIFYIKPDAVQNIYTWKKCLMHLYIASNPIQGNNFALIRLFTLDNLKSFTFINMFRACHEFQPFPQSSPPATRNVASSSISSQNNHYQKDTTSNQQQMIRHSPFSPYLDMIDENPYQLNIPNYIFISPSLQYMNFQRLVMSQSFEYHFILVGAQNVTSLDISDSGFYRFNGLMEGVSAIKTLIISGNDVSVLSVSFFDTFVSLENFAISSCKLDRDFISLNSRRIFQNHTRLQELDISSNSLNYLSQNTFSYNNRLMWLNMSGNQFKDIPFDLTNTPELQFLDIRFNSLTTIDETTAQQMDHLVTKSGKLEILLEGNVLSCSCSDLSFMRWMRMTLVTFDQNGNFTCMNTDGERKYTLDYSNLDSLWRECWGSFFLYFALIMLCLYCIGVFAVFITMRNKNFIVSFFLQLFGGFKLHSRRDYPVGVYIGYSDKDYQFPCKELRSFIESSLKLKTFLIDRDLIASVDKASGIIEALNASWRILLVCSKSFLKEDDWSMFTMRSAIYTQTPANPARVVVLVHKDCLPLLPPALLSSVNDENICAVSEWAMNYEMMQMLTTRLH
25
+ >UniRef50_Q9REE6
26
+ MSLRGRELLTSEERLELVRIPEDISEQELGRNFTLSNFDLELIKNRRRDYNRLGFAVQLCVLRFPGWSLNDAEPIPKKVLQHLARQLHVDPDCFSLYSSREA
27
+ >UniRef50_A0A226D4M8
28
+ MQKVINFPIWRRYYFSECGNCNDFRPDGVKKVHPPQEKSRTMDDEILAAPEVTIPFEPSDPSEVVVNLISSEEEDDDDVIQIVEEKSVDKAERQRRRQKKKDLWAARKLQRNKGQNVPLQTAWQRGPRPQETSSFPTPPQQSGGAQQKPLSPILISTAGSPNTSGAPTPANVSQQPTPTPSFVHTTASTSTHPEISLNINSDLALLIRLGPDGRPILTRVENVEQNNTSTSTPTTTRKLPPAPPPPKISFDTQTGESLLNGELITRPIIDITTDSPPSITHAATVSPQTSRTSGPPTLSPISPPPRTTQSNPAHPPPRYEPRKSRHPPRDPLASSSSSSSSSPSPPPTSRARHTSSANIPPPLEPLFLNTTQLIHLIKTCRKCEKSFPTRCDGVIHQKKEHNRKHCPVCFLTLSRHGNTYKDHLNMYHALEGDKEMVVCPFCAVEHSFDGLYNHIGRSHLIPVESKGESEHEVIFSVAPSPQSNGHQTRSVTQGNTPPKNDTNSPPNLEKRRPGPASKTRKTTNDPVPSTSRTGLICHKYVPDVETPPSKAGRNFESRAGRNFESRNVYPPATNRLNPPRNKSPPRNKNLPRNKSPPRNKSLPRNKTPPPSSSRSSSSRSVSNNLRRKNPTPPPPTQPPPKKVAKPDEAGINEKIQAAIKAVNARVHIERSVHHPNNRSDREIPSTSRTVTSRHKVPTSKTSGNTSVRKDPSPPPPLQTPPKTTNLELSKVQKARIVEDVRSIVRDVRITRVLDDGEVPSTSRAVEEEKKKEEKKNETRARLPRSSRVGERSSGYFQMAEGIDFSPENPTPRSKDLKAIHISKLNLIYQQLKCYPDTSVIANVAKECGVEIPVVAKWFTKKHMEYCQKTQQRKRKRKPPELR
29
+ >UniRef50_UPI000B82D8F0
30
+ MGGLHLIELRNVNIEFDKKLIEDGTIKIYDGKITAIIGESGSGKTSLLYLLGLISSNHRYLYSFDDVTLDLSNDFEMSRIRKQKIGYIFQDNNLVENLTIFENIRLSATIAGINITDKEIKSYLEFVELGYIDSNHYPRKLSGGERQRVAIACALAKQPELILADEPTSALDTVNSEIIMGIFKKIAHKDKKKIVIATHNDRIYNEADVIYEIKNNKIQLVKGESSNESSKKEPEDYDNNVKLTPRFYFDYAIKTSRKGRFAKNLMIVLSAIAIAFSSVMYNFGDTFVKEQEKLMDAISDKEIFVVNMTAPLNTILDIDENLSIQDKDAELLRNISYVDTIYPYFEFRSIGYPLINETEASEGYIVVSKGQKEEKYTFAESKDNPYDKYVIIPYYPEQNLERRLKEKLSDESSDKVYISSQLAQLLGIENLKESVSLRVLTYVPIAQHETQMTVRPEGIVYEIDIDLSKVVELDLKIEGILDESVRNRYSNSGNNAIYVPYHKMQMILTQTQNSATIDTNLEYIEWRPSAFVVFAKSYNDVGLVIERVSSINPNFRAVSEYQDIESMNAIVKNTREIGLVIVIVILIIIFLLMSIIHMNHILDRKYEISLLKANGLTKIELTKLVSVESLRHVFLVSLISSVISLVVTKVMNLLFEEIA
weight/esm-main/examples/esm2_infer_fairscale_fsdp_cpu_offloading.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 torch
7
+ from fairscale.nn.data_parallel import FullyShardedDataParallel as FSDP
8
+ from fairscale.nn.wrap import enable_wrap, wrap
9
+
10
+ import esm
11
+
12
+ # init the distributed world with world_size 1
13
+ url = "tcp://localhost:23456"
14
+ torch.distributed.init_process_group(backend="nccl", init_method=url, world_size=1, rank=0)
15
+
16
+ # download model data from the hub
17
+ model_name = "esm2_t48_15B_UR50D"
18
+ model_data, regression_data = esm.pretrained._download_model_and_regression_data(model_name)
19
+
20
+ # initialize the model with FSDP wrapper
21
+ fsdp_params = dict(
22
+ mixed_precision=True,
23
+ flatten_parameters=True,
24
+ state_dict_device=torch.device("cpu"), # reduce GPU mem usage
25
+ cpu_offload=True, # enable cpu offloading
26
+ )
27
+ with enable_wrap(wrapper_cls=FSDP, **fsdp_params):
28
+ model, vocab = esm.pretrained.load_model_and_alphabet_core(
29
+ model_name, model_data, regression_data
30
+ )
31
+ batch_converter = vocab.get_batch_converter()
32
+ model.eval()
33
+
34
+ # Wrap each layer in FSDP separately
35
+ for name, child in model.named_children():
36
+ if name == "layers":
37
+ for layer_name, layer in child.named_children():
38
+ wrapped_layer = wrap(layer)
39
+ setattr(child, layer_name, wrapped_layer)
40
+ model = wrap(model)
41
+
42
+ data = [
43
+ ("protein1", "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"),
44
+ ("protein2", "KALTARQQEVFDLIRDHISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE"),
45
+ (
46
+ "protein2 with mask",
47
+ "KALTARQQEVFDLIRD<mask>ISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE",
48
+ ),
49
+ ("protein3", "K A <mask> I S Q"),
50
+ ]
51
+
52
+ batch_labels, batch_strs, batch_tokens = batch_converter(data)
53
+ batch_tokens = batch_tokens.cuda()
54
+ with torch.no_grad():
55
+ results = model(batch_tokens, repr_layers=[48], return_contacts=True)
56
+ print(results)
weight/esm-main/examples/esm_structural_dataset.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/README.md ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Inverse folding with ESM-IF1
2
+
3
+ The ESM-IF1 inverse folding model is built for predicting protein sequences
4
+ from their backbone atom coordinates. We provide scripts here 1) to sample sequence
5
+ designs for a given structure and 2) to score sequences for a given structure.
6
+
7
+ Trained with 12M protein structures predicted by AlphaFold2, the ESM-IF1
8
+ model consists of invariant geometric input processing layers followed by a
9
+ sequence-to-sequence transformer, and achieves 51% native sequence recovery on
10
+ structurally held-out backbones with 72% recovery for buried residues.
11
+ The model is also trained with span masking to tolerate missing backbone
12
+ coordinates and therefore can predict sequences for partially masked structures.
13
+
14
+ More details in our bioRxiv [pre-print](https://doi.org/10.1101/2022.04.10.487779).
15
+
16
+ ![Illustration](illustration.png)
17
+
18
+ ## Recommended environment
19
+ It is highly recommended to start a new conda environment from scratch due to
20
+ potential CUDA compatability issues between pytorch and the pytorch-geometric
21
+ package required for the inverse folding model.
22
+
23
+ To set up a new conda environment with required packages,
24
+
25
+ ```
26
+ conda create -n inverse python=3.9
27
+ conda activate inverse
28
+ conda install pytorch cudatoolkit=11.3 -c pytorch
29
+ conda install pyg -c pyg -c conda-forge
30
+ conda install pip
31
+ pip install biotite
32
+ pip install git+https://github.com/facebookresearch/esm.git
33
+ ```
34
+
35
+ ## Quickstart
36
+
37
+ ### Sample sequence designs for a given structure
38
+ To sample sequences for a given structure in PDB or mmCIF format, use the
39
+ `sample_sequences.py` script. The input file can have either `.pdb` or
40
+ `.cif` as suffix.
41
+
42
+ For example, to sample 3 sequence designs for the golgi casein kinase structure
43
+ (PDB [5YH2](https://www.rcsb.org/structure/5yh2); [PDB Molecule of the Month
44
+ from January 2022](https://pdb101.rcsb.org/motm/265)), we can run the following
45
+ command from the `examples/inverse_folding` directory:
46
+ ```
47
+ python sample_sequences.py data/5YH2.pdb \
48
+ --chain C --temperature 1 --num-samples 3 \
49
+ --outpath output/sampled_sequences.fasta
50
+ ```
51
+
52
+ The sampled sequences will be saved in a fasta format to the specified output file.
53
+
54
+ **By default, the script only loads the backbone of the specified target chain
55
+ as model input.** To instead use the entire complex backbone as model input for
56
+ conditioning, use the `--multichain-backbone` flag to load all chains. (In the
57
+ example below, the encoder loads the backbone of all chains as input to the
58
+ encoder, and the decoder samples sequences for chain C.)
59
+ ```
60
+ python sample_sequences.py data/5YH2.pdb \
61
+ --chain C --temperature 1 --num-samples 3 \
62
+ --outpath output/sampled_sequences_multichain.fasta \
63
+ --multichain-backbone
64
+ ```
65
+
66
+ The temperature parameter controls the sharpness of the probability
67
+ distribution for sequence sampling. Higher sampling temperatures yield more
68
+ diverse sequences but likely with lower native sequence recovery.
69
+ The default sampling temperature is 1. To optimize for native sequence
70
+ recovery, we recommend sampling with low temperature such as 1e-6.
71
+
72
+ **We recommend trying both the single-chain and multi-chain design modes.** While in
73
+ our paper we showed that conditioning on the entire multi-chain backbone often
74
+ reduces perplexity and increases sequence recovery, on some proteins the
75
+ single-chain performance is better.
76
+
77
+ Sometimes, one failure mode in sampled sequences is a high number of repeated
78
+ amino acids, e.g. `EEEEEEEE`. We recommend checking for that and filtering out
79
+ sampled sequences with long repeats.
80
+
81
+ ### Scoring sequences
82
+ To score the conditional log-likelihoods for sequences conditioned on a given
83
+ structure, use the `score_log_likelihoods.py` script.
84
+
85
+ For example, to score the sequences in `data/5YH2_mutated_seqs.fasta`
86
+ according to the structure in `data/5YH2.pdb`, we can run
87
+ the following command from the `examples/inverse_folding` directory:
88
+ ```
89
+ python score_log_likelihoods.py data/5YH2.pdb \
90
+ data/5YH2_mutated_seqs.fasta --chain C \
91
+ --outpath output/5YH2_mutated_seqs_scores.csv
92
+ ```
93
+
94
+ The conditional log-likelihoods are saved in a csv format in the specified output path.
95
+ The output values are the average log-likelihoods averaged over all amino acids in a sequence.
96
+
97
+ **By default, the script only loads the backbone of the specified target chain
98
+ as model input.** To instead use the entire complex backbone as model input for
99
+ conditioning, use the `--multichain-backbone` flag to load all chains. (In the
100
+ example below, the encoder loads the backbone of all chains as input to the
101
+ encoder, and the decoder scores sequences for chain C.)
102
+ ```
103
+ python score_log_likelihoods.py data/5YH2.pdb \
104
+ data/5YH2_mutated_seqs.fasta --chain C \
105
+ --outpath output/5YH2_mutated_seqs_scores.csv \
106
+ --multichain-backbone
107
+ ```
108
+
109
+ We recommend trying both the single-chain and multi-chain design modes. While in
110
+ our paper we showed that conditioning on the entire multi-chain backbone often
111
+ reduces perplexity and increases sequence recovery, on some proteins the
112
+ single-chain performance is better.
113
+
114
+ ## General usage
115
+
116
+ ### Load model
117
+ The `esm_if1_gvp4_t16_142M_UR50` function loads the pretrained model and its
118
+ corresponding alphabet. The alphabet represents the amino acids and the special
119
+ tokens encoded by the model.
120
+
121
+ **Update**: It is important to set the model in eval mode to avoid random
122
+ dropout from training mode for best performance.
123
+
124
+ ```
125
+ import esm.inverse_folding
126
+ model, alphabet = esm.pretrained.esm_if1_gvp4_t16_142M_UR50()
127
+ model = model.eval()
128
+ ```
129
+
130
+ ### Input format
131
+ The input to the model is a list of backbone atom coordinates for the N, CA, C
132
+ atoms in each amino acid. For each structure, the coordinate list `coords` would
133
+ be of shape L x 3 x 3, where L is the number of amino acids in the structure.
134
+ `coords[i][0]` is the 3D coordinate for the N atom in amino acid `i`,
135
+ `coords[i][1]` is the 3D coordinate for the CA atom in amino acid `i`, and
136
+ `coords[i][2]` is the 3D coordinate for the C atom in amino acid `i`.
137
+
138
+ ### Load input data from PDB and mmCIF file formats
139
+ To load a single chain from PDB and mmCIF file formats and extract the backbone
140
+ coordinates of the N, CA, C atoms as model input,
141
+ ```
142
+ import esm.inverse_folding
143
+ structure = esm.inverse_folding.util.load_structure(fpath, chain_id)
144
+ coords, seq = esm.inverse_folding.util.extract_coords_from_structure(structure)
145
+ ```
146
+ Note this only loads the specified chain.
147
+
148
+ To load multiple chains for the multichain complex use cases, list all chain ids
149
+ when loading the structure, e.g. `chain_ids = ['A', 'B', 'C']`:
150
+ ```
151
+ structure = esm.inverse_folding.util.load_structure(fpath, chain_ids)
152
+ coords, native_seqs = esm.inverse_folding.multichain_util.extract_coords_from_complex(structure)
153
+ ```
154
+
155
+ ### Example Jupyter notebook
156
+ See `examples/inverse_folding/notebook.ipynb` for examples of sampling sequences,
157
+ calculating conditional log-likelihoods, and extracting encoder output as
158
+ structure representation (on a single chain).
159
+
160
+ This notebook is also available on colab:
161
+
162
+ [<img src="https://colab.research.google.com/assets/colab-badge.svg">](https://colab.research.google.com/github/facebookresearch/esm/blob/master/examples/inverse_folding/notebook.ipynb)
163
+
164
+ For multichain complexes, ESM-IF1 can design sequences for a specific chain in the complex,
165
+ conditioned on the backbone structure of the entire multichain complex.
166
+
167
+ See `examples/inverse_folding/notebook_multichain.ipynb` for sequence design and sequence scoring in multichain complexes, or find the notebook on colab:
168
+
169
+ [<img src="https://colab.research.google.com/assets/colab-badge.svg">](https://colab.research.google.com/github/facebookresearch/esm/blob/master/examples/inverse_folding/notebook_multichain.ipynb)
170
+
171
+ ### Sample sequence designs
172
+ To sample sequences for a given set of backbone coordinates for a single chain,
173
+ ```
174
+ sampled_seq = model.sample(coords, temperature=T)
175
+ ```
176
+ where `coords` is an array as described in the above section on input format.
177
+
178
+ To sample sequences for a given chain in a multichain complex,
179
+ ```
180
+ import esm.inverse_folding
181
+ sampled_seq = esm.inverse_folding.multichain_util.sample_sequence_in_complex(
182
+ model, coords, target_chain_id, temperature=T
183
+ )
184
+ ```
185
+ where `coords` is a dictionary mapping chain ids to backbone coordinate arrays.
186
+
187
+ The temperature parameter controls the ``sharpness`` of the probability
188
+ distribution for sequence sampling. Higher sampling temperatures yield more
189
+ diverse sequences but likely with lower native sequence recovery.
190
+ The default sampling temperature is `T=1`. To optimize for native sequence
191
+ recovery, we recommend sampling with low temperature such as `T=1e-6`.
192
+
193
+ ### Scoring sequences
194
+ To score the conditional log-likelihoods for sequences conditioned on a given
195
+ set of backbone coordinates for a single chain, use the `score_sequence` function,
196
+ ```
197
+ ll_fullseq, ll_withcoord = esm.inverse_folding.util.score_sequence(model, alphabet, coords, seq)
198
+ ```
199
+
200
+ The first returned value ``ll_fullseq`` is the average log-likelihood averaged
201
+ over all amino acids in a sequence.
202
+ The second return value ``ll_withcoord`` is averaged only over those amino acids
203
+ with associated backbone coordinates in the input, i.e., excluding those with
204
+ missing backbone coordinates.
205
+
206
+ For multichain complexes,
207
+ ```
208
+ ll_fullseq, ll_withcoord = esm.inverse_folding.multichain_util.score_sequence_in_complex(
209
+ model, alphabet, coords, target_chain_id, target_seq
210
+ )
211
+ ```
212
+ where `coords` is a dictionary mapping chain ids to backbone coordinate arrays.
213
+
214
+ ### Partially masking backbone coordinates
215
+ To mask a parts of the input backbone coordinates, simply set those coordinate
216
+ values to `np.inf`. For example, to mask the backbone coordinates for the first
217
+ ten amino acid in the structure,
218
+ ```
219
+ coords[:10, :] = float('inf')
220
+ ```
221
+
222
+ ### Encoder output as structure representation
223
+ To extract the encoder output as structure representation,
224
+ ```
225
+ rep = esm.inverse_folding.util.get_encoder_output(model, alphabet, coords)
226
+ ```
227
+ For a set of input coordinates with L amino acids, the encoder output will have
228
+ shape L x 512.
229
+
230
+ Or, for multichain complex,
231
+ ```
232
+ rep = esm.inverse_folding.multichain_util.get_encoder_output_for_complex(
233
+ model, alphabet, coords, target_chain_id
234
+ )
235
+ ```
236
+
237
+ ## Data split
238
+
239
+ The CATH v4.3 data are available at the following links:
240
+ - [Backbone coordinates and sequences](https://dl.fbaipublicfiles.com/fair-esm/data/cath4.3_topologysplit_202206/chain_set.jsonl)
241
+ - [Split](https://dl.fbaipublicfiles.com/fair-esm/data/cath4.3_topologysplit_202206/splits.json)
242
+
243
+ That's it for now, have fun!
244
+
245
+ ## Acknowledgements
246
+ The invariant geometric input processing layers are from the [Geometric Vector
247
+ Perceptron PyTorch repo](https://github.com/drorlab/gvp-pytorch) by Bowen Jing,
248
+ Stephan Eismann, Pratham Soni, Patricia Suriana, Raphael Townshend, and Ron
249
+ Dror.
250
+
251
+ The input data pipeline is adapted from the [Geometric Vector Perceptron PyTorch
252
+ repo](https://github.com/drorlab/gvp-pytorch) and the [Generative Models for
253
+ Graph-Based Protein Design
254
+ repo](https://github.com/jingraham/neurips19-graph-protein-design) by John
255
+ Ingraham, Vikas Garg, Regina Barzilay, and Tommi Jaakkola.
256
+
257
+ The Transformer implementation is adapted from
258
+ [fairseq](https://github.com/pytorch/fairseq).
weight/esm-main/examples/inverse_folding/data/4uv3.cif ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/data/4uv3.pdb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/data/5YH2.cif ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/data/5YH2.pdb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/data/5YH2_mutated_seqs.fasta ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ >mut_1
2
+ SVLQSLFEHPLYRTVLPDLTEEDTLFNLNAEIRLYPKAASESYPNWLRFHIGINRYELYSRHNPVIAALLRDLLSQKISSVGMKSGGTQLKLIMSFQNYGQALFKPMKQTREQETPPDFFYFSDFERHNAEIAAFHLDRILDFRRVPPVAGRLVNMTREIRDVTRDKKLWRTFFVSPANNICFYGECSYYCSTEHALCGKPDQIEGSLAAFLPDLALAKRKTWRNPWRRSYHKRKKAEWEVDPDYCDEVKQTPPYDRGTRLLDIMDMTIFDFLMGNMDRHHYETFEKFGNDTFIIHLDNGRGFGKHSHDEMSILVPLTQCCRVKRSTYLRLQLLAKEEYKLSSLMEESLLQDRLVPVLIKPHLEALDRRLRLVLKVLSDCVEKDGFSAVVENDLD
3
+ >mut_2
4
+ DVLQSLFEHPLYRTVLPDLTEEDTLFNLNAEIRLYPKAASESYPNWLRFHIGINRYELYSRHNPVIAALLRDLLSQKISSVGMKSGGTQLKLIMSFQNYGQALFKPMKQTREQETPPDFFYFSDFERHNAEIAAFHLDRILDFRRVPPVAGRLVNMTREIRDVTRDKKLWRTFFVSPANNICFYGECSYYCSTEHALCGKPDQIEGSLAAFLPDLALAKRKTWRNPWRRSYHKRKKAEWEVDPDYCDEVKQTPPYDRGTRLLDIMDMTIFDFLMGNMDRHHYETFEKFGNDTFIIHLDNGRGFGKHSHDEMSILVPLTQCCRVKRSTYLRLQLLAKEEYKLSSLMEESLLQDRLVPVLIKPHLEALDRRLRLVLKVLSDCVEKDGFSAVVENDLD
5
+ >mut_3
6
+ EVLQSLFEHPLYRTVLPDLTEEDTLFNLNAEIRLYPKAASESYPNWLRFHIGINRYELYSRHNPVIAALLRDLLSQKISSVGMKSGGTQLKLIMSFQNYGQALFKPMKQTREQETPPDFFYFSDFERHNAEIAAFHLDRILDFRRVPPVAGRLVNMTREIRDVTRDKKLWRTFFVSPANNICFYGECSYYCSTEHALCGKPDQIEGSLAAFLPDLALAKRKTWRNPWRRSYHKRKKAEWEVDPDYCDEVKQTPPYDRGTRLLDIMDMTIFDFLMGNMDRHHYETFEKFGNDTFIIHLDNGRGFGKHSHDEMSILVPLTQCCRVKRSTYLRLQLLAKEEYKLSSLMEESLLQDRLVPVLIKPHLEALDRRLRLVLKVLSDCVEKDGFSAVVENDLD
7
+ >mut_4
8
+ VVLQSLFEHPLYRTVLPDLTEEDTLFNLNAEIRLYPKAASESYPNWLRFHIGINRYELYSRHNPVIAALLRDLLSQKISSVGMKSGGTQLKLIMSFQNYGQALFKPMKQTREQETPPDFFYFSDFERHNAEIAAFHLDRILDFRRVPPVAGRLVNMTREIRDVTRDKKLWRTFFVSPANNICFYGECSYYCSTEHALCGKPDQIEGSLAAFLPDLALAKRKTWRNPWRRSYHKRKKAEWEVDPDYCDEVKQTPPYDRGTRLLDIMDMTIFDFLMGNMDRHHYETFEKFGNDTFIIHLDNGRGFGKHSHDEMSILVPLTQCCRVKRSTYLRLQLLAKEEYKLSSLMEESLLQDRLVPVLIKPHLEALDRRLRLVLKVLSDCVEKDGFSAVVENDLD
weight/esm-main/examples/inverse_folding/notebook.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/notebook_multichain.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/inverse_folding/output/5YH2_mutated_seqs_scores.csv ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ seqid,log_likelihood
2
+ mut_1,-1.611882209777832
3
+ mut_2,-1.615426778793335
4
+ mut_3,-1.614095687866211
5
+ mut_4,-1.6152666807174683
weight/esm-main/examples/inverse_folding/output/sampled_sequences.fasta ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ >sampled_seq_1
2
+ AAVTRWWSTPVTSVQDPGRNNDDLLFDKNEMLKLLPSTDSSGYPNHIAFWEQINRYKLYDEVSPTIQNLDLEMRNLQVRTVSQLSNGRTLKLHFSFSDNGKALFKPMVSLTEDENPIDDATWEYFETSRAVIAAYKLDKLLNLRNVPPAAGRSVHIISQIRDVSKDQNLDNTFHETEDNKLCFWGKCHDRCDEASAICGNPNSVDGVIVAQLPDSIFAEQENHNSPWAHSCKTDVTTWQAVNPAFCNDIFKTKPLRHGDFKLALADNYLFAFLQGNCDDHSYMEFRSFGTDTRILMLDNGYGFGRYSYNNKDILQPLQQCAQVRQSSKVKLDLLNETIFDLRVLMEEVLSHDLSFPILYSPYLKRLNRNLQIVVEEFELSRQRVGVNNTYKMNHE
3
+ >sampled_seq_2
4
+ VKFDAWLSNPITTGKVPGLTETDFLFKPQEMEALYPTLEGEPLPDHIRFHVQINRYFMYDKDSPVIKRLLRRLEKAAIKSVGQLKGGDQLVLEFRFEDFGRALFKPKLNSLEEEVPPQFDWFERHDTCQAEVASYELDQILDLHNCPPTQARPIDFQKDLWNVSDDKELLSTANVTPWNQLCFYGKNKFQSSHETAICGTYDVIDGAVQAQLPHQIIAPRSDNHNPWARTKHQYIDSSWQTNPTYYDYIRTQPYHQTKYIVGTMTNEYCHYFLEGNADRHHYKTWTKFGEDQNLIALDTGRGFGRKNFMDLDILKPLSQGKWMSEQAYQRKKKLMSRDYSLAELMNESLSESALYPVLSEPYLIQLDTRLQIILQAMEFTIKEKGIDLFLRKEFD
5
+ >sampled_seq_3
6
+ CVARRWWAHPTTGEADPPQSAADLLFKTVDAYTMLPREARQELPHHLKFHRQIEKTRLYATKSPTVTALLQDLQSTKILRVSQFSGGRSLRLRFVFDDGGSSAFKPLVSELHAEVPPHWYNFQRSDVAQSLIASYHLNRVLDLRMTPPCAARLVDLVKELRDVSDDAELLSTFFVTPEHELAFFGTSYYRSGLETALVGRPRTVAGSHIAELPDETLSPRGSFDCPWAYSEKDRVSTYWSFDPKASARSDKSPQYRFGTILLNLANTHVFNFLMGNKDAHNFDTFTAFGKDQFAVQIDNGCGFGRYSHMDRDVLVPLTQSVVVRRRLYDRLRSLAQEEYGMRDLLAEVLAQDKCYPVLVQPFLDRLDETLNLVLDVMDQNRKLRGDDRVLLMESS
weight/esm-main/examples/inverse_folding/sample_sequences.py ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ # Sample sequences based on a given structure (multinomial sampling, no beam search).
7
+ #
8
+ # usage: sample_sequences.py [-h] [--chain CHAIN] [--temperature TEMPERATURE]
9
+ # [--outpath OUTPATH] [--num-samples NUM_SAMPLES] pdbfile
10
+
11
+ import argparse
12
+ import numpy as np
13
+ from pathlib import Path
14
+ import torch
15
+
16
+ import esm
17
+ import esm.inverse_folding
18
+
19
+
20
+ def sample_seq_singlechain(model, alphabet, args):
21
+ if torch.cuda.is_available() and not args.nogpu:
22
+ model = model.cuda()
23
+ print("Transferred model to GPU")
24
+ coords, native_seq = esm.inverse_folding.util.load_coords(args.pdbfile, args.chain)
25
+ print('Native sequence loaded from structure file:')
26
+ print(native_seq)
27
+
28
+ print(f'Saving sampled sequences to {args.outpath}.')
29
+
30
+ Path(args.outpath).parent.mkdir(parents=True, exist_ok=True)
31
+ with open(args.outpath, 'w') as f:
32
+ for i in range(args.num_samples):
33
+ print(f'\nSampling.. ({i+1} of {args.num_samples})')
34
+ sampled_seq = model.sample(coords, temperature=args.temperature, device=torch.device('cuda'))
35
+ print('Sampled sequence:')
36
+ print(sampled_seq)
37
+ f.write(f'>sampled_seq_{i+1}\n')
38
+ f.write(sampled_seq + '\n')
39
+
40
+ recovery = np.mean([(a==b) for a, b in zip(native_seq, sampled_seq)])
41
+ print('Sequence recovery:', recovery)
42
+
43
+
44
+ def sample_seq_multichain(model, alphabet, args):
45
+ if torch.cuda.is_available() and not args.nogpu:
46
+ model = model.cuda()
47
+ print("Transferred model to GPU")
48
+ structure = esm.inverse_folding.util.load_structure(args.pdbfile)
49
+ coords, native_seqs = esm.inverse_folding.multichain_util.extract_coords_from_complex(structure)
50
+ target_chain_id = args.chain
51
+ native_seq = native_seqs[target_chain_id]
52
+ print('Native sequence loaded from structure file:')
53
+ print(native_seq)
54
+ print('\n')
55
+
56
+ print(f'Saving sampled sequences to {args.outpath}.')
57
+
58
+ Path(args.outpath).parent.mkdir(parents=True, exist_ok=True)
59
+ with open(args.outpath, 'w') as f:
60
+ for i in range(args.num_samples):
61
+ print(f'\nSampling.. ({i+1} of {args.num_samples})')
62
+ sampled_seq = esm.inverse_folding.multichain_util.sample_sequence_in_complex(
63
+ model, coords, target_chain_id, temperature=args.temperature)
64
+ print('Sampled sequence:')
65
+ print(sampled_seq)
66
+ f.write(f'>sampled_seq_{i+1}\n')
67
+ f.write(sampled_seq + '\n')
68
+
69
+ recovery = np.mean([(a==b) for a, b in zip(native_seq, sampled_seq)])
70
+ print('Sequence recovery:', recovery)
71
+
72
+
73
+ def main():
74
+ parser = argparse.ArgumentParser(
75
+ description='Sample sequences based on a given structure.'
76
+ )
77
+ parser.add_argument(
78
+ 'pdbfile', type=str,
79
+ help='input filepath, either .pdb or .cif',
80
+ )
81
+ parser.add_argument(
82
+ '--chain', type=str,
83
+ help='chain id for the chain of interest', default=None,
84
+ )
85
+ parser.add_argument(
86
+ '--temperature', type=float,
87
+ help='temperature for sampling, higher for more diversity',
88
+ default=1.,
89
+ )
90
+ parser.add_argument(
91
+ '--outpath', type=str,
92
+ help='output filepath for saving sampled sequences',
93
+ default='output/sampled_seqs.fasta',
94
+ )
95
+ parser.add_argument(
96
+ '--num-samples', type=int,
97
+ help='number of sequences to sample',
98
+ default=1,
99
+ )
100
+ parser.set_defaults(multichain_backbone=False)
101
+ parser.add_argument(
102
+ '--multichain-backbone', action='store_true',
103
+ help='use the backbones of all chains in the input for conditioning'
104
+ )
105
+ parser.add_argument(
106
+ '--singlechain-backbone', dest='multichain_backbone',
107
+ action='store_false',
108
+ help='use the backbone of only target chain in the input for conditioning'
109
+ )
110
+ parser.add_argument("--nogpu", action="store_true", help="Do not use GPU even if available")
111
+
112
+ args = parser.parse_args()
113
+
114
+ model, alphabet = esm.pretrained.esm_if1_gvp4_t16_142M_UR50()
115
+ model = model.eval()
116
+
117
+ if args.multichain_backbone:
118
+ sample_seq_multichain(model, alphabet, args)
119
+ else:
120
+ sample_seq_singlechain(model, alphabet, args)
121
+
122
+
123
+ if __name__ == '__main__':
124
+ main()
weight/esm-main/examples/inverse_folding/score_log_likelihoods.py ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ # Scores sequences based on a given structure.
7
+ #
8
+ # usage:
9
+ # score_log_likelihoods.py [-h] [--outpath OUTPATH] [--chain CHAIN] pdbfile seqfile
10
+
11
+ import argparse
12
+ from biotite.sequence.io.fasta import FastaFile, get_sequences
13
+ import numpy as np
14
+ from pathlib import Path
15
+ import torch
16
+ import torch.nn.functional as F
17
+ from tqdm import tqdm
18
+
19
+ import esm
20
+ import esm.inverse_folding
21
+
22
+
23
+ def score_singlechain_backbone(model, alphabet, args):
24
+ if torch.cuda.is_available() and not args.nogpu:
25
+ model = model.cuda()
26
+ print("Transferred model to GPU")
27
+ coords, native_seq = esm.inverse_folding.util.load_coords(args.pdbfile, args.chain)
28
+ print('Native sequence loaded from structure file:')
29
+ print(native_seq)
30
+ print('\n')
31
+
32
+ ll, _ = esm.inverse_folding.util.score_sequence(
33
+ model, alphabet, coords, native_seq)
34
+ print('Native sequence')
35
+ print(f'Log likelihood: {ll:.2f}')
36
+ print(f'Perplexity: {np.exp(-ll):.2f}')
37
+
38
+ print('\nScoring variant sequences from sequence file..\n')
39
+ infile = FastaFile()
40
+ infile.read(args.seqfile)
41
+ seqs = get_sequences(infile)
42
+ Path(args.outpath).parent.mkdir(parents=True, exist_ok=True)
43
+ with open(args.outpath, 'w') as fout:
44
+ fout.write('seqid,log_likelihood\n')
45
+ for header, seq in tqdm(seqs.items()):
46
+ ll, _ = esm.inverse_folding.util.score_sequence(
47
+ model, alphabet, coords, str(seq))
48
+ fout.write(header + ',' + str(ll) + '\n')
49
+ print(f'Results saved to {args.outpath}')
50
+
51
+
52
+ def score_multichain_backbone(model, alphabet, args):
53
+ if torch.cuda.is_available() and not args.nogpu:
54
+ model = model.cuda()
55
+ print("Transferred model to GPU")
56
+ structure = esm.inverse_folding.util.load_structure(args.pdbfile)
57
+ coords, native_seqs = esm.inverse_folding.multichain_util.extract_coords_from_complex(structure)
58
+ target_chain_id = args.chain
59
+ native_seq = native_seqs[target_chain_id]
60
+ print('Native sequence loaded from structure file:')
61
+ print(native_seq)
62
+ print('\n')
63
+
64
+ ll, _ = esm.inverse_folding.multichain_util.score_sequence_in_complex(
65
+ model, alphabet, coords, target_chain_id, native_seq)
66
+ print('Native sequence')
67
+ print(f'Log likelihood: {ll:.2f}')
68
+ print(f'Perplexity: {np.exp(-ll):.2f}')
69
+
70
+ print('\nScoring variant sequences from sequence file..\n')
71
+ infile = FastaFile()
72
+ infile.read(args.seqfile)
73
+ seqs = get_sequences(infile)
74
+ Path(args.outpath).parent.mkdir(parents=True, exist_ok=True)
75
+ with open(args.outpath, 'w') as fout:
76
+ fout.write('seqid,log_likelihood\n')
77
+ for header, seq in tqdm(seqs.items()):
78
+ ll, _ = esm.inverse_folding.multichain_util.score_sequence_in_complex(
79
+ model, alphabet, coords, target_chain_id, str(seq))
80
+ fout.write(header + ',' + str(ll) + '\n')
81
+ print(f'Results saved to {args.outpath}')
82
+
83
+
84
+ def main():
85
+ parser = argparse.ArgumentParser(
86
+ description='Score sequences based on a given structure.'
87
+ )
88
+ parser.add_argument(
89
+ 'pdbfile', type=str,
90
+ help='input filepath, either .pdb or .cif',
91
+ )
92
+ parser.add_argument(
93
+ 'seqfile', type=str,
94
+ help='input filepath for variant sequences in a .fasta file',
95
+ )
96
+ parser.add_argument(
97
+ '--outpath', type=str,
98
+ help='output filepath for scores of variant sequences',
99
+ default='output/sequence_scores.csv',
100
+ )
101
+ parser.add_argument(
102
+ '--chain', type=str,
103
+ help='chain id for the chain of interest', default='A',
104
+ )
105
+ parser.set_defaults(multichain_backbone=False)
106
+ parser.add_argument(
107
+ '--multichain-backbone', action='store_true',
108
+ help='use the backbones of all chains in the input for conditioning'
109
+ )
110
+ parser.add_argument(
111
+ '--singlechain-backbone', dest='multichain_backbone',
112
+ action='store_false',
113
+ help='use the backbone of only target chain in the input for conditioning'
114
+ )
115
+
116
+ parser.add_argument("--nogpu", action="store_true", help="Do not use GPU even if available")
117
+
118
+ args = parser.parse_args()
119
+
120
+ model, alphabet = esm.pretrained.esm_if1_gvp4_t16_142M_UR50()
121
+ model = model.eval()
122
+
123
+ if args.multichain_backbone:
124
+ score_multichain_backbone(model, alphabet, args)
125
+ else:
126
+ score_singlechain_backbone(model, alphabet, args)
127
+
128
+
129
+
130
+ if __name__ == '__main__':
131
+ main()
weight/esm-main/examples/lm-design/__init__.py ADDED
File without changes
weight/esm-main/examples/lm-design/conf/__init__.py ADDED
File without changes
weight/esm-main/examples/lm-design/conf/config.yaml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ seed: 0
7
+ num_seqs: 1
8
+ test_mode: False
9
+ allow_missing_residue_coords: True
10
+ suppress_AA: 'C'
11
+ disable_cuda: False
12
+ cuda_device_idx: # Set to numberic value to override default GPU device used.
13
+ task: free_generation # fixedbb or free_generation
14
+ pdb_fn: # set as empty string when using free_generation
15
+ free_generation_length: 100
16
+
17
+ tasks:
18
+ free_generation:
19
+ num_iter: 170000
20
+ resample_y_every: 3
21
+ resample_y_temp: 1
22
+ stage_fixedbb_args: ${tasks.fixedbb}
23
+
24
+
25
+ fixedbb:
26
+ num_iter: 170000
27
+
28
+ # Accept/Reject
29
+ accept_reject:
30
+ energy_cfg:
31
+ struct_w: 3
32
+ LM_w: 2
33
+ ngram_w: 1
34
+ ngram_orders: [1,2,3]
35
+ temperature:
36
+ scheduler: StepLR
37
+ step_size: 10000
38
+ gamma: 0.5
39
+ initial: 8
40
+
41
+
42
+
43
+ # Hydra config
44
+ hydra:
45
+ job_logging:
46
+ formatters:
47
+ colorlog:
48
+ datefmt: "%m-%d %H:%M:%S"
49
+ handlers:
50
+ file:
51
+ class: logging.FileHandler
52
+ mode: w
53
+ filename: logging.l
54
+ console:
55
+ class: logging.StreamHandler
56
+ stream: ext://sys.stdout
57
+
58
+ hydra_logging:
59
+ handlers:
60
+ console:
61
+ class: logging.StreamHandler
62
+ stream: ext://sys.stdout
weight/esm-main/examples/lm-design/paper-data/README.md ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Here we provide the data associated with the paper
2
+ ["Language models generalize beyond natural proteins" (2022)](https://doi.org/10.1101/2022.12.21.521521) by
3
+ Robert Verkuil\*, Ori Kabeli\*, Yilun Du, Basile I. M. Wicky, Lukas F. Milles, Justas Dauparas, David Baker, Sergey Ovchinnikov, Tom Sercu, and Alexander Rives.
4
+
5
+ ## Free Generations (Section 3)
6
+ Designs from the Free Generations section of the paper (Section 3) along with their statistics and pdb files can be found at [free_generations_full.db](https://dl.fbaipublicfiles.com/fair-esm/examples/lm_design/free_generations_full.db) and can be loaded using:
7
+ ```
8
+ import pandas as pd; pd.read_sql('free_generations_full', 'sqlite:///free_generations_full.db')
9
+ ```
10
+
11
+
12
+ ## Designs with wetlab validation (Section 2 and 3)
13
+ * [data.csv](./data.csv) - Load scalar data in `data.csv` with `pd.read_csv`.
14
+ * [data.hdf5](https://dl.fbaipublicfiles.com/fair-esm/examples/lm_design/design_lm_data_2022_v1.hdf5)
15
+ For long-form data, download `data.hdf5` from [this link](https://dl.fbaipublicfiles.com/fair-esm/examples/lm_design/design_lm_data_2022_v1.hdf5) and load with `pd.read_hdf`.
16
+ ```
17
+ # Design information
18
+ Design ID - {F,G}{0-267} unique identifier for each (LM or AlphaFold) design evaluated. 8 Nan values correspond to 8 ground truth sequences tested.
19
+ Experiment Name - Label for the testing pool to which the design / ground-truth sequence belongs. See Supplement; Section 1.6 for a full description of submitted sequences. These pools (minus ground-truth sequences) have experimental results shown in fig. S11.
20
+ Design Model - 228x LM, 20x AlphaFold, 20x AF+ngram, 8x Ground Truth.
21
+ Target ID - PDB ID of de novo target for all fixed backbone designs, 'Generation' for all free generations.
22
+ Sequence - Designed sequence
23
+
24
+ # In Silico Evaluation
25
+ *AlphaFold predicted PDB file - Structure prediction from AlphaFold (5x pTM models, select best by pLDDT -> Amber Relax).
26
+ AlphaFold RMSD - (AlphaFold-predicted) RMSD to target backbone for fixed backbone designs, Nan for free generations
27
+ AlphaFold pLDDT - (AlphaFold-predicted) Avg pLDDT for the predicted structure
28
+
29
+ # Experimental Evaluation
30
+ # Results from experimental testing. Final classifications are in the booleans: {Soluble, Success, Success+Monodisperse}.
31
+ Total Yield - Actual total soluble yield (in mg) from the 4x1mL prep. (Actual yield is closer to ~2x, we can only inject 1/2 of the total product onto the column.)
32
+ yield_per_Leq - Total Yield, adjusted to 1 L of culture equivalent
33
+ *Elution Volume (mL) - Array of x-values for plotting of the SEC trace.
34
+ *Chromatographic Absorbance at 280nm - Array of y-values for plotting of the SEC trace.
35
+ *Elution Volume (mL) (raw) - Raw version, data is not truncated, lengths may differ between rows.
36
+ *Chromatographic Absorbance at 280nm (raw) - Raw version, data is not truncated, lengths may differ between rows.
37
+ Soluble - Total Yield > 0.05 mg.
38
+ Success - Soluble and SEC peak at the expected elution volume.
39
+ Success+Monodisperse - SEC peak *only* at the expected elution volume.
40
+
41
+ # Jackhmmer results
42
+ # See Supplement, Section 1.5 for verbose details.
43
+ # In short: Summary statistics of Jackhmmer searches (-n 1 --seed 0) of the designed sequence against UniRef90. Hits that were removed from ESM2's train set were removed from consideration here. See `.txt` files for ID's of these omitted sequences.
44
+ min Jackhmmer E-value - Minimum (best-domain) E-value
45
+ max Jackhmmer Seq-id (significant hits only) - Maximum Sequence identity over all significant (best domain E-value < 1) hits.
46
+ max Jackhmmer TM-score (top-10 hits only) - Maximum TM-score of the ≈top-10 (by best-domain E-value) hits. (Purging was applied after top-10, so the number considered may be slightly lower, counts were rarely reduced below 7).
47
+
48
+ (* denotes long-form data only available in data.hdf5)
49
+ ```
50
+
51
+ ## `artificial_sequence_purge_ids.txt`
52
+ ID's of sequences removed due to being annotateed "artificial sequence" by the UniProt website when `2021_04` was the latest release.
53
+
54
+ ## `uniref90_jackhmmer_purge_ids.txt`
55
+ ID's of sequences removed by Jackhmmer search (`-n 1 --seed 0`) of UniRef90 when given the de novo target set as queries.
56
+
57
+ ## Minimal structure projection
58
+ A small new model head was constructed on top of ESM2, which is [this linear projection layer](https://dl.fbaipublicfiles.com/fair-esm/examples/lm_design/linear_projection_model.pt).
59
+ For a given sequence the projection measures the compatibility of the internal representations of the language model with a structure.
60
+ The linear projection layer is automatically downloaded when running the `lm_design` code.
61
+
62
+ ## Reference
63
+
64
+ If using this work, please cite:
65
+ ```bibtex
66
+ @article{verkuil2022language,
67
+ author={Robert Verkuil\*, Ori Kabeli\*, Yilun Du, Basile I. M. Wicky, Lukas F. Milles, Justas Dauparas, David Baker, Sergey Ovchinnikov, Tom Sercu, and Alexander Rives},
68
+ title={Language models generalize beyond natural proteins},
69
+ year={2022},
70
+ journal={bioRxiv},
71
+ note={bioRxiv 2022.12.21.521521},
72
+ url={https://doi.org/10.1101/2022.12.21.521521},
73
+ }
74
+ ```
weight/esm-main/examples/lm-design/paper-data/artificial_sequence_purge_ids.txt ADDED
@@ -0,0 +1,1027 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ F4ZNF8
2
+ A0A2J8RBA3
3
+ P62593
4
+ G9F9U8
5
+ P0A0C4
6
+ A0A1D5R6J9
7
+ Q8NFU1
8
+ O35638
9
+ P97793
10
+ P03023
11
+ P35125
12
+ P08588
13
+ A0A1Z1CGU0
14
+ A3DJ78
15
+ P03051
16
+ C3TTS2
17
+ A0A7S7YQ80
18
+ A0A8A1QP70
19
+ P00552
20
+ C0IR82
21
+ A0A6G8MV33
22
+ A0A7G3QPU0
23
+ C1IW73
24
+ O21999
25
+ A0A7S7YQ81
26
+ B6ZLM4
27
+ E9QNN1
28
+ C3TTS5
29
+ A0A8A1QPY2
30
+ A0A6G8MVA3
31
+ UPI000B4966E4
32
+ UPI000CFA7FCD
33
+ UPI000219022D
34
+ UPI00027FCE9C
35
+ UPI00025EFAFD
36
+ UPI0012FE7F08
37
+ UPI00080A7F37
38
+ UPI0004F13E6B
39
+ UPI0012F47792
40
+ UPI00034F235D
41
+ UPI0002B8CEC9
42
+ UPI0002B7BDD8
43
+ UPI00053CEE40
44
+ UPI00142F3CED
45
+ UPI00001103FE
46
+ UPI0018E1D9AC
47
+ UPI00021472E1
48
+ UPI0008F7E60A
49
+ UPI00097159CA
50
+ UPI000C173B10
51
+ UPI0008FBBFA1
52
+ UPI0012494AED
53
+ UPI0013EEE969
54
+ UPI00192FB675
55
+ UPI0010C7614F
56
+ UPI0012B50480
57
+ UPI0012B504DE
58
+ UPI0007D70F8E
59
+ UPI000299CE42
60
+ UPI00029B854D
61
+ UPI00052238A4
62
+ UPI0002B7BE16
63
+ UPI0002B63CCF
64
+ UPI000290CF2E
65
+ UPI00143F05A9
66
+ UPI001461716A
67
+ UPI000F45EF0D
68
+ UPI0002B8CC90
69
+ UPI0015D65FC5
70
+ UPI000F62C1E1
71
+ UPI000F735192
72
+ UPI000BACEC18
73
+ R0N8F4
74
+ UPI000B8BB31F
75
+ UPI001643FAA5
76
+ UPI0001E070E1
77
+ UPI00017620F1
78
+ UPI000219FD3F
79
+ UPI000A1C7A35
80
+ UPI00021472EB
81
+ A0A376TUA3
82
+ UPI0002003CE9
83
+ UPI00192FB686
84
+ UPI001038633B
85
+ UPI00071E9FEF
86
+ UPI000776ADB4
87
+ UPI0007A93631
88
+ UPI0007D70F84
89
+ UPI0002662B13
90
+ UPI00027FCDD0
91
+ UPI000D53C302
92
+ UPI0004DB217F
93
+ UPI000F735167
94
+ UPI000E6E5C27
95
+ UPI000F7D07A0
96
+ UPI0003C0DDA4
97
+ UPI000B8BB313
98
+ UPI0005448304
99
+ UPI000E3F8B1C
100
+ UPI000579AB0E
101
+ UPI001606F496
102
+ UPI0018E1DA16
103
+ UPI0014260322
104
+ UPI000F517987
105
+ UPI0009E0E2FD
106
+ UPI00196A1D51
107
+ UPI0013AE8757
108
+ UPI00071E9FDB
109
+ UPI00071E9FE4
110
+ UPI00071E9FEB
111
+ UPI0010C76155
112
+ UPI0006AD09A0
113
+ UPI0006AD09CA
114
+ UPI0007446E25
115
+ UPI0006B87F02
116
+ UPI00077DEFCA
117
+ UPI0002521384
118
+ UPI0007B176CF
119
+ UPI00025EFAFC
120
+ UPI0007A93677
121
+ UPI0004E98162
122
+ UPI0012F47798
123
+ UPI00144A4C39
124
+ UPI00038A5F74
125
+ UPI0003E1259B
126
+ UPI00038A5F50
127
+ UPI001AA00D14
128
+ UPI0001F84832
129
+ UPI00098DD6BE
130
+ UPI000C2F816A
131
+ UPI000B423637
132
+ UPI0010C934C4
133
+ UPI00144A4CA1
134
+ UPI00038A5F63
135
+ UPI000E5A0F66
136
+ UPI000FC43C46
137
+ UPI000F62C1EA
138
+ UPI000B8BB316
139
+ UPI0015F35251
140
+ UPI000B8BB331
141
+ UPI0001ED0481
142
+ UPI00021B6592
143
+ UPI001AA00CDC
144
+ UPI00097BA51B
145
+ K4EPC2
146
+ UPI0004AC2185
147
+ UPI0004A9B32D
148
+ UPI00052238F1
149
+ UPI000F45EF34
150
+ UPI00084A2F67
151
+ UPI000957C7BE
152
+ UPI0009083375
153
+ UPI00110D2544
154
+ UPI00167C4595
155
+ UPI000268A618
156
+ UPI0003847919
157
+ UPI0006CE488A
158
+ UPI0003D405CB
159
+ UPI000776ADA8
160
+ UPI00077DEFAD
161
+ UPI0002662A69
162
+ UPI0007D70FA4
163
+ UPI000290CF1E
164
+ UPI000D5032AD
165
+ UPI0002C39267
166
+ UPI000DAB3A3D
167
+ UPI000533FF1B
168
+ UPI00034F232F
169
+ UPI00143F05E0
170
+ UPI00142602E4
171
+ UPI000F45EF92
172
+ UPI0001CC46FF
173
+ UPI00106D2764
174
+ UPI0018AF53FD
175
+ UPI0018963E48
176
+ UPI000C173B08
177
+ UPI000E20C8A6
178
+ UPI000046F60F
179
+ UPI0001C5920B
180
+ UPI000B8BB356
181
+ UPI00032D6819
182
+ UPI0005AECF50
183
+ UPI0018E1DA0C
184
+ UPI000E2E4198
185
+ UPI000588E8B2
186
+ UPI001606F4BC
187
+ UPI0015F3523F
188
+ UPI0005D4846E
189
+ UPI000B8BB325
190
+ UPI00194ADAD6
191
+ UPI00084A2E3B
192
+ UPI00098DD694
193
+ UPI0009E0E325
194
+ UPI000864917F
195
+ UPI00020CB75C
196
+ UPI00090286F3
197
+ UPI0001CC46F5
198
+ UPI0002B7BDE7
199
+ UPI00052E4972
200
+ UPI000776AD7E
201
+ UPI0008FBBF64
202
+ UPI0007CA7963
203
+ UPI001111865D
204
+ UPI00104284F3
205
+ UPI0010052749
206
+ UPI000023423A
207
+ UPI00144A4CC0
208
+ UPI000BBB67AF
209
+ UPI000B80303C
210
+ UPI000332091E
211
+ UPI0006149A97
212
+ UPI000D097F2E
213
+ UPI00017EE951
214
+ UPI0001ED0480
215
+ UPI0000112ED3
216
+ UPI000231BBE3
217
+ UPI00029DD2AC
218
+ UPI0002416BA1
219
+ UPI00110D255B
220
+ UPI0013BE8AA3
221
+ UPI00022F840A
222
+ UPI00118EA44B
223
+ UPI0012B50508
224
+ UPI00078AF2F8
225
+ UPI0007D70FD4
226
+ UPI0008029526
227
+ UPI0004437F73
228
+ UPI0013F59633
229
+ UPI0013F595CF
230
+ UPI00144A4C2B
231
+ UPI000F45EF85
232
+ UPI00142602D1
233
+ UPI0005CDCEA1
234
+ UPI00001104EF
235
+ UPI0015ECD840
236
+ UPI000B8BB307
237
+ UPI0003E5C6BA
238
+ UPI0001D34122
239
+ UPI00097159E7
240
+ UPI0001ED047E
241
+ UPI00084A2F43
242
+ UPI0000111971
243
+ UPI0008235806
244
+ UPI001AD95113
245
+ UPI00026E0F9C
246
+ UPI0007F04B51
247
+ UPI000C1B5F82
248
+ UPI000C6C88DC
249
+ UPI000B4E83A1
250
+ UPI000B4966A5
251
+ UPI00110D252D
252
+ UPI00110D2541
253
+ UPI00194ADA30
254
+ UPI0013F5966A
255
+ UPI0002236A77
256
+ UPI00045EDE80
257
+ UPI00148AE2D9
258
+ UPI00038A5F38
259
+ UPI000F7351EF
260
+ UPI0015516330
261
+ UPI0019203BA8
262
+ UPI0003D405D0
263
+ UPI000BACEBD1
264
+ UPI000859AD75
265
+ UPI001AA00CF9
266
+ UPI00098DD6B8
267
+ UPI00110D2501
268
+ UPI0010052797
269
+ UPI000DBECE81
270
+ UPI001AEC72A7
271
+ UPI00167C4544
272
+ UPI000225A889
273
+ UPI00071E9FCC
274
+ UPI00071EA030
275
+ UPI00071EA03A
276
+ UPI0000034D67
277
+ UPI0006B2AA55
278
+ UPI0006B2AA61
279
+ UPI00067E6504
280
+ UPI000745F1EF
281
+ UPI00111186BC
282
+ UPI000718AB87
283
+ UPI00111186A3
284
+ UPI0007CA79BD
285
+ UPI0007D70F7B
286
+ UPI000252CB85
287
+ UPI000274A896
288
+ UPI0004E98176
289
+ UPI0002775471
290
+ UPI000DF720F5
291
+ UPI0002C39268
292
+ UPI00038478F5
293
+ UPI00058401AE
294
+ UPI00144A4CB8
295
+ UPI000F45EF86
296
+ UPI000F62C0F8
297
+ UPI0001D2820D
298
+ UPI0003E9D159
299
+ UPI0001E3065A
300
+ UPI0001BEF2D0
301
+ UPI000B802FEC
302
+ UPI0009715987
303
+ UPI0007E529ED
304
+ UPI000789C1E3
305
+ UPI000C1B5FF1
306
+ UPI000B5ABD1D
307
+ UPI00119C9006
308
+ UPI0011EA5FDF
309
+ UPI001493DE5C
310
+ UPI0013893A35
311
+ UPI0015882A8C
312
+ UPI0001D107C7
313
+ UPI000C1B5FEC
314
+ UPI0010A1F82C
315
+ UPI0019D71E58
316
+ B6ID89
317
+ UPI0001E30657
318
+ UPI0004540D7C
319
+ UPI0001BE62D1
320
+ UPI0013019C43
321
+ UPI0001CC46F4
322
+ UPI00032D6797
323
+ UPI00038A5F2A
324
+ UPI00080A7FC3
325
+ UPI000B4E8365
326
+ UPI0011DC71C4
327
+ UPI0019203C21
328
+ UPI00023EABAA
329
+ UPI0005CDCECB
330
+ UPI0008FBBF78
331
+ UPI00110D24F9
332
+ UPI000332EA7C
333
+ UPI0008521C9F
334
+ UPI00194ADA71
335
+ UPI0000110392
336
+ UPI0000112B0E
337
+ UPI000579AB12
338
+ UPI00051FF421
339
+ UPI000579AB1D
340
+ UPI0013F595D9
341
+ UPI00032D679A
342
+ UPI0013F595DD
343
+ UPI00144A4CA9
344
+ UPI0018A7E253
345
+ UPI0018EA31D7
346
+ UPI001AA00D30
347
+ UPI0001CC46FD
348
+ UPI0001E3065B
349
+ UPI00020B9EEB
350
+ UPI0001EA5A36
351
+ UPI0003994F59
352
+ A0A5B0FWU5
353
+ UPI0004F13E89
354
+ UPI000E32D3B2
355
+ UPI000C810904
356
+ UPI0018FE0336
357
+ UPI0002380B49
358
+ UPI000A276D2E
359
+ Q61743
360
+ UPI000B4E835E
361
+ UPI000C6F4481
362
+ UPI000DC66368
363
+ UPI000CFA801F
364
+ UPI0013AE86E9
365
+ UPI000F51797A
366
+ UPI000387ACE9
367
+ UPI00174F7D1F
368
+ UPI001A9A2BF3
369
+ UPI00084A2E95
370
+ UPI001AA00CC5
371
+ UPI001AEC7298
372
+ UPI0018963E05
373
+ UPI0001B04C41
374
+ UPI0000233EB9
375
+ UPI0000F58EF4
376
+ UPI0013AE86E8
377
+ UPI000BA9F930
378
+ UPI00035AC9B2
379
+ UPI0015F35239
380
+ UPI000F7351AB
381
+ UPI0004400482
382
+ UPI00097159F7
383
+ UPI0002147307
384
+ UPI000453B3F9
385
+ UPI00077DEFF3
386
+ UPI000A276D2D
387
+ UPI00119C9082
388
+ UPI0015882A88
389
+ UPI00192FB67C
390
+ UPI00022B80E9
391
+ UPI0002380B67
392
+ UPI000763547B
393
+ UPI0007635488
394
+ UPI00071EA042
395
+ UPI00071EA047
396
+ UPI00071EA04C
397
+ UPI0010F4323F
398
+ UPI00110D253B
399
+ UPI000716C80D
400
+ UPI0002521386
401
+ UPI00078AF330
402
+ UPI0011118674
403
+ UPI0011118679
404
+ UPI00080A7F7A
405
+ UPI00086491AB
406
+ UPI0012F47784
407
+ UPI0004F2371B
408
+ UPI00027B2C55
409
+ UPI00135F185E
410
+ UPI0007D70FC5
411
+ UPI0002D2576C
412
+ UPI00052238B8
413
+ UPI0012FE7EFE
414
+ UPI00142F3C8F
415
+ UPI00053CEE55
416
+ UPI000F517942
417
+ UPI000BBB680B
418
+ UPI00054CD398
419
+ UPI001AA00CD5
420
+ UPI0009468C99
421
+ UPI000D097F84
422
+ UPI0001754106
423
+ UPI00026BAC65
424
+ UPI000C173B21
425
+ UPI001005273B
426
+ UPI000035158F
427
+ UPI000225A888
428
+ UPI00065F26A0
429
+ UPI00022F840B
430
+ UPI00118EA415
431
+ UPI00118EA429
432
+ UPI00071E9FCF
433
+ UPI00071E9FD4
434
+ A0A376UCZ8
435
+ UPI0002348162
436
+ UPI0002416BA9
437
+ UPI000745F231
438
+ UPI000763546F
439
+ UPI001111864E
440
+ UPI00077DEF8E
441
+ UPI00025C0751
442
+ UPI0012B67DD8
443
+ UPI0002638C92
444
+ UPI0012B50510
445
+ UPI0012B50506
446
+ UPI0002662B12
447
+ UPI00026B6FAC
448
+ UPI0002AB7FB9
449
+ UPI00054482BB
450
+ UPI000E2E41C5
451
+ UPI0004F13E92
452
+ UPI00144A4C9C
453
+ UPI00058401AC
454
+ UPI00051AABBC
455
+ UPI0002B7BE02
456
+ UPI000E32D3AD
457
+ UPI000E115742
458
+ UPI00143F05B7
459
+ UPI000B8BB319
460
+ UPI00143F0604
461
+ UPI0015516331
462
+ UPI000440048D
463
+ UPI000BACEBD5
464
+ UPI00084CE66D
465
+ UPI0001E0709E
466
+ UPI0001AB295F
467
+ UPI00077DEFCB
468
+ UPI0003D79336
469
+ UPI000C1B5F96
470
+ UPI0002A54BFD
471
+ UPI0006B2AA7F
472
+ UPI000C122A66
473
+ UPI000C2F818D
474
+ UPI00194ADA9E
475
+ G8HJ64
476
+ UPI0012D7074B
477
+ UPI000BBB67C1
478
+ UPI0003E5C658
479
+ UPI0015F35205
480
+ UPI000F517992
481
+ UPI0015F35252
482
+ UPI0015ECD82F
483
+ UPI00021472CB
484
+ UPI0008521C70
485
+ P14647
486
+ UPI0009E0E337
487
+ UPI000BACEBD2
488
+ UPI00110D2559
489
+ UPI00084A2DDE
490
+ UPI0018D5A8E2
491
+ UPI001AD9513A
492
+ UPI000A1C7A2F
493
+ UPI0008FBBF53
494
+ UPI0009E0E348
495
+ B7SY86
496
+ UPI00026E0F9D
497
+ A0A3B3IU25
498
+ UPI0019203C1F
499
+ UPI00006AB776
500
+ UPI000175425C
501
+ UPI000268A617
502
+ UPI00045EDE62
503
+ UPI0003D405D4
504
+ UPI0008FBBF81
505
+ UPI0011118693
506
+ UPI00077DEFC6
507
+ UPI00143F058B
508
+ UPI0015D65F8D
509
+ UPI0018658999
510
+ UPI000150D089
511
+ UPI000B8BB367
512
+ UPI001606F444
513
+ UPI00168D9BFD
514
+ UPI00022F8419
515
+ UPI0010A1F87B
516
+ UPI00071E9FF6
517
+ UPI00071E9FF7
518
+ UPI00071E9FFF
519
+ UPI00071EA00D
520
+ UPI00071EA01B
521
+ UPI00071EA01E
522
+ UPI00071EA029
523
+ UPI0006AB76EC
524
+ UPI0007414E74
525
+ UPI0007414E8B
526
+ UPI0006DBD7D5
527
+ UPI00077B27C7
528
+ UPI0012F4777C
529
+ UPI0007F04AEB
530
+ UPI0002643244
531
+ UPI000E5A0F5A
532
+ UPI0005C1213E
533
+ UPI001374709C
534
+ UPI0005B2EBCD
535
+ UPI0002B7BE04
536
+ UPI000387ACA3
537
+ UPI000E5A0FB3
538
+ UPI000E6E5C37
539
+ UPI000E115713
540
+ UPI0006149ABC
541
+ UPI00144A4C42
542
+ UPI0005CDCEC1
543
+ UPI000579AB11
544
+ UPI0001D2820C
545
+ UPI000CF5DA49
546
+ UPI00084A2EDB
547
+ UPI000058E1C0
548
+ UPI001889C3AD
549
+ UPI00023EABAE
550
+ UPI0013EEE97A
551
+ UPI00026BAC66
552
+ A0A1X8XLE9
553
+ UPI00077DEFBE
554
+ UPI0003B7E04E
555
+ UPI000FE182D8
556
+ UPI001262AC70
557
+ UPI00196A1DEB
558
+ UPI001889C37B
559
+ UPI0012F4777A
560
+ UPI0011329F79
561
+ UPI0012FE7ED2
562
+ UPI0013AE8713
563
+ UPI0002AB7FAB
564
+ UPI00054482F2
565
+ UPI000EAB1302
566
+ UPI00052238D4
567
+ UPI001652B72F
568
+ UPI0005B2EBAB
569
+ UPI000533FF23
570
+ UPI000F735194
571
+ UPI001A9A2BC5
572
+ UPI000B8BB30A
573
+ UPI0018963DDB
574
+ UPI0015516341
575
+ UPI001AA00CFE
576
+ UPI000436DEFD
577
+ UPI0001E3065D
578
+ UPI0002B8CEB0
579
+ UPI000453B3C4
580
+ UPI0003C63EB6
581
+ UPI000E32D368
582
+ UPI00073339B0
583
+ UPI000C6C889C
584
+ UPI000C255BC9
585
+ UPI00110D2506
586
+ UPI0007E90EED
587
+ UPI0011146D56
588
+ UPI001111868A
589
+ UPI0015882A27
590
+ UPI001606F4C2
591
+ UPI001606F4BE
592
+ UPI0014260323
593
+ UPI00174F7CD7
594
+ UPI000D5032F0
595
+ UPI000579AB14
596
+ UPI000E32D3A1
597
+ UPI0012FE7E70
598
+ UPI0002B8CE7D
599
+ UPI0005B2EBED
600
+ UPI000BBB67D1
601
+ UPI0001CF7379
602
+ UPI00186BC337
603
+ UPI000D097F52
604
+ UPI00097BA547
605
+ UPI000B3D7BAA
606
+ UPI000035E43E
607
+ UPI000A1C7A22
608
+ UPI0001BE64E6
609
+ UPI0003B7E073
610
+ UPI0003847965
611
+ UPI00193116FB
612
+ UPI000225A887
613
+ UPI0014612D4C
614
+ UPI000BDFB0A9
615
+ UPI000F51796B
616
+ UPI001A9A2BE6
617
+ UPI001AD95101
618
+ UPI000B5ABD9C
619
+ UPI00020B9EC4
620
+ UPI0003AFF92C
621
+ UPI0002438AF8
622
+ UPI000437CCCE
623
+ UPI0012B67DE8
624
+ UPI0015882A7E
625
+ UPI0007D70FB5
626
+ UPI0004EF76C7
627
+ UPI0002B8CC1F
628
+ UPI00054482FA
629
+ UPI0001C5920C
630
+ UPI000F62C19A
631
+ UPI000F517949
632
+ UPI000387ACAC
633
+ UPI0003E5C6F9
634
+ UPI000BACEC0C
635
+ UPI0001E7A932
636
+ UPI0009468CC9
637
+ UPI00098DD6AE
638
+ UPI00003B0943
639
+ UPI0001EB69A1
640
+ UPI0005D2D2E6
641
+ UPI00077DEF97
642
+ UPI0003D79315
643
+ UPI0006AD09E4
644
+ UPI0007414E50
645
+ UPI000745F249
646
+ UPI000745F255
647
+ UPI00026B6FAD
648
+ UPI0007B176D2
649
+ UPI0012B50516
650
+ UPI0012B504C3
651
+ UPI000D503327
652
+ UPI00052E48F9
653
+ UPI000E6E5BF6
654
+ UPI000E6E5C53
655
+ UPI0005448306
656
+ UPI0015D65FF2
657
+ UPI000F7D075E
658
+ UPI000BACEC1D
659
+ A0A5C2GH33
660
+ UPI0018A7E2E9
661
+ UPI0018E1D9DC
662
+ UPI000A32B212
663
+ UPI00017EE952
664
+ UPI000A1C7A0E
665
+ UPI000CDFF54B
666
+ UPI0001BE6396
667
+ UPI00038A5F00
668
+ UPI0000111872
669
+ UPI00017BDADC
670
+ UPI0003F479CF
671
+ UPI000A1C7A5C
672
+ UPI0013893A64
673
+ UPI0001EA5A37
674
+ UPI0009BC73C4
675
+ UPI000D097F69
676
+ A0A5N3W491
677
+ UPI001AEC72A5
678
+ UPI0009E0E2FE
679
+ D2CTG3
680
+ UPI000268A622
681
+ UPI0003AFF9F2
682
+ UPI000B4E83C1
683
+ UPI0012494AE6
684
+ UPI00104284C5
685
+ UPI000CE6821A
686
+ UPI001493DE8E
687
+ UPI0015D65F84
688
+ UPI0008521C77
689
+ UPI0001ED047D
690
+ UPI0008DB4210
691
+ UPI0001E0709F
692
+ UPI00142602D8
693
+ UPI000652643C
694
+ UPI000789C1AA
695
+ UPI00071AFAB7
696
+ UPI0010FFCD78
697
+ UPI0002521385
698
+ UPI0007D70F79
699
+ UPI0007D70FDA
700
+ UPI0012F4776F
701
+ UPI0007D70FA8
702
+ UPI000268A605
703
+ UPI0012F477B9
704
+ UPI0007E2A98B
705
+ UPI00142602C6
706
+ UPI00051FF433
707
+ UPI000493B590
708
+ UPI0003E5C6CA
709
+ UPI000F41F37B
710
+ UPI0003E5C6E0
711
+ UPI00144A4C68
712
+ UPI000622D02B
713
+ UPI0018FE032E
714
+ UPI0018A7E250
715
+ UPI0001E070E2
716
+ UPI0018D5A8B2
717
+ UPI00174F7C9A
718
+ UPI00021B6593
719
+ UPI001A9A2C15
720
+ UPI0009388698
721
+ UPI0001A48A3B
722
+ UPI00026E0F9B
723
+ UPI0003D79339
724
+ UPI000776AD53
725
+ UPI000C173B19
726
+ UPI00080A7F9F
727
+ A0A220QSF7
728
+ UPI0000111ADE
729
+ UPI000B5ABD96
730
+ UPI0001BE637B
731
+ Q9X2I8
732
+ UPI000BBD49F0
733
+ UPI000C6F444C
734
+ UPI000B8BB345
735
+ UPI00110D2517
736
+ UPI00020CB75B
737
+ UPI000C122A57
738
+ UPI0010FFCD33
739
+ UPI0010A1F896
740
+ UPI0011DC71E8
741
+ UPI0011EA5FE3
742
+ UPI00042C2E51
743
+ UPI000BBD49A5
744
+ UPI000F7351AD
745
+ UPI0003F47997
746
+ UPI0001E5ECAE
747
+ UPI0001ED047F
748
+ UPI001AD9519D
749
+ UPI000B4235EF
750
+ UPI0010052771
751
+ UPI001298EA9B
752
+ UPI000181D306
753
+ UPI000BBD49D3
754
+ UPI0015882A90
755
+ UPI0006526429
756
+ UPI0006AB76D3
757
+ UPI0007414E9C
758
+ UPI000745F236
759
+ UPI0002501C96
760
+ UPI001262AC5D
761
+ UPI0002521383
762
+ UPI000789C1EF
763
+ UPI001111866C
764
+ UPI000256004B
765
+ UPI00028BC862
766
+ UPI00025C06DC
767
+ UPI0004E0AF2D
768
+ UPI0013747037
769
+ UPI000DF0CE78
770
+ UPI0002AA2D18
771
+ UPI00054CD39B
772
+ UPI0006149A6E
773
+ UPI000E3F8ACD
774
+ UPI0014617174
775
+ UPI00142602EC
776
+ UPI0015F35254
777
+ UPI00084A2F6E
778
+ UPI00097159B8
779
+ UPI000035E440
780
+ UPI0009E0E2ED
781
+ UPI00018F447B
782
+ UPI0002074EBB
783
+ UPI000789C1DF
784
+ UPI000B496691
785
+ UPI0008A09DC7
786
+ UPI000737D842
787
+ UPI00111186BA
788
+ UPI000DC663A6
789
+ UPI0007414E0D
790
+ UPI0006AB76F2
791
+ UPI0006B2AAA7
792
+ UPI00024A088A
793
+ UPI000745F1EA
794
+ UPI00024ED262
795
+ UPI00025EFAFA
796
+ UPI00025EFAFB
797
+ UPI0004EF7694
798
+ UPI000D50332D
799
+ UPI00142F3C7C
800
+ UPI00054482BE
801
+ UPI000E32D355
802
+ UPI0013AE873E
803
+ UPI00038A5F66
804
+ UPI0005B2EBD1
805
+ UPI000F044F53
806
+ UPI00052238E5
807
+ UPI0015F3522E
808
+ UPI0002B8CE84
809
+ UPI0014260303
810
+ UPI0015F35223
811
+ UPI001ABD48E5
812
+ UPI0001F2FE46
813
+ UPI0009468CF7
814
+ UPI00001106D9
815
+ A0A7U9B809
816
+ UPI0002662B0F
817
+ UPI00051FF3F6
818
+ UPI00143F05A7
819
+ UPI000E5A0F5F
820
+ UPI00038A5F68
821
+ UPI0006149A75
822
+ UPI00051FF3E3
823
+ UPI000F45EF14
824
+ UPI000F7351E4
825
+ UPI000F45EF17
826
+ UPI001606F475
827
+ UPI0019203BF1
828
+ UPI0004437F29
829
+ UPI00194ADAC6
830
+ UPI000CFA7FC4
831
+ UPI0001E0709D
832
+ UPI000A1C7A41
833
+ UPI0001D63C41
834
+ UPI0006AD09BC
835
+ UPI0005D2D2BF
836
+ UPI0004E0AF74
837
+ UPI000A276D21
838
+ UPI00143F060A
839
+ UPI0013AE874C
840
+ UPI000579AB20
841
+ UPI0003E5C6DE
842
+ UPI0003C63F44
843
+ UPI000629DD5B
844
+ UPI00143F05EC
845
+ UPI0001C2FA1D
846
+ UPI000CFA7FD3
847
+ UPI001AD9519E
848
+ UPI0001E3065C
849
+ UPI0001E5ECAD
850
+ UPI000A1C7A20
851
+ UPI0019D71E55
852
+ UPI0001BE6560
853
+ UPI000A1C7A4B
854
+ UPI00058401D1
855
+ UPI000CCBD6E9
856
+ UPI00194ADA1B
857
+ UPI00196A1E01
858
+ UPI0018C8D4B3
859
+ UPI001AD95187
860
+ UPI0001B325BF
861
+ UPI000718ABA0
862
+ UPI000C2F8173
863
+ UPI0008A09D9F
864
+ UPI000B5DBA56
865
+ O21998
866
+ Q1PJ51
867
+ A0A7G3QKL7
868
+ D4PBN1
869
+ B6IDB9
870
+ A0A8A1QQ63
871
+ D3YU56
872
+ O32306
873
+ Q4FAI7
874
+ A0A6P7QK90
875
+ E3TBL3
876
+ D2JM82
877
+ B6ID68
878
+ P13249
879
+ B6IDC8
880
+ UPI00144A4C78
881
+ UPI000E32D35D
882
+ UPI001606F499
883
+ UPI0001ED049B
884
+ UPI0009468CAF
885
+ UPI0009948E07
886
+ UPI00017545C0
887
+ UPI00029722E5
888
+ UPI000011F76E
889
+ UPI0014612D59
890
+ UPI000EAB130B
891
+ UPI000F735174
892
+ UPI00143F05E3
893
+ UPI0005223907
894
+ UPI0015F35236
895
+ UPI000E6E5C5E
896
+ UPI000BA9F95E
897
+ UPI001AA00D4F
898
+ UPI001AA00D1D
899
+ UPI0009715993
900
+ UPI00084A2F05
901
+ UPI0001753C1D
902
+ UPI00098DD6CC
903
+ UPI0006891DC8
904
+ UPI00061A8BF7
905
+ UPI000B8BB31D
906
+ UPI001643FB20
907
+ UPI001606F4C0
908
+ UPI0001E30658
909
+ UPI0018D5A8A0
910
+ UPI0018A7E28D
911
+ UPI0001EA5A05
912
+ UPI0006B2AAA2
913
+ UPI000E32D363
914
+ UPI0011E8A1FC
915
+ UPI0018FE02FE
916
+ UPI0001D107C6
917
+ UPI00026BAC67
918
+ UPI0006891DEF
919
+ UPI0001D63C42
920
+ UPI00077DEFC1
921
+ UPI0003994ECA
922
+ UPI000F517958
923
+ UPI0018FE032A
924
+ UPI000E5A0F44
925
+ UPI0003E125CB
926
+ UPI000BBB67C9
927
+ UPI0003ED1A77
928
+ UPI000F45EF82
929
+ UPI000B3D7B51
930
+ A0A1W2P7C7
931
+ B6ID16
932
+ Q99MV7
933
+ Q9WU40-2
934
+ Q5T6F2
935
+ P17535
936
+ Q8R554
937
+ Q9C0J8
938
+ A7MBM2
939
+ Q9H330
940
+ Q8TF61
941
+ P04386
942
+ Q96QS3
943
+ P23116
944
+ Q3BBV0
945
+ A6NKL6
946
+ Q92750
947
+ A0A6P7PWU2
948
+ P04483
949
+ A0A5E4CA51
950
+ A0A6G8MVD7
951
+ A0A6G8MV94
952
+ Q8VHQ2
953
+ E1AFZ1
954
+ A0A5E4BH46
955
+ E9QM38
956
+ E3TBL2
957
+ A0A6P5P090
958
+ Q2WG74
959
+ B6ID61
960
+ B6ECZ5
961
+ C3TTS7
962
+ B6IDB8
963
+ Q4W275
964
+ A0A087WPL5
965
+ E9QP19
966
+ A0A7T1WWW5
967
+ E9QLQ3
968
+ E9QAP7
969
+ A0A2J8V1A8
970
+ A0A2J8RY77
971
+ Q9UJ96
972
+ H2R2W6
973
+ B6ID48
974
+ B6ID47
975
+ B6ID46
976
+ F7C8M9
977
+ P00485
978
+ A0A2J8RCY9
979
+ B6ID37
980
+ P01112
981
+ B6IDB0
982
+ B6ID28
983
+ Q5DTU2
984
+ B6ID86
985
+ B6ID67
986
+ B6ID56
987
+ J3KTH2
988
+ Q7RTR2
989
+ Q79DX9
990
+ Q79DR3
991
+ Q96NY7-2
992
+ Q1PSW8
993
+ A0A2K5UXE1
994
+ A0A2U4B2H6
995
+ A3DDL8
996
+ A3DE06
997
+ Q6V0L0
998
+ Q99PP7
999
+ Q8NHH0
1000
+ Q01167
1001
+ Q8NHH1
1002
+ Q5GH67
1003
+ G5E829
1004
+ O95382
1005
+ Q57146
1006
+ Q6UXK2
1007
+ Q45585
1008
+ Q12948
1009
+ Q9UGP5
1010
+ P85037
1011
+ P11274
1012
+ Q9WU40
1013
+ Q6R891
1014
+ D3Z7P3
1015
+ O94819
1016
+ P08575
1017
+ Q8K449
1018
+ Q9JMC2
1019
+ A6NDN3
1020
+ Q9NXH8
1021
+ A0A6M3U8F9
1022
+ Q61409
1023
+ O60548
1024
+ P97347
1025
+ Q9JIX8
1026
+ Q9BTV7
1027
+ Q7TQ40
weight/esm-main/examples/lm-design/paper-data/data.csv ADDED
@@ -0,0 +1,277 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,Design ID,Experiment Name,Design Model,Target ID,Sequence,Total Yield,yield_per_Leq,Soluble,Success,Success+Monodisperse,AlphaFold RMSD,AlphaFold pLDDT,min Jackhmmer E-value,max Jackhmmer Seq-id (significant hits only),max Jackhmmer TM-score (top-10 hits only)
2
+ 0,F000,Fixed_Rd1_48,LM,1QYS,MVKVTLTYTKDGKPVTETVEVSSLEELEPKVKEIVEKLKKEGATSASITVTAESEDEAKRAENVAKAVLDAAGVTGYSTSVSGKTVTITATF,0.4957277507294888,123.93193768237221,True,True,True,1.8563631772994995,89.5325332981491,0.95,0.2717391304347826,0.5336
3
+ 1,F001,Fixed_Rd2_Distant_24,LM,6MRS,MSEAARAVAEEIEKRVKAAGGSATVKETSSGLEVTVTGVPEPVLKIVENIAKDVGSKYGKTVSVSREGDTLKVTITW,0.3176838320219042,79.42095800547605,True,True,True,1.2924525737762451,87.73543773267119,1.8,,0.79568
4
+ 2,F002,Fixed_Rd2_Distant_24,LM,6MRS,MDPRVRAALEEIEKAVKEAGGSVERKVEGNKVTLTVTGLSPEVASKISSKASEVGSKYGVPVSAELKDGKLVITFTV,0.4228188625945215,105.70471564863038,True,True,False,1.1545886993408203,90.09167939406858,2.7,,0.79038
5
+ 3,F003,Fixed_Rd2_Distant_24,LM,6MRS,MSKAAEEIVSRLEKELKDAGVTFTKSLSGDTLTITAENVPPSAVERVKSVIESVASEYGKKPEVKVEGNKVTATVKL,0.20452150131449953,51.130375328624886,True,True,True,1.9942351579666135,89.64661571494226,1.6,,0.76915
6
+ 4,F004,Fixed_Rd2_Distant_24,LM,6MRS,MSEAVNKIVERLKEEASKLGKTVSVREEGGKVVVEITGLTPSDAPKVKELVEKVAGEYGVKAEVSLEGSTLRVTITA,0.4075973400219396,101.8993350054849,True,True,False,1.2864220142364502,88.70031155357758,0.69,0.2597402597402597,0.48702
7
+ 5,F005,Fixed_Rd2_Distant_24,LM,6MRS,MSDAARAVASEISSRVSSLGGSATVREEGGKLVVTITGLPPSVLEEVKKAAEEAGRKAGKPVKVTLSGSTLTVEVSW,0.22237320363197127,55.59330090799282,True,True,True,1.1808888912200928,89.63327697501046,0.78,0.23376623376623376,0.8134
8
+ 6,F006,Fixed_Rd2_Distant_24,LM,6MRS,MDPRVSAAVNKVLEELRKLGKTPSISESGGSVTVTITGLSSDEASKVKEIAEKAGREAGVPVEVSLSGSTLTVRFRV,0.037857109780889554,9.464277445222388,False,False,False,1.01856791973114,90.08561428560375,1.8,,0.7999
9
+ 7,F007,Fixed_Rd2_Distant_24,LM,6MRS,MPPEVEKAVEEIKKLVSEAGGSAEVSVSGKTVTVKVTGLSSDVASKIEAKAREVGEKYGVPVNVELKDGTLTITFRV,0.24805508578155241,62.0137714453881,True,True,False,1.0749236345291138,90.28870944917344,0.87,0.24675324675324675,0.61168
10
+ 8,F008,Fixed_Rd2_compare_LM_24,LM,6NUK,MPTYTLTGTITVPSEEAAKKLVEDLKKAGEEISKETGAKVSVSAELKDGKVTVTATVENAPPEVIEKIKERVKPIVEKYGGSLEVKG,0.28329050639414466,70.82262659853616,True,True,True,2.563059091567993,81.73945005931526,0.39,0.3103448275862069,0.56181
11
+ 9,F009,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,5L33,DEKKEVAYRILRALELGSPEAMKEAITDDTHMHVGGMHFQGDEVVKFVEWIAENGMRWRLEHMELIGDHYVAWVHVERGGQEQNVIISINVVDGKVHHIHIYGR,0.277442302966893,69.36057574172325,True,False,False,0.4343377649784088,95.76276113248424,1.0,,0.85007
12
+ 10,F010,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,5L33,DEEHQVALRFIEALQTGDPELAAAIVPEDTRMYVGGKRYHGPGIVEFVKELAEAEIKVQLLEYKWVGDKWHFLIRQTHDGQEKRMVVSIRVENGKLGRIYIFGP,0.07283634440694234,18.209086101735586,True,True,False,0.4950173199176788,96.55776679074548,0.14,0.22115384615384615,0.83396
13
+ 11,F011,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,5L33,NERYELAHRFIEALELGSPELLARIVSPSTTLWVGGLHFRGEGIYLFVLFIAIFGIKVKYQEHEQVGDMYVYNVEVSHGGQIWDVHIWIHVKDGELSHVYIFGP,0.03633134604045652,9.08283651011413,False,False,False,0.4901691079139709,93.3927575683868,0.085,0.20192307692307693,0.81263
14
+ 12,F012,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,5L33,SERLERALAFVEALQTGSVEEARNVISDDTRMWNNGRHYHGEGIVDFVKGMAQGGIKTELIEHELVGDHYVFHIKVSHGGREWPVHMQIRVVDGELRDIWIWGR,0.013853445263341107,3.4633613158352765,False,False,False,0.5045303702354431,96.67489866328364,1.5,,0.8514
15
+ 13,F013,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,5L33,NERFMRAWLFVQALQYGDPEMFRNVITPSTRMVVDGHHYEGEGIVDFVRHIAETGMRVQPLSHHLEGDQWVFHMQVTHNGHEKLVTIKIKVVGGEIVHVTISGR,0.026416916364346666,6.604229091086666,False,False,False,0.5356542468070984,93.92580078353362,2.1,,0.84179
16
+ 14,F014,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6D0T,AIDLAEYLPGHWEMLLVSETGKHFTGTMHMKPVDPTVIQMDFWGHDNDGTPFWGYGYFMDTGEDEVHFGMVMSNGYQFEGAYEVVDDDTIVIVADSNKGERYVGVLRRLDP,0.03608557123999195,9.021392809997987,False,False,False,1.2565512657165527,92.54382781055942,1.6,,0.49717
17
+ 15,F015,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6D0T,RPDLKDHVPGHYTVILVSQGGHYITGTVTMETVSDKKVLIEHTGTTGDGTPVTGWGYIDDRSGSPYHFALFLSNGWYFHGNIRFVSDNHILIQMTSSHGLNWVGVLYKTPA,0.013190157779185595,3.297539444796399,False,False,False,0.7335907220840454,93.8959715867114,0.01,0.17117117117117117,0.89692
18
+ 16,F016,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6D0T,DWDLTETLPGYYHFVFVSNDGFAIYGTVHMEVVNPDVVRMTYVGWDSNGVPGSGWGYFHRDPDDKVHFYFEFSNGIKMDGWVKQLDDDTIAITALTSDGRFMHGYLYKMDP,0.008445903520939553,2.111475880234888,False,False,False,0.8426432013511658,93.4402470645872,0.25,0.1981981981981982,0.89593
19
+ 17,F017,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6D0T,APDLDEHFAGKWTWVFVSQDGVSYTGTSTMRAVDGNVIQIDYTGHDSDGTPVTGGGYIHNNHPGRLHFVMAFSNGLVLEGWLTVVGDDTILVHMTSNTGRTYVGVFTRTDA,0.015506616586872708,3.876654146718177,False,False,False,0.9828828573226928,91.99622006352418,0.094,0.21621621621621623,0.90737
20
+ 18,F018,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6D0T,RPDLSTHLPGHYEWHFVSNDGYAFTGTVTMEVVDPNVIWMHYTGWDNNGTPLSGWGYFRDHHPEYYEFGMWMSNGYKFHGWVEFVDDNRIEVVARSNKDRIYSAVFTKHDP,0.004148435344812339,1.0371088362030847,False,False,False,0.6710172891616821,93.87439772382255,0.43,0.16216216216216217,0.44506
21
+ 19,F019,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6MRS,NSPAVMKVIEAVIQAVEGWPSTIHIIRWPHYHLIHIPGLTREQQAELLAVVAWASEAYGVPTWVHLHGNTVSILIFD,0.0067303889674713464,1.6825972418678365,False,False,False,0.4508427381515503,96.6509884001364,4.6,,0.58873
22
+ 20,F020,Fixed_Rd2_Distant_24,LM,6MRS,MSEKVLKALEEAENAVKEAGGSLSRSVSGDKVTLTITGLPSDVASKIEGKLREVGEKYGVPVEVSISGSTVTATFRV,0.20536458406256974,51.34114601564244,True,True,True,1.2931123971939087,90.93261409285294,0.58,0.3246753246753247,0.74641
23
+ 21,F021,Fixed_Rd2_Distant_24,LM,6D0T,MAKLSELLVGEYEITGKNAAGEPVTGTLKIEAVSDTEVKVSGTIKTKDGKEVPQSGSATVAADGTVTAERKLEDGRVVKSTSKPEGDKTLTTTSVLDDGSEIVEKGVRKAS,0.24740261117966605,61.85065279491651,True,False,False,2.7274112701416016,82.86246046516828,0.61,0.22522522522522523,0.78995
24
+ 22,F022,Fixed_Rd2_Distant_24,LM,6D0T,MSSVLDKVAGEYTVEGKDPQGNPITGSLKIEKKDEKTASISGKLKTPEGKEVPVSGEATVTSENKVEVKVKAEDGSEITLTGTLESDDTIKLSGTTKDGKPVELTAKRPKS,0.34486560568121266,86.21640142030317,True,True,False,2.518651247024536,86.09766403439173,0.24,0.35135135135135137,0.90266
25
+ 23,F023,Fixed_Rd2_Distant_24,LM,6CZJ,MTFVERLAGKYEGEAKNAAGEPVKVVLEITKEGDNKASVKLTITTKDGKTEELSGSATLESETKATVSLKTSDGQTVTLTVEKPSDSEIKVTGTAPDGSKIEGTLKKKS,0.2537102178201451,63.42755445503627,True,True,True,1.669878602027893,86.19851952337629,0.94,0.2018348623853211,0.38273
26
+ 24,F024,Fixed_Rd2_Motif_11,LM,6W3W,AGDEAAVKDVVTKLIEAENKRDAAGLKALVAPGAKIVEEGKTITGVDAFVKELEKEPKPTYTLGEVKVSGDTATVPVTETEDGKSEKGTVTLKKDGGKWVISEIKEE,0.28501657145748693,71.25414286437173,True,False,False,2.4170925617218018,89.54169269821487,2.3e-06,0.37383177570093457,0.7676
27
+ 25,F025,Fixed_Rd2_Motif_11,LM,6CZJ,MTLEEALAGTYKIEGKDAAGNPISGTSTITKEGEGKYSVVSEIKTPDGKVIKSSGSATVEKDGTVKAELTAENGQKLTVTLKVNADGSRDVTVTTSDGKTFTGKETRVK,0.24468233970059516,61.17058492514879,True,True,False,1.6262468099594116,87.99247793965945,0.002,0.28440366972477066,0.84723
28
+ 26,F026,Fixed_Rd2_Motif_11,LM,6CZJ,MTLEEKLVGEYSVSGKTPEGAEYTGKAKIEKAGENKYKVTWTTKNAEGKEVTSSGEATLKDDKTVELTITNPDGSKSTGTAVVKDADTREITFKGSDGQEIKETWKRVK,0.3977466139210023,99.43665348025057,True,True,False,1.337502360343933,88.70211181997347,0.0016,0.25688073394495414,0.84406
29
+ 27,F027,Fixed_Rd2_Motif_11,LM,6CZJ,MTVLDKLAGKYTLSGTGPDGKPVSGELTITKEGENKVSVERKITSPEGKETTEKGTATLKSDTEADVTLTAEDGSTVSATVKLESDSEISFTGKTKDGQEVKVTAKKAS,0.40438764010168293,101.09691002542073,True,True,False,1.4750990867614746,88.14754882966898,0.9,0.21100917431192662,0.81634
30
+ 28,F028,Fixed_Rd2_Motif_11,LM,6CZJ,MSLADKLVGEYTVSGKDAEGNEYSGTAKISKAGENKYTIEWTSTDKEGKPITLKGEATVKDDSTVEIKVTTEDGKEITGVQKVVSDTEREVTLTLPDGSVAVEKWTKKS,0.3733776066897868,93.34440167244671,True,True,True,1.5804373025894165,89.3412295564101,0.0025,0.23853211009174313,0.84063
31
+ 29,F029,Fixed_Rd2_Motif_11,LM,6CZJ,MSVLDALAGKYTVKGKNPDGSEYTGTAEITKKDDTTAAVSLTVTGADGKPVTLSGEAKLEGENKISSTLKTSDGREVKVVEELVSATERKVTITPPGGSPIVETWTKAS,0.2803780751152961,70.09451877882402,True,True,False,1.886478304862976,85.56625102495296,0.00015,0.29357798165137616,0.79837
32
+ 30,F030,Fixed_Rd2_Motif_11,LM,6D0T,MSSVLDKVAGEYEVSGKTPDGKPYKGTATITRVSDTEAKISWTSTPPEGKEIKLEGTAKESEPGKVTVTLKGEDGQEVTGTYTVNADGSLSATLTTKDGVKAEETWKKKAS,0.3798131326932491,94.95328317331229,True,True,False,2.5999600887298584,87.12063850277771,0.0004,0.3063063063063063,0.83537
33
+ 31,F031,Fixed_Rd2_Distant_24,LM,1QYS,MFRVKVTGTKDGKPVTEEYTASKPEDVVKAVGEVIKKLKEKGVTSATVEIEAESEKDLENAKRIVEGLLRAAGAKNVSVSLSGRKLTITATL,0.3427875797108305,85.69689492770763,True,True,True,1.807220816612244,89.89167015658074,2.2,,0.53858
34
+ 32,F032,Fixed_Rd2_Distant_24,LM,1QYS,MVKVVIKGTKDGKPVEKTLEASSLRDVGKLVRETVKELKDAGVSSVTVEVTAPSEKAAKIAENVAVNALKKAGAKDVTSKVEGNKVTITATL,0.9202675931650974,230.06689829127436,True,True,False,2.0360801219940186,92.28481875444518,5.9,,0.52215
35
+ 33,F033,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6MRS,RSPQVMRVIEEIAQAVQGWPVELHMIWGPDRVIVIIPHLTWPQQMELLAVVARASWELGVPTKVYIGGSTVIIIVDD,0.006731173414179127,1.6827933535447817,False,False,False,0.4216504096984863,97.22116813959614,1.7,,0.94281
36
+ 34,F034,Fixed_Rd2_Distant_24,LM,1QYS,MVRVKVTGTKDGKPVTIEGEASKPEDLKDVVAKAVEKLKEAGVTSATVEITAENEAQLSEVKKIVEEELRKAGAKNVSVSLEGKTLKVSGSF,0.33944966291032735,84.86241572758183,True,True,True,1.9140664339065552,89.98501265829073,0.9,0.22826086956521738,0.4941
37
+ 35,F035,Fixed_Rd2_Distant_24,LM,1QYS,MVKVTLTYTKDGKTVTETIEESDPSKAGEVIKKVVEKLKELKPTSVTVEITASSEDEAKNAENIVKAVLTGLGAKDVSVSREGSTVKISATF,0.4037276032258898,100.93190080647246,True,True,False,2.09683895111084,90.84441433223994,2.0,,0.6046
38
+ 36,F036,Fixed_Rd2_Distant_24,LM,1QYS,MVKLTITGTKDGKPVTKTVEVSSLEGLPSEIEKAVKELKDAGVTSVTAEVEAPDSATANVVARVLEATLRAAGAKDVQVSVSGSKVTVKASF,0.395968365097821,98.99209127445525,True,True,True,1.81305992603302,90.34497043231632,0.96,0.22826086956521738,0.48044
39
+ 37,F037,Fixed_Rd2_Distant_24,LM,1QYS,MVKLTLTYTTPEGTKTETVEVSSLEEAKEKIKAKVEELKSKGVTSVTVVIEAPSEDAVRVAENVARLVLSAAGAKDVKVSREGNKVTITATF,0.052453902269729735,13.113475567432435,True,False,False,1.5934504270553589,90.3361436031438,2.4,,0.55363
40
+ 38,F038,Fixed_Rd2_Distant_24,LM,1QYS,MVKYTLTATKDGKTVTKSGEASSLSEVPSEISKLLEELKKEGVTSATVVIEAPDEKTAENAKRVAEAVLKAAGAKDVSVKVEGNKVTITGTF,0.3282799016302957,82.06997540757392,True,True,True,1.724876880645752,90.52690170049704,0.78,0.2717391304347826,0.8638
41
+ 39,F039,Fixed_Rd2_Distant_24,LM,6CZJ,MTVLEKLAGKYEISGKSPEGEPVTGTSEITKEGDNKAKIVSTIKTKDGKEVKLSGTATVESDTKVSAPLTLEDGRKVTAEYTFVDADTVKVVITLDDGSKIEGTEKRVK,0.36725811471625625,91.81452867906407,True,True,True,1.2565298080444336,88.28953625778355,0.84,0.22935779816513763,0.76003
42
+ 40,F040,Fixed_Rd2_Distant_24,LM,6CZJ,MTVAEKLAGEYTVTGKNAAGQAVSGSSKITKVDATNYKVESTLTTPEGKPVTLSGTAKLESDTSAPIELKTEDGKTVKGTIKFEGADKRVVEVPGPDGGVLKETWTRKK,0.2979780984488259,74.49452461220648,True,True,True,1.509373664855957,86.41524649023813,0.81,0.1834862385321101,0.55789
43
+ 41,F041,Fixed_Rd2_Distant_24,LM,6CZJ,MSLEEKIAGKYEVSAPGPPGVTVTGTLEIKKEGENKYSVKGELVTPEGQKVPVEGSATLESETKATVKLKTSDGREITLTIEFKSDDEAVVSGTTPDGKPISGTAKRVK,0.07818634822978235,19.54658705744559,True,True,False,1.5739067792892456,86.4768208724314,0.0099,0.3211009174311927,0.74571
44
+ 42,F042,Fixed_Rd2_Distant_24,LM,6CZJ,MSDLDKIAGEYEVSGKSPEGEEIKGTLKVTKKDDKTVAVELELPGPDGKPVKASGTGTYDGGSKATVTVKDEEGNEVTLTITFKDADTAEIEGKDSEGQPIKLTAKRKK,0.43600475224699825,109.00118806174956,True,True,False,1.936157822608948,86.32997514021847,0.4,0.21100917431192662,0.82276
45
+ 43,F043,Fixed_Rd2_Distant_24,LM,6CZJ,MSFVEKLAGKYKVEVPGPPGLTISGTWEIKAEGENKASITSTTKDPTGKEVKVSGVLEKKSDTEAVGKITLPDGSSADVTVKLEGDDKLSVTAKNAAGQELKGTATRVK,0.1588073964687471,39.70184911718677,True,True,True,2.2209596633911133,85.67952096772032,0.83,0.25688073394495414,0.74244
46
+ 44,F044,Fixed_Rd2_Distant_24,LM,1QYS,MPTVKITGTKDGKPVTEEYTTSDPSEIKSIVEKKAKELKDSGVSSVTVEVTASSEGELREAQRVAENALRDAGLKNVSTRLEGNKLVISGSA,0.0994513461543207,24.862836538580176,True,True,False,2.0107052326202397,91.17856337372622,2.0,,0.82719
47
+ 45,F045,Fixed_Rd2_Motif_11,LM,6D0T,MKSLSEKLAGEYTLEGEAPGGAKITGKTVIKAVGENKFEVTSSVTDPSGKPVESKGTAELKGDKEIVATLTASDGSTATVTETVVSADERKVTITTKDGQKIEVVEKRVKK,0.13598994945441087,33.997487363602716,True,True,False,3.051065683364868,88.52513366461596,0.36,0.24324324324324326,0.8139
48
+ 46,F046,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6MRS,GSPKVWQVIWAILQATQGMGVTVHIIAHPHHYLIIIPGLTAEQQWILLHVVAQAAQLFGVPTWVHLEGGTVSILVFD,0.0055851279719760704,1.3962819929940176,False,False,False,0.3663604259490967,97.1495514547789,0.0045,0.2727272727272727,0.48785
49
+ 47,F047,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6MRS,VNPKVWKMIYSVIQATKGMGHHIHIHWYPHFFIIHIPGLTDAQYERIRQAVAQSAEQNGVETWLYWSGNTVTIIIFE,0.003687218919149328,0.9218047297873321,False,False,False,0.4571395814418793,95.11999800945894,2.7,,0.55457
50
+ 48,F048,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6NUK,SYEFRVSVSVTVSDVPGILAWLEGLSATLKELEAGTPARIRETVRIDGGKVDLTIVAENAEPAVVSEIIGLLLPFVERYGGSLIIEY,0.397509175990901,99.37729399772526,True,False,False,0.6839452385902405,93.80271215881568,5.0,,0.49771
51
+ 49,F049,Fixed_Rd2_compare_LM_24,LM,5L33,MKPEEVVKKYIEALNKGDANAVKELLSSDVELTDVGQTLKGEKAAEFVAGLAKSGAKAEIKDLKVEGDKVTATVTITAGGKTTTSKDTFTVKDGKITKLEVSAS,0.39212291496487056,98.03072874121764,True,True,False,2.490266799926758,91.68561308298789,5.8e-08,0.40384615384615385,0.83014
52
+ 50,F050,Fixed_Rd2_compare_LM_24,LM,5L33,MSAKEVVEKYVAALNSGKPEDLKPLLADDVTLTDVGQELKGSDAVKFVEGLSKAGAKIELGEVSESGDTVTAPVTITAGGKTTKATDTFTVKDGKITKLEIKAS,0.06935968584639321,17.3399214615983,True,True,False,2.330277919769287,89.5547881916068,3.8e-06,0.3942307692307692,0.84532
53
+ 51,F051,Fixed_Rd2_compare_LM_24,LM,5L33,MSAKDVVNKYVEALNSGDPEKAASLYAENATVTDAGKTLTGKEIGEYLKGVAAGGAKLEVGEVKEEGDKVTAPVTITLPGQTIKAVDTFTVKDGKIVSSEFKAE,0.38402089919353116,96.00522479838278,True,True,False,1.8524878025054927,89.30061218432351,9.4e-10,0.40384615384615385,0.92595
54
+ 52,F052,Fixed_Rd2_compare_LM_24,LM,5L33,MSAKEVVEAYVKALNEGKPEDLKKVLADDVELTDVGQTLKGSDAVKFAEGLSKAGAKLEIKDISESGDTVTATVTITAGGKTTEAKDTFTVKDGKITKLVIEPK,0.6398325282794153,159.95813206985383,True,True,False,2.2361340522766118,90.44281855923052,2.4e-05,0.38461538461538464,
55
+ 53,F053,Fixed_Rd2_compare_LM_24,LM,5L33,MSAKEVVTKYIEALNKGDAKAAGELLSPEVELTDVGQTLKGSDAVKFVEGLAKSGAKAELVSLEEKDGKVVATIKVTAGGKTVTSTDTFTVKDGKITKLEISSK,0.35495440722572474,88.73860180643119,True,True,False,1.9567445516586304,91.38719989078253,4.7e-06,0.36538461538461536,0.85161
56
+ 54,F054,Fixed_Rd2_compare_LM_24,LM,6D0T,MLKPEDLAGKTFEGKLTTKDGKEITGTVTIEKKGENEYSVKISGKDAEGKPVEVSGTAKLESETKAVVTLKDDKGNEVTATVERPEPGKIKVTVKASDGSEASGELTEKKS,0.3765251534916582,94.13128837291455,True,True,False,2.6787517070770264,84.5044350504976,0.064,0.32432432432432434,0.70066
57
+ 55,F055,Fixed_Rd2_compare_LM_24,LM,6D0T,MASLLEKIAGEYEISGKTPEGEEVSGTVTIKAKDDKTAEIEGKLKTKDGKEVPVKGSATVESENKVKVTLTTEDGQKVELEGEVKDENTIVLKGKTSDGKPVEATLKKKSS,0.5348707582648717,133.71768956621793,True,True,False,2.441730260848999,87.08570465817874,0.17,0.1891891891891892,0.9073
58
+ 56,F056,Fixed_Rd2_compare_LM_24,LM,6D0T,MASLAEKLVGEYTLSGQTPEGKPVSGTLTIKAAGDGKYEISGSAKDSEGKEVPVTGTAELKSDTEAVVTLTTKDGKTVTATVKVVDENKIEITGKDDAGNEVKLTGERKKS,0.1467424148581473,36.685603714536825,True,True,False,2.2758829593658447,85.9973229866832,0.01,0.3063063063063063,0.64224
59
+ 57,F057,Fixed_Rd2_compare_LM_24,LM,6D0T,MASLLDSVAGKYTFKVTTPEGVEITGELTITKKDDTTADVTGTAKTPDGKEVPVKGTVKLESETKATVELTLEDGSKITATIEKVDENTLKVSGKDAEGNEISGEAKRVSS,0.3781642452545014,94.54106131362535,True,True,False,2.1835381984710693,87.53634282677913,0.34,0.2882882882882883,0.73003
60
+ 58,F058,Fixed_Rd2_compare_LM_24,LM,6D0T,MASVLDKVAGEYTVKGKDPQGNEISGTVTIKKESDSKATVSAKLKTPEGKEIEAEGTAEDAGSGKYKVTLTTKDGQKITGEVEVTSENKAVFKGTTPDGKPVELTLEKKSS,0.2722799409457035,68.06998523642588,True,False,False,2.5545766353607178,86.77399146550304,0.043,0.25225225225225223,0.83274
61
+ 59,F059,Fixed_Rd2_compare_LM_24,LM,6MRS,MSEAVNKALEEIEKRVKELGGSISKSVSGDTVTLTITGLSPSDAEKLKPIVEEVGKKYGVPVTVKVEGNSVTATFRV,0.4146882077613797,103.67205194034493,True,True,True,1.2394684553146362,90.22297520345086,0.5,0.36363636363636365,0.56873
62
+ 60,F060,Fixed_Rd2_compare_LM_24,LM,6MRS,MDPRVQKVLDAVRAEVSKLGGSLSESVSGDTVTLTITGLSPSDVEKVKEAAKKAGEEAGVPVEVTVEGSTVKVTFRV,0.42795601432893304,106.98900358223327,True,True,True,1.0627379417419434,88.78233635603895,0.0086,0.33766233766233766,0.94273
63
+ 61,F061,Fixed_Rd2_compare_LM_24,LM,6MRS,MDPRVKAVLDAVRAEVEKLGGSLSESVSGDKVTLTITGLTEENAKKLKEILEAKGKELGVPVEVKVEGTTVTATFTV,0.06768315402819766,16.920788507049416,True,True,False,1.1077884435653689,88.68789417835325,1.4,,0.65477
64
+ 62,F062,Fixed_Rd2_compare_LM_24,LM,6MRS,MSEAVNKALEEIEKRVRELGGSLSRSVSGDKVTLTVTGLPPSAAEKLKDVVKEVGEKYGVPVEVSISGTTITATFRV,0.32934146863803615,82.33536715950903,True,True,True,1.1360328197479248,89.26651574507316,0.36,0.2597402597402597,0.78406
65
+ 63,F063,Fixed_Rd2_compare_LM_24,LM,6MRS,MSEAVNKALEEIEKRVKELGGSLSRSVSGDTVTLTITGLTPEVAEKLKPIVEEVGKKYGVPVTVKVEGNSITATFRV,0.34711303125744997,86.77825781436249,True,True,True,1.2481086254119873,89.66695531546407,0.38,0.33766233766233766,0.5774
66
+ 64,F064,Fixed_Rd2_compare_LM_24,LM,6NUK,MPTYTITVTGKPPSREAAEKLKAELEKRLEEIKKETGGSASLSISVSGDTVTATLTVSDPKPEVVNKVKEIVERVAGEYGLKVEVKG,0.38448925298207326,96.12231324551831,True,True,True,1.672995924949646,85.72934394680213,0.95,0.2413793103448276,0.38076
67
+ 65,F065,Fixed_Rd2_compare_LM_24,LM,6NUK,MPTYTITGTIKVPSREAAEKAVSEISSKLEELKKEAGGEVSVSASLSGDTLTVTATVKDAPPEVVNKVKEILKPIVEKYGGSFTVSG,0.27670878440403274,69.17719610100818,True,True,True,1.4940338134765625,86.68075073787664,1.1,,0.45283
68
+ 66,F066,Fixed_Rd2_compare_LM_24,LM,6NUK,MPTVTLKGTVKVPSREAAEKLVSELKSKAEEIAKETGGRVSVSASLSGDTLTITATVTDAPPEVVEKIKNAVKPIVEKYGGSLEVSG,0.3782618229632644,94.56545574081609,True,True,True,1.965891003608704,87.01459559497974,1.5,,0.69193
69
+ 67,F067,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6NUK,SNEVTITLRFVTKEPAALDKRISGLIFGLRNLAAVTGPPIRVRVIKDGGRYEITVTVSDAPEYVVETILSWLRPLVEDEGGELTVNR,0.025522988182149688,6.380747045537422,False,False,False,0.6856326460838318,93.01342464445024,3.4,,0.72334
70
+ 68,F068,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6NUK,SPTTTISVSFRVSAPDAVLRRLAWLKAELARIAAEGEYTIRLIIVYDGGRVRLTVTVSDPPGEVVEEIIGLLLPLVETSGGSLEIRP,0.014717887286131444,3.679471821532861,False,False,False,0.617400586605072,93.0615892190848,0.51,0.28735632183908044,0.59931
71
+ 69,F069,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6NUK,SPKVTISGSFRSTEGEALDLQLERLKENLKEIEKGTGVRITTKIVKDGGRYGITITAVNSEPPVVAEILAMLRPLKETQGGSLRVSA,0.05544771673805695,13.861929184514237,True,False,False,0.7212327718734741,89.46671457519403,1.0,,0.717
72
+ 70,F070,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6NUK,SPKTTIRISWKTSDLAATIGRLKNILKVLAELEASTDVKITGYVTINGGNVRFRVTVENPPESVVEYIIEILRPIVDSDGGSLEIEK,0.029373659480558863,7.343414870139716,False,False,False,0.6144019365310669,93.7152693065673,2.6,,0.72923
73
+ 71,F071,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6NUK,SRSFIIGVHVRTSELEGMKRWIQNLQANLQYLEAHSGHKIHMHVTMEDNDLSIIIIIHDWDAELVHRVIDMLVPLVQHHGGLLVIIP,0.0028960967350633005,0.7240241837658251,False,False,False,0.468681275844574,96.12428272083872,3.8,,0.58877
74
+ 72,F072,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6NUK,ENVVAIYIKYKTTHPMETLMRLQWLKGHLAWLAAHSDAPIYMYVHIKGNEVEILVIVRNWTPWLVMEIIWHLLPWVEEEGGELYIFL,0.0028035211157925325,0.7008802789481331,False,False,False,0.5145629644393921,95.31983353633112,3.0,,0.51107
75
+ 73,F073,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6NUK,SPKFIIVMSFKTDRPEETKLRLAWLKGWLKWLEAKTPAKINMYVKINDGNVFIMVTLINPQPEMIERVIWMLLPWKEEYGGSLYIFP,0.0015853388134483997,0.3963347033620999,False,False,False,0.4841421246528625,95.45712654746409,3.2,,0.50826
76
+ 74,F074,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6NUK,VPVVKISVAFWAEEPDAIRAWLRQFYNNLRALEANTDSTIHMYVVERRGWYAIWVEVYGYDEKLKEQIISMLLPIVERYGGSMQIED,0.006123649016661879,1.5309122541654696,False,False,False,0.4769626557826996,97.1155665975422,1.6,,0.50591
77
+ 75,F075,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6NUK,SKQVQISLAIRTTEPAPMARRIANFRADLERLKANSPMEAHLTVITNGGNIAMTVVLVDWDEEIVQRVIGMLLPWVNHYGGYMEYRP,0.012608951268734995,3.1522378171837486,False,False,False,0.4407394826412201,95.49964385694892,0.041,0.21839080459770116,0.52575
78
+ 76,F076,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,5L33,SEKLEVAYKFVRALEEGSPEELREVVPPKTTLVVGGKRYTGDGIGEYVENLARSGVEIKAESVREDGGPYVFDLRVSAGGNEFRVTLQITVKDGKLDTVVITGR,0.03433580815522718,8.583952038806796,False,False,False,0.6159579753875732,92.56226007687252,0.66,0.22115384615384615,0.50001
79
+ 77,F077,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,5L33,GKPLEIAEAFVKVLQAGDAEELKNVVSAPARMTVGGRKYEGKEIVSFVERLAENKVTVQKLSARREGGKYVVGLRVTKDGSTGLVLVTISVKNGELSEVIIETS,0.0195163450991353,4.879086274783825,False,False,False,0.6291195750236511,89.29584350313368,1.3,,0.82768
80
+ 78,F078,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,5L33,SPPEPKARAFVRALETGSPEEMKSILSPSTTLVVGGETYTGDQGVGLVERLKEARIKVKLLSWTKEGGAPIFRVRVSAGGSEIDYTISVEVTDGKVVNVVITGP,0.045617220559802565,11.404305139950642,False,False,False,1.501671552658081,93.55763168023591,0.13,0.18269230769230768,0.75454
81
+ 79,F079,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,5L33,SPEGEVAGRFVEALERGDPELLENVVSEGTTLVDGGRQYTGSSIVEYVKEIRESGTKVTRLSSYREGGAYVVPLKWTKDGAEFRVKATITVTDGKLTNVVIERP,0.01781002567547135,4.452506418867837,False,False,False,0.7932162880897522,94.82330797515212,0.034,0.28846153846153844,0.79219
82
+ 80,F080,Fixed_Rd2_compare_AlphaFold_20,AlphaFold,6MRS,SSPAKHKVIEAIAQAVQGMNVRLQIYEAPGYSIIYIPGLTFEQQLRLLAVVAQASHAFGVPTSVHLWGNTVMITVLD,0.01253226726272454,3.133066815681135,False,False,False,0.5121968984603882,95.97648053702224,1.4,,0.46478
83
+ 81,F081,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,5L33,SPKEAVVEDFVKALETGDASSLAGVVSEPVTGTVDGRTFKGKEWVRFAEELERRKITVQKLSWYKDGGSYVVPLRVTAEGKTIEATLRVNVIGGKLKEVTISGK,0.018462287127385252,4.615571781846313,False,False,False,0.6195029616355896,91.81086284819986,0.5,0.2403846153846154,0.81175
84
+ 82,F082,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6D0T,VPDLKKVLPGKYSYTLEAAGPPVITGDATFKPVDDGVVRVTSEGTKSGGEPISGEYTITRADGGALEYRETLSDGYEFRGTPTFVSEDLIEITAENSEGLTVTGSLTRLPD,0.0400671570350624,10.0167892587656,False,False,False,1.0885957479476929,89.13234307107493,0.0022,0.25225225225225223,0.88272
85
+ 83,F083,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6D0T,SLDLTKELQGRVSFTLTAPGPPTITGVANIRPVDGEKVLIEHKAVNSAGEPISGIGYIEKDGGSKPKVSLVFSDGQVLTGYYTFVSEDEILIKGRYSDGDIVEGTWTRLPD,0.07543364116939073,18.858410292347685,True,False,False,1.1696112155914309,89.83817957215413,5.7,,0.49535
86
+ 84,F084,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6D0T,SLDLASDLKGEYSFYLENAAGRSITGYITVRPVDPSVVEIRTKAVNSDGVPVYGTGYVTRDGGSKPKVTLVLGPPLIIEGSLRKESEGEFRVKATLSAGEEVTGRFTKIPD,0.030757727520846254,7.689431880211563,False,False,False,0.856549084186554,91.328890772023,2.6,,0.9077
87
+ 85,F085,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6D0T,RPPLEEAYVGWYRVTLTSREGLTITGLVTVTPVSPEVLNIEVTAVNSAGTPLKGIGYISEGPPGPPVFSLVLDGGYEFRGDITVVGEDEIRVSATSSDGLDVTGTFTKLPE,0.029582706827141456,7.395676706785364,False,False,False,0.8497048616409302,92.4071064287583,0.29,0.25225225225225223,0.376
88
+ 86,F086,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6MRS,LDPAVFRVIEAIIRAVEGIGSPVYIFLSPDSVLIEITGLTEPEIARLTKVVAESAERYGVPTSLRIDGGTVSILVQA,0.04638047838827145,11.595119597067864,False,False,False,0.4881626069545746,95.27932442103456,15.0,,0.51141
89
+ 87,F087,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6MRS,SPPKVNALIEAILEATRDSGFRVTIRESDGGSTIRITGLTPPDIARLLRVVAEASAELGVPSTVLVAGRTLIVTVSW,0.038991302018317235,9.747825504579309,False,False,False,0.9341968297958374,93.33669438860584,2.4,,0.70646
90
+ 88,F088,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6MRS,FSEKTLKVIAEIVEAVKGLGSPLYLFVTPDKVTGYIAGLTPPEIERILEVVARASAEYGIETTTTVDGGSLRVTITD,0.08912437224937385,22.281093062343462,True,False,False,0.5166324973106384,94.78244900295392,0.34,0.3116883116883117,0.57541
91
+ 89,F089,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6MRS,RDEGTYELINAILKAVEGSPARPRIYEGGGSAVIVITGLTPPEIERLDRVVKEAGRKTGVPFSLRVKDGTLTVTVSW,0.0237274715701571,5.931867892539275,False,False,False,0.7228794693946838,92.31426257702373,2.2,,0.55537
92
+ 90,F090,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6MRS,SNAAAEYLLNVIREAVKGLPSPITERRDGGSTLVEIENLTPEDIARLKAVVKTAGEETGVPYRVFVGGPTVTILISW,0.018787930568922893,4.696982642230723,False,False,False,0.9679087996482848,94.93896683420776,5.1,,0.94399
93
+ 91,F091,Fixed_Rd2_compare_AF_ngram_20,AlphaFold+ngram,6D0T,SLNLKEDVVGKYRFLLVSEEGASIEGIATVKAVNPEVVEIEYTGRTSAGKPISGQGYISRDPPGQLKLTLLFDIGLVLEGTITKVSENEFRVNATSDGGSKITGYFVKVPD,0.19157571455457184,47.89392863864296,True,False,False,0.8795504570007324,94.01044187538032,5.9,,0.60468
94
+ 92,F092,Fixed_Rd2_Motif_11,LM,6D0T,MASLADVLAGTYTVTGKSPAGQEYKGEVVIEKVSDTKLKVKRTITTPDGKPVTDEGEATVSAENVVTFTAKNKDGVEISGKYTLEGKDKIKAELTAADGSKASEEWTKKTS,0.4294321330847011,107.35803327117527,True,True,False,2.5218183994293213,87.65193392239404,0.18,0.27927927927927926,0.83247
95
+ 93,F093,Fixed_Rd2_compare_LM_24,LM,6NUK,MPTVTLSAEIPVKDRETAEKIAKELEAKASEISSKTGGSVRVSTSVSGDTVKVTATITDAPPEVVKAVEEVLKPIVEKYGGKLTVSR,0.342255516940417,85.56387923510425,True,True,True,1.4239349365234375,86.81879193111219,0.33,0.27586206896551724,0.5938
96
+ 94,F094,Fixed_Rd2_Motif_11,LM,1QYS,MVKVTYTITKDGKTFKGEREVSDPSEIKPVVEKLIEDAKNAGATSVSVEVTAESKEKAEEVKKAVEEALKSAGLTNVTVTLEGTTLKVSGSL,0.4990069812474674,124.75174531186686,True,True,True,2.132812976837158,89.96011297143937,0.077,0.2608695652173913,0.49928
97
+ 95,F095,Fixed_Rd1_48,LM,6W3W,ADDKAAITDVVNKLIKAVNEKNAEALKELTAPGVEIVIEGQTVSKPEDLVKGLSEAKIDSATVGEVKVEGDKASVPATLKAGEETTPGTFELEKKDGKWLVTKVTLQ,0.4305501431758556,107.6375357939639,True,True,False,1.870003581047058,86.81428747758584,1e-05,0.308411214953271,0.85199
98
+ 96,F096,Fixed_Rd1_48,LM,6W3W,AGDEAAVRAVVKSLVDAENAKDTTKLKALLSSSATVEEDGKTVSGRDAVLAEIAKEKVTGYTLGEVTVKGSEASVPVTITADGKPEPATFTLKKEGGKWVISKIVEK,0.34157332772079496,85.39333193019874,True,False,False,1.675412893295288,89.52935934106502,8e-05,0.3644859813084112,0.78333
99
+ 97,F097,Fixed_Rd1_48,LM,6W3W,SPEEAAVKDVVNKFVELIKAGKYDEAKNLLSSSATIVVDGKTVTGRDAVLEKLKSEPPTSVEITKVSVSGDTATAEGTVTKDGEKKPVKVTLVKEGGSWKISKIEVQ,0.19536385993824054,48.84096498456014,True,True,False,1.7062160968780518,95.06005609985051,9.2e-05,0.34579439252336447,0.89644
100
+ 98,F098,Fixed_Rd1_48,LM,6W3W,MSAENKIKEVLEKLKSAAGSPSESDLSSVVASNVTLTIDGKTVSGKDELVKALKEAKVTDVKVDSVEEKNGEYTATGTVTKDGQSKPVKFTVKEEGGKYVITSIEVK,0.23774272150668382,59.43568037667096,True,True,True,2.2278475761413574,86.84431080836934,0.06,0.2803738317757009,0.8568
101
+ 99,F099,Fixed_Rd1_48,LM,6W3W,MSAEDKVKEVLTSLVNAAKEKKSSDVEKLLAENVTLEIEGKTVTGKDAVVKALSEAGVTDLKVDSVTEKDGEYTVSGTATKDGKPTPVSATVKDDGGSFKITKLTIK,0.23592128304088208,58.98032076022052,True,True,False,1.926544189453125,90.262273711329,0.15,0.19626168224299065,0.83195
102
+ 100,F100,Fixed_Rd1_48,LM,6W3W,MSAEAKVREVLDKVVAAVNKKDEAGLKALLAPGAKIVEDGQTVTGVDAVVKELKDSGITKLEVGEVKAEGGKYTVPATLTDGGSTSKVTFTVEEKDGKPVITEIKSE,0.4043727545699978,101.09318864249946,True,True,True,1.897280216217041,87.15427816645891,0.00077,0.3177570093457944,0.75264
103
+ 101,F101,Fixed_Rd1_48,LM,6W3W,AGDEAAVRAVVQSVIDAENAKDSAKLKPLLSSTVTLEEEGKKVTGLDAVLAEVAKEPVTKAEITDVKVSGDKASATVKETEDGKTETATFELVKEGGSWKISKIVEK,0.37507375671603954,93.76843917900989,True,False,False,2.0780415534973145,88.30627886885424,2.9e-06,0.3925233644859813,0.74489
104
+ 102,F102,Fixed_Rd1_48,LM,6W3W,MSDEAAVRDVVNKYVAALEKKDSATLKTLTASNVTIVEEGKKVTGLDAFVKEAEKEKPSKITVGEVSVSGDKATVPVTEVEDGKTTKSTFKLVKDGGKWLISEITEQ,0.27505544121764547,68.76386030441137,True,False,False,1.9738805294036863,87.71122586251461,1.3e-06,0.38317757009345793,0.80058
105
+ 103,F103,Fixed_Rd1_48,LM,6W3W,AGDEAAVKEVVNKLIEASKAKNAEGLKPLVAENVKIVSGGQTVTGRDALLKSLSDSGVTEYKVGEVKVEGDKATVPVTATKDGKTSTTTFTLEKKDGKWVITEIKSE,0.32059223185798696,80.14805796449674,True,True,False,1.9781895875930784,87.12275126881077,1.7e-06,0.3364485981308411,0.87358
106
+ 104,F104,Fixed_Rd1_48,LM,6WVS,MEYIVEVDTPERVSEIVKTLKESGASNIALVSSKPDLVIEAAKAGIEKVILTPGSLEDARETVKKLKEVGVKDIGLITSEPSLVLEGLRAGVGEYVVELDSAENAAEVVKRLKDGGAKNVAFVTTKPELAVEAVKAGVEKVVLSPATLEEAKETVRKLREAGAKDVAIISTEPPLILEALKS,0.3807309294882399,95.18273237205997,True,False,False,1.6833454370498655,83.07913801333038,0.036,0.3076923076923077,0.58145
107
+ 105,F105,Fixed_Rd1_48,LM,6WVS,MIISVRAENKDELTSTVKELKDKGIENILVVTKDLDSAVAASKGGSEYVVVEVSEPGKAGETVERLRKEGVKRVAVISSDPKVIEKALEEGTPIVSVKAKNKEELSSTIKKLKEKGVENVLAVTEDLESAITASEGGAEYIVVKVSKPEEAGKTVEKLREKDVKRIAVVSSDPEVIKKVLEK,0.06826551071176487,17.06637767794122,True,False,False,1.4189119338989258,85.69943641442232,0.044,0.18681318681318682,0.42681
108
+ 106,F106,Fixed_Rd1_48,LM,6WVS,MITVIEGKDPATIKDSVTKLRAENVSEIAFTSTKPGLIVEAAKAGVSLAVLDVKDGTAVNESVKKLKEEGVEKVAVVSDKPEYIVDAARAGASLTVVEGRDSATVKESVTRLKAENVGEISFVSSKPELIIEAAEAGVPLAILEVKDETTVRESIKTLKEKGVKRVALLSDRPDLVLEALKS,0.04873738323755056,12.18434580938764,False,False,False,1.4892292022705078,86.73085885026522,0.0056,0.2087912087912088,0.41517
109
+ 107,F107,Fixed_Rd1_48,LM,6WVS,MLPLIRVNSLDRAVEIVKEFRDKGVEYIGVVSSRPDVVEKALEAGTTLTIVEAENLEDAIKTVKELREKGAKYTGLVTSDPKVAEEGLKAGVTLVLIEADDLSTATETVERLRKEGAEYVGVISSKPEVVKKSLESGATLALVEAKDLDSAVKTVRELKDGGSKYVGIITSEPEILEKVLKL,0.08324956966583831,20.812392416459577,True,False,False,1.1505229473114014,89.9793096191984,0.099,0.2802197802197802,0.73144
110
+ 108,F108,Fixed_Rd1_48,LM,6WVS,MLPLIVSKDPSSVTETLRELKNAGVEKFGVVTSEPRVLIEAVRAGLDLAIVVAEDENSLTKTLEELRKEGVGKYGVLTDRPEVLVKAVKSGVDVAFVTARDGGSVSETVKKLKDAGASKIGVISDKPEILVEAAKAGIDLAVVIAKDGESLSATLKRLKEEGVERYGIITNEPKVLLEALKG,0.11101001510221765,27.752503775554413,True,False,False,1.3169331550598145,88.29019890735734,0.0047,0.25824175824175827,0.76291
111
+ 109,F109,Fixed_Rd1_48,LM,6WVS,MIPTLTSKDEGKILETVKRLKELGVPRVSVVTKNLDVAVRAGEVGAEIATVVADSEDELIENAKKLKDAGIERISFVTDKPETAVKAAEAGSEIVTITSSDPSKLVENVKALKEKGVSRVSAVTKDLDTAIKAGEAGADIATIVAESEEELLENVRKLREAGVERVSIVSDRPEVIEKVLSL,0.062017321415891655,15.504330353972914,True,False,False,1.0949746370315552,90.00291529801315,0.11,0.23626373626373626,0.75715
112
+ 110,F110,Fixed_Rd1_48,LM,6WVS,MKPVIISSSLEEAVKSVRVLKEKGVKDIVGISDSPEVASRLAEEGTEYVLVSAKDEREAGETIEKLKKAGVENVTGLTDKPETAVELSKRDVEKVVITSSTLEDAVNSIKILKENKVKNIVAISGSPEIASELAKEGAEYVVVSAENEKEARETVKELRKAGVENITGLTDDPKTALKLLEG,0.0769709084937476,19.2427271234369,True,False,False,1.5414249897003174,80.88010187607468,0.045,0.25274725274725274,0.43877
113
+ 111,F111,Fixed_Rd1_48,LM,6WVS,MKVLIEVSEPSKAVETIRKLKEAGVENIAVVTSKPDLAISSASEGAEYVVLEVKDGETATKTIKALRDSGLKRVGVLTDKPEVAKESAKAGAEYVILKVSDEDTAVKTVRELKDAGLSRVAVITNKPELAKKSAEGGAEFVVLDVKDEETAVNTVKELRAAGLERIGIVTDRPEIVEKLLKG,0.1740522297376026,43.51305743440065,True,True,False,1.2983237504959106,88.48472686298933,0.043,0.23076923076923078,0.85539
114
+ 112,F112,Fixed_Rd1_48,LM,6WVS,MRVLLTVEDEETGKRILEKLKERGVDKVGLITSSPDVALKASDAGTDLVIVTAKDGGSAAETIRKLKEKGIKEVSVVSSEPKVVVEASKAGANLAIVTVKDEDSGKKTLEELKKEGVNKIGLVTSTPEVAVKASEAGADLAVVTAENEESATKTVRELREKGVKEISIVSSKPEIIEKVLSL,0.18326693405062214,45.81673351265553,True,False,False,1.3447251319885254,86.39240099374861,0.015,0.2692307692307692,0.86934
115
+ 113,F113,Fixed_Rd1_48,LM,6WVS,MRLLIEASNEKEALDIVEKLKKEGIERISAVTDKPEVARKLADGGVGEVVVRAEDEGTAVNVIKELRDAGLTRVAAVTTKPDVAKRLAEAGASRVLVEAPDEETATKTVKDLKDSGLQRVSAITSKPEIAKNLAKAGVSEVIVKAENKEEAVKVVKELKSTGLEKISSVTSDPSVALEILKG,0.30177932691580905,75.44483172895227,True,False,False,1.3554872274398804,84.05546735970879,0.023,0.25824175824175827,0.71213
116
+ 114,F114,Fixed_Rd1_48,LM,6W3W,PAGEAAVKDVVTKLVDAVNKKDSAALEPLLADSVKIVEDGKTTTGKAEVLKELKDGGAKDLKVSKVEKSGSKYTVTGTATIEGETSPITFVVEEKGGKPVISEITEK,0.2547350336464487,63.68375841161218,True,True,True,1.8296480178833008,88.3476609536108,0.0055,0.35514018691588783,0.8636
117
+ 115,F115,Fixed_Rd1_48,LM,6W3W,MSDADAVKAVVEKVNAAAEKKDEAGLKELLAENVKITVAGKTIEGKDKVLEALKSAPPSKREVGEVSVKDGTATVPVTVTAGGSTTKLTYTLTKSGDKWLISEIKAQ,0.4039984347925847,100.99960869814618,True,True,False,2.014538526535034,88.72275449950267,0.0077,0.32710280373831774,0.81728
118
+ 116,F116,Fixed_Rd1_48,LM,6WVS,MRVLVSAKDENSAVETVRQLKNAGIEKVGAVTSKPSVALRLASEGLDYVIVEARDVNEAAEVVKKLKESGVSKVGSISSDPSTAVSLAKAGLEYVVVDAPDLETATKTVKELKDAGVEKIGAITSRPEVAVKLAKEGLSYVLVEVKDVEEGKKTIKELREAGVERIGTVTDKPEIALEILKG,0.20136769663932136,50.34192415983034,True,False,False,1.80736780166626,85.90858703824641,0.018,0.21428571428571427,0.89501
119
+ 117,F117,Fixed_Rd1_48,LM,6CZJ,MTVAEKLAGKYTGTAKDDKGNEVTITLEIKKESDTEYTVSSTSKTKDGKEVKASGKAVLKDATTADVTLTGEDGKPVVGTYKIEGENKVSVTFKSPEGVELKGDLTRVK,0.40187536250134254,100.46884062533563,True,True,True,1.0732301473617554,90.77154708387503,0.33,0.22018348623853212,0.87436
120
+ 118,F118,Fixed_Rd1_48,LM,6CZJ,MSVLDKVAGTYVVEGKTPDGKPISGELKIEKKGENAVKVSGKLTSPEGKEEPLEGEATVKSETEVSATLKTKDGQEIKVTIKFKDADTAEYTVTLSDGSTITGTAKRKK,0.3269384803644804,81.7346200911201,True,True,False,1.342326283454895,86.96862546869347,1.7,,0.8631
121
+ 119,F119,Fixed_Rd1_48,LM,1QYS,MVKVTVTGTKDGKPVTKTFEVSSLDELEKKVKEEVEKLKSEGVTSVTLTVEAPDASTASKAKEIAENALRKAGYTGLSISVSGNKITITATR,0.23823675466455083,59.55918866613771,True,True,False,1.480959415435791,92.34708158697816,0.73,0.21739130434782608,0.8881
122
+ 120,F120,Fixed_Rd1_48,LM,1QYS,MVKVTITFTKDGKPVTKTEEVSDPSKLEDVVKKAVEEAKSAGATSVTVEITADTPEKASEAENVARKVLESLGYTGLTVKREGNKITVTATL,0.29713331758258826,74.28332939564707,True,True,False,1.650942087173462,92.96180670085404,0.82,0.30434782608695654,0.86817
123
+ 121,F121,Fixed_Rd1_48,LM,1QYS,MPKVTITGTKDGKPVTKEIEVSSRAELESKIKEEVEKLKSEGVTSVTVEVTAPDEASKKEAENIARDVLTKAGAKNVQVSVEGSTVKVSATF,0.283977524363175,70.99438109079375,True,True,True,1.661885142326355,90.57610364778702,0.79,0.2717391304347826,0.51044
124
+ 122,F122,Fixed_Rd1_48,LM,1QYS,MPKITITGTKDGKPVTKEVEVSDPSKLEEAVRAELEKLKSEGVTSATVTVKAPDESTASKVKEIVEKVLKELGAKDVSVSGSGGEYTIKATF,0.4962038371617647,124.05095929044117,True,True,True,1.7360239028930664,89.62163197601475,0.085,0.2391304347826087,0.59121
125
+ 123,F123,Fixed_Rd1_48,LM,1QYS,MVTVKITGTKDGKPVEKTLEVSKPSEIPGAISKLTEELKSAGVTSVTIEVTASSKEDAENAARVAEAVLKGLGYTDVSVKVEGNKATITAKK,0.2742051074536023,68.55127686340059,True,True,True,1.7395225763320925,89.79718220084987,1.5,,0.46493
126
+ 124,F124,Fixed_Rd1_48,LM,1QYS,MVEITVTGTKDGKPVTKTFTVEKPEDVPKVIEKVLEELKKEGVSEVKVTVKASSKDEAENVARVVEATLKAAGAKEVSVSGSGGEYTITAKL,0.35067152355882203,87.6678808897055,True,True,False,1.992031574249268,91.4011528958854,0.72,0.2608695652173913,0.79074
127
+ 125,F125,Fixed_Rd1_48,LM,1QYS,MVEIKITGTKDGKPVTETLTVSSPSDIDSAVNKVLEKLKSEGVTSATVTVKASSKEEAENVAKEVEKRLKDAGFKDVKVSGSGGEYTITATR,0.454025108550495,113.50627713762375,True,True,True,1.5798276662826538,89.53139849225488,3.0,,0.54812
128
+ 126,F126,Fixed_Rd1_48,LM,1QYS,MPKITITGTKDGKPVTETVEVSSVDEAVKKLEEKIKELKDAGVTSVTLTIEAPDESTAKDLASKAENALKSAGFKDVKVSVEGNKVTVTATL,0.3255327815620091,81.38319539050228,True,True,True,1.53373122215271,89.86168090861035,0.11,0.2608695652173913,0.85828
129
+ 127,F127,Fixed_Rd1_48,LM,1QYS,MVKLTITGTKDGKPVTKTVEVSSPEDAVNKVKEILEELKKEGVTSATVVIEAPDEKTAENAKRVAEALLKAAGAKDVKVSVEGSKITVTATL,0.47971685757209886,119.92921439302472,True,True,True,1.7418758869171145,88.89922296487072,1.5,,0.83836
130
+ 128,F128,Fixed_Rd2_Motif_11,LM,6CZJ,MTVLDKLAGEYEVSGKDAAGNEYKGTVKIEKEGENKAKVTRVITGADGKPVTSSGTATLESDTKLSVELTTEDGQKVSAVETIKSDDEREIVVTLPDGSKLTETWKRKK,0.42573097655642544,106.43274413910636,True,True,False,1.3811442852020264,89.96638561423804,0.061,0.22935779816513763,0.85718
131
+ 129,F129,Fixed_Rd1_48,LM,6CZJ,MTVLEKLAGKYTITGKTPEGEEISGTVEYKKEGDDKVSVTRVIKTKDGKEVKQTGTATLKSDTELSIELTAEDGSKVTGVETLVSENERKVVLTTADGQKIEAVEKRAS,0.1969993130688227,49.24982826720568,True,True,True,1.1307755708694458,92.23752939601708,0.16,0.21100917431192662,0.87003
132
+ 130,F130,Fixed_Rd1_48,LM,6CZJ,MSLAEKLAGKYTVSGKTPEGQEISGEYEFTKAGENEYKVVAKITGPDGKPVELSGTATLKSDTEAVVTAKDPSGREVTVTLTVKDADTIEGVGKAPDGSEIKVTGKRVK,0.400563139199727,100.14078479993175,True,True,True,1.1647963523864746,88.77604506515777,0.019,0.30275229357798167,0.89158
133
+ 131,F131,Fixed_Rd1_48,LM,6CZJ,MTVLDKLAGKYTIEGKTPEGEPISGTTEVTKKSDSEVALKSVIKTKDGKEITLEGVGKPVSDTSVKVELKAADGSTATAEYTFKGDDAVDVKVTLSDGTVITGTEKRAK,0.305597507227619,76.39937680690475,True,True,True,1.219199776649475,87.58026920980092,0.91,0.23853211009174313,0.80478
134
+ 132,F132,Fixed_Rd1_48,LM,6CZJ,MSVLDKLAGTYEGTAKSPEGKELKVTVTITKDGENKAKVVIEAPGPDGKPIKAEGEATLESDTSASFKVKTEDGQEVTGTVKLVSENEIDVEYTLSDGSKISGKLTRKK,0.4585908282289566,114.64770705723915,True,True,False,1.7507332563400269,88.66633659573229,0.047,0.27522935779816515,0.74559
135
+ 133,F133,Fixed_Rd1_48,LM,6CZJ,MSLADKIAGEYTVTGQTPDGKPISGKLTITKEGENKYSVKGTLKDPEGKEEPVEGTATLESETSAKVSLKTKDGKELSGTVEVVSDTEIKVTLTDAEGNKIEVTAKKAS,0.386734824659598,96.6837061648995,True,True,False,1.0890276432037354,87.8132647979346,0.19,0.26605504587155965,0.94502
136
+ 134,F134,Fixed_Rd1_48,LM,6CZJ,MSVLDKLAGKYEISGKDAAGNPVTGTSEVTKVSDTKASIKSTVTTADGKTIELSGEATEVKPGVVSAELTTPEGKKAKVEITVKDENTRDVVITLEDGSKITAVEKRVK,0.29136398284163545,72.84099571040886,True,True,True,1.4823777675628662,87.96171146295072,1.3,,0.88796
137
+ 135,F135,Fixed_Rd1_48,LM,6CZJ,MSVLDKIAGTYEGEAKDKEGKPVKAKLVITKDGGSKVNVELTVTTPDGKEKKLSGTGEPVSETSVKVTLKDEEGNEVTATIEFKDADTAVVSGKTPEGVEIKGTVKRVK,0.356295626261776,89.073906565444,True,True,True,1.7677292823791504,86.80593495491695,1.8,,0.83906
138
+ 136,F136,Fixed_Rd1_48,LM,6CZJ,MSPLDAFVGEYTGTLKTKDGKEVPVTVKIEKAGENEVKVSVSGKTPEGKEIKASGTAKLESETSAKVTLTLEDGSTVEATITKPSDDKLTVTGKNAEGQEISGELTRKK,0.43271550606435516,108.17887651608879,True,True,False,1.358462929725647,89.08745904116874,0.3,0.21100917431192662,0.68446
139
+ 137,F137,Fixed_Rd1_48,LM,6CZJ,MSVLDKLAGEYDVELKSADGKPIKGSLKIEKTSETEGKVTGTITTPDGKEEPVEGTVKASSDTEATVTAKTKDGQEVTLTVKVVDENKLEVSGKDAEGNEISGTATRKK,0.4135837874338196,103.3959468584549,True,True,True,1.2818390130996704,89.9499049610178,0.49,0.29357798165137616,0.69754
140
+ 138,F138,Fixed_Rd1_48,LM,1QYS,MVKVTVTYKVGDKEISETKEVSKPEDVPKIVEELVKKLKEKGVSSVTLTIEAPDKTSAENAARVAKAVLEGLGAKNVEVKVEGNKATITATF,0.1913173988144506,47.82934970361265,True,True,False,1.7961807250976562,91.92466852220964,1.3,,0.83248
141
+ 139,G139,Generation_Rd2_Distant_57,LM,N/A,MKAGAEEIKTSATSLKDSVSSGTVDPIVTEAGKVLDAAKAVKEKVSEADKPKVEPVVTKLETAATDLKTKGEAKDVTGLTTAVNEVITASDELVKLLPAS,0.20507356097996407,51.26839024499102,True,False,False,,90.45868949690686,0.076,0.28,0.39181
142
+ 140,G140,Generation_Rd2_Distant_57,LM,N/A,MAADVPPEVKAGLDSVNKAVEVSGSDATVEQVTGPLKEALEKYKVAAEKVTKPDGKTKLEGVIKDIEGAITAGEAKDLPKVKELAGKAKTSSEEIVKLLS,0.3328677079393693,83.21692698484233,True,True,True,,84.99285539872803,0.22,0.32,0.83491
143
+ 141,G141,Generation_Rd2_Distant_57,LM,N/A,MSPAARAELTETRNDVTKLIKTVKDGGSKSTIAKEASEISGDLDKAITLTAGKPKAVAELRETSADLKKLVATVKAGGSKSVIVKEAGEVSSDIDKVLAL,0.1551972832114287,38.799320802857174,True,False,False,,93.5872682057466,3.8,,0.49823
144
+ 142,G142,Generation_Rd2_Distant_57,LM,N/A,MSEIETVITGLTTARDSVVAGSKDGGKSLVEVGKTLVELAKAEGVSDDVKASIKDAGKPIVEAGKLLKEGEPPEDKVTEAVTKIDEAITALNAALESAQG,0.2756433114334177,68.91082785835442,True,False,False,,86.87348946971616,0.82,0.31,0.48043
145
+ 143,G143,Generation_Rd2_Distant_57,LM,N/A,MARVISKTITVSATGESDPIEVPEDEGKYIVAVNVTSLSGSPSVTVEILKDGDSTPEYTLTASAGETKSEPVKIKAKKLKVKVTAAGGSSGTATVTLVLE,0.027529949935088758,6.88248748377219,False,False,False,,83.71902057521575,0.5,0.23,0.48523
146
+ 144,G144,Generation_Rd2_Distant_57,LM,N/A,MVSEEDIKKAVENKAKEKLQEELSKYGVSATLTVTDVKVTEPPKITKDGKVIVVAEGSGTATIEAGPLKGKTASFRVRAEVDPSTGEVKSVEILEVTVSS,0.38875352995405293,97.18838248851323,True,True,True,,88.74604251379841,9.5,,0.44431
147
+ 145,G145,Generation_Rd2_Distant_57,LM,N/A,MATKDDVTKLVSSVTGLLDKVGSASTVPEIQAVAKELEGTIEPLEKKAKDGGAESEVEAVEKPAEALEDAAKAGSDKSAIDTAVTNLKTSLTTLAGKLSG,0.222212473773112,55.553118443278,True,False,False,,88.46027073589488,0.18,0.29,0.3727
148
+ 146,G146,Generation_Rd2_Distant_57,LM,N/A,MTVEEIKKASDTLVSSGTELKTAADAGNLDKVKELSATIVTSGETLQKGLEGKPEVLEAVNAVVTAGKDLKAAAEAKDVEKIKALTPVIVEAGTKLKSLL,0.41143414845372267,102.85853711343067,True,True,True,,90.46682388380894,0.75,0.19,0.78525
149
+ 147,G147,Generation_Rd2_Distant_57,LM,N/A,MNAALEKAKTATDVPSAVTAVKEAITVAGSKPEDAEPVVKAGVELVKVLKDGGSLDAAENVAKEVTTISGTPGVSDSVKTSASEGLTEITKLIEEKKSGK,0.091279198227127,22.81979955678175,True,False,False,,86.53972629608363,3.3,,0.60999
150
+ 148,G148,Generation_Rd2_Distant_57,LM,N/A,MSSLSDIKSTVASITDVSELEPVVEPLTEIIEGGGSDADKVEAVNVIGEVGKKLGEAGEYDVLESVLPPLEELAEDSSVSAEVKEAATKASETISAVTAE,0.18933746095612405,47.334365239031015,True,False,False,,88.14748754664437,1.5,,0.50912
151
+ 149,G149,Generation_Rd2_Distant_57,LM,N/A,MKALENAADEIKKSDSRITDVTASVSGTTVSARVTLAEGVTEDQAKPVLEEVVPKISEAATKGLKDAGEPSTLTIVAVSSKDGKELVRATSLGGSVKVEK,0.3332914704062595,83.32286760156488,True,False,False,,88.37161919753758,0.79,0.18,0.41947
152
+ 150,G150,Generation_Rd2_Distant_57,LM,N/A,MKITLTVPPGKTVKSDPIKAAGRVSASVKVTAKDSSKPAKVRVLAVPEGGSEPVTVVEKEVKAGETATLEPLDTTGYTEYIVEAENVGDEEATVTIELSG,0.336444292189329,84.11107304733224,True,True,True,,87.98001209003614,1.6,,0.53459
153
+ 151,G151,Generation_Rd2_Distant_57,LM,N/A,MAELDTIKSGLTDLKTKVDGVVADPSSVTPETVTGLSDSAKTLGESLEGSPVQEVKDAGKELSEASKAAGEETEPAKIVEKLTTVSTAVGKVITAAENAA,0.26587976795727936,66.46994198931984,True,False,False,,89.96433851537665,1.6,,0.41494
154
+ 152,G152,Generation_Rd2_Distant_57,LM,N/A,MATVKEVLTEISTKVTAAGEAKDVPTLTTLSGEITGLIEKLKPLVEGKPELTPVVDGLTAVSEASKKVGEDGSAENVAAFTKAVTDLKTSLDAGIKALEG,0.4991924215797286,124.79810539493215,True,False,False,,87.48442474556842,1.5,,0.47016
155
+ 153,G153,Generation_Rd2_Distant_57,LM,N/A,MPKYTVTLTVKLSGKPEPSKISEIENAAKSAAESVAGEGVSVKVTKVEVKDDGTATITLEVTASGSEDEAKKKAEELKNKIKEAVEKAGGSVVDVTVSTS,0.42333046694985677,105.83261673746419,True,True,True,,88.78546222717601,0.14,0.26,0.46378
156
+ 154,G154,Generation_Rd2_Distant_57,LM,N/A,MTEKITADVTKALEEAGVTPGKVEVSGSTVKVTLTVPEGTDEATAKTTAENAVNAAVKGLKDAGESVSSVRVIVVGKDGKELASATSLGGSITIKPAPSE,0.4531835261231916,113.29588153079791,True,False,False,,87.75473846202736,0.1,0.27,0.55879
157
+ 155,G155,Generation_Rd2_Distant_57,LM,N/A,MSDVKITKNEDGTVTATGTAVLTPEDIKAAGGSEEKAKELAEKRAKDSARESLRLLVKAENPDLKDEEIDKLIENIKVVSSKPVEGGVEVTVEASVKVGK,0.37388402065682946,93.47100516420737,True,False,False,,88.89236488239041,0.43,0.23,0.54614
158
+ 156,G156,Generation_Rd2_Distant_57,LM,N/A,MSDISATVTGLSESVTALGTAVSSGDVEGVKTAGEDLKAKLKELETSAEEAGAKDLVKEIKDAGKAVVKVGKDGGSPEEVTPPLTTLQEKLTELSTKLAG,0.33130961826060645,82.82740456515161,True,False,False,,87.8328885327107,0.068,0.31,0.87952
159
+ 157,G157,Generation_Rd2_Distant_57,LM,N/A,MKDVSDKAEAELKKIDGVEDASVSLQVTPPSFSGSITVKEGTDEATAKEIAKNAGKVAARVLEEEKLTEYTLTISVTGEPADGGSSKPVGSATFTKDDLK,0.3887420302984773,97.18550757461932,True,False,False,,85.66335758481124,3.3,,0.48156
160
+ 158,G158,Generation_Rd2_Distant_57,LM,N/A,MSEISTAATEVETAVNKLVSDIEGGSEPSFDSVSADLTKAGENLEKASAEAGSDEKVTSAVTTIKEGITLAKDGVSGKDVAKVKEGAEKIKTGLDGLKAL,0.24084138782798684,60.21034695699671,True,True,True,,88.22556618126865,0.58,0.2,0.46527
161
+ 159,G159,Generation_Rd2_Distant_57,LM,N/A,MPKITVENKSGVDATITLEAGSFKDSKTVAKDGGTAEFEVKEKPSEPLEIKAKADVPGKGSAESDPVKVELKEGETAKVTVTLTVGEDGKLSVSSTTTKE,0.2227111388280504,55.677784707012606,True,True,False,,84.9238082614045,0.67,0.33,0.49835
162
+ 160,G160,Generation_Rd2_Distant_57,LM,N/A,MEFRIKTSKPPEEVLKAVKEALSSDPKYKDVQIVSESPSEIVAKGRAGTATVRVSVKDGEVTISGSAEGGLITKSLVEKKLRELAENAARKVPGAEVVTG,0.24038289936562846,60.09572484140711,True,True,False,,88.59548342136148,1.5,,0.48746
163
+ 161,G161,Generation_Rd2_Distant_57,LM,N/A,MSDEVKSVVADLKAAVTSLKDAGSSAENLKPVGEKLKEIGTKLSGLTVPEDKKAKVTELAGKIKDGGEALVKAGESGKPDDVKTAITTIETAVSELEGLL,0.42792015185193416,106.98003796298354,True,True,True,,89.05788763849755,1.2,,0.7236
164
+ 162,G162,Generation_Rd1_48,LM,N/A,MSSEEITKATEDLTTAKDSGDTDKIVSAVETLVSVTGSPSDVPPEVQLASIEALGYVVENAEGGVADKVKEAGAKERLEELKDAGEPVGEAAGKVLEKLS,0.21005651574537504,52.51412893634376,True,False,False,,85.10657686493096,2.4,,0.43952
165
+ 163,G163,Generation_Rd1_48,LM,N/A,MAEVEISVEKKGENEYVVSVKVSGKPGTPPSEPVTATSLDDAVNKAKEKIKEALEKAGVTELKDSDTITIKVTVKEGEEGGSKTVTKTLTVGELRKLLEG,0.1357011772016441,33.925294300411025,True,True,False,,85.69054945839417,0.77,0.18,0.42333
166
+ 164,G164,Generation_Rd1_48,LM,N/A,MKTTVTLTADKPSEPVAVNAAENKASKITVKVTKAPEGGSATLKVVGKKDGKDVTVLEAKEVKAGESVTSDPIEGLTEYTVSLSGVPAGSTAEAEITVEK,0.364473906674991,91.11847666874776,True,True,False,,86.88541224847904,1.2,,0.52102
167
+ 165,G165,Generation_Rd1_48,LM,N/A,MSELENKIKEALSSIEGVEVKVGEPKVEEKDGKKVVTSVPVTITKDGKTYTLTVSKPEGSDKFRATVTAPDGTVVASAEGDTPEDAVNKAVEKLKEILGG,0.323444357381488,80.86108934537201,True,True,True,,86.51952648831619,0.52,0.23,0.54128
168
+ 166,G166,Generation_Rd1_48,LM,N/A,MATAKDVKAVVEKVEKGEPVTAEDLKPLIEGTKDSSFTVRVNSITGIGKLVEAGKVTPEVAKEALPVLEELRKDKTSVSGGQTVGGAAGSAISKIKKASK,0.07451008573836172,18.62752143459043,True,False,False,,83.85604869710298,1.2,,0.50281
169
+ 167,G167,Generation_Rd1_48,LM,N/A,MAGKLTVKVTGLSASDVAKVRVTATVTPSGGSPVELKPEEKEIKAGETSVTFEVSDIKEGDKVSVKAEALKADGTVEYTGSKDNVVPGTNEVTITLEKKS,0.2552751535613065,63.81878839032662,True,True,True,,85.82734665883672,0.21,0.22,0.76777
170
+ 168,G168,Generation_Rd1_48,LM,N/A,MSAKEVAEAFVKAVNAKDAAGVEKLSDGGSLTAENVQKVLDLIEKAGEYTVTDVGEPEKRETSSGTITVVPVTLKGSKDGKPLEFRVSVKDDKVTGLYIK,0.22973311193269697,57.43327798317424,True,True,True,,83.80963016732258,0.12,0.35,0.76997
171
+ 169,G169,Generation_Rd2_Distant_57,LM,N/A,MSVQEEITAKTTEISEALSSGDADKVVTGLTDLVTLIEKAGEPPGPVLENAATVLGTIAENKDVVKGKPEVVEKLKELAGKVEGGSDEVKEAVGRVSASL,0.3692888793736263,92.32221984340657,True,False,False,,83.33180243087995,1.7,,0.48083
172
+ 170,G170,Generation_Rd1_48,LM,N/A,MSPEDQKKLEELKPKIEKAAKDSASSSGADVKAEVKVEGKTAVVTLTVTVPDGGSKDDAKSTAENVAGSAVSEIKKEAPEITSVRVQVKSGDTTLVDKTS,0.07272598231771801,18.1814955794295,True,False,False,,86.38503262080307,0.62,0.2,0.54976
173
+ 171,G171,Generation_Rd1_48,LM,N/A,GKLEFTVKFSEPVDPSTIKAENIVVKVGDKEITLKPEDVTKVSDDGKEYKVTVTLTEEQLKAIKEAGGKVSVSIPEGAVKDAAGNENKASEIKDNTVEVK,0.353917321190868,88.479330297717,True,False,False,,88.99491429469761,0.11,0.3,0.64077
174
+ 172,G172,Generation_Rd1_48,LM,N/A,MAEYTATLTTSLPPSKVLEVTKSTLESEGLTITSSSDKEIKASGKGVSATVKVEAKDGGSVVTVTAKAGGLIGKKRAEELLNKIVEKLKSAPEVKDVKTS,0.08443556471481162,21.108891178702905,True,True,False,,85.9582238766821,0.16,0.2,0.69889
175
+ 173,G173,Generation_Rd1_48,LM,N/A,MSVSEEVTKASDAVNAAVTATDGSKSADEISTAVGEAKTTLEGLKDKVTGDAKTLVEEAITSLGEVETKVKDGGSPEDIKAALTPVAEKLKEAAGKLPSS,0.35514819735560493,88.78704933890123,True,True,True,,90.5134869098054,0.34,0.25,0.63993
176
+ 174,G174,Generation_Rd1_48,LM,N/A,KVTLDKAEIDPKDGSAKITGKVENVKEGEVSVVIKDSEGKEVAKGTATVKDGKIETTIEGLKLEKAGKYTVEASFKPTEGQEPVTSEKKELTVPVKVTLD,0.49288849535230767,123.22212383807691,True,False,False,,85.49357017737616,0.014,0.41,0.54795
177
+ 175,G175,Generation_Rd1_48,LM,N/A,MSDEVKAKIEEAIKSSGLPVTDVKVEGTTATVTVSDPSLVPAVLTIVAGAVKGVEGVSEITVKVVGSDGKELASATLKDGEYTVNGQKVTKPEDLEKLLK,0.43620360927076324,109.05090231769081,True,True,True,,87.11474597462664,0.99,0.18,0.5706
178
+ 176,G176,Generation_Rd2_Distant_57,LM,N/A,MKASEILAKLSGTYKDDEAGLTVEIKDGKVTVSAEGESAVLENVTSVDEKAGTATVKGKDEEGADVTLKITFSDAKNPSKVSVVEVTEDGETSEPVELTK,0.3844477984588167,96.11194961470417,True,False,False,,86.20851780777167,0.034,0.2,0.66728
179
+ 177,G177,Generation_Rd2_Distant_57,LM,N/A,MAVNKEETSEPITVPEGKKVKSVSGVATNKAGDGGSATLTVTIEGAGEPVTKTVELKDADTPFEVTGLDVPAGSTVKVTAKLSSDKPGTAEIKDLRVVLE,0.2654726003622822,66.36815009057055,True,False,False,,86.41534731482963,1.2,,0.58678
180
+ 178,G178,Generation_Rd2_Distant_57,LM,N/A,MATVQEIKDAVNAVLDSVEKKDLEGAKTSAETLKTKAEELAGSSDIPADVKEKVTTAATDAGTAAENLVTAVEGGSGDVSEPVTKLKEALTGLLSVIEGK,0.425398676935431,106.34966923385775,True,False,False,,87.68901877999998,1.3,,0.64483
181
+ 179,G179,Generation_Rd1_48,LM,N/A,MSEELRKAVENAAKEAAEKRVKEYLEKNPDLKDVTISDVKVVSVEEVPGEPPKKYKVTLTVSGTKDGKPVTATVTDIVEITEGGSPPTVKLLESKIETSS,0.29900936277246376,74.75234069311594,True,True,False,,86.02743373232883,1.3,,0.57502
182
+ 180,G180,Generation_Rd1_48,LM,N/A,MKDGEIKEVVKVLVEKLREGAENGSVTTISNAATGLGKVAERLEDDEIRDTVKEAVRVLIEKLKEGVENSSVSTITNTATSLSKVAGRLKDSEIKDAVKE,0.3213427087290815,80.33567718227037,True,False,False,,86.20820028410907,0.23,0.23,0.66443
183
+ 181,G181,Generation_Rd2_Distant_57,LM,N/A,MPKYRVVATVSVSAGSKEEAEKKASELVEKIKAKLEEKGLKDVKVTGTSLTEVSGGYTLTVTITAESDKPPSEIENAVREALKEAGVGEPVISSVTKVEG,0.25384446588434895,63.46111647108724,True,True,True,,88.54541706281088,2.7,,0.50116
184
+ 182,G182,Generation_Rd2_Distant_57,LM,N/A,MATLQEGVTTITGLVERLGSATSFDEVKTVAGEISDALKPIVEKAKESGEPSEEIKGPVTDLENAVKELKDGAEAEDSSKVTAAVGTVSTKLTELAGKLS,0.3724929920808958,93.12324802022395,True,True,False,,87.92727221288574,0.045,0.28,0.59423
185
+ 183,G183,Generation_Rd1_48,LM,N/A,MKVTRAENALRVVSSAVGQYTLEKGEPPKSLDDLVKAGYLKEDEAKELIEEVKVEGADAGTATITGKVKEGDKPVTVTLTVAKDGGSVTKTTTVDGKPAS,0.3468407943058762,86.71019857646905,True,False,False,,85.3267939260983,0.00012,0.26,0.54095
186
+ 184,G184,Generation_Rd1_48,LM,N/A,MAEITSGSKTVSGSETKLTVKAGETATVTLSADVTEIVVEKDATLTIEAAEGVKVGDKPITVEAGGKLVNNGTVTGNVTVKDGGSLEGKEVKGEAKIEKK,0.023438156178967277,5.859539044741819,False,False,False,,86.76730231087329,0.47,0.25,0.7231
187
+ 185,G185,Generation_Rd1_48,LM,N/A,MPVKVTITAPPGTKPSDVKAKIESEVIPKVLEEVGKPELAEKLKSATLTVTENPDGSVTAVLDVSGLSKEEAEKVAEITRKKLVEAGVPEDAIKVEVVEG,0.20753040061384626,51.88260015346157,True,True,True,,87.18989491808568,0.35,0.34,0.57824
188
+ 186,G186,Generation_Rd1_48,LM,N/A,MLVEITTSSGTKLVNAENVVSVTENSDGSATISFVGGSTLTVTGETVADVKAKLKPVIEGKIKEAEDKVAQLEKDGGAGSPEVTAAKAELERLKAVLASL,0.4051587468926507,101.28968672316267,True,False,False,,91.88900529299924,0.36,0.24,0.53372
189
+ 187,G187,Generation_Rd1_48,LM,N/A,MDLSEIKALVAAGKYEWDEGNVEKIAKHGVSPEEVEQVLENKPLIEPVPSKVKGETRFRVTGLTDGGRLLTVVFTVRGDDVIRIISARDATKKERKEYEG,0.16448825393008118,41.122063482520296,True,False,False,,86.01142421786548,9e-20,0.51,0.845
190
+ 188,G188,Generation_Rd1_48,LM,N/A,MSDSAVKEGKELLEKAKSTSDPLDKVSLLTDAATKLKDGGAPESEIKPVLVEAGKTGLSIVEKGGSSVPPSEKREILEDVAENLETAGEPDLAKEVRSKI,0.28479652189612137,71.19913047403034,True,False,False,,87.2741586468708,0.89,0.36,0.51479
191
+ 189,G189,Generation_Rd1_48,LM,N/A,MATFTKTVTLEAGKPSEPITGLSGRVKKITASISGGSAENVSAKLVVEKEDGTTETIELKAGESSVTKDLDPPVDVKSVKVEVTGAKEGEKATLTVTVEE,0.13369887066922734,33.42471766730684,True,True,False,,87.77665895300834,1.4,,0.49889
192
+ 190,G190,Generation_Rd1_48,LM,N/A,MKLVLTSSADVEYTISVNGGEPVTGTLKAGETKEIEVPAPEEGKPITVTVKVTAKNVKDGGSVSAKLIKVDKDGKETVVAEDSKSGSEATVELSKTFTVQ,0.14553392066270446,36.38348016567611,True,True,False,,85.23398740416752,0.49,0.22,0.55118
193
+ 191,G191,Generation_Rd1_48,LM,N/A,MARFRVTLTVTVKDADPSKVEEAKNAVKEALSSIEGVKVLDVRAGPVGGSYTITAIVEVPEGQEDKAKELAEKAKSEAENKLKEKGLEVTSVSASATPLG,0.07282996354878321,18.207490887195803,True,True,False,,87.53061091129207,0.91,0.2,0.60413
194
+ 192,G192,Generation_Rd1_48,LM,N/A,MSEITSLTTATLSSPSKTPVIVTASGSDITVRVLKDGKLEEAGKYSTGLVGKINSVSAKETGKDSFTVVAAGDGGAVELKVTVKEGEDGKPEVEKAEVVK,0.26659004459356195,66.64751114839049,True,False,False,,89.59009024552489,0.25,0.29,0.40602
195
+ 193,G193,Generation_Rd2_Manual_24,LM,N/A,MAVSSDVTVKAGKTLTLEKDSEVTGTITVEDGGSLILEEGAKVTATSITVKSGGSVTLKKDAELTAPSADIVVEAGGKLVLESGSKVSGKITNAGEIIKE,0.22727875498455913,56.81968874613978,True,True,True,,92.68699567297864,0.00042,0.31,0.8495
196
+ 194,G194,Generation_Rd2_Manual_24,LM,N/A,MAEFRVTGTATIDGESVPVVATVSDSEVSLAPEDGGDLPEITVPLSSISGLEKDGSTVTLTVLDEEGEPTEYTVELESADDAGEFVKAVRKALVEAKNAA,0.13058535749075587,32.64633937268896,True,False,False,,89.80239142712125,1.4,,0.72477
197
+ 195,G195,Generation_Rd2_Manual_24,LM,N/A,MKSLEGKKVLIVGGLDRLRPEYEKKLKELGAEVTSFSGRESRKTVEKITKEIKDGKYDLVIVLTNYVSHKVTTAVNKAAKEAGVPVVKGSPKRILEEISK,0.2438046900032924,60.951172500823105,True,False,False,,84.283443401976,3.6e-07,0.37,0.73891
198
+ 196,G196,Generation_Rd2_Manual_24,LM,N/A,MADISGKYEGKVSGEEEGDAVLDLKQDGSKVTGTITVPSENIKADVKGSVDGDKLTLEIEVPEAGETAKAELTVKDGKLSGTVTAEGESAPVELEKKTSS,0.03521260291153069,8.803150727882672,False,False,False,,88.46053178719052,1.8e-07,0.39,0.88997
199
+ 197,G197,Generation_Rd2_Manual_24,LM,N/A,MTKEELAAKLKGKTFVGEAEGVKVTLEFKDDGTAVITVDVPGQEPETGTYEVSEDGSTVTVKAGDEVVATGKVNDAGEIELTVEVEGEPVTIKLTEKPAS,0.31272403972533674,78.18100993133419,True,False,False,,90.26839772316754,0.01,0.28,0.70725
200
+ 198,G198,Generation_Rd2_Manual_24,LM,N/A,MATLEEVIAKAESDGKVSLAGEGLTDADVPKVVELLKSGKITSLDLSENKLTEASVDAIVAAVKEGGSKVTEVNLKGNEIKDSAPIEKLKAAGVTVTGVE,0.33709740965070456,84.27435241267614,True,False,False,,86.36919238098604,0.00021,0.35,0.85039
201
+ 199,G199,Generation_Rd1_48,LM,N/A,MAEYTSEPISLEGKKIKAVKVTLKEAPSSGTVTVELLDENDNVLATFTGLSVSAGETKTLTPPSPPTIPAGTKKVKVRVTASGSDGGAKDVVVEVIVEEE,0.10049578289951612,25.12394572487903,True,True,False,,86.52507613680642,0.39,0.29,0.64192
202
+ 200,G200,Generation_Rd1_48,LM,N/A,MSPEEILKELESKVSSGEISADEALSLAEKAVEGGSVDVLVKAAEVSAKAGKPEVTVKIVEKLIEKGVKDKRVIEAAINAARDAGDTETASKLEELLKTL,0.40972010352290444,102.4300258807261,True,True,True,,88.52770732744686,0.077,0.35,0.61949
203
+ 201,G201,Generation_Rd1_48,LM,N/A,MSEEVNKIKELVEKASGQYKDGKFDEGKTTLGEASTAVTGLEEKVKAAGGSAEITGPVTELKTSIETATKDVEAKSADAGTKLEDVSKKLTDLAGKLPAA,0.30720398423712897,76.80099605928224,True,False,False,,90.41036662944973,0.13,0.27,0.65927
204
+ 202,G202,Generation_Rd1_48,LM,N/A,MKLKDGAKLVIPPEIVEKIKEKHGVSEGEVLEALKNAAENSVTIEPSKTKPGRFRVTGLSGSRILTVVVEELDDGTVKVITARDASKKERREYEKAVGKK,0.0940098747249764,23.5024686812441,True,False,False,,82.49738499306618,4.1e-08,0.36,0.79272
205
+ 203,G203,Generation_Rd1_48,LM,N/A,MTIVRVFDSREKAENAVNELKSAGISSDAINLVSGEEGAKKLTEAGVPEDEARVYAEGVKRGGTVVTADVPDDKVSEVESILEKYGGSKPEPPSETPPAS,0.17221999174676836,43.05499793669209,True,False,False,,84.4356925716466,1.7e-09,0.37,0.81654
206
+ 204,G204,Generation_Rd1_48,LM,N/A,MEITISGKDLSAENAAKLKEAVTTAVNDGGSVKVTLTVSVPEGESDPKAAGQKLADALEAELKTVAGDKASSITKGEPVVDTSKPAGTPGVTATVEVTKS,0.12751274187278755,31.878185468196886,True,False,False,,87.70044338976987,1.0,,0.43692
207
+ 205,G205,Generation_Rd1_48,LM,N/A,MTPEEALERIRAAVAAGRVTVTKHVEKRLKERGLTTRDAVVSAVLAKAGTAELIEDDGGSKKYKVTGEVPGKDGKPVKLVVIVSLSDPSEPPRVITAYPA,0.20831051512177579,52.077628780443945,True,True,False,,84.10098394565233,0.071,0.32,0.77711
208
+ 206,G206,Generation_Rd1_48,LM,N/A,MTLTTATVDDAGKVTEISVTGLPGGSDPKAAGEKTAENVAALLEAVGAPEDGRKEVLDKLKEGSASLSEPVKVTKDGVEYTVTSSTVSGTPSFTITAKPA,0.32079452603050557,80.19863150762639,True,False,False,,84.62503673562736,1.4,,0.59321
209
+ 207,G207,Generation_Rd1_48,LM,N/A,MTIKSATLTATVTPPADAPEGSEITVSAQLVPVGEDGKPGDPIATSDSVTVKAGEEPKEVTLKLEGKDVDVTKGRVAVVITASGTEPVEVKVSNVKLTVE,0.32624960566135874,81.56240141533969,True,False,False,,87.13537223500181,1.2,,0.482
210
+ 208,G208,Generation_Rd1_48,LM,N/A,MLTEEQKTAIENAAKEAAEAKIKEELEKAGYTVSNVAVNKDSIVVKEITDTSATVEVLVDADVTKDGETKTLKGVKVSVPVTISEDGKTVTVGTPTVTEG,0.41753954616702316,104.38488654175579,True,False,False,,86.20522534717749,0.18,0.31,0.33752
211
+ 209,G209,Generation_Rd1_48,LM,N/A,MKSLAENVAKEIEKRLKDKGYTVTSVSAGETSATITASKPGKPDLKIIVEVSGSTVKVRVEEGGKVVGEGTATVPPGTPPSEAVNKAVDEAIKKAEEKLK,0.31402878229989095,78.50719557497274,True,True,True,,87.296913956626,0.9,0.2,0.52248
212
+ 210,G210,Generation_Rd1_48,LM,N/A,MAELSASVSGKTLTATAKVTSTEDLKGAVLVITFVKADGSLAGVGGSEPVDIKAGESKDVTVTAENVPEGTTKVVAAVGQVTDLENLKPISDPVEVTITG,0.10715110741757516,26.78777685439379,True,False,False,,86.36463523027102,0.68,0.25,0.75625
213
+ 211,G211,Generation_Rd1_48,LM,N/A,MRISEAVRVATLKVLAENPEGLTVKELVEKVPKIVEEITGKPIKDVTSLRNSVSAALSRLSSKPPSPVVKAGEVTKDGRKYTVYKLTEEGKKLLEELEKR,0.15429707413853394,38.57426853463348,True,True,False,,88.44467056034608,0.9,0.22,0.71473
214
+ 212,G212,Generation_Rd2_Manual_24,LM,N/A,MAVAGTYKITSDIPGVGEATLTLKEDGSSVTGTLEVPAAGGSAEIKDGKVEGDKVSFTYTVNVPGQEPIEVKAELTVKDGKLSGTASTPFGDAPVSGEKA,0.13229364622976908,33.07341155744227,True,True,True,,86.99826238600645,3.2e-11,0.43,0.86711
215
+ 213,G213,Generation_Rd1_48,LM,N/A,METATEFVEAVIAGDYEKALELSAEQLQEGLTVEKLEEAKASLDAAGEYDSVGEPTTREDGGYTIVDVPVTLKDGSEVVLTVSIENESGKVAGLFVKPKE,0.27084891141880163,67.7122278547004,True,False,False,,86.5225409631302,7.2e-07,0.36,0.6981
216
+ 214,G214,Generation_Rd1_48,LM,N/A,MKVEISNVTVSGEGLDRNAVVSAVNSKKSSIEKAAKDAGVTSGTATVKLVIGSDGKVKSATASASGVSSSVASKIASEVKGLSFPSTGKETTVTIPFTLK,0.03139902999505464,7.849757498763659,False,False,False,,88.22988155893422,2.8e-05,0.34,0.88246
217
+ 215,G215,Generation_Rd1_48,LM,N/A,MTVAEKTLKNAAGQKVKAVLEASEDGSTGYVVITKAKDGKELDRVEISGEGLTDPEVSVSDADGGPVVTVTGTTAEGEPATFTVDLSKGKKPKVTETSAE,0.32056675575624544,80.14168893906135,True,False,False,,82.37853019011793,0.53,0.28,0.64831
218
+ 216,G216,Generation_Rd1_48,LM,N/A,MTLQEYIDKLKPSLEEGAKNAGSPIEKVEVKASDDGKSITATVTVKDGTPEDVIKGLVEGIGGSVLDSAKEAVPDAENVTLTVVGVSSSGKELARVTKTF,0.41491778749891783,103.72944687472946,True,True,True,,86.08404559468715,0.89,0.21,0.54895
219
+ 217,G217,Generation_Rd1_48,LM,N/A,MSITEEITKAVNEATSLSGSDPSKALEILKPVVEKAEKEGAPPLTVTRVKFVYATVASSVDKELAGKVLDEVIEDGKKLGESEPEVKDLVSAAENLKSTL,0.3071582954114238,76.78957385285595,True,True,True,,91.0878333852068,0.83,0.24,0.82118
220
+ 218,G218,Generation_Rd1_48,LM,N/A,MTQEELDRIEKELPPKVKAVPEVEDASVSLSISGGSTSLYTTVTAKEGLEGEALEKLAENVAGVVKDEITKSDIKDKYDSVTVSATTKDGKSGSKTIDLK,0.3570257326165188,89.25643315412971,True,False,False,,83.7127830370605,3.1,,0.57739
221
+ 219,G219,Generation_Rd1_48,LM,N/A,MSEETVKELTEISEGLSSGEEDVTATLEKLLPVIEDSSASDEAKVKALEITGDILENSADDVPPEVVSKIKSVVEPLKDGGSDAVKNAAGEVLDTIAEYQ,0.2836327323448656,70.9081830862164,True,False,False,,84.70923580434633,0.18,0.29,0.43856
222
+ 220,G220,Generation_Rd1_48,LM,N/A,MEITKEQLKEIIREAVKEVLEENKDIKAPEVSAKVEGDKVVVTVKPPSDADSVTLTVTPDGGSPITGEKKSDGTYEFTLSEPLKDGQKVTATATKDGKTS,0.3061561526382395,76.53903815955987,True,False,False,,86.83595052652292,0.17,0.33,0.50191
223
+ 221,G221,Generation_Rd1_48,LM,N/A,MATITKTATVTLDSPIKAGETVEKDVEVTGLPENAAGVSAVVASLSEDLKGKLTVSVLEAEISGTTAKFRVRITNVSGSDITPPAGSTSVTVKVTAIVEE,0.28516372438257664,71.29093109564415,True,True,True,,87.93084613994105,1.7,,0.55774
224
+ 222,G222,Generation_Rd1_48,LM,N/A,MPEFRVKLPPEKAAEIVERVLKEKYKDVTITSKSVSGGKAVIEGTKKGLLSSTTVKVTVEVSSDGTATVRAEPVGSLVSASKILEDIKNALREAGAEEVK,0.06549880772623917,16.374701931559795,True,True,False,,85.3883913690933,3.1,,0.77698
225
+ 223,G223,Generation_Rd2_Manual_24,LM,N/A,TPPAPPKASDFAGTYVGTDEEGEKVTVTLTVDAAGNVSGTAKDTEDSSEPVPLKGKVNADGKLEIVEDGEVVATGTLSADKKTLVIEAEGESEKITLTKQ,0.09947732072583444,24.86933018145861,True,False,False,,87.09331399353077,0.05,0.28,0.73171
226
+ 224,G224,Generation_Rd2_Manual_24,LM,N/A,KPEIKVSLDKDSVEIEAGKSAEVTVKVENVPEGTKVTLSVSGEGVSASLEPSEITPPGEAKLTITAGDKEGEYTVTVTATSSDGKTTGSKELKITVKKAE,0.28115350681597817,70.28837670399454,True,True,True,,90.74575985194588,8.2e-08,0.44,0.87605
227
+ 225,G225,Generation_Rd2_Manual_24,LM,N/A,MATVVRAEGEIDLDTAPELSEALEKAAGGSDGRPVVLDVSGVTFADSSFLNVLLRTHERVGKLVLAGTPPQVARLLEITGADKVLTVKDSVEEAVAAVSA,0.13122382806108723,32.80595701527181,True,True,False,,76.47276497468523,1.1e-19,0.55,0.83766
228
+ 226,G226,Generation_Rd2_Distant_57,LM,N/A,MVTATITVSASDPSKAEEVAKNVVTTKLTEKGYTVKDVRVSGDGKVTAVIEVTGGSEDEIKKAAENAAREAGEEAKKELEKEGLTVTSVEVKVEPPKPSS,0.18208726366160208,45.521815915400516,True,True,True,,87.55560444750809,10.0,,0.54279
229
+ 227,G227,Generation_Rd2_Distant_57,LM,N/A,MTPEEITKAVNDGLTEGLKGSPITDVKAEVTGEPPSFTVTATLTVSDSVSADEAKTILEGVAGGAAQALKDAGVTSGTVKVVGVRASDGKELASVEKPLS,0.20885437685969077,52.21359421492269,True,False,False,,85.7801244236998,0.21,0.23,0.44718
230
+ 228,G228,Generation_Rd2_Distant_57,LM,N/A,MSELLEKLKASLGSTVSVKVTREAKNAAGEPVKEVTEYTGKLSAVNEADGTITLTDVTVTKTTPPGPDGKPVVEKKETVEIPISSIESVTFTKDGQTVTA,0.3398507202768766,84.96268006921915,True,True,False,,86.87667869887674,1.0,,0.4184
231
+ 229,G229,Generation_Rd2_Distant_57,LM,N/A,MEKKTVTVSAAGESDPIVVPPGRPARVRATLTSSGTADVTLVSVPVKDGKPDDSKVLATITGLKAGETKELEIEAPEEGVAVKAKVTGGSASLTVEVEYE,0.25227839975840133,63.06959993960033,True,True,False,,87.79723699857843,0.067,0.23,0.46773
232
+ 230,G230,Generation_Rd2_Distant_57,LM,N/A,MVKDSATTLSTSVTDLTTAVGEGKSLEELKPLAETIKTSADTIVEKSKEIEGSEPVVEAANKLVEVSKVIADGGSLDDVKAKAGEVKTASDALVTAAGGK,0.2338792115122648,58.4698028780662,True,True,False,,90.34305763417996,0.39,0.25,0.70741
233
+ 231,G231,Generation_Rd2_Distant_57,LM,N/A,MDKKEFGAKVGEYGKLTVPVVKEPSAENVTKAGESVTGLVEAVNAADVSEEVKTSITTAAETLKSTIEGGGSKDEIKTAVIALRDATVAAGKELGVELPK,0.25967684498058474,64.91921124514619,True,True,False,,86.18377510050942,1.1,,0.52956
234
+ 232,G232,Generation_Rd2_Distant_57,LM,N/A,MAKIKVKVTGLPKGTKEVTVTAEYTPVDDEGNEGEPEVVAEAEKKNVKAGKSATFTLKDVPDGGSVTITASAVLADGTELSDSEEVEVSGKTVKLTLEEA,0.16627183065390522,41.56795766347631,True,False,False,,87.07187992662959,0.76,0.22,0.60576
235
+ 233,G233,Generation_Rd2_Distant_57,LM,N/A,MTKIEITGPITAENVQAVKDAIAKASGDVEVVISGTELDDGGADAVGEAIVEALEKGSKPVKVTVAAGSEPATILKEVLEEELKDLEGKKLSDRVSVSAA,0.22449890530402983,56.124726326007455,True,True,False,,85.88362975688092,0.87,0.22,0.64094
236
+ 234,G234,Generation_Rd2_Distant_57,LM,N/A,MSEISSKITELEGKDLSSAENVKAVGEYVSGTVVPKLEELAGKAPEGEVKTLVEKVASDAKALGEAGSAGDTAKVTEIVTKLKEDVTSLTTKVNELKPAA,0.31250271876593766,78.12567969148442,True,True,False,,85.75613746041445,0.13,0.21,0.69023
237
+ 235,G235,Generation_Rd2_Distant_57,LM,N/A,MSDPVKDAVSKIETAVTDLGTAIESGDKEKITSAGTTLTEASTSLKEAAGKLEGEKKTVVEGLSEKVTKAGELAKAEPVNVAELKPVFDEIKADIAKLKG,0.37075495020892035,92.6887375522301,True,True,True,,89.51803412698082,0.088,0.25,0.44611
238
+ 236,G236,Generation_Rd2_Distant_57,LM,N/A,MPEYIVTVDVAGGSREAVNKAAEKAKEIVEKVLSSKPGASLKDFRVSEPVEVSGVKVPSATLELVVEGEDAGKLAEEIKKTIESETGLTVISVTARPLKG,0.24397498074815135,60.99374518703784,True,True,True,,85.51463768596741,5.6,,0.62557
239
+ 237,G237,Generation_Rd2_Distant_57,LM,N/A,MATVSEIKTLLETAENKVEEAITAAGTDGGSDSGVKPILTEAKDAVTKAEGEATSPEVKELLEKAESKIEEAISAAGSDGGAKPVLTEAKDLVTQAEGKL,0.27265198104308813,68.16299526077204,True,True,False,,87.58504732555899,1.3,,0.49624
240
+ 238,G238,Generation_Rd2_Distant_57,LM,N/A,MEAENAKLTELEKKLPPEVKAVSADVTDVRVTATLKDGKYTGLIVTTTVKEGSDGGALGERIAGEITKVVKDSGVASEVGTPSVQVLDAAGKPLGSKTFG,0.1961497751760811,49.03744379402027,True,True,False,,86.26746860832306,0.79,0.23,0.45217
241
+ 239,G239,Generation_Rd2_Distant_57,LM,N/A,KAEEERKAKEAEEKRLAEIKKITDSVKSSVSGVTVGTPTEKDGKLVVPVTVSSASNAESTAKTVLTKLKDAGYTGEVIVEYKGSKVATSTLSGGSFTISK,0.15768906005559827,39.42226501389957,True,True,True,,85.66091734445378,0.75,0.26,0.44084
242
+ 240,G240,Generation_Rd2_Distant_57,LM,N/A,MSSSEITGLVTTLTESVKSLDGGSDLETATNAADTIKIIAETPENVGPLKDAGAVEAVKAVVTKLEELSGKEGVSDEDKTSAGEVLTVAKEALEVIEKAS,0.2445097638285768,61.1274409571442,True,True,False,,88.87406036196427,1.5,,0.46387
243
+ 241,G241,Generation_Rd2_Distant_57,LM,N/A,MSDDEIVEKLTAELKKSAENAAKDGGSPISGLITDVKVDRAGKTVTATVSESVPPEVSTAVGEVLAGVAGPVIKASDPSLEGYRVVVTGADGKELGSKDL,0.2825679200185735,70.64198000464337,True,True,True,,84.74036519803893,0.7,0.29,0.57643
244
+ 242,G242,Generation_Rd2_Distant_57,LM,N/A,MSESEIISSITSATSTLKSSSPSDADLVTALTTLEDTLVIAVNSGKPEFVKAAKDGGAVEAVKGVKERAEKAGEEGGSKEVVDRAGKVLELLEPPPAPSA,0.2989346108710877,74.73365271777192,True,True,True,,87.48056595556326,0.56,0.29,0.41786
245
+ 243,G243,Generation_Rd2_Distant_57,LM,N/A,MSITVTVKDGKVVISGDGGSKEVEGLDKLTETLKSEIEKAVKEGKPVKVTIEADSSVSEDDVNKIKTAAENAIKELKDKGELPSDAKVPENVEVKVEKKS,0.3876533576037763,96.91333940094407,True,True,True,,88.55976311534685,0.27,0.24,0.37726
246
+ 244,G244,Generation_Rd2_Distant_57,LM,N/A,MATVKEGVTSARDAVNKTLESLKAEPVDVEKVKADLTTAKDSVAKAKETAEKDGKPEVVTGLTELDASITKAGEAKTVEELRAALEPVSKSLSDLAGKLG,0.35559134729502334,88.89783682375584,True,True,True,,90.20816445050598,0.14,0.22,0.53916
247
+ 245,G245,Generation_Rd2_Distant_57,LM,N/A,MSIKSDIEAIVTKLNAATTPEEKKTVAGELSTKAGELKTSLEGKEVPENVKPVVTDLVEKVTALRDAAVKAKDGGADVSAEITAVQTSVTEISGKLEPLK,0.10007647042899974,25.019117607249935,True,False,False,,85.16136920836401,3.2,,0.76591
248
+ 246,G246,Generation_Rd2_Distant_57,LM,N/A,MSISEQVTEIKGLVTAIEGATSAEEVKTKAGELSTKIKELKDSVKDKVDGDLLTAVSDAGKALKEAGSKPDASLDDVKAAVTTATEKLNEVVAKLEPPAA,0.3820963191385863,95.52407978464659,True,True,True,,87.18511383337285,0.11,0.28,0.4967
249
+ 247,G247,Generation_Rd2_Distant_57,LM,N/A,MSEVISDLEKGKTLVTEAVNAGSPEEIKSKATEGLSVVESAIEKAKDVPGKETAVSLLEDGKKLITDAVAAGEAGNVDEVKRLASEGLTKVEEGIAALKG,0.3756393555782181,93.90983889455453,True,True,True,,93.67002727367768,2.5,,0.84527
250
+ 248,G248,Generation_Rd2_Manual_24,LM,N/A,MSEEIKKTITDLTEKVSGEPSAENVKAALPALKEGLENEDAGVRYRSVTAVGNIAEKAKDVPEVVEAVKELKPVLEKLSESDPDSTVRLRAKWALGKIEG,0.36140554984456064,90.35138746114016,True,True,True,,89.57056780347637,0.0084,0.37,0.77568
251
+ 249,G249,Generation_Rd2_Manual_24,LM,N/A,MEREVLRILKEAGFRVRRAAGSKGYDIVAEKDGKKYLIQVTSGKSPIKPEKVKELVEKAKAENAVPVIVTKTGRVSLPSEIEGVKVLTLEDLKKLLEESS,0.03994438270154638,9.986095675386593,False,False,False,,81.39408555233771,1e-05,0.35,0.73786
252
+ 250,G250,Generation_Rd2_Manual_24,LM,N/A,KVEASADKTTLKAGESTKLTVKVTPEGGKKVTITGLTAEGVKIEPSSVELPEVEPGKPVEVTFTVSAENATEGTKEITVTAKAEDGSEGSAKVSVTVEKK,0.2885688997753328,72.1422249438332,True,True,False,,89.35600792244621,0.02,0.33,0.85551
253
+ 251,G251,Generation_Rd2_Manual_24,LM,N/A,MANILVIGRVETITSTVKGLLEKEGYTVTTAVTDEEGIAKFKEAGKQDLVLISAGVSDPAEVERLTGEIKKVSSVPVVVHYDGGSKPEDIVADVKAALAK,0.3280431605407768,82.0107901351942,True,True,True,,84.67222933604307,1.2e-07,0.41,0.86648
254
+ 252,G252,Generation_Rd2_Manual_24,LM,N/A,MTVNSADDVKAAIEKAKSEGKTELVIGEGVTDEVLEEIAKETTITKVTLPSTVSVAGVEKLAENATGLTSITVPSSLSDEDKQKIKDAVTAKNGGSVTVG,0.2631119641538814,65.77799103847035,True,True,False,,88.24861387282598,0.025,0.27,0.58312
255
+ 253,G253,Generation_Rd2_Manual_24,LM,N/A,PDFELSAPPEVTVEKGKSAETTITVTAKDGFSDTVKLEASVSPSSGLTATLEPSEVKPGGSSKLTISTSSSTPVGEYTVTVTGTSGSLTKTKEIKVKVTE,0.339728702528489,84.93217563212225,True,True,True,,87.97385013811632,6.8e-14,0.53,0.86313
256
+ 254,G254,Generation_Rd2_Manual_24,LM,N/A,MTVTEKLSSDSVSERREAAEELAETAESDPESVTPEDVPGLIEALDDGSPVVRANAASALGEIGEPAKDAGAVERLTELKENDENSLVRVKAGKALEKIE,0.19252380707578953,48.130951768947384,True,False,False,,88.1057325229771,1.5e-06,0.4,0.7204
257
+ 255,G255,Generation_Rd2_Manual_24,LM,N/A,MSYTATVTITLSGVPSDKAGEAANKAKEIAENVAREKGLSASVRVSSISGGSVTVTLTVSAPSKEEAVKTAEEKVKPEIEKKLKDELGVEVTSVSVSEPS,0.2160377889856688,54.0094472464172,True,True,False,,88.04311436876847,0.043,0.25,0.74055
258
+ 256,G256,Generation_Rd2_Distant_57,LM,N/A,MPKFRVTVTLEVSAPEGTTPPSPSEIRDKVVEKLREAGASDVSVSTGYVGGKYTITATLTVEGSKEDAEKKAKETAENAVKEAVPGAEVKDVKVTKVEEL,0.3583463973557906,89.58659933894765,True,True,False,,88.59396840807321,1.3,,0.65086
259
+ 257,G257,Generation_Rd2_Manual_24,LM,N/A,MVKDGVTGLKEGVAKLKSEADSGGSVDTIKTTATDLKGKWDEIEPKVKEKSPEEYTKVETSIDELVKAAEAKDAATVKTKAGEVSTSLDAVITKLESASK,0.2574744851283073,64.36862128207682,True,False,False,,91.88966367944136,0.0001,0.34,0.92678
260
+ 258,G258,Generation_Rd2_Manual_24,LM,N/A,MKVAVEEGLTSVKKALEEAGFEVVSLDEVGEDVDAVVVRAGSAPPERVKEIIEKYKGKPVIVNASGRLAEIAKEYGVTAITGGSPSETVEKIKELLEKLK,0.27630556250521865,69.07639062630466,True,True,False,,86.07982206494033,0.00066,0.33,0.63824
261
+ 259,G259,Generation_Rd2_Manual_24,LM,N/A,MEELIKELESSDVEKRIEAVTKLSEIGPPAKDAVPSLVKLLKDEDSGVRAGTATVLGEIAETSPEVVKSAIPDLEKVSKTDENEYVRVAAENALKKITGK,0.36805364210366004,92.013410525915,True,True,True,,93.45533278402938,6e-09,0.47,0.89765
262
+ 260,G260,Generation_Rd2_Manual_24,LM,N/A,MKVKVTASGSVSSAKLRVTITPEDGGSPIVKEEEVSLSAGQTVEKEITLSEDDAKKLEGKKAKIKVEALDKDGNVVATGESDPVELKPGETKEVTVTLTK,0.4037847386394065,100.94618465985162,True,True,False,,90.01503428912336,1.8,,0.62789
263
+ 261,G261,Generation_Rd2_Distant_57,LM,N/A,MRIEEVVKLPLDEAFRVAKEAAENAGLKDVKVTSSTPTTITATGKSLVGSASVTVTLERVSDSETKVIVEGKPSGGLIGEKKARDAVNKVLEEIKRRAGG,0.14921872002077485,37.30468000519372,True,True,True,,87.86129988150013,0.44,0.22,0.73807
264
+ 262,G262,Generation_Rd2_Distant_57,LM,N/A,MAGVEAIKADVEKLKTAKPEEIVPLATSLKEKVDALVKEVEGLTVSAENKAKVTEAVTLIKSGADLVIEGTTSKDSAKISEGVTKVLEGITKILEVVAGK,0.4043522690967771,101.08806727419427,True,True,False,,91.76721563412217,0.048,0.26,0.77123
265
+ 263,G263,Generation_Rd2_Distant_57,LM,N/A,MSIKENIVKASESVSTAVTEAGKEPVNVETAKTSLTDAVTVLEGLVPELKADGKDDVATKLEEGVTKAKEGIEKVGSKDEVSAGLTTLSEAITAAGEALK,0.1432357725590353,35.808943139758824,True,False,False,,88.44608194385249,0.33,0.26,0.46556
266
+ 264,G264,Generation_Rd2_Distant_57,LM,N/A,MSEVETVKASIQEGIDAANKVSADGGSVAEIKTSLEPVVTKLTEAKGKSSDPKVTTLLDEAITAVNAVKPEEGADVATIKAGLTPVIEKLKEALALVPAA,0.35828339273400983,89.57084818350246,True,True,True,,86.91840993536144,0.33,0.3,0.74084
267
+ 265,G265,Generation_Rd2_Distant_57,LM,N/A,MSEIAGKVKEVVTKVEGVLSDSSKTPEEIKAAAGEVSTLVGEAVTAVSGKPGAESVATDLKNAADALKSAAEGGSKDGLTTAKTSLETAITKLTELANSL,0.32759017206237123,81.8975430155928,True,True,True,,92.24300254982056,2.9,,0.71623
268
+ 266,G266,Generation_Rd2_Manual_24,LM,N/A,PKIEEVSVSPSELKPGEKTTITAKISDPEGGSGIDTSSIKVEINGEDVTSKAKVEKVDENSATLTVEYTPPEPPLPPGKYTVTIRVKDKAGNEATETKEF,0.35890439604736646,89.72609901184161,True,True,True,,88.44787984007462,2.7e-05,0.41,0.75919
269
+ 267,G267,Generation_Rd2_Manual_24,LM,N/A,MTGAKVEPATAKPGDEVKVTATVNAAEEGEYTVSASLSGEGIGGSKSEPVKLEKGENEVTITLTVPEDAEAGKADVTSVSVTDKDGKRVASDSAPSFTVE,0.24711120672212794,61.77780168053199,True,False,False,,89.24986482953167,0.0055,0.38,0.70965
270
+ 268,,Fixed_Rd1_48,ground truth,1QYS,DIQVQVNIDDNGKNFDYTYTVTTESELQKVLNELMDYIKKQGAKRVRISITARTKKEAEKFAAILIKVFAELGYNDINVTFDGDTVTVEGQL,0.41197595017913285,102.99398754478321,True,False,False,0.8288429379463196,89.17377945545974,14.0,,
271
+ 269,,Fixed_Rd1_48,ground truth,6CZJ,SALAQQLPGTWKMDVTSEDGVRTTGQMHIQPKTPTTMDVTLTGTHADGKPFTGQGKITVKTPTTVDITVTYEDGSTATGQLTVDSPTQFKFDMTASDGTRFTGTVQRQS,0.39017888440813564,97.5447211020339,True,True,True,1.0148541927337646,91.31992370254028,7.1,,
272
+ 270,,Fixed_Rd1_48,ground truth,6W3W,DEDREWIERFNRILIESLTTGDEHTLKELIDPNARLVINGRDIHGREEFVRLLSEMGVKHFHVHDVKVVGNKAVTRGILYFNGREYDVDVFTRKIDGRWLYESLEVK,0.04445695864286616,11.11423966071654,False,False,False,1.4773865938186646,85.96058814924257,8.2,,
273
+ 271,,Fixed_Rd1_48,ground truth,6WVS,DILIVNATDVDEMLKQVEILRRLGAKQIAVVSDDWRILQEALKKGGDILIVNATDVDEMLKQVEILRRLGAKQIAVVSDDWRILQEALKKGGDILIVNATDVDEMLKQVEILRRLGAKQIAVVSDDWRILQEALKKGGDILIVNATDVDEMLKQVEILRRLGAKQIAVVSDDWRILQEALKK,0.28575451397545437,71.43862849386359,True,True,True,0.8460836410522461,90.9020930370598,,,
274
+ 272,,Fixed_Rd2_compare_LM_24,ground truth,5L33,PEEEKAARLFIEALEKGDPELMRKVISPDTRMEDNGREFTGDEVVEYVKEIQKRGEQWHLRRYTKEGNSWRFEVQVDNNGQTEQWEVQIEVRNGRIKRVTITHV,0.4303842742590548,107.5960685647637,True,True,True,,92.43271477764092,4.8,,
275
+ 273,,Fixed_Rd2_compare_LM_24,ground truth,6D0T,MVDAAQYFPGTWEFRFRSSDGKEYRGTVEMQPRTPTEIEIRFKGQSSDGRPVEGRGSIEVRSPYEYRFEMQSSDGARWEGTLQVRSPDSVEVRFKSSDGREYSGEFRRQEG,0.401660220780138,100.41505519503451,True,False,False,,89.34978999176117,13.0,,
276
+ 274,,Fixed_Rd2_compare_LM_24,ground truth,6MRS,GSGRQEKVLKSIEETVRKMGVTMETHRSGNEVKVVIKGLHESQQEQLKKDVEETSKKQGVETRIEFHGDTVTIVVRE,0.19924157322399905,49.81039330599976,True,False,False,,92.79344239462696,43.0,,
277
+ 275,,Fixed_Rd2_compare_LM_24,ground truth,6NUK,GSTVRIEIRFTNMRREEVQKELEKFKERLKELEKRTGSEIRIEIEERDGEVRVEVEIRNSHEEEVRQIIEEIERWVRKMGGELRVEK,0.4075636222846284,101.89090557115709,True,True,True,,89.86144181933138,4.7,,0.38491
weight/esm-main/examples/lm-design/paper-data/uniref90_jackhmmer_purge_ids.txt ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/examples/lm-design/utils/__init__.py ADDED
File without changes
weight/esm-main/examples/lm-design/utils/constants.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 Optional, NamedTuple
7
+ from enum import Enum
8
+
9
+
10
+ # Note ordering is important, correlates with Designer.py::coords[:, angle-index]
11
+ COORDS_ANGLE_NAMES = ['omega', 'theta', 'phi']
12
+ COORDS4D_NAMES = ['dist'] + COORDS_ANGLE_NAMES
13
+ COORDS6D_NAMES = COORDS4D_NAMES + ['torsion_phi', 'torsion_psi']
weight/esm-main/examples/lm-design/utils/linear_projection.py ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 collections import defaultdict
8
+ from functools import partial
9
+ from pathlib import Path
10
+ import torch
11
+ import torch.nn.functional as F
12
+ import torch.nn as nn
13
+ from collections import namedtuple
14
+
15
+ import os
16
+ import sys
17
+ import torch
18
+ from pathlib import Path
19
+ from argparse import Namespace
20
+ from omegaconf import DictConfig, OmegaConf
21
+ from typing import Dict, Optional, List, Callable, Union
22
+ import math
23
+
24
+ BinningScheme = namedtuple(
25
+ 'BinningScheme',
26
+ [
27
+ 'N_BINS',
28
+ 'CUTOFF_BIN',
29
+ 'MIN_DIST',
30
+ 'MAX_DIST',
31
+ 'CONTACT_DIST',
32
+ 'THETA_BINS',
33
+ 'PHI_BINS',
34
+ 'OMEGA_BINS',
35
+ 'TORSION_BINS',
36
+ ],
37
+ )
38
+ LinearProjectionDist_1A = BinningScheme(
39
+ N_BINS=18,
40
+ CUTOFF_BIN=5, # conservative cutoff for 8 angstroms exact ((20-2.5)/16*5 + 2.5 = ~7.9)
41
+ MIN_DIST=2.5,
42
+ MAX_DIST=20,
43
+ CONTACT_DIST=8,
44
+ THETA_BINS=18,
45
+ PHI_BINS=8,
46
+ OMEGA_BINS=18,
47
+ TORSION_BINS=50,
48
+ )
49
+ BIN_FLAG_TO_ENUM = {
50
+ 'LinearProjectionDist_1A': LinearProjectionDist_1A,
51
+ }
52
+
53
+ logger = logging.getLogger(__name__)
54
+
55
+
56
+ def extract_features(
57
+ model,
58
+ inp: torch.Tensor,
59
+ has_cls: bool = True,
60
+ has_eos: bool = True,
61
+ need_head_weights: Union[bool, Dict] = False,
62
+ ):
63
+ """
64
+ Inflexible way of dealing with the mess of inputs with cls tokens,
65
+ need embedding without, and LSTM doesnt want cls token in the first place.
66
+ """
67
+
68
+ out_start_idx = 1 if has_cls else 0
69
+ out_end_idx = -1 if has_eos else None
70
+ inp = inp.argmax(dim=-1) # output [B, T]
71
+ result = model(inp, need_head_weights=need_head_weights)
72
+ attentions = result["attentions"]
73
+
74
+ batch, layer, head, seqlen, seqlen2 = attentions.size()
75
+ assert seqlen == seqlen2
76
+ attentions = attentions.reshape(
77
+ batch, layer * head, seqlen, seqlen
78
+ )
79
+ emb = result["logits"]
80
+
81
+ return emb[:, out_start_idx:out_end_idx], \
82
+ attentions[:, :, out_start_idx:out_end_idx, out_start_idx:out_end_idx]
83
+
84
+
85
+ class LinearProjectionDistogramModel(nn.Module):
86
+ """
87
+ This model regresses angles and distances from the attention maps of the LM
88
+ """
89
+
90
+ def __init__(self):
91
+ super().__init__()
92
+ self.base_model = None # To be initialized later
93
+ self.num_heads = 20 * 33
94
+ self.bin_enum = BIN_FLAG_TO_ENUM['LinearProjectionDist_1A']
95
+ self._s1 = self.bin_enum.N_BINS
96
+ self._s2 = self._s1 + self.bin_enum.THETA_BINS
97
+ self._s3 = self._s2 + self.bin_enum.PHI_BINS
98
+ self._s4 = self._s3 + self.bin_enum.OMEGA_BINS
99
+
100
+ conv_in_channels = self.num_heads
101
+
102
+ self.conv1 = torch.nn.Conv2d(
103
+ in_channels=conv_in_channels,
104
+ out_channels=self.bin_enum.N_BINS + self.bin_enum.OMEGA_BINS,
105
+ kernel_size=1,
106
+ stride=1,
107
+ padding=0,
108
+ )
109
+
110
+ self.conv2 = torch.nn.Conv2d(
111
+ in_channels=conv_in_channels,
112
+ out_channels=self.bin_enum.THETA_BINS + self.bin_enum.PHI_BINS,
113
+ kernel_size=1,
114
+ stride=1,
115
+ padding=0,
116
+ )
117
+
118
+
119
+ def forward(self, src_tokens, **kwargs):
120
+ _, attentions_asym = extract_features(self.base_model, src_tokens, need_head_weights=True)
121
+
122
+ def symmetrize(contacts, scale=1.0):
123
+ return scale * (contacts + contacts.transpose(-1, -2))
124
+
125
+ attentions_sym = symmetrize(attentions_asym)
126
+
127
+ # [B, C, N, N] -> [B, output_channels, N, N]
128
+ out1 = self.conv1(attentions_sym)
129
+ out2 = self.conv2(attentions_asym)
130
+ return {
131
+ 'logits': out1[:, :self.bin_enum.N_BINS:, :, :],
132
+ 'omega_logits': out1[:, self.bin_enum.N_BINS:, :, :],
133
+ 'theta_logits': out2[:, :self.bin_enum.THETA_BINS, :, :],
134
+ 'phi_logits': out2[:, self.bin_enum.THETA_BINS:, :, :],
135
+ }
136
+
137
+
138
+
weight/esm-main/examples/lm-design/utils/lm.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ import math
8
+ logger = logging.getLogger(__name__)
9
+ from typing import Optional, Dict, List, Any, Union
10
+
11
+ import torch
12
+ from torch import nn
13
+ import torch.nn.functional as F
14
+ from abc import ABC, abstractmethod
15
+
16
+ from .tensor import is_1hot_tensor, add_eos_bos
17
+ from .masking import apply_mask, assert_valid_mask
18
+
19
+
20
+ def lm_marginal(mlm, x, mask):
21
+ """
22
+ Utility to extract logprobs from an MLM, given an input tensor and a mask.
23
+ NOTE:
24
+ - **Mask each set bit in mask's L-dim separately.** - (as opposed to all at once.)
25
+ - Therefore, performs B*n forward passes.
26
+ - In the future, we might try just using a single forward pass per sequence = B passes.
27
+ - We had some success with something akin to this in the ESM-1V paper.
28
+ Args:
29
+ x: [B, L, K]
30
+ mask: [B, L, 1] # n masks in L dim
31
+ if None, use a mask of all ones.
32
+ Returns:
33
+ logits: [B, n, K]
34
+ """
35
+ B, L, K = x.shape
36
+ if mask is None:
37
+ mask = torch.ones(B, L, 1, dtype=torch.bool, device=x.device)
38
+ n = assert_valid_mask(mask, x=x) # this is gross.
39
+
40
+ # Get coords of set bits. [B*n]
41
+ b_coords, l_coords, _ = mask.nonzero(as_tuple=True) # [B*n], [B*n]
42
+ # Double-check of mask assumptions.
43
+ assert torch.equal(b_coords, torch.repeat_interleave(torch.arange(B).to(x.device), n).to(x.device))
44
+
45
+ # naming: _m1 = mask1. (B*n leading dim.)
46
+ x_m1 = x[b_coords] # [B*n, L, K]
47
+ mask_m1 = F.one_hot(l_coords, L).unsqueeze(-1).bool() # [B*n, L, 1]
48
+
49
+ # Apply mask, mlm forward, select logits.
50
+ x_masked_m1 = apply_mask(x_m1, mask_m1, mlm.vocab.mask_idx) # [B*n, L, K]
51
+ lm_logits_m1 = mlm(x_masked_m1)['logits']
52
+ lm_logits_select = lm_logits_m1.masked_select(mask_m1).reshape(B, n, K) # [B, n, K]
53
+
54
+ # Mlm outputs 'logits' = not logprobabilities, but pre-softmax values.
55
+ # We must log-softmax here to convert from pre-softmax logits -> logprobs.
56
+ lm_logprobs_select = torch.log_softmax(lm_logits_select, axis=-1)
57
+
58
+ return lm_logprobs_select # [B, n, K]
59
+
60
+
61
+ class WrapLM(nn.Module, ABC):
62
+ def __init__(self, LM, vocab):
63
+ super().__init__()
64
+ self.model = LM
65
+ self.vocab = vocab
66
+
67
+ @abstractmethod
68
+ def forward(self, seq1h, **kwargs):
69
+ raise NotImplementedError
70
+
71
+
72
+ class WrapLmEsm(WrapLM):
73
+ def forward(self, seq1h):
74
+ B, L, K = seq1h.shape
75
+ seq1h, seq_start_idx, seq_end_idx = self._prepare_seq(seq1h)
76
+ seq = seq1h.argmax(-1)
77
+
78
+ out = self.model(seq)
79
+
80
+ return {
81
+ 'logits': out['logits'][:, seq_start_idx:seq_end_idx, :K],
82
+ }
83
+
84
+ def _prepare_seq(self, seq1h):
85
+ assert is_1hot_tensor(seq1h)
86
+ B, L, K = seq1h.shape
87
+ # Prepend bos/cls and append eos.
88
+ seq1h = add_eos_bos(seq1h, bos_idx=self.vocab.cls_idx, eos_idx=self.vocab.eos_idx)
89
+ seq_start_idx = 1
90
+ seq_end_idx = L + 1
91
+
92
+ # In some cases, a vocab padded to 64 positions
93
+ # with dummy character was used.
94
+ # As a workaround, pad K dimension, then remove this portion after
95
+ embed_dim = self.model.embed_tokens.weight.size(0)
96
+ if embed_dim != K:
97
+ seq1h = torch.cat([
98
+ seq1h,
99
+ torch.zeros(B, L+2, embed_dim - K).to(seq1h)
100
+ ], -1)
101
+
102
+ return seq1h, seq_start_idx, seq_end_idx
weight/esm-main/examples/lm-design/utils/loss.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 torch
7
+ import torch.nn.functional as F
8
+
9
+
10
+ def get_cce_loss(probs, labels, mask=None, eps=1e-8,):
11
+ """
12
+ Calculates the categorical cross entropy and averages result.
13
+ Using optional mask to control which labels are included in the loss.
14
+ Args:
15
+ probs (torch.float32): [B, L, L, num_categories]
16
+ labels (torch.int32): [B, L, L]
17
+ mask (torch.float32): [B, L, L]
18
+ Returns:
19
+ average_cce (torch.float32): [B]
20
+ """
21
+ if mask is None:
22
+ B, L = probs.shape[:2]
23
+ mask = torch.ones(B, L, L).to(probs.device)
24
+
25
+ num_categories = probs.shape[-1]
26
+ labels_onehot = F.one_hot(labels, num_categories)
27
+ cce_ij = -torch.sum(labels_onehot * torch.log(probs+eps), axis=-1)
28
+ average_cce = torch.sum(mask * cce_ij, axis=(1, 2)) / torch.sum(mask, axis=(1, 2))
29
+ return average_cce
weight/esm-main/examples/lm-design/utils/ngram_stats/bigram_seg.p ADDED
Binary file (8.86 kB). View file
 
weight/esm-main/examples/lm-design/utils/ngram_stats/monogram_seg.p ADDED
Binary file (382 Bytes). View file
 
weight/esm-main/examples/protein-programming-language/language/__init__.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from language.energy import (
2
+ MaximizeGlobularity,
3
+ MaximizePLDDT,
4
+ MaximizePTM,
5
+ MaximizeSurfaceExposure,
6
+ MinimizeCRmsd,
7
+ MinimizeDRmsd,
8
+ MatchSecondaryStructure,
9
+ MinimizeSurfaceExposure,
10
+ MinimizeSurfaceHydrophobics,
11
+ SymmetryRing,
12
+ )
13
+ from language.folding_callbacks import EsmFoldv1, FoldingCallback, FoldingResult
14
+ from language.optimize import run_simulated_annealing
15
+ from language.program import ProgramNode
16
+ from language.sequence import (
17
+ ConstantSequenceSegment,
18
+ FixedLengthSequenceSegment,
19
+ VariableLengthSequenceSegment,
20
+ sequence_from_atomarray,
21
+ )
22
+ from language.utilities import get_atomarray_in_residue_range, pdb_file_to_atomarray
weight/esm-main/examples/protein-programming-language/language/energy.py ADDED
@@ -0,0 +1,317 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 abc import ABC, abstractmethod
7
+ from typing import List, Optional
8
+
9
+ import numpy as np
10
+ from biotite.structure import annotate_sse, AtomArray, rmsd, sasa, superimpose
11
+
12
+ from language.folding_callbacks import FoldingResult
13
+ from language.utilities import get_atomarray_in_residue_range
14
+
15
+
16
+ class EnergyTerm(ABC):
17
+ def __init__(self) -> None:
18
+ pass
19
+
20
+ @abstractmethod
21
+ def compute(self, node, folding_result: FoldingResult) -> float:
22
+ pass
23
+
24
+
25
+ class MaximizePTM(EnergyTerm):
26
+ def __init__(self) -> None:
27
+ super().__init__()
28
+
29
+ def compute(self, node, folding_result: FoldingResult) -> float:
30
+ del node
31
+ return 1.0 - folding_result.ptm
32
+
33
+
34
+ class MaximizePLDDT(EnergyTerm):
35
+ def __init__(self) -> None:
36
+ super().__init__()
37
+
38
+ def compute(self, node, folding_result: FoldingResult) -> float:
39
+ del node
40
+ return 1.0 - folding_result.plddt
41
+
42
+
43
+ class SymmetryRing(EnergyTerm):
44
+ def __init__(self, all_to_all_protomer_symmetry: bool = False) -> None:
45
+ super().__init__()
46
+ self.all_to_all_protomer_symmetry: bool = all_to_all_protomer_symmetry
47
+
48
+ def compute(self, node, folding_result: FoldingResult) -> float:
49
+ protomer_nodes = node.get_children()
50
+ protomer_residue_ranges = [
51
+ protomer_node.get_residue_index_range() for protomer_node in protomer_nodes
52
+ ]
53
+
54
+ centers_of_mass = []
55
+ for start, end in protomer_residue_ranges:
56
+ backbone_coordinates = get_backbone_atoms(
57
+ folding_result.atoms[
58
+ np.logical_and(
59
+ folding_result.atoms.res_id >= start,
60
+ folding_result.atoms.res_id < end,
61
+ )
62
+ ]
63
+ ).coord
64
+ centers_of_mass.append(get_center_of_mass(backbone_coordinates))
65
+ centers_of_mass = np.vstack(centers_of_mass)
66
+
67
+ return (
68
+ float(np.std(pairwise_distances(centers_of_mass)))
69
+ if self.all_to_all_protomer_symmetry
70
+ else float(np.std(adjacent_distances(centers_of_mass)))
71
+ )
72
+
73
+
74
+ def get_backbone_atoms(atoms: AtomArray) -> AtomArray:
75
+ return atoms[
76
+ (atoms.atom_name == "CA") | (atoms.atom_name == "N") | (atoms.atom_name == "C")
77
+ ]
78
+
79
+
80
+ def _is_Nx3(array: np.ndarray) -> bool:
81
+ return len(array.shape) == 2 and array.shape[1] == 3
82
+
83
+
84
+ def get_center_of_mass(coordinates: np.ndarray) -> np.ndarray:
85
+ assert _is_Nx3(coordinates), "Coordinates must be Nx3."
86
+ return coordinates.mean(axis=0).reshape(1, 3)
87
+
88
+
89
+ def pairwise_distances(coordinates: np.ndarray) -> np.ndarray:
90
+ assert _is_Nx3(coordinates), "Coordinates must be Nx3."
91
+ m = coordinates[:, np.newaxis, :] - coordinates[np.newaxis, :, :]
92
+ distance_matrix = np.linalg.norm(m, axis=-1)
93
+ return distance_matrix[np.triu_indices(distance_matrix.shape[0], k=1)]
94
+
95
+
96
+ def adjacent_distances(coordinates: np.ndarray) -> np.ndarray:
97
+ assert _is_Nx3(coordinates), "Coordinates must be Nx3."
98
+ m = coordinates - np.roll(coordinates, shift=1, axis=0)
99
+ return np.linalg.norm(m, axis=-1)
100
+
101
+
102
+ class MinimizeSurfaceHydrophobics(EnergyTerm):
103
+ def __init__(self) -> None:
104
+ super().__init__()
105
+
106
+ def compute(self, node, folding_result: FoldingResult) -> float:
107
+ start, end = node.get_residue_index_range()
108
+
109
+ return hydrophobic_score(folding_result.atoms, start, end)
110
+
111
+
112
+ _HYDROPHOBICS = {"VAL", "ILE", "LEU", "PHE", "MET", "TRP"}
113
+
114
+
115
+ def hydrophobic_score(
116
+ atom_array: AtomArray,
117
+ start_residue_index: Optional[int] = None,
118
+ end_residue_index: Optional[int] = None,
119
+ ) -> float:
120
+ """
121
+ Computes ratio of hydrophobic atoms in a biotite AtomArray that are also surface
122
+ exposed. Typically, lower is better.
123
+ """
124
+
125
+ hydrophobic_mask = np.array([aa in _HYDROPHOBICS for aa in atom_array.res_name])
126
+
127
+ if start_residue_index is None and end_residue_index is None:
128
+ selection_mask = np.ones_like(hydrophobic_mask)
129
+ else:
130
+ start_residue_index = 0 if start_residue_index is None else start_residue_index
131
+ end_residue_index = (
132
+ len(hydrophobic_mask) if end_residue_index is None else end_residue_index
133
+ )
134
+ selection_mask = np.array(
135
+ [
136
+ i >= start_residue_index and i < end_residue_index
137
+ for i in range(len(hydrophobic_mask))
138
+ ]
139
+ )
140
+
141
+ # TODO(scandido): Resolve the float/bool thing going on here.
142
+ hydrophobic_surf = np.logical_and(
143
+ selection_mask * hydrophobic_mask, sasa(atom_array)
144
+ )
145
+ # TODO(brianhie): Figure out how to handle divide-by-zero.
146
+ return sum(hydrophobic_surf) / sum(selection_mask * hydrophobic_mask)
147
+
148
+
149
+ class MinimizeSurfaceExposure(EnergyTerm):
150
+ def __init__(self) -> None:
151
+ super().__init__()
152
+
153
+ def compute(self, node, folding_result: FoldingResult) -> float:
154
+ start, end = node.get_residue_index_range()
155
+
156
+ return surface_ratio(folding_result.atoms, list(range(start, end)))
157
+
158
+
159
+ class MaximizeSurfaceExposure(EnergyTerm):
160
+ def __init__(self) -> None:
161
+ super().__init__()
162
+
163
+ def compute(self, node, folding_result: FoldingResult) -> float:
164
+ start, end = node.get_residue_index_range()
165
+
166
+ return 1.0 - surface_ratio(folding_result.atoms, list(range(start, end)))
167
+
168
+
169
+ def surface_ratio(atom_array: AtomArray, residue_indices: List[int]) -> float:
170
+ """Computes ratio of atoms in specified ratios which are on the protein surface."""
171
+
172
+ residue_mask = np.array([res_id in residue_indices for res_id in atom_array.res_id])
173
+ surface = np.logical_and(residue_mask, sasa(atom_array))
174
+ return sum(surface) / sum(residue_mask)
175
+
176
+
177
+ class MinimizeSurfaceExposure(EnergyTerm):
178
+ def __init__(self) -> None:
179
+ super().__init__()
180
+
181
+ def compute(self, node, folding_result: FoldingResult) -> float:
182
+ start, end = node.get_residue_index_range()
183
+
184
+ return surface_ratio(folding_result.atoms, list(range(start, end)))
185
+
186
+
187
+ class MaximizeSurfaceExposure(EnergyTerm):
188
+ def __init__(self) -> None:
189
+ super().__init__()
190
+
191
+ def compute(self, node, folding_result: FoldingResult) -> float:
192
+ start, end = node.get_residue_index_range()
193
+
194
+ return 1.0 - surface_ratio(folding_result.atoms, list(range(start, end)))
195
+
196
+
197
+ def surface_ratio(atom_array: AtomArray, residue_indices: List[int]) -> float:
198
+ """Computes ratio of atoms in specified ratios which are on the protein surface."""
199
+
200
+ residue_mask = np.array([res_id in residue_indices for res_id in atom_array.res_id])
201
+ surface = np.logical_and(residue_mask, sasa(atom_array))
202
+ return sum(surface) / sum(residue_mask)
203
+
204
+
205
+ class MaximizeGlobularity(EnergyTerm):
206
+ def __init__(self) -> None:
207
+ super().__init__()
208
+
209
+ def compute(self, node, folding_result: FoldingResult) -> float:
210
+ start, end = node.get_residue_index_range()
211
+
212
+ backbone = get_backbone_atoms(
213
+ folding_result.atoms[
214
+ np.logical_and(
215
+ folding_result.atoms.res_id >= start,
216
+ folding_result.atoms.res_id < end,
217
+ )
218
+ ]
219
+ ).coord
220
+
221
+ return float(np.std(distances_to_centroid(backbone)))
222
+
223
+
224
+ def distances_to_centroid(coordinates: np.ndarray) -> np.ndarray:
225
+ """
226
+ Computes the distances from each of the coordinates to the
227
+ centroid of all coordinates.
228
+ """
229
+ assert _is_Nx3(coordinates), "Coordinates must be Nx3."
230
+ center_of_mass = get_center_of_mass(coordinates)
231
+ m = coordinates - center_of_mass
232
+ return np.linalg.norm(m, axis=-1)
233
+
234
+
235
+ class MinimizeCRmsd(EnergyTerm):
236
+ def __init__(self, template: AtomArray, backbone_only: bool = False) -> None:
237
+ super().__init__()
238
+
239
+ self.template: AtomArray = template
240
+ self.backbone_only: bool = backbone_only
241
+ if self.backbone_only:
242
+ self.template = get_backbone_atoms(template)
243
+
244
+ def compute(self, node, folding_result: FoldingResult) -> float:
245
+ start, end = node.get_residue_index_range()
246
+
247
+ atoms = get_atomarray_in_residue_range(folding_result.atoms, start, end)
248
+
249
+ if self.backbone_only:
250
+ atoms = get_backbone_atoms(atoms)
251
+
252
+ return crmsd(self.template, atoms)
253
+
254
+
255
+ def crmsd(atom_array_a: AtomArray, atom_array_b: AtomArray) -> float:
256
+ # TODO(scandido): Add this back.
257
+ # atom_array_a = canonicalize_within_residue_atom_order(atom_array_a)
258
+ # atom_array_b = canonicalize_within_residue_atom_order(atom_array_b)
259
+ superimposed_atom_array_b_onto_a, _ = superimpose(atom_array_a, atom_array_b)
260
+ return float(rmsd(atom_array_a, superimposed_atom_array_b_onto_a).mean())
261
+
262
+
263
+ class MinimizeDRmsd(EnergyTerm):
264
+ def __init__(self, template: AtomArray, backbone_only: bool = False) -> None:
265
+ super().__init__()
266
+
267
+ self.template: AtomArray = template
268
+ self.backbone_only: bool = backbone_only
269
+ if self.backbone_only:
270
+ self.template = get_backbone_atoms(template)
271
+
272
+ def compute(self, node, folding_result: FoldingResult) -> float:
273
+ start, end = node.get_residue_index_range()
274
+
275
+ atoms = get_atomarray_in_residue_range(folding_result.atoms, start, end)
276
+
277
+ if self.backbone_only:
278
+ atoms = get_backbone_atoms(atoms)
279
+
280
+ return drmsd(self.template, atoms)
281
+
282
+
283
+ def drmsd(atom_array_a: AtomArray, atom_array_b: AtomArray) -> float:
284
+ # TODO(scandido): Add this back.
285
+ # atom_array_a = canonicalize_within_residue_atom_order(atom_array_a)
286
+ # atom_array_b = canonicalize_within_residue_atom_order(atom_array_b)
287
+
288
+ dp = pairwise_distances(atom_array_a.coord)
289
+ dq = pairwise_distances(atom_array_b.coord)
290
+
291
+ return float(np.sqrt(((dp - dq) ** 2).mean()))
292
+
293
+
294
+ def pairwise_distances(coordinates: np.ndarray) -> np.ndarray:
295
+ assert _is_Nx3(coordinates), "Coordinates must be Nx3."
296
+ m = coordinates[:, np.newaxis, :] - coordinates[np.newaxis, :, :]
297
+ distance_matrix = np.linalg.norm(m, axis=-1)
298
+ return distance_matrix[np.triu_indices(distance_matrix.shape[0], k=1)]
299
+
300
+
301
+ class MatchSecondaryStructure(EnergyTerm):
302
+ def __init__(self, secondary_structure_element: str) -> None:
303
+ super().__init__()
304
+ self.secondary_structure_element = secondary_structure_element
305
+
306
+ def compute(self, node, folding_result: FoldingResult) -> float:
307
+ start, end = node.get_residue_index_range()
308
+
309
+ subprotein = folding_result.atoms[
310
+ np.logical_and(
311
+ folding_result.atoms.res_id >= start,
312
+ folding_result.atoms.res_id < end,
313
+ )
314
+ ]
315
+ sse = annotate_sse(subprotein)
316
+
317
+ return np.mean(sse != self.secondary_structure_element)
weight/esm-main/examples/protein-programming-language/language/folding_callbacks.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 abc import ABC, abstractmethod
7
+ from dataclasses import dataclass
8
+ from io import StringIO
9
+ from typing import List
10
+
11
+ import esm
12
+ import torch
13
+ from biotite.structure import AtomArray
14
+ import numpy as np
15
+ from openfold.np.residue_constants import atom_order
16
+ from torch.utils._pytree import tree_map
17
+
18
+ from language.utilities import pdb_file_to_atomarray
19
+
20
+
21
+ @dataclass
22
+ class FoldingResult:
23
+ atoms: AtomArray
24
+ ptm: float
25
+ plddt: float
26
+
27
+
28
+ class FoldingCallback(ABC):
29
+ "Interface for running ESMFold and other folding methods."
30
+
31
+ def __init__(self) -> None:
32
+ pass
33
+
34
+ @abstractmethod
35
+ def load(self, device: str) -> None:
36
+ pass
37
+
38
+ @abstractmethod
39
+ def fold(self, sequence: str, residue_indices: List[int]) -> FoldingResult:
40
+ pass
41
+
42
+
43
+ class EsmFoldv1(FoldingCallback):
44
+ "Runs ESMFold v1.0."
45
+
46
+ def __init__(self) -> None:
47
+ super().__init__()
48
+
49
+ self.model = None
50
+
51
+ def load(self, device: str) -> None:
52
+ self.model = esm.pretrained.esmfold_v1().eval()
53
+ self.model = self.model.to(device)
54
+
55
+ def fold(self, sequence: str, residue_indices: List[int]) -> FoldingResult:
56
+ assert self.model is not None, "Must call load() before fold()."
57
+
58
+ # TODO: Current `esm.esmfold.v1.misc.output_to_pdb()` adds 1 to the `residx`
59
+ # mistakenly, just subtract 1 for now but fix in a later version.
60
+ residue_indices = np.array(residue_indices) - 1
61
+
62
+ raw_output = self.model.infer(
63
+ sequence, residx=torch.Tensor(residue_indices).long().reshape(1, -1),
64
+ )
65
+ raw_output = tree_map(lambda x: x.to("cpu"), raw_output)
66
+
67
+ pdb_string = esm.esmfold.v1.misc.output_to_pdb(raw_output)[0]
68
+ atoms: AtomArray = pdb_file_to_atomarray(StringIO(pdb_string))
69
+
70
+ plddt = raw_output["plddt"]
71
+ plddt = plddt[0, ...].numpy()
72
+ plddt = plddt.transpose()
73
+ plddt = plddt[atom_order["CA"], :]
74
+ plddt = float(plddt.mean()) / 100.0
75
+
76
+ ptm = float(raw_output["ptm"])
77
+
78
+ return FoldingResult(atoms=atoms, ptm=ptm, plddt=plddt)
weight/esm-main/examples/protein-programming-language/language/optimize.py ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ from dataclasses import dataclass
8
+
9
+ import numpy as np
10
+ from rich.live import Live
11
+ from rich.table import Table
12
+
13
+ from language.folding_callbacks import FoldingCallback
14
+ from language.program import ProgramNode
15
+
16
+
17
+ @dataclass
18
+ class MetropolisHastingsState:
19
+ program: ProgramNode
20
+ temperature: float
21
+ annealing_rate: float
22
+ num_steps: int
23
+ candidate_energy: float
24
+ candidate_energy_term_fn_values: list
25
+ current_energy: float
26
+ current_energy_term_fn_values: list
27
+ best_energy: float
28
+ best_energy_term_fn_values: list
29
+
30
+
31
+ def metropolis_hastings_step(
32
+ state: MetropolisHastingsState,
33
+ folding_callback: FoldingCallback,
34
+ verbose: bool = False,
35
+ ) -> MetropolisHastingsState:
36
+ temperature = state.temperature * state.annealing_rate
37
+
38
+ candidate: ProgramNode = deepcopy(state.program)
39
+ candidate.mutate()
40
+
41
+ sequence, residue_indices = candidate.get_sequence_and_set_residue_index_ranges()
42
+ folding_output = folding_callback.fold(sequence, residue_indices)
43
+
44
+ energy_term_fns = candidate.get_energy_term_functions()
45
+ candidate_energy_term_fn_values = [
46
+ (name, weight, energy_fn(folding_output)) for name, weight, energy_fn in energy_term_fns
47
+ ]
48
+ # TODO(scandido): Log these.
49
+ candidate_energy: float = sum(
50
+ [weight * value for _, weight, value in candidate_energy_term_fn_values]
51
+ )
52
+
53
+ accept_candidate = False
54
+ if state.current_energy is None:
55
+ accept_candidate = True
56
+ else:
57
+ # NOTE(scandido): We are minimizing the function here so instead of
58
+ # candidate - current we do -1 * (candidate - current) = -candidate + current.
59
+ energy_differential: float = -candidate_energy + state.current_energy
60
+ accept_probability: float = np.clip(
61
+ # NOTE(scandido): We approximate the ratio of transition probabilities from
62
+ # current to candidate vs. candidate to current to be equal, which is
63
+ # approximately correct.
64
+ np.exp(energy_differential / temperature),
65
+ a_min=None,
66
+ a_max=1.0,
67
+ )
68
+ accept_candidate: bool = np.random.uniform() < accept_probability
69
+
70
+ if accept_candidate and verbose:
71
+ print(f"Accepted {sequence} with energy {candidate_energy:.2f}.")
72
+
73
+ best = (state.best_energy is None) or candidate_energy < state.best_energy
74
+
75
+ return MetropolisHastingsState(
76
+ program=candidate if accept_candidate else state.program,
77
+ temperature=temperature,
78
+ annealing_rate=state.annealing_rate,
79
+ num_steps=state.num_steps + 1,
80
+ candidate_energy=candidate_energy,
81
+ candidate_energy_term_fn_values=candidate_energy_term_fn_values,
82
+ current_energy=candidate_energy if accept_candidate else state.current_energy,
83
+ current_energy_term_fn_values=candidate_energy_term_fn_values
84
+ if accept_candidate
85
+ else state.current_energy_term_fn_values,
86
+ best_energy=candidate_energy if best else state.best_energy,
87
+ best_energy_term_fn_values=candidate_energy_term_fn_values
88
+ if best
89
+ else state.best_energy_term_fn_values,
90
+ )
91
+
92
+
93
+ def run_simulated_annealing(
94
+ program: ProgramNode,
95
+ initial_temperature: float,
96
+ annealing_rate: float,
97
+ total_num_steps: int,
98
+ folding_callback: FoldingCallback,
99
+ display_progress: bool = True,
100
+ progress_verbose_print: bool = False,
101
+ ) -> ProgramNode:
102
+ # TODO(scandido): Track accept rate.
103
+
104
+ state = MetropolisHastingsState(
105
+ program=program,
106
+ temperature=initial_temperature,
107
+ annealing_rate=annealing_rate,
108
+ num_steps=0,
109
+ candidate_energy=None,
110
+ candidate_energy_term_fn_values=None,
111
+ current_energy=None,
112
+ current_energy_term_fn_values=None,
113
+ best_energy=None,
114
+ best_energy_term_fn_values=None,
115
+ )
116
+
117
+ def _generate_table(state):
118
+ table = Table()
119
+ table.add_column("Energy name")
120
+ table.add_column("Weight")
121
+ table.add_column("Candidate Value")
122
+ table.add_column("Current Value")
123
+ table.add_column("Best Value")
124
+ if state.current_energy_term_fn_values is None:
125
+ return table
126
+ for (name, weight, candidate_value), (_, _, current_value), (_, _, best_value) in zip(
127
+ state.candidate_energy_term_fn_values,
128
+ state.current_energy_term_fn_values,
129
+ state.best_energy_term_fn_values,
130
+ ):
131
+ table.add_row(
132
+ name,
133
+ f"{weight:.2f}",
134
+ f"{candidate_value:.2f}",
135
+ f"{current_value:.2f}",
136
+ f"{best_value:.2f}",
137
+ )
138
+ table.add_row(
139
+ "Energy",
140
+ "",
141
+ f"{state.candidate_energy:.2f}",
142
+ f"{state.current_energy:.2f}",
143
+ f"{state.best_energy:.2f}",
144
+ )
145
+ table.add_row("Iterations", "", f"{state.num_steps} / {total_num_steps}")
146
+ return table
147
+
148
+ with Live() as live:
149
+ for _ in range(1, total_num_steps + 1):
150
+ state = metropolis_hastings_step(
151
+ state,
152
+ folding_callback,
153
+ verbose=progress_verbose_print,
154
+ )
155
+ if display_progress:
156
+ live.update(_generate_table(state))
157
+
158
+ return state.program
weight/esm-main/examples/protein-programming-language/language/program.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 functools import partial
7
+ from typing import Callable, List, Optional, Tuple
8
+
9
+ import numpy as np
10
+
11
+ from language.energy import EnergyTerm
12
+ from language.folding_callbacks import FoldingResult
13
+ from language.sequence import SequenceSegmentFactory
14
+
15
+ MULTIMER_RESIDUE_INDEX_SKIP_LENGTH: int = 1000
16
+
17
+
18
+ class ProgramNode:
19
+ def __init__(
20
+ self,
21
+ children: List["ProgramNode"] = None,
22
+ sequence_segment: SequenceSegmentFactory = None,
23
+ children_are_different_chains: bool = False,
24
+ energy_function_terms: List[EnergyTerm] = [],
25
+ energy_function_weights: Optional[List[float]] = None,
26
+ ) -> None:
27
+ self.children: Optional[List["ProgramNode"]] = children
28
+ self.sequence_segment: SequenceSegmentFactory = sequence_segment
29
+ self.children_are_different_chains: bool = children_are_different_chains
30
+ self.energy_function_terms: List[energy_function_terms] = energy_function_terms
31
+ self.energy_function_weights: List[
32
+ float
33
+ ] = energy_function_weights if energy_function_weights else [
34
+ 1.0 for _ in self.energy_function_terms
35
+ ]
36
+ if self.energy_function_weights:
37
+ assert len(self.energy_function_terms) == len(
38
+ self.energy_function_weights
39
+ ), "One must have the same number of energy function terms and weights on a node."
40
+
41
+ self.residue_index_range: Optional[Tuple[int, int]] = None
42
+
43
+ def get_sequence_and_set_residue_index_ranges(
44
+ self, residue_index_offset: int = 1
45
+ ) -> Tuple[str, List[int]]:
46
+ if self.is_leaf_node():
47
+ sequence = self.sequence_segment.get()
48
+ self.residue_index_range = (
49
+ residue_index_offset,
50
+ residue_index_offset + len(sequence),
51
+ )
52
+ return sequence, list(range(*self.residue_index_range))
53
+
54
+ offset: int = residue_index_offset
55
+ sequence = ""
56
+ residue_indices = []
57
+ for child in self.children:
58
+ (
59
+ sequence_segment,
60
+ residue_indices_segment,
61
+ ) = child.get_sequence_and_set_residue_index_ranges(
62
+ residue_index_offset=offset
63
+ )
64
+ sequence += sequence_segment
65
+ residue_indices += residue_indices_segment
66
+ offset = residue_indices[-1] + 1
67
+ if self.children_are_different_chains:
68
+ offset += MULTIMER_RESIDUE_INDEX_SKIP_LENGTH
69
+ self.residue_index_range = (residue_indices[0], residue_indices[-1] + 1)
70
+ return sequence, residue_indices
71
+
72
+ def get_residue_index_range(self) -> Tuple[int, int]:
73
+ assert (
74
+ self.residue_index_range
75
+ ), "Must call get_sequence_and_set_residue_index_ranges() first."
76
+ return self.residue_index_range
77
+
78
+ def get_children(self) -> List["ProgramNode"]:
79
+ return self.children
80
+
81
+ def is_leaf_node(self) -> bool:
82
+ return self.children is None
83
+
84
+ def get_energy_term_functions(
85
+ self, name_prefix: str = ""
86
+ ) -> List[Tuple[str, float, Callable[[FoldingResult], float]]]:
87
+ name_prefix = name_prefix if name_prefix else "root"
88
+
89
+ terms = [
90
+ (
91
+ f"{name_prefix}:{type(term).__name__}",
92
+ weight,
93
+ partial(term.compute, self),
94
+ )
95
+ for weight, term in zip(
96
+ self.energy_function_weights, self.energy_function_terms
97
+ )
98
+ ]
99
+
100
+ if self.is_leaf_node():
101
+ return terms
102
+
103
+ for i, child in enumerate(self.children):
104
+ terms += child.get_energy_term_functions(
105
+ name_prefix=name_prefix + f".n{i+1}"
106
+ )
107
+
108
+ return terms
109
+
110
+ def mutate(self) -> None:
111
+ if self.is_leaf_node():
112
+ return self.sequence_segment.mutate()
113
+
114
+ weights = np.array(
115
+ [float(child.num_mutation_candidates()) for child in self.children]
116
+ )
117
+ assert (
118
+ weights.sum() > 0
119
+ ), "Some mutations should be possible if mutate() was called."
120
+ child_to_mutate = np.random.choice(self.children, p=weights / weights.sum())
121
+ child_to_mutate.mutate()
122
+
123
+ def num_mutation_candidates(self) -> int:
124
+ if self.is_leaf_node():
125
+ return self.sequence_segment.num_mutation_candidates()
126
+
127
+ return sum([child.num_mutation_candidates() for child in self.children])
weight/esm-main/examples/protein-programming-language/language/sequence.py ADDED
@@ -0,0 +1,221 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 abc import ABC, abstractmethod
7
+ from copy import deepcopy
8
+ from typing import List, Union
9
+
10
+ import numpy as np
11
+ from biotite.structure import AtomArray
12
+
13
+ ALL_RESIDUE_TYPES = [
14
+ "A",
15
+ "R",
16
+ "N",
17
+ "D",
18
+ "C",
19
+ "Q",
20
+ "E",
21
+ "G",
22
+ "H",
23
+ "I",
24
+ "L",
25
+ "K",
26
+ "M",
27
+ "F",
28
+ "P",
29
+ "S",
30
+ "T",
31
+ "W",
32
+ "Y",
33
+ "V",
34
+ ]
35
+
36
+ RESIDUE_TYPES_WITHOUT_CYSTEINE = deepcopy(ALL_RESIDUE_TYPES)
37
+ RESIDUE_TYPES_WITHOUT_CYSTEINE.remove("C")
38
+
39
+ RESIDUE_TYPES_1to3 = {
40
+ "A": "ALA",
41
+ "R": "ARG",
42
+ "N": "ASN",
43
+ "D": "ASP",
44
+ "C": "CYS",
45
+ "Q": "GLN",
46
+ "E": "GLU",
47
+ "G": "GLY",
48
+ "H": "HIS",
49
+ "I": "ILE",
50
+ "L": "LEU",
51
+ "K": "LYS",
52
+ "M": "MET",
53
+ "F": "PHE",
54
+ "P": "PRO",
55
+ "S": "SER",
56
+ "T": "THR",
57
+ "W": "TRP",
58
+ "Y": "TYR",
59
+ "V": "VAL",
60
+ }
61
+ RESIDUE_TYPES_3to1 = {v: k for k, v in RESIDUE_TYPES_1to3.items()}
62
+
63
+
64
+ class SequenceSegmentFactory(ABC):
65
+ def __init__(self) -> None:
66
+ pass
67
+
68
+ @abstractmethod
69
+ def get(self) -> str:
70
+ pass
71
+
72
+ @abstractmethod
73
+ def mutate(self) -> None:
74
+ pass
75
+
76
+ @abstractmethod
77
+ def num_mutation_candidates(self) -> int:
78
+ pass
79
+
80
+
81
+ class ConstantSequenceSegment(SequenceSegmentFactory):
82
+ def __init__(self, sequence: str) -> None:
83
+ super().__init__()
84
+ self.sequence = sequence
85
+
86
+ def get(self) -> str:
87
+ return self.sequence
88
+
89
+ def mutate(self) -> None:
90
+ pass
91
+
92
+ def num_mutation_candidates(self) -> int:
93
+ return 0
94
+
95
+
96
+ class FixedLengthSequenceSegment(SequenceSegmentFactory):
97
+ def __init__(
98
+ self, initial_sequence: Union[str, int], disallow_mutations_to_cysteine=True,
99
+ ) -> None:
100
+ super().__init__()
101
+ self.mutation_residue_types = (
102
+ RESIDUE_TYPES_WITHOUT_CYSTEINE
103
+ if disallow_mutations_to_cysteine
104
+ else ALL_RESIDUE_TYPES
105
+ )
106
+
107
+ self.sequence = (
108
+ initial_sequence
109
+ if type(initial_sequence) == str
110
+ else random_sequence(
111
+ length=initial_sequence, corpus=self.mutation_residue_types
112
+ )
113
+ )
114
+
115
+ def get(self) -> str:
116
+ return self.sequence
117
+
118
+ def mutate(self) -> None:
119
+ self.sequence = substitute_one_amino_acid(
120
+ self.sequence, self.mutation_residue_types
121
+ )
122
+
123
+ def num_mutation_candidates(self) -> int:
124
+ return len(self.sequence)
125
+
126
+
127
+ def substitute_one_amino_acid(sequence: str, corpus: List[str]) -> str:
128
+ sequence = list(sequence)
129
+ index = np.random.choice(len(sequence))
130
+ sequence[index] = np.random.choice(corpus)
131
+ return "".join(sequence)
132
+
133
+
134
+ def random_sequence(length: int, corpus: List[str]) -> str:
135
+ "Generate a random sequence using amino acids in corpus."
136
+
137
+ return "".join([np.random.choice(corpus) for _ in range(length)])
138
+
139
+
140
+ def sequence_from_atomarray(atoms: AtomArray) -> str:
141
+ return "".join(
142
+ [RESIDUE_TYPES_3to1[aa] for aa in atoms[atoms.atom_name == "CA"].res_name]
143
+ )
144
+
145
+
146
+ class VariableLengthSequenceSegment(SequenceSegmentFactory):
147
+ def __init__(
148
+ self,
149
+ initial_sequence: Union[str, int],
150
+ disallow_mutations_to_cysteine=True,
151
+ mutation_operation_probabilities: List[float] = [
152
+ 3., # Substitution weight.
153
+ 1., # Deletion weight.
154
+ 1., # Insertion weight.
155
+ ],
156
+ ) -> None:
157
+ super().__init__()
158
+ self.mutation_residue_types = (
159
+ RESIDUE_TYPES_WITHOUT_CYSTEINE
160
+ if disallow_mutations_to_cysteine
161
+ else ALL_RESIDUE_TYPES
162
+ )
163
+
164
+ self.sequence = (
165
+ initial_sequence
166
+ if type(initial_sequence) == str
167
+ else random_sequence(
168
+ length=initial_sequence, corpus=self.mutation_residue_types
169
+ )
170
+ )
171
+
172
+ self.mutation_operation_probabilities = np.array(mutation_operation_probabilities)
173
+ self.mutation_operation_probabilities /= self.mutation_operation_probabilities.sum()
174
+
175
+ def get(self) -> str:
176
+ return self.sequence
177
+
178
+ def mutate(self) -> None:
179
+ mutation_operation = np.random.choice(
180
+ [
181
+ self._mutate_substitution,
182
+ self._mutate_deletion,
183
+ self._mutate_insertion,
184
+ ],
185
+ p=self.mutation_operation_probabilities,
186
+ )
187
+ mutation_operation()
188
+
189
+ def _mutate_substitution(self) -> str:
190
+ self.sequence = substitute_one_amino_acid(
191
+ self.sequence, self.mutation_residue_types
192
+ )
193
+
194
+ def _mutate_deletion(self) -> str:
195
+ self.sequence = delete_one_amino_acid(self.sequence)
196
+
197
+ def _mutate_insertion(self) -> str:
198
+ self.sequence = insert_one_amino_acid(
199
+ self.sequence, self.mutation_residue_types
200
+ )
201
+
202
+ def num_mutation_candidates(self) -> int:
203
+ # NOTE(brianhie): This should be `3*len(self.sequence) + 1`,
204
+ # since there are `len(self.sequence)` substitutions and
205
+ # deletions, and `len(self.sequence) + 1` insertions.
206
+ # However, as this is used to weight sequence segments for
207
+ # mutations when combined into a multi-segment program, we
208
+ # just weight by `len(self.sequence)` for now.
209
+ return len(self.sequence)
210
+
211
+
212
+ def delete_one_amino_acid(sequence: str) -> str:
213
+ index = np.random.choice(len(sequence))
214
+ return sequence[:index] + sequence[index + 1 :]
215
+
216
+
217
+ def insert_one_amino_acid(sequence: str, corpus: List[str]) -> str:
218
+ n = len(sequence)
219
+ index = np.random.randint(0, n) if n > 0 else 0
220
+ insertion = np.random.choice(corpus)
221
+ return sequence[:index] + insertion + sequence[index:]
weight/esm-main/examples/protein-programming-language/programs/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from programs.symmetric_binding import symmetric_binding_il10
weight/esm-main/examples/sup_variant_prediction.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.40_.50_plddt_.50_.60.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.40_.50_plddt_.50_.60.npz
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.50_.60.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.50_.60.npz
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.50_.60_plddt_.70_.80.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.50_.60_plddt_.70_.80.npz
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.50_.60.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.50_.60.npz
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.60_.70.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.60_.70.npz
weight/esm-main/scripts/atlas/v0/full/esm2_embeddings/backfill_v0_tm_.60_.70_plddt_.70_.80.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://dl.fbaipublicfiles.com/esmatlas/v0/full/lm_reps/backfill_v0_tm_.60_.70_plddt_.70_.80.npz