deploy: 39671441e6
4
.buildinfo
Normal file
@@ -0,0 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: d863a2c2f8f3a679a5adc573142573ee
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
134
_downloads/116890bff444a89b246022948903f366/1mg5_motif.pdb
Normal file
@@ -0,0 +1,134 @@
|
||||
CRYST1 47.481 69.519 75.923 90.00 89.13 90.00 P 1 21 1 4
|
||||
ATOM 1 N ASN A 108 6.311 1.792 26.271 1.00 6.93 A N
|
||||
ATOM 2 CA ASN A 108 7.362 0.812 26.542 1.00 7.80 A C
|
||||
ATOM 3 C ASN A 108 8.789 1.315 26.515 1.00 7.37 A C
|
||||
ATOM 4 O ASN A 108 9.615 0.745 27.263 1.00 7.92 A O
|
||||
ATOM 5 CB ASN A 108 7.222 -0.350 25.542 1.00 7.47 A C
|
||||
ATOM 6 CG ASN A 108 5.909 -1.103 25.688 1.00 8.43 A C
|
||||
ATOM 7 ND2 ASN A 108 5.837 -2.204 24.938 1.00 9.37 A N
|
||||
ATOM 8 OD1 ASN A 108 4.994 -0.716 26.425 1.00 8.78 A O
|
||||
ATOM 9 N SER A 139 11.946 -7.735 28.881 1.00 7.91 A N
|
||||
ATOM 10 CA SER A 139 11.243 -8.894 28.345 1.00 6.31 A C
|
||||
ATOM 11 C SER A 139 12.249 -9.778 27.628 1.00 6.10 A C
|
||||
ATOM 12 O SER A 139 13.146 -9.244 26.998 1.00 6.38 A O
|
||||
ATOM 13 CB SER A 139 10.186 -8.485 27.326 1.00 6.84 A C
|
||||
ATOM 14 OG SER A 139 9.626 -9.526 26.577 1.00 7.87 A O
|
||||
ATOM 15 N TYR A 152 6.270 -4.172 19.447 1.00 7.62 A N
|
||||
ATOM 16 CA TYR A 152 6.517 -4.451 20.861 1.00 8.55 A C
|
||||
ATOM 17 C TYR A 152 7.895 -5.020 21.138 1.00 8.46 A C
|
||||
ATOM 18 O TYR A 152 8.626 -4.566 22.020 1.00 8.06 A O
|
||||
ATOM 19 CB TYR A 152 5.505 -5.514 21.317 1.00 8.60 A C
|
||||
ATOM 20 CG TYR A 152 5.669 -5.965 22.756 1.00 8.81 A C
|
||||
ATOM 21 CD1 TYR A 152 5.053 -5.282 23.794 1.00 10.00 A C
|
||||
ATOM 22 CD2 TYR A 152 6.418 -7.110 23.027 1.00 9.69 A C
|
||||
ATOM 23 CE1 TYR A 152 5.182 -5.743 25.092 1.00 11.81 A C
|
||||
ATOM 24 CE2 TYR A 152 6.571 -7.565 24.331 1.00 10.16 A C
|
||||
ATOM 25 CZ TYR A 152 5.930 -6.878 25.341 1.00 11.90 A C
|
||||
ATOM 26 OH TYR A 152 6.075 -7.342 26.635 1.00 11.85 A O
|
||||
ATOM 27 N LYS A 156 11.157 -3.578 23.502 1.00 6.62 A N
|
||||
ATOM 28 CA LYS A 156 11.855 -4.275 24.586 1.00 6.26 A C
|
||||
ATOM 29 C LYS A 156 13.333 -4.441 24.311 1.00 6.95 A C
|
||||
ATOM 30 O LYS A 156 14.135 -4.404 25.243 1.00 8.19 A O
|
||||
ATOM 31 CB LYS A 156 11.137 -5.602 24.894 1.00 6.61 A C
|
||||
ATOM 32 CG LYS A 156 9.713 -5.304 25.394 1.00 7.40 A C
|
||||
ATOM 33 CD LYS A 156 9.734 -4.569 26.736 1.00 6.87 A C
|
||||
ATOM 34 CE LYS A 156 8.426 -4.777 27.496 1.00 7.90 A C
|
||||
ATOM 35 NZ LYS A 156 8.450 -4.160 28.866 1.00 5.86 A N
|
||||
TER
|
||||
HETATM 36 C ACT A 900 6.133 -10.820 26.465 1.00 27.70 C C
|
||||
HETATM 37 O ACT A 900 4.981 -11.276 26.557 1.00 26.24 C O
|
||||
HETATM 38 CH3 ACT A 900 7.264 -11.831 26.127 1.00 26.84 C C
|
||||
HETATM 39 OXT ACT A 900 6.644 -9.710 26.628 1.00 26.18 C O
|
||||
HETATM 40 PA NAI A 850 -0.439 -6.036 32.545 1.00 8.40 D P
|
||||
HETATM 41 PN NAI A 850 1.966 -7.637 32.726 1.00 7.63 D P
|
||||
HETATM 42 C1B NAI A 850 0.952 -0.449 33.324 1.00 8.60 D C
|
||||
HETATM 43 C1D NAI A 850 6.323 -6.955 30.774 1.00 7.91 D C
|
||||
HETATM 44 N1A NAI A 850 1.248 4.503 32.297 1.00 9.80 D N
|
||||
HETATM 45 N1N NAI A 850 6.378 -8.339 30.321 1.00 9.76 D N
|
||||
HETATM 46 O1A NAI A 850 -1.207 -5.563 31.364 1.00 8.48 D O
|
||||
HETATM 47 O1N NAI A 850 2.119 -9.001 32.166 1.00 8.62 D O
|
||||
HETATM 48 C2A NAI A 850 1.491 3.792 33.436 1.00 9.05 D C
|
||||
HETATM 49 C2B NAI A 850 -0.437 -1.066 33.616 1.00 7.76 D C
|
||||
HETATM 50 C2D NAI A 850 5.292 -6.053 30.092 1.00 8.32 D C
|
||||
HETATM 51 C2N NAI A 850 5.313 -9.155 30.487 1.00 9.41 D C
|
||||
HETATM 52 O2A NAI A 850 -1.247 -6.688 33.593 1.00 8.93 D O
|
||||
HETATM 53 O2B NAI A 850 -1.384 -0.193 34.215 1.00 8.28 D O
|
||||
HETATM 54 O2D NAI A 850 5.817 -5.566 28.848 1.00 7.48 D O
|
||||
HETATM 55 O2N NAI A 850 1.799 -7.565 34.187 1.00 8.11 D O
|
||||
HETATM 56 C3B NAI A 850 0.048 -2.255 34.447 1.00 7.84 D C
|
||||
HETATM 57 C3D NAI A 850 5.234 -4.910 31.113 1.00 8.72 D C
|
||||
HETATM 58 C3N NAI A 850 5.394 -10.433 29.993 1.00 8.92 D C
|
||||
HETATM 59 N3A NAI A 850 1.388 2.493 33.580 1.00 8.43 D N
|
||||
HETATM 60 O3 NAI A 850 0.723 -6.986 31.988 1.00 8.58 D O
|
||||
HETATM 61 O3B NAI A 850 0.538 -1.833 35.696 1.00 8.14 D O
|
||||
HETATM 62 O3D NAI A 850 6.352 -4.017 30.961 1.00 7.79 D O
|
||||
HETATM 63 C4A NAI A 850 0.993 1.890 32.443 1.00 8.42 D C
|
||||
HETATM 64 C4B NAI A 850 1.244 -2.738 33.597 1.00 8.89 D C
|
||||
HETATM 65 C4D NAI A 850 5.301 -5.680 32.423 1.00 9.20 D C
|
||||
HETATM 66 C4N NAI A 850 6.637 -11.063 29.696 1.00 10.23 D C
|
||||
HETATM 67 O4B NAI A 850 1.741 -1.549 32.924 1.00 8.32 D O
|
||||
HETATM 68 O4D NAI A 850 5.935 -6.954 32.144 1.00 8.59 D O
|
||||
HETATM 69 C5A NAI A 850 0.723 2.470 31.225 1.00 8.55 D C
|
||||
HETATM 70 C5B NAI A 850 0.829 -3.724 32.503 1.00 8.83 D C
|
||||
HETATM 71 C5D NAI A 850 3.980 -5.980 33.114 1.00 8.63 D C
|
||||
HETATM 72 C5N NAI A 850 7.682 -10.119 29.511 1.00 10.37 D C
|
||||
HETATM 73 O5B NAI A 850 0.343 -4.877 33.288 1.00 9.66 D O
|
||||
HETATM 74 O5D NAI A 850 3.117 -6.649 32.186 1.00 9.08 D O
|
||||
HETATM 75 C6A NAI A 850 0.855 3.881 31.160 1.00 9.74 D C
|
||||
HETATM 76 C6N NAI A 850 7.658 -8.817 29.935 1.00 10.42 D C
|
||||
HETATM 77 N6A NAI A 850 0.604 4.555 30.045 1.00 10.21 D N
|
||||
HETATM 78 C7N NAI A 850 4.240 -11.480 30.005 1.00 8.93 D C
|
||||
HETATM 79 N7A NAI A 850 0.356 1.541 30.290 1.00 9.57 D N
|
||||
HETATM 80 N7N NAI A 850 3.189 -11.190 30.791 1.00 9.04 D N
|
||||
HETATM 81 O7N NAI A 850 4.359 -12.517 29.342 1.00 8.26 D O
|
||||
HETATM 82 C8A NAI A 850 0.426 0.370 30.950 1.00 7.80 D C
|
||||
HETATM 83 N9A NAI A 850 0.828 0.535 32.243 1.00 7.46 D N
|
||||
CONECT 36 37 38 39
|
||||
CONECT 37 36
|
||||
CONECT 38 36
|
||||
CONECT 39 36
|
||||
CONECT 40 46 52 60 73
|
||||
CONECT 41 47 55 60 74
|
||||
CONECT 42 49 67 83
|
||||
CONECT 43 45 50 68
|
||||
CONECT 44 48 75
|
||||
CONECT 45 43 51 76
|
||||
CONECT 46 40
|
||||
CONECT 47 41
|
||||
CONECT 48 44 59
|
||||
CONECT 49 42 53 56
|
||||
CONECT 50 43 54 57
|
||||
CONECT 51 45 58
|
||||
CONECT 52 40
|
||||
CONECT 53 49
|
||||
CONECT 54 50
|
||||
CONECT 55 41
|
||||
CONECT 56 49 61 64
|
||||
CONECT 57 50 62 65
|
||||
CONECT 58 51 66 78
|
||||
CONECT 59 48 63
|
||||
CONECT 60 40 41
|
||||
CONECT 61 56
|
||||
CONECT 62 57
|
||||
CONECT 63 59 69 83
|
||||
CONECT 64 56 67 70
|
||||
CONECT 65 57 68 71
|
||||
CONECT 66 58 72
|
||||
CONECT 67 42 64
|
||||
CONECT 68 43 65
|
||||
CONECT 69 63 75 79
|
||||
CONECT 70 64 73
|
||||
CONECT 71 65 74
|
||||
CONECT 72 66 76
|
||||
CONECT 73 40 70
|
||||
CONECT 74 41 71
|
||||
CONECT 75 44 69 77
|
||||
CONECT 76 45 72
|
||||
CONECT 77 75
|
||||
CONECT 78 58 80 81
|
||||
CONECT 79 69 82
|
||||
CONECT 80 78
|
||||
CONECT 81 78
|
||||
CONECT 82 79 83
|
||||
CONECT 83 42 63 82
|
||||
END
|
||||
92
_downloads/27f4ec1ffa121b56b49c66fd0ff5be9d/1euv_lig.pdb
Normal file
@@ -0,0 +1,92 @@
|
||||
ATOM 2 N HIS A 514 3.231 1.208 -1.240 1.00 19.42 A N
|
||||
ATOM 3 CA HIS A 514 1.911 1.858 -1.146 1.00 18.23 A C
|
||||
ATOM 4 C HIS A 514 1.410 2.170 -2.547 1.00 16.65 A C
|
||||
ATOM 5 O HIS A 514 2.223 2.219 -3.470 1.00 18.87 A O
|
||||
ATOM 6 CB HIS A 514 2.084 3.200 -0.401 1.00 18.92 A C
|
||||
ATOM 7 CG HIS A 514 0.793 3.885 -0.097 1.00 19.11 A C
|
||||
ATOM 8 CD2 HIS A 514 0.480 5.175 -0.343 1.00 19.33 A C
|
||||
ATOM 9 ND1 HIS A 514 -0.281 3.307 0.570 1.00 19.64 A N
|
||||
ATOM 10 CE1 HIS A 514 -1.232 4.247 0.679 1.00 20.67 A C
|
||||
ATOM 11 NE2 HIS A 514 -0.784 5.363 0.136 1.00 18.73 A N
|
||||
ATOM 12 N ASP A 531 -4.991 9.875 -2.283 1.00 18.01 A N
|
||||
ATOM 13 CA ASP A 531 -4.198 8.868 -1.542 1.00 17.65 A C
|
||||
ATOM 14 C ASP A 531 -5.028 8.515 -0.313 1.00 17.93 A C
|
||||
ATOM 15 O ASP A 531 -5.344 9.384 0.513 1.00 19.21 A O
|
||||
ATOM 16 CB ASP A 531 -2.843 9.512 -1.268 1.00 18.96 A C
|
||||
ATOM 17 CG ASP A 531 -1.823 8.638 -0.562 1.00 19.66 A C
|
||||
ATOM 18 OD1 ASP A 531 -2.229 7.763 0.218 1.00 20.25 A O
|
||||
ATOM 19 OD2 ASP A 531 -0.605 8.900 -0.780 1.00 19.95 A O1-
|
||||
ATOM 20 N GLN A 574 -7.907 4.613 4.461 1.00 20.37 A N
|
||||
ATOM 21 CA GLN A 574 -7.953 3.179 4.855 1.00 21.00 A C
|
||||
ATOM 22 C GLN A 574 -7.671 3.054 6.344 1.00 21.03 A C
|
||||
ATOM 23 O GLN A 574 -6.759 3.718 6.872 1.00 20.78 A O
|
||||
ATOM 24 CB GLN A 574 -6.902 2.474 3.981 1.00 21.23 A C
|
||||
ATOM 25 CG GLN A 574 -5.460 2.863 4.335 1.00 22.92 A C
|
||||
ATOM 26 CD GLN A 574 -4.523 2.355 3.261 1.00 23.64 A C
|
||||
ATOM 27 NE2 GLN A 574 -3.727 1.344 3.595 1.00 24.35 A N
|
||||
ATOM 28 OE1 GLN A 574 -4.554 2.817 2.125 1.00 23.51 A O
|
||||
ATOM 29 N ASP A 579 -4.972 -2.251 2.419 1.00 16.24 A N
|
||||
ATOM 30 CA ASP A 579 -6.009 -1.965 1.401 1.00 15.40 A C
|
||||
ATOM 31 C ASP A 579 -5.673 -0.876 0.414 1.00 15.59 A C
|
||||
ATOM 32 O ASP A 579 -6.577 -0.537 -0.384 1.00 16.28 A O
|
||||
ATOM 33 CB ASP A 579 -7.339 -1.639 2.096 1.00 16.76 A C
|
||||
ATOM 34 CG ASP A 579 -8.180 -2.869 2.367 1.00 18.53 A C
|
||||
ATOM 35 OD1 ASP A 579 -8.022 -3.926 1.704 1.00 18.83 A O
|
||||
ATOM 36 OD2 ASP A 579 -9.038 -2.793 3.279 1.00 20.44 A O1-
|
||||
ATOM 37 N CYS A 580 -4.482 -0.303 0.456 1.00 14.58 A N
|
||||
ATOM 38 CA CYS A 580 -4.229 0.856 -0.451 1.00 14.75 A C
|
||||
ATOM 39 C CYS A 580 -4.592 0.525 -1.890 1.00 15.30 A C
|
||||
ATOM 40 O CYS A 580 -5.133 1.439 -2.570 1.00 15.92 A O
|
||||
ATOM 41 CB CYS A 580 -2.811 1.409 -0.381 1.00 16.92 A C
|
||||
ATOM 42 SG CYS A 580 -1.587 0.078 -0.708 1.00 15.01 A S
|
||||
ATOM 43 N GLY A 581 -4.214 -0.616 -2.427 1.00 15.26 A N
|
||||
ATOM 44 CA GLY A 581 -4.496 -0.901 -3.873 1.00 15.15 A C
|
||||
ATOM 45 C GLY A 581 -6.031 -0.979 -4.060 1.00 12.80 A C
|
||||
ATOM 46 O GLY A 581 -6.496 -0.558 -5.161 1.00 16.14 A O
|
||||
TER
|
||||
HETATM 47 C2 l:g B 1 0.721 0.361 2.697 1.00 0.00 B C
|
||||
HETATM 48 O3 l:g B 1 -2.014 -0.494 1.873 1.00 0.00 B O
|
||||
HETATM 49 C4 l:g B 1 -0.420 -1.974 0.850 1.00 0.00 B C
|
||||
HETATM 50 C5 l:g B 1 0.633 -2.135 -0.222 1.00 0.00 B C
|
||||
HETATM 51 C8 l:g B 1 -0.950 -0.521 0.955 1.00 0.00 B C
|
||||
HETATM 52 C12 l:g B 1 1.587 -0.654 3.148 1.00 0.00 B C
|
||||
HETATM 53 C13 l:g B 1 2.184 -0.571 4.411 1.00 0.00 B C
|
||||
HETATM 54 O14 l:g B 1 2.997 -1.544 4.811 1.00 0.00 B O
|
||||
HETATM 55 C15 l:g B 1 3.599 -1.534 5.994 1.00 0.00 B C
|
||||
HETATM 56 C16 l:g B 1 3.396 -0.477 6.884 1.00 0.00 B C
|
||||
HETATM 57 C17 l:g B 1 2.549 0.578 6.518 1.00 0.00 B C
|
||||
HETATM 58 C18 l:g B 1 1.924 0.537 5.251 1.00 0.00 B C
|
||||
HETATM 59 C19 l:g B 1 1.061 1.550 4.794 1.00 0.00 B C
|
||||
HETATM 60 C20 l:g B 1 2.333 1.717 7.480 1.00 0.00 B C
|
||||
HETATM 61 O21 l:g B 1 4.358 -2.487 6.314 1.00 0.00 B O
|
||||
HETATM 62 C22 l:g B 1 0.472 1.457 3.531 1.00 0.00 B C
|
||||
HETATM 63 C23 l:g B 1 0.259 -2.375 -1.555 1.00 0.00 B C
|
||||
HETATM 64 C24 l:g B 1 1.235 -2.502 -2.549 1.00 0.00 B C
|
||||
HETATM 65 C25 l:g B 1 2.589 -2.391 -2.220 1.00 0.00 B C
|
||||
HETATM 66 C26 l:g B 1 2.969 -2.152 -0.897 1.00 0.00 B C
|
||||
HETATM 67 C27 l:g B 1 1.997 -2.024 0.100 1.00 0.00 B C
|
||||
HETATM 68 O1 l:g B 1 0.085 0.352 1.440 1.00 0.00 B O
|
||||
CONECT 42 51
|
||||
CONECT 47 52 62 68
|
||||
CONECT 48 51
|
||||
CONECT 49 50 51
|
||||
CONECT 50 49 63 67
|
||||
CONECT 51 42 48 49 68
|
||||
CONECT 52 47 53
|
||||
CONECT 53 52 54 58
|
||||
CONECT 54 53 55
|
||||
CONECT 55 54 56 61
|
||||
CONECT 56 55 57
|
||||
CONECT 57 56 58 60
|
||||
CONECT 58 53 57 59
|
||||
CONECT 59 58 62
|
||||
CONECT 60 57
|
||||
CONECT 61 55
|
||||
CONECT 62 47 59
|
||||
CONECT 63 50 64
|
||||
CONECT 64 63 65
|
||||
CONECT 65 64 66
|
||||
CONECT 66 65 67
|
||||
CONECT 67 50 66
|
||||
CONECT 68 47 51
|
||||
END
|
||||
2479
_downloads/7139234acf03adc9c05848b41899ac03/4zxb_cropped.pdb
Normal file
2141
_downloads/d75aeb1cb0cfa6169b50cc036069e6da/2r5z.pdb
Normal file
BIN
_images/1mg5_final.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
_images/1mg5_redesign_final.png
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
_images/1mg5_theozyme_final.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
_images/400bb_rfd3_inference_settings_designability.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
_images/400bb_rfd3_inference_settings_diversity.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
_images/400bb_rfd3_inference_settings_secondary_structure.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
_images/RASA_ligand.png
Normal file
|
After Width: | Height: | Size: 322 KiB |
BIN
_images/RASA_output.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
_images/aligning_dna_strands.png
Normal file
|
After Width: | Height: | Size: 225 KiB |
BIN
_images/compare_ori_tokens.png
Normal file
|
After Width: | Height: | Size: 398 KiB |
BIN
_images/enzyme_ori_token.png
Normal file
|
After Width: | Height: | Size: 468 KiB |
BIN
_images/example_output_fixed_ori.png
Normal file
|
After Width: | Height: | Size: 749 KiB |
BIN
_images/example_output_w_hotspots.png
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
_images/fixed_and_unfixed_residues.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
_images/hotspots.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
_images/input_selection.png
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
_images/input_selection_large.png
Normal file
|
After Width: | Height: | Size: 263 KiB |
BIN
_images/ori_token_input_structure.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
_images/partial_diff.png
Normal file
|
After Width: | Height: | Size: 804 KiB |
BIN
_images/possible_output_structure_0.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
_images/select_fixed_atoms.png
Normal file
|
After Width: | Height: | Size: 395 KiB |
BIN
_images/unfix_ligands.png
Normal file
|
After Width: | Height: | Size: 187 KiB |
BIN
_images/unindexed_motif.png
Normal file
|
After Width: | Height: | Size: 284 KiB |
5
_sources/contributing_link.rst.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
CONTRIBUTING
|
||||
============
|
||||
|
||||
.. include:: ../../CONTRIBUTING.md
|
||||
:parser: myst_parser.sphinx_
|
||||
26
_sources/index.rst.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
.. foundry documentation master file, created by
|
||||
sphinx-quickstart on Wed Dec 17 16:36:38 2025.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Welcome to the official documentation for Foundry
|
||||
=================================================
|
||||
|
||||
`Foundry <https://github.com/RosettaCommons/foundry/tree/production>`_ is a home for
|
||||
many of the machine learning models produced by `Rosetta Commons member labs <https://rosettacommons.org/about/labs/>`_.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: General
|
||||
|
||||
license_link.rst
|
||||
installation_faq.md
|
||||
contributing_link.rst
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Models
|
||||
|
||||
models/rfd3/index
|
||||
models/rf3/index
|
||||
models/mpnn/index
|
||||
14
_sources/installation_faq.md.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
# Common Installation Issues
|
||||
|
||||
<details>
|
||||
<summary><strong>Installation on NVIDIA GeForce RTX 5060 - Blackwell architecture</strong></summary>
|
||||
Taken from [Issue #105](https://github.com/RosettaCommons/foundry/issues/105):
|
||||
If, when installing any of the models included in foundry, you get an error related to CUDA (see linked issue for examples) try installing a version of torch, torchvision and torchaudio that matches your python and CUDA distribution. For CUDA, choose the next lowest available library if there is not a version that matches your exact CUDA build.
|
||||
|
||||
For example:
|
||||
```
|
||||
pip install torch==2.9.1+cu128 torchvision==0.24.1+cu128 torchaudio==2.9.1+cu128 --extra-index-url https://download.pytorch.org/whl/cu128
|
||||
```
|
||||
This is for Python 2.9.1 and CUDA 12.8.
|
||||
|
||||
</details>
|
||||
5
_sources/license_link.rst.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
LICENSE
|
||||
=======
|
||||
|
||||
.. include:: ../../LICENSE.md
|
||||
:parser: myst_parser.sphinx_
|
||||
22
_sources/models/mpnn/index.md.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
# MPNN Documentation
|
||||
|
||||
```{warning}
|
||||
The documentation for the MPNN model is currently incomplete.
|
||||
If you would like to contribute, feel free to open a PR.
|
||||
```
|
||||
```{warning}
|
||||
The MPNN model is still being benchmarked for comparison to the
|
||||
original ProteinMPNN, LigandMPNN, and SolubleMPNN implementations.
|
||||
```
|
||||
|
||||
The MPNN model in [foundry](https://github.com/RosettaCommons/foundry)
|
||||
has all of the functionality of [ProteinMPNN](https://www.science.org/doi/10.1126/science.add2187),
|
||||
[LigandMPNN](https://www.nature.com/articles/s41592-025-02626-1),
|
||||
and [SolubleMPNN](https://www.nature.com/articles/s41586-024-07601-y),
|
||||
but with the backend support of [atomworks](https://github.com/RosettaCommons/atomworks) and
|
||||
[foundry](https://github.com/RosettaCommons/foundry). More MPNN
|
||||
models and weights will be added to foundry in the future.
|
||||
|
||||
Are we missing a model you would like to work with? Create a PR with the
|
||||
necessary files and/or code changes or open an issue requesting it.
|
||||
|
||||
17
_sources/models/rf3/index.md.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
# RF3 Documentation
|
||||
|
||||
```{warning}
|
||||
The documentation for RF3 is currently incomplete. If you would like
|
||||
to contribute, feel free to open a PR!
|
||||
```
|
||||
|
||||
RF3 is an all-atom biomolecular structure prediction network
|
||||
competitive with leading open-source models. By including additional features at train-time – implicit chirality representations and atom-level geometric conditioning – we improve performance on tasks such as prediction of chiral ligands and fixed-backbone or fixed-conformer docking.
|
||||
|
||||
**Preprint**: [Accelerating Biomolecular Modeling with AtomWorks and RF3](https://doi.org/10.1101/2025.08.14.670328)
|
||||
|
||||
---
|
||||
|
||||
For more information on how to run RF3, see the [README](https://github.com/RosettaCommons/foundry/blob/production/models/rf3/README.md).
|
||||
|
||||
You can install RF3, and the other models included in [Foundry](https://github.com/RosettaCommons/foundry) by following the instructions in [Foundry's README](https://github.com/RosettaCommons/foundry/blob/production/README.md).
|
||||
50
_sources/models/rfd3/designability_vs_diversity.md.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
# Designability vs. Diversity
|
||||
|
||||
When using RFdiffusion3 there is a balance between designability and diversity of generated structures. Increasing the diversity of the designs will lead to a greater number of novel folds, however, there will also be a larger portion of structures that have low confidence scores when refolded.
|
||||
|
||||
Whether you are struggling to produce designable structures or you are looking to increase the diversity of the folds you see, here are a few settings to try changing:
|
||||
- **Low temperature sampling:**
|
||||
|
||||
One can increase `inference_sampler.step_scale` and decrease `inference_sampler.gamma_0` to decrease the sampling space that RFdiffusion3 has access to, similar to what lowering the temperature does in physics-based design methods. These settings directly change how the RFdiffusion3 inference engine works, so these options are specified in the CLI, and are not options you specify in your input JSON or YAML file.
|
||||
|
||||
Here are what these settings do:
|
||||
- `inference_sampler.step_scale`: Changing this value (default 1.5) changes the diffusion step size, or how much you go towards the most probable result. Increasing this setting will increase the designability of the output structures, as these are more probable, but will also decrease the diversity of the produced structures.
|
||||
- `inference_sampler.gamma_0`: Changing this value (default 0.6) will change how much noise is added at each step in the inference trajectory. Decreasing this setting will increase the designability of the output structures as the reduced randomness will lead RFdiffusion3 to higher-probability structures. Increase this quantity to increase the diversity of designed structures.
|
||||
- **`is_non_loopy` setting:**
|
||||
|
||||
The `is_non_loopy` setting is a constraint on the designs RFdiffusion3 produces, which makes it a setting provided in a JSON/YAML file. If `True` it biases the model away from forming structures with many regions without a defined secondary structure. This will slightly decrease the diversity of structures that RFdiffusion3 produces while increasing the designability.
|
||||
|
||||
Here are a few plots showing the impacts of these settings in protein-protein interface design tasks:
|
||||
```{note}
|
||||
For the purposes of the plots below:
|
||||
* `Low temperature` means a `step_scale` of 3 and a `gamma_0` of 0.2.
|
||||
* Pass rates are refolding pass rates, the number of backbones that pass after four attempts at designing the sequence using MPNN-based methods.
|
||||
* 'Cluster' refers to `foldseek-based clusters <https://www.nature.com/articles/s41587-023-01773-0>`_, and the cluster pass rate is the number of clusters represented among the passing designs divided by the total number of designed backbones.
|
||||
|
||||
```
|
||||
|
||||
```{figure} ./.assets/400bb_rfd3_inference_settings_designability.png
|
||||
:width: 800px
|
||||
|
||||
Impacts of using low temperature settings (inf) and the `is_non_loopy` constraint on the outputs of RFdiffusion3.
|
||||
```
|
||||
|
||||
</br>
|
||||
|
||||
---
|
||||
|
||||
```{figure} ./.assets/400bb_rfd3_inference_settings_diversity.png
|
||||
:width: 800px
|
||||
|
||||
Diversity of folds in structures designed by RFD3 when using low temperature sampling and the `is_non_loopy` setting.
|
||||
```
|
||||
|
||||
</br>
|
||||
|
||||
---
|
||||
|
||||
```{figure} ./.assets/400bb_rfd3_inference_settings_secondary_structure.png
|
||||
:width: 800px
|
||||
|
||||
Compares the amount of alpha helices and beta sheets in structures designed by RFD3 when the low temperature sampling and `is_non_loopy` settings are used. The removal of the `is_non_loopy` setting results in a large reduction in α-helices and a small increase in the number of ß-sheets.
|
||||
```
|
||||
46
_sources/models/rfd3/examples/enzyme_design.md.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
# RFdiffusion3 — Enzyme design examples
|
||||
RFD3 contains several knobs and dials for enzyme design.
|
||||
- input: the pdb or cif file that contains the input theozyme
|
||||
- ligand: any ligand res names that are to be included (comma separated)
|
||||
- unindex: which residues should have their index be inferred by the model instead of prespecified
|
||||
- length: the length range of the generated protein
|
||||
- select_fixed_atoms: dictionary that indicated which atoms should be fixed (can use ALL, BKBN, or TIP for all atoms in the residue, backbone atoms only and tip atoms only)
|
||||
|
||||
If you would like to run the examples below, `enzyme_design.json`, located in this directory, contains the example code. You can run it via:
|
||||
```
|
||||
rfd3 design out_dir=inference_outputs/enzyme/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./enzyme_design.json
|
||||
```
|
||||
|
||||
Or, if you have cloned the repo rather than using `pip install`:
|
||||
```
|
||||
python path/to/foundry/models/rfd3/src/rfd3/run_inference.py \
|
||||
out_dir=inference_outputs/enzyme/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./enzyme_design.json
|
||||
```
|
||||
|
||||
An example script for running these examples in batches is also provided in `run_inf_tutorial.sh`.
|
||||
|
||||
The input files for the different examples are provided in `foundry/models/rfd3/docs/input_pdbs`.
|
||||
|
||||
```json
|
||||
{
|
||||
"M0255_1mg5_unfixed": {
|
||||
"input": "../input_pdbs/M0255_1mg5.pdb",
|
||||
"ligand": "NAI,ACT",
|
||||
"unindex": "A108,A139,A152,A156",
|
||||
"length": "180-200",
|
||||
"select_fixed_atoms": {
|
||||
"A108": "ND2,CG",
|
||||
"A139": "OG,CB,CA",
|
||||
"A152": "OH,CZ",
|
||||
"A156": "NZ,CE,CD",
|
||||
"ACT": "OXT",
|
||||
"NAI": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
116
_sources/models/rfd3/examples/na_binder_design.md.txt
Normal file
@@ -0,0 +1,116 @@
|
||||
# RFdiffusion3 — Nucleic acid binder design examples
|
||||
|
||||
If you would like to run the examples below, `na_binder_design.json`, located in this directory, contains the example code. You can run it via:
|
||||
```
|
||||
rfd3 design out_dir=inference_outputs/na_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./na_binder_design.json
|
||||
```
|
||||
|
||||
Or, if you have cloned the repo rather than using `pip install`:
|
||||
```
|
||||
python path/to/foundry/models/rfd3/src/rfd3/run_inference.py \
|
||||
out_dir=inference_outputs/na_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./na_binder_design.json
|
||||
```
|
||||
|
||||
An example script for running these examples in batches is also provided in `run_inf_tutorial.sh`.
|
||||
|
||||
The input files for the different examples are already provided in `input_pdbs`, but if you would like
|
||||
to see how you could download these directly from the PDB, see `get_na_input.sh`.
|
||||
|
||||
### 1. Simple dsDNA binder example
|
||||
|
||||
The DNA chains are A and B and specified as such in the contig. RFD3 will treat these as fixed in space. the contig specifies to generate a protein chain of length between 120-130. An ori token is specified.
|
||||
The length attribute should be the sum of all polymer lengths. in this case (120 to 130) + 10 + 10 = (140 to 150)
|
||||
```json
|
||||
{
|
||||
"dsDNA_basic": {
|
||||
"input": "../input_pdbs/1bna.pdb",
|
||||
"contig": "A1-10,/0,B15-24,/0,120-130",
|
||||
"length": "140-150",
|
||||
"ori_token": [24,20,10],
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Simple ssDNA binder example G-quadruplex
|
||||
|
||||
Similar to the previous example, but done for a PDB containing one DNA strand (A):
|
||||
|
||||
```json
|
||||
{
|
||||
"ssDNA_basic": {
|
||||
"input": "../input_pdbs/5o4d.pdb",
|
||||
"contig": "A1-23,/0,120-130",
|
||||
"length": "143-153",
|
||||
"ori_token": [-5,-10,8],
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. ssDNA example based on DNA sequence diffused from dsDNA pdb as input
|
||||
|
||||
Similar to the previous example but the input PDB has a dsDNA. One of the chains (A) is selected. However, the single stranded DNA conformation will be sampled by RFD3 because we have specified to not have any fixed DNA atoms by using `"select_fixed_atoms": {"A1-10":""}`. ori_token is not meaningful to specify when there are no fixed atoms.
|
||||
```json
|
||||
{
|
||||
"ssDNA_diffused_from_dsDNA_pdb":{
|
||||
"input": "../input_pdbs/1bna.pdb",
|
||||
"contig": "A1-10,/0,120-130",
|
||||
"length": "130-140",
|
||||
"select_fixed_atoms": {"A1-10":""},
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Simple RNA binder example
|
||||
|
||||
Example on RNA. Similar to the ssDNA example, example 2.
|
||||
|
||||
```json
|
||||
{
|
||||
"RNA_basic": {
|
||||
"input": "../input_pdbs/1q75.pdb",
|
||||
"contig": "A1-15,/0,120-130",
|
||||
"length": "135-145",
|
||||
"ori_token": [15,2,-4],
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5. Complex example based on a protein-dsDNA input pdb with parts of protein and dna partially fixed (indexed and unindexed), with Hbond conditioning
|
||||
|
||||
This is a complex example which has a dsDNA specified in the contig: `C5-18` and `D24-37`. However, it also specifies an indexed protein motif component (`A146-154`) and diffuses the two flanks of the protein indexed region in the same chain. The diffused protein region has an unindexed motif specified via `"unindex": "/0,/0,B251-B255".` (*Note: the chain breaks applied are analogous to the contig string*). Parts of the DNA have been specified as fixed or to be sampled by RFD3 (`select_fixed_atoms`). Additionally hydrogen bond conditioning is applied to some backbone and base atoms of a few DNA bases.
|
||||
|
||||
To run this without warnings, you will need to install [hbplus](https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/) to enable hydrogen bond metrics computation. This is discussed at the end of the RFD3 README, but the instructions are reproduced here for convenience:
|
||||
|
||||
1. Download hbplus from here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/download.html (available for free)
|
||||
2. Follow the installation instruction here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/install.html
|
||||
3. Update `HBPLUS_PATH` in `foundry/.env` file with the path to your `hbplus` executable.
|
||||
|
||||
```json
|
||||
{
|
||||
"dsDNA_complex": {
|
||||
"input": "../input_pdbs/2r5z.pdb",
|
||||
"contig": "C5-18,/0,D24-37,/0,40-50,A146-154,80-90",
|
||||
"length": "157-177",
|
||||
"unindex": "/0,/0,B251-255",
|
||||
"select_fixed_atoms": {
|
||||
"C9-14":"ALL",
|
||||
"D28-33":"ALL",
|
||||
"C5-8,C15-18": "",
|
||||
"D24-27,D34-37": ""
|
||||
},
|
||||
"ori_token":[25,35,20],
|
||||
"select_hbond_acceptor": {"C16":"N7,O6", "D31-32":"N7", "D28-30":"OP1,OP2,O3',O5'"},
|
||||
"select_hbond_donor": {"D31-32":"N6"},
|
||||
"is_non_loopy": true
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
65
_sources/models/rfd3/examples/protein_binder_design.md.txt
Normal file
@@ -0,0 +1,65 @@
|
||||
# RFdiffusion3 — Protein binder design examples
|
||||
RFD3 is a highly proficient protein binder designer. The following arguments have to be specified to RFD3 to make protein binders.
|
||||
- input: the PDB or CIF file of the structure you want to bind
|
||||
- contig: the length range of the binder to make (indicated as a range) and which residues from the target file to consider.
|
||||
- infer_ori_strategy: how RFD3 decides to place the origin of the generated protein binder with respect to the target. We find that using the "hotspots" strategy works best
|
||||
- select_hotspots: which atoms on the target should be bound (dictionary of residues on the target and atoms in those residues)
|
||||
|
||||
In addition, we strongly recommend the following setting, which encourages the model to make more structured designs:
|
||||
- is_non_loopy: true
|
||||
|
||||
We also recommend the following command-line overrides: `inference_sampler.step_scale=3` (defaults to 1.5) and
|
||||
`inference_sampler.gamma_0=0.2` (defaults to 0.6). Increasing the `step_scale` and decreasing `gamma_0` yields lower-temperature
|
||||
designs, which greatly increases PPI designability.
|
||||
|
||||
If you would like to run the examples below, `protein_binder_design.json`, located in this directory, contains the example code. You can run it via:
|
||||
```
|
||||
rfd3 design out_dir=inference_outputs/protein_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./protein_binder_design.json \
|
||||
inference_sampler.step_scale=3 \
|
||||
inference_sampler.gamma_0=0.2
|
||||
```
|
||||
|
||||
Or, if you have cloned the repo rather than using `pip install`:
|
||||
```
|
||||
python path/to/foundry/models/rfd3/src/rfd3/run_inference.py \
|
||||
out_dir=inference_outputs/protein_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./protein_binder_design.json \
|
||||
inference_sampler.step_scale=3 \
|
||||
inference_sampler.gamma_0=0.2
|
||||
```
|
||||
|
||||
An example script for running these examples in batches is also provided in `run_inf_tutorial.sh`.
|
||||
|
||||
The input files for the different examples are provided in `foundry/models/rfd3/docs/input_pdbs`.
|
||||
|
||||
```json
|
||||
{
|
||||
"insulinr": {
|
||||
"dialect": 2,
|
||||
"infer_ori_strategy": "hotspots",
|
||||
"input": "../input_pdbs/4zxb_cropped.pdb",
|
||||
"contig": "40-120,/0,E6-155",
|
||||
"select_hotspots": {
|
||||
"E64": "CD2,CZ",
|
||||
"E88": "CG,CZ",
|
||||
"E96": "CD1,CZ",
|
||||
},
|
||||
"is_non_loopy": true
|
||||
},
|
||||
"pdl1": {
|
||||
"dialect": 2,
|
||||
"infer_ori_strategy": "hotspots",
|
||||
"input": "../input_pdbs/5o45_cropped.pdb",
|
||||
"contig": "50-120,/0,A17-131",
|
||||
"select_hotspots": {
|
||||
"A56": "CG,OH",
|
||||
"A115": "CG,SD",
|
||||
"A123": "CD2,OH",
|
||||
},
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
60
_sources/models/rfd3/examples/sm_binder_design.md.txt
Normal file
@@ -0,0 +1,60 @@
|
||||
# RFdiffusion3 — Small molecule binder design examples
|
||||
|
||||
If you would like to run the examples below, `sm_binder_design.json`, located in this directory, contains the example code. You can run it via:
|
||||
```
|
||||
rfd3 design out_dir=inference_outputs/sm_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./sm_binder_design.json
|
||||
```
|
||||
|
||||
Or, if you have cloned the repo rather than using `pip install`:
|
||||
```
|
||||
python path/to/foundry/models/rfd3/src/rfd3/run_inference.py \
|
||||
out_dir=inference_outputs/sm_binder/0 \
|
||||
ckpt_path=/path/to/rfd3_latest.ckpt \
|
||||
inputs=./sm_binder_design.json
|
||||
```
|
||||
|
||||
An example script for running these examples in batches is also provided in `run_inf_tutorial.sh`.
|
||||
|
||||
The input files for the different examples are provided in `foundry/models/rfd3/docs/input_pdbs`.
|
||||
|
||||
## Small molecule binder examples against the ligand IAI with different RASA conditioning
|
||||
RFD3 is also capable of designing proteins that bind small molecules. Here are some inputs that could be useful:
|
||||
- input: a PDB or CIF file that contains the small molecule
|
||||
- ligand: the 3 letter code in the file that is the ligand to be bound
|
||||
- length: how long the generated protein should be (can be a range)
|
||||
- select_fixed_atoms: selecting which atoms in the ligand should be fixed to the coordinates in the PDB
|
||||
- select_exposed: selecting which atoms in the ligand should not be buried in the designed protein (exposed to solvent)
|
||||
- select_buried: selecting which atoms in the ligand should be buried in the designed protein
|
||||
|
||||
```json
|
||||
{
|
||||
"buried": {
|
||||
"input": "../input_pdbs/IAI.pdb",
|
||||
"length": "180-180",
|
||||
"ligand": "IAI",
|
||||
"select_fixed_atoms": {
|
||||
"IAI": ""
|
||||
},
|
||||
"select_buried": {
|
||||
"IAI": "C22,C23,C25,C24,C21,C20,N13,C15,C16,N14,C19,C11,N12,C18,C17,N9,O8,C4,C1,N3,C10,N5,C7,C2,C6,N27,O26,C33,C29,C32,O31,C30,N28"
|
||||
}
|
||||
},
|
||||
"partial": {
|
||||
"input": "../input_pdbs/IAI.pdb",
|
||||
"ligand": "IAI",
|
||||
"length": "180-180",
|
||||
"select_fixed_atoms": {
|
||||
"IAI": ""
|
||||
},
|
||||
"select_exposed": {
|
||||
"IAI": "C22,C23,C25,C24,C21,C20,N13,C15,C16,N14,C19,C11,N12,C18,C17"
|
||||
},
|
||||
"select_buried": {
|
||||
"IAI": "N9,O8,C4,C1,N3,C10,N5,C7,C2,C6,N27,O26,C33,C29,C32,O31,C30,N28"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
139
_sources/models/rfd3/examples/symmetry.md.txt
Normal file
@@ -0,0 +1,139 @@
|
||||
# Overview of Symmetry in RFD3
|
||||
|
||||
## Specifying symmetry in your input specifications
|
||||
Symmetry configurations are specified within the input JSON or YAML file, nested under its own specific configuration. The symmetry specific config has the following:
|
||||
```json
|
||||
"symmetry": {
|
||||
"id": "C3",
|
||||
"is_unsym_motif": "Y1-11,Z16-25",
|
||||
"is_symmetric_motif": true
|
||||
|
||||
}
|
||||
```
|
||||
```yaml
|
||||
symmetry:
|
||||
id: "C3"
|
||||
is_unsym_motif: "Y1-11,Z16-25"
|
||||
is_symmetric_motif: true
|
||||
```
|
||||
- `id` : Symmetry group ID; e.g. "C3" for a cyclic protein with 3 subunits, "D2" for a dihedral protein with 2 subunits. Note that only C and D symmetry types are supported currently.
|
||||
- `is_unsym_motif` : Comma separated string list of contig/ligand names that should NOT be symmetrized (e.g. DNA strands). If not provided, all motifs are assumed to be symmetrized. See [Designs with motifs](#designs-with-motifs) section for details.
|
||||
- `is_symmetric_motif`: Boolean value whether the input motif is symmetric. Currently only symmetric input motifs are supported, therefore, `true` by default.
|
||||
|
||||
|
||||
## Example command
|
||||
You can run the following example command:
|
||||
```
|
||||
./src/modelhub/inference.py inference_sampler.kind=symmetry out_dir=logs/inference_outs/sym_demo/0 ckpt_path=$cur_ckpt inputs=./projects/aa_design/tests/test_data/sym_tests.json diffusion_batch_size=1
|
||||
```
|
||||
- `inference_sampler.kind`: Set `symmetry` to tern on symmetry mode.
|
||||
- `diffusion_batch_size` : `8` by default, but it is recommended to set it to `1` for symmetry due to memory limitations.
|
||||
- `low_memory_mode` : Additionally you can set this to `True` if you have memory constraints (e.g. "CUDA error: out of memory"). However, this will significantly slow the inference.
|
||||
|
||||
|
||||
## Unconditional multimer design
|
||||
|
||||
As mentioned above, we currently only support C and D symmetry types.
|
||||
The following provides a general overview of the types of symmetry and examples of how to run:
|
||||
|
||||
### Cyclic
|
||||
**Defaults:**
|
||||
|
||||
```json
|
||||
{
|
||||
"uncond_C5": {
|
||||
"length": 100,
|
||||
"is_non_loopy": true,
|
||||
"symmetry": {
|
||||
"id": "C5"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Dihedrals
|
||||
**Defaults:**
|
||||
|
||||
```json
|
||||
{
|
||||
"uncond_D4": {
|
||||
"length": 50,
|
||||
"is_non_loopy": true,
|
||||
"symmetry": {
|
||||
"id": "D4"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Designs with motifs
|
||||
|
||||
As mentioned above, symmetry sampling currently only supports pre-symmetrized motifs around the origin. Therefore, `is_symmetric_motif` is set to `true` by default.
|
||||
The following are example JSON specifications for different symmetric motif scaffolding. You can also find the corresponding input PDBs in `docs/input_pdbs/symmetry_examples`. Although we only give JSON examples, you can also use YAML for everything shown below.
|
||||
|
||||
The tasks that these examples describe are as follows:
|
||||
- unindexed_C2_1j79, unindexed_C2_1e3v:
|
||||
Unindexed motif scaffolding for symmetric enzyme active sites. The motifs are located within a subunit; no inter-subunit motifs.
|
||||
- indexed_unsym_C2_1bfr:
|
||||
Indexed motif scaffolding for a single active site held by a symmetric enzyme. `is_unsym_motif` specifies the ligand that shouldn't be symmetrized.
|
||||
- uncond_unsym_C3_6t8h:
|
||||
Unconditional generation of C3 proteins around a DNA helix. The DNA chains are the motifs. `is_unsym_motif` specifies the DNA strands that shouldn't be symmetrized.
|
||||
|
||||
```json
|
||||
{
|
||||
"unindexed_C2_1j79": {
|
||||
"symmetry": {
|
||||
"id": "C2",
|
||||
"is_symmetric_motif": true
|
||||
},
|
||||
"input": "../input_pdbs/symmetry_examples/1j79_C2.pdb",
|
||||
"ligand": "ORO,ZN",
|
||||
"unindex": "A250",
|
||||
"length": 130,
|
||||
"select_fixed_atoms": {
|
||||
"A250": "OD1,CG"
|
||||
}
|
||||
},
|
||||
"unindexed_C2_1e3v": {
|
||||
"symmetry": {
|
||||
"id": "C2",
|
||||
"is_symmetric_motif": true
|
||||
},
|
||||
"input": "../input_pdbs/symmetry_examples/1e3v_C2.pdb",
|
||||
"ligand": "DXC",
|
||||
"unindex": "A16,A40,A100,A103",
|
||||
"length": 80,
|
||||
"select_fixed_atoms": {
|
||||
"A16": "OH,CZ,CE1,CE2",
|
||||
"A40": "OD2,CG",
|
||||
"A100": "N,CA,C,CB",
|
||||
"A103": "OD2,CG"
|
||||
}
|
||||
},
|
||||
"indexed_unsym_C2_1bfr": {
|
||||
"symmetry": {
|
||||
"id": "C2",
|
||||
"is_symmetric_motif": true,
|
||||
"is_unsym_motif": "HEM"
|
||||
},
|
||||
"input": "../input_pdbs/symmetry_examples/1bfr_C2.pdb",
|
||||
"ligand": "HEM",
|
||||
"contig": "51,M52,80",
|
||||
"length": null,
|
||||
"select_fixed_atoms": {
|
||||
"M52": "CG,SD,CE"
|
||||
}
|
||||
},
|
||||
"unsym_C3_6t8h": {
|
||||
"symmetry": {
|
||||
"id": "C3",
|
||||
"is_symmetric_motif": true,
|
||||
"is_unsym_motif": "Y1-11,Z16-25"
|
||||
},
|
||||
"input": "../input_pdbs/symmetry_examples/6t8h_C3.pdb",
|
||||
"contig": "150-150,/0,Y1-11,/0,Z16-25",
|
||||
"length": null,
|
||||
"is_non_loopy": true
|
||||
}
|
||||
}
|
||||
```
|
||||
57
_sources/models/rfd3/index.rst.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
RFdiffusion3 Documentation
|
||||
==========================
|
||||
|
||||
RFdiffusion3 is a powerful protein design tool that operates on the atomic level to
|
||||
study ligand-protein interactions, create nucleic acid-protein interfaces, and
|
||||
design *de novo* enzymes. It is designed to be highly flexible and
|
||||
user-friendly, making it suitable for a wide range of applications in computational biology and biochemistry.
|
||||
|
||||
General
|
||||
-------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
tutorials/RFdiffusion3_installation_tutorial.md
|
||||
intro_inference_calculations.md
|
||||
input.md
|
||||
designability_vs_diversity.md
|
||||
|
||||
Introductory Tutorials
|
||||
----------------------
|
||||
These introductory tutorials are designed to help users get familiar
|
||||
with the capabilities of RFD3 for specific design tasks.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
tutorials/ppi_design_tutorial.md
|
||||
tutorials/enzyme_design_tutorial.md
|
||||
tutorials/na_binder_tutorial.md
|
||||
|
||||
Intermediate Tutorials
|
||||
----------------------
|
||||
These intermediate tutorials cover more complex topics related
|
||||
to specific design tasks in RFD3. If this is your first time using
|
||||
RFD3, we recommend starting with the introductory tutorials before moving on to these.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
tutorials/intermediate_enzyme_design_tutorial.md
|
||||
|
||||
Examples
|
||||
--------
|
||||
The following examples demonstrate how to use RFD3 for various design
|
||||
tasks. However, they do not go into detail about how to set up RFD3
|
||||
or how the different constraints work. If you are new to RFD3, we
|
||||
recommend starting with the introductory tutorials before moving
|
||||
on to these examples.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
examples/na_binder_design.md
|
||||
examples/sm_binder_design.md
|
||||
examples/protein_binder_design.md
|
||||
examples/symmetry.md
|
||||
examples/enzyme_design.md
|
||||
331
_sources/models/rfd3/input.md.txt
Normal file
@@ -0,0 +1,331 @@
|
||||
# RFdiffusion3 — Input Specification & Command-line arguments
|
||||
|
||||
RFdiffusion3 accepts inputs in two forms:
|
||||
- Constrains to be applied to the inference run are given in JSON or YAML files
|
||||
- Details about the job (number of designs, output directory, etc.) are given as command line arguments
|
||||
|
||||
This document outlines the various input settings and configurations you can use with RFdiffusion3.
|
||||
|
||||
---
|
||||
|
||||
## Contents
|
||||
- [Quick start](#quick-start)
|
||||
- [CLI arguments](#cli-arguments)
|
||||
- [Required CLI Arguments](#required-cli-arguments)
|
||||
- [Other Useful CLI Arguments](#other-useful-cli-arguments)
|
||||
- [Other CLI options](#other-CLI-options)
|
||||
- [InputSpecification fields](#inputspecification-fields)
|
||||
- [The `InputSelection` mini-language](#the-inputselection-mini-language)
|
||||
- [Contig Strings](#contig-strings)
|
||||
- [Input Option Specifics](#input-option-specifics)
|
||||
- [Unindexing Specifics](#unindexing-specifics)
|
||||
- [Partial Diffusion](#partial-diffusion)
|
||||
- [CIF Parser Options](#cif-parser-options)
|
||||
- [Select Fixed Atoms](#select-fixed-atoms)
|
||||
- [Debugging recommendations](#debugging-recommendations)
|
||||
- [FAQ / Gotchas](#faq--gotchas)
|
||||
|
||||
---
|
||||
|
||||
(quick-start)=
|
||||
## Quick start
|
||||
> For more detailed information on RFdiffusion3 inputs and outputs, see {doc}`intro_inference_calculations`
|
||||
|
||||
JSON inputs take the following top-level structure;
|
||||
```json
|
||||
{
|
||||
"spec-1": { // First design configuration
|
||||
"input": "<path/to/pdb>",
|
||||
"contig": "50-80,/0,A1-100", // Diffuses length 50-80 monomer in chain A & selects indices A1 -> A100 in input pdb to have fixed coordinates and sequences
|
||||
"select_unfixed_sequence": "A20-35", // Converts selected indices in input to have unfixed sequence (inputs become atom14).
|
||||
"ligand": "HAX,OAA", // Selects ligands HAX and OAA based on res name in the input
|
||||
},
|
||||
"spec-2": {
|
||||
// ... args for the second (independent) configuration for design.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can then run inference at the command line with:
|
||||
```bash
|
||||
rfd3 design out_dir=<path/to/outdir> inputs=<path/to/inputs>
|
||||
```
|
||||
|
||||
(cli-arguments)=
|
||||
## CLI arguments
|
||||
|
||||
(required-cli-arguments)=
|
||||
### Required CLI arguments:
|
||||
- `out_dir` — The directory that output files from the inference run will be stored in. If the directory does not exist it will be created. **This does not change how the output files are named.**
|
||||
- `inputs` — The path and file name of the JSON or YAML file where you have defined your inference constraints.
|
||||
|
||||
(other-useful-cli-arguments)=
|
||||
### Other Useful CLI arguments:
|
||||
(From the [default config](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/configs/inference_engine/rfdiffusion3.yaml))
|
||||
- `n_batches` — number of batches to generate per input key (default: 1).
|
||||
- `diffusion_batch_size` — number of diffusion samples (designs) per batch (default: 8). If `n_batches=1` and `diffusion_batch_size=8` then 8 designs will be generated from the inference run.
|
||||
- `specification` — JSON overrides for the per-example InputSpecification (default: `{}`). For example, you can run `rfd3 design inputs=null specification.length=200` for a quick debug of creating a 200-length protein.
|
||||
- `inference_sampler.num_timesteps` — diffusion timesteps for sampling (default: 200).
|
||||
- `inference_sampler.step_scale` — scales diffusion step size; higher → less diverse, more designable (default: 1.5).
|
||||
- `low_memory_mode` — memory-efficient tokenization mode; set `True` if GPU RAM is tight (default: False).
|
||||
- `ckpt_path` — String containing he path and file name of the checkpoint path you want to use (default: rfd3)
|
||||
- `skip_existing` — Skip designing any systems whose output files already exist in the specified `out_dir` (default: True).
|
||||
- `global_prefix` — This setting allows you to change the beginning of the name of the output files from the name of the input JSON or YAML file to your own string (default: null).
|
||||
- `dump_trajectories` — If True, the trajectory files are also saved to the specified output directory (default: False).
|
||||
- `prevalidate_inputs` — Check that your inputs (JSON or YAML file) are valid before running inference (default: False).
|
||||
- `low_memory_mode` - Set to True (default: False) for memory efficient tokenization mode.
|
||||
|
||||
(other-cli-options)=
|
||||
### Other CLI Options:
|
||||
- `json_keys_subset` — Allows the user to extract only a subset of the JSON keys provided in the `inputs` file (default: null).
|
||||
- `inference_sampler` —
|
||||
- `num_timesteps` — Number of diffusion denoising timesteps (default: 200). Controls how many steps the reverse diffusion process takes. More steps can improve quality at the cost of runtime.
|
||||
- `n_recycle` — Number of recycling iterations per diffusion step (default: null, uses the model checkpoint default of 2). Recycling allows the network to refine its predictions iteratively within each denoising step.
|
||||
- `kind` — Change this value to `symmetry` (default: default) to turn on symmetry mode for the inference sampler.
|
||||
- `cfg_features` — The values specified (options are `active_donor, active_acceptor, or ref_atomwise_rasa`) are set to 0 for classifier-free guidance. Classifier-free guidance is how the diffusion model can steer the calculation towards a condition without training a separate classifier.
|
||||
- `use_classifier_free_guidance` — If set to `True`, RFD3 can use classifier-free guidance to guide the system towards a condition without training a separate classifier (default: `False`).
|
||||
- `cfg_t_max` — The maximum time to apply classifier-free guidance to the inference run (default: null).
|
||||
- `cfg_scale` — Controls the influence of the classifier-free guidance adjustment (default: 1.5).
|
||||
- `center_option`: Specifies how to center the coordinates during the inference run to ensure that structures are alined around a specific point. Options include:
|
||||
- `all` — (default) Uses the center of mass (COM) of all atoms
|
||||
- `motif` — Uses the COM of the motif atoms with fixed coordinates
|
||||
- `diffuse` — Uses the COM of all fixed coordinates that are not part of motif atoms
|
||||
- `s_trans` — Translational noise scale for augmentation during inference (default: 1.0).
|
||||
<!-- `inference_noise_scaling_factor` As far as I can tell there isn't actually any code to make use of this setting -->
|
||||
- `allow_realignment` — If set to `True` (default: False) then the noised structure can be realigned during inference based on the location of a given motif. From [Issue #154](https://github.com/RosettaCommons/foundry/issues/154): It is generally not needed to include this option, there are fewer 'weird' interactions with motif scaffolding when it's set to False.
|
||||
- `noise_scale` — This parameter sets the scaling for the noise during inference (default 1.003). A smaller value will lead to less noise in your system leading to less diversity in the outputs.
|
||||
- `p` — Determines the 'shape' of the noise schedule (default: 7).
|
||||
- `gamma_0` — This value (default: 0.6) influences the diversity of the designs from RFD3. A lower value increases designability but decreases diversity.
|
||||
- `gamma_min` — Controls when `gamma_0` is used, if `t>gamma_min`, `gamma_0` is used as the value of `gamma`, which influences the diversity of the designs from RFD3.
|
||||
- `s_jitter_origin` — Controls the standard deviation of the Gaussian distribution that is used to 'jitter' the motif offset (default: 0.0, no jitter).
|
||||
- `cleanup_guideposts` — Set to `False` (default: True) to save the guideposts used during inference, see [Debugging recommendations](#debugging-recommendations) for more information.
|
||||
- `cleanup_virtual_atoms` — Set to `False` (default: True) to save information about the diffused virtual atoms used during inference. RFD3 uses virtual atoms to account for the different number of atoms in side chains during the design process. RFD3 is atom based, however the number of atoms in a residue will differ based on its side chain, which is only determined after some diffusion steps have occurred, meaning virtual atoms are necessary for those steps. See [Debugging recommendations](#debugging-recommendations) for more information.
|
||||
- `read_sequence_from_sequence_head` — Used during training, it is not recommended to change this setting (default: True).
|
||||
- `output_full_json` — Output all specification information to the JSON file that gets created for each design (default: True).
|
||||
- `dump_prediction_metadata_json` — If `True`, the metadata for the inference run will be included in the output JSON file (default: True).
|
||||
- `align_trajectory_structures` — Aligns the structures in the output trajectories (default: False).
|
||||
|
||||
|
||||
The full config of default arguments that are applied can be seen in [inference_engine/rfdiffusion3.yaml](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/configs/inference_engine/rfdiffusion3.yaml)
|
||||
|
||||
(inputspecification-fields)=
|
||||
## InputSpecification fields
|
||||
|
||||
Below is a table of all of the inputs that the `InputSpecification` accepts. Use these fields to describe the constraints you want to apply to your system during inference.
|
||||
|
||||
> For the fields with the `InputSelection` type, see section [The InputSelection Mini-Language](#the-inputselection-mini-language).
|
||||
|
||||
> Many of the settings here will mention a 'contig string', see the [Contig Strings](#contig-strings) section for more details.
|
||||
|
||||
|
||||
| Field | Type | Description |
|
||||
| -------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------- |
|
||||
| `input` | `str` | Path to and file name of **PDB/CIF**. Required if you provide contig+length. |
|
||||
| `atom_array_input` | internal | Pre-loaded [`AtomArray`](https://www.biotite-python.org/latest/apidoc/biotite.structure.AtomArray.html) (not recommended). |
|
||||
| `contig` | `InputSelection` | (Can only pass a contig string.) Indexed motif specification, e.g., `"A1-80,10,/0,B5-12"`. |
|
||||
| `unindex` | `InputSelection` | (Can only pass a contig string or dictionary.) Unindexed motif components, the specified residues can be anywhere in the final sequence. See [Unindexing Specifics](#unindexing-specifics) for more information. |
|
||||
| `length` | `str` | Total design length constraint; `"min-max"` or int for specified length. |
|
||||
| `ligand` | `str` | Ligand(s) by chemical component name (from [RSCB PDB](https://www.rcsb.org/)) or index. |
|
||||
| `cif_parser_args` | `dict` | Optional args to CIF loader. See [CIF parser options](#cif-parser-options) for more information. |
|
||||
| `extra` | `dict` | Extra metadata (e.g., logs). Current options include `sampled_contig`. |
|
||||
| `dialect` | `int` | `2`=new (default), `1`=legacy, Learn more about the legacy parsing system by looking at [input_parsing.py](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/src/rfd3/inference/input_parsing.py).|
|
||||
| `select_fixed_atoms` | `InputSelection` | Atoms with fixed coordinates. See the [Select Fixed Atoms](#select-fixed-atoms) subsection for more information. |
|
||||
| `select_unfixed_sequence` | `InputSelection` | Where sequence can change. Default is `True` - all input regions have fixed sequences. Contig string input specifies components to unfix the sequence for. Dictionary inputs are allowed but not recommended.|
|
||||
| `select_buried` / `select_partially_buried` / `select_exposed` | `InputSelection` | Selection of RASA (Relatively Accessible Surface Area) for buried, partially buried, and exposed conditioning, respectively. Only contig string and dictionary are acceptable inputs. |
|
||||
| `select_hbond_donor` / `select_hbond_acceptor` | `InputSelection` | Atom-wise donor/acceptor flags. Atom-wise selection of hydrogen bond donors and acceptors, respectively. Only dictionary inputs allowed. See {doc}`examples/na_binder_design` for an example. |
|
||||
| `select_hotspots` | `InputSelection` | Atom-level or residue-level hotspots. Hotspots will typically be at most 4.5 Å to any heavy atom in the designed structure. Typically used for designing binders. |
|
||||
| `redesign_motif_sidechains` | `bool` | Fixed backbone, redesigned sidechains for motifs (input structures). |
|
||||
| `symmetry` | `SymmetryConfig` | See {doc}`examples/symmetry`. |
|
||||
| `ori_token` | `list[float]` | `[x,y,z]` origin override to control COM (center of mass) placement of designed structure. |
|
||||
| `infer_ori_strategy` | `str` | `"com"` or `"hotspots"`. The center of mass of the diffused region will typically be within 5Å of the ORI token. Using `hotspots` will place the ORI token 10Å outward from the center of mass of the specified hotspots. Using `com` will place the token at the center of mass of the input structure.|
|
||||
| `plddt_enhanced` | `bool` | Default `True`. Enables pLDDT (predicted Local Distance Difference Test) enhancement. |
|
||||
| `is_non_loopy` | `bool \| None` | Default `None`. If `True`/`False`, produces output structures with fewer/more loops.|
|
||||
| `partial_t` | `float` | Noise (Å) for partial diffusion, enables partial diffusion (sets the noise level.) Recommended values are 5.0-15.0 Å. See [Partial Diffusion](#partial-diffusion) for more information. |
|
||||
|
||||
|
||||
A few notes on the above:
|
||||
- **Unified selections.** All per-residue/atom choices now use **InputSelection**:
|
||||
- You can pass `True`/`False`, a **contig string** (`"A1-10,B5-8"`), or a **dictionary** (`{"A1-10": "ALL", "B5": "N,CA,C,O"}`).
|
||||
- Selection fields include: `select_fixed_atoms`, `select_unfixed_sequence`, `select_buried`, `select_partially_buried`, `select_exposed`, `select_hbond_donor`, `select_hbond_acceptor`, `select_hotspots`.
|
||||
- **Clearer unindexing.** For **unindexed** motifs you typically either fix `"ALL"` atoms or explicitly choose subsets such as `"TIP"`/`"BKBN"`/explicit atom lists via a **dictionary** (see examples). (`"ALL"` = all atoms, `"TIP"` = tip atoms, `"BKBN"` = backbone atoms.)
|
||||
When using `unindex`, only **the atoms you mark as fixed** are carried over from the input.
|
||||
- **Reproducibility.** The exact specification and the **sampled contig** are logged back into the output JSON. We also log useful counts (atoms, residues, chains).
|
||||
- **Safer parsing.** You’ll now get early, informative errors if:
|
||||
- You pass unknown keys,
|
||||
- A selection doesn’t match any atoms,
|
||||
- Indexed and unindexed motifs overlap,
|
||||
- Mutually exclusive selections overlap (e.g., two RASA bins for the same atom).
|
||||
- **Backwards compatible.** Add `"dialect": 1` to keep your old configs running while you migrate. (Deprecated.)
|
||||
|
||||
---
|
||||
(the-inputselection-mini-language)=
|
||||
## The InputSelection Mini-Language
|
||||
|
||||
Fields marked as `InputSelection` accept either a boolean, a contig-style string, or a dictionary. Dictionaries are the most expressive and can also use shorthand values like `ALL`, `TIP`, or `BKBN`:
|
||||
```yaml
|
||||
select_fixed_atoms:
|
||||
A1-2: BKBN # equivalent to 'N,CA,C,O'
|
||||
A3: N,CA,C,O,CB # specific atoms by atom name
|
||||
B5-7: ALL # Selects all atoms within B5,B6 and B7
|
||||
B10: TIP # selects common tip atom for residue (constants.py)
|
||||
LIG: '' # selects no atoms (i.e. unfixes the atoms for ligands named `LIG`)
|
||||
```
|
||||
|
||||
<!--<p align="center">
|
||||
<img src=".assets/input_selection.png" alt="InputSelection language for foundry" width=500>
|
||||
</p>-->
|
||||
```{figure} .assets/input_selection.png
|
||||
---
|
||||
alt: Input selection language for foundry.
|
||||
width: 500px
|
||||
---
|
||||
Graphical representation of the different ways to specify portions of a structure using RFD3's InputSelection mini-language.
|
||||
```
|
||||
|
||||
|
||||
(contig-strings)=
|
||||
## Contig Strings
|
||||
A 'contig string' is a string that contains residue information and is used in many of the settings in the table above. Here are some formatting specifics:
|
||||
- Different pieces of information included in the string are separated by commas
|
||||
- Ranges of residues are specified by a dash (`-`) between the starting and ending residue
|
||||
- Chain breaks are represented by `/0`
|
||||
- Residue numbers or ranges with a chain label before the number come from the input structure
|
||||
- Residue numbers or ranges without a chain label before the number will be designed. If given a range, the designed region will have a length that is uniformly random within the specified range.
|
||||
|
||||
For example:
|
||||
```yaml
|
||||
my_calculation:
|
||||
input: path/to/my/input.pdb
|
||||
contig: A40-60,70,A120-170,A203,/0,B3-45,60-80
|
||||
```
|
||||
- `A40-60`: the design will start with residues 40-60 from the A chain of the input structure.
|
||||
- `70`: RFD3 will design a chain with exactly 70 residues that will connect to A60
|
||||
- `A120-170`: RFD3 will include a bond between the last designed residue and residue A120, and then include residues A120-A170 from the input structure.
|
||||
- `A203`: A bond will be created between A170 and A203 and A203 will be in the final structure. However, residues A171-A202 will not be in the final structure.
|
||||
- `/0`: Chain break. There is no peptide bond between A203 and B3 in the output structure
|
||||
- `B3-B45`: Residues B3 thru B45 are taken from the input structure.
|
||||
- `60-80`: A design region is added B45 that will be between 60 and 80 residues long.
|
||||
|
||||
(input-option-specifics)=
|
||||
## Input Option Specifics
|
||||
|
||||
(unindexing-specifics)=
|
||||
### Unindexing Specifics
|
||||
```{note}
|
||||
Unindexed atoms are **always** fixed unless otherwise specified in the `select_fixed_atoms` option. At least one atom in any unidexed residue needs to be fixed.
|
||||
```
|
||||
|
||||
`unindex` marks motif tokens whose relative sequence placement is unknown to the model (useful for scaffolding around active sites, etc.).
|
||||
To specify the unindexed regions of your design you can:
|
||||
- Use a string to list the unindexed components and where breaks occur.
|
||||
- Use a dictionary if you want to fix specific atoms of those residues; atoms not fixed are not copied from the input (they will be diffused).
|
||||
Breaks between unindexed components follow the contig conventions you’re used to. For example: `"A244,A274,A320,A329,A375"` lists multiple unindexed components; internal “breakpoints” are inferred and logged. (Offset syntax like `A11-12` or `A11,0,A12` still ties residues.)
|
||||
You can specify consecutive residues as e.g. `A11-12` (instead of `A11,A12`), this will tie the two components together in sequence (or at least it leaks to the model that residues are together in sequence).
|
||||
Similarly, you can specify manually any number of residues that offsets two components, e.g. `A11,0,A12` (0 sequence offset, equivalent to just `A11-12`), or `A11,3,A12` (3-residue separation).
|
||||
From our initial tests this only leads to a slight bias in the model, but newer models may show better adherence!
|
||||
|
||||
(partial-diffusion)=
|
||||
### Partial Diffusion
|
||||
|
||||
```{important}
|
||||
Partial diffusion (`partial_t`) does *not* directly change the number of timesteps reversed during the inference process. It sets the standard deviation of the noise added back. This value is nonlinear, so it is recommended to start with a relatively small value (2Å) and gradually raise it.
|
||||
```
|
||||
|
||||
To enable partial diffusion, you can pass `partial_t` with any example. This sets the *noise level* in *angstroms* for the sampler:
|
||||
- The `specification.partial_t` argument can be specified from your JSON/YAML input file
|
||||
- Partial diffusion will fix/unfix ligands and nucleic acids as normal, by default it will fix non-protein components and they must be specified explicitly.
|
||||
- By default, the ca-aligned `ca_rmsd_to_input` will be logged.
|
||||
- Currently, partial diffusion subsets the inference schedule based on the partial_t, so `inference_sampler.num_timesteps` will affect how many steps are used but it is not equal to the number of steps used.
|
||||
|
||||
In the following example, RFD3 will noise out by 15 angstroms and constrain atoms of three residues. In this output one of the 8 diffusion outputs swapped its sequence index by one residue:
|
||||
```json
|
||||
{
|
||||
"partial_diffusion": {
|
||||
"input": "input_pdbs/7v11.cif",
|
||||
"ligand": "OQO",
|
||||
"partial_t": 15.0,
|
||||
"unindex": "A431,A572-573",
|
||||
"select_fixed_atoms": {
|
||||
"A431": "TIP",
|
||||
"A572": "BKBN",
|
||||
"A573": "BKBN"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Below is an example of what the output should look like (diffusion outputs in teal, original native in navajo white):
|
||||
<!--<p align="center">
|
||||
<img src=".assets/partial_diff.png" alt="Partial diffusion" width=650>
|
||||
</p>-->
|
||||
```{image} .assets/partial_diff.png
|
||||
:alt: Partial diffusion.
|
||||
:width: 650px
|
||||
```
|
||||
|
||||
(cif-parser-options)=
|
||||
### CIF Parser Options
|
||||
The `cif_parser_args` setting that you can include in your input JSON or YAML file accepts several possible values as a dictionary:
|
||||
- `cache_dir`: String specifying the path to the directory where cache files are stored (default: null).
|
||||
- `load_from_cache`: Boolean specifying if data should be loaded from cache (default: True).
|
||||
- `save_to_cache`: Boolean specifying if the data should be saved to cache (default: True).
|
||||
- `fix_arginines`: Boolean specifying if arginine residues should be fixed (default: False).
|
||||
- `add_missing_atoms`: Boolean specifying if missing atoms should be automatically added (default: False).
|
||||
- `remove_ccds`: A list of CCD ([chemical component dictionary](https://www.wwpdb.org/data/ccd)) keys to remove (default: []).
|
||||
- `hydrogen_policy`: String specifying how hydrogens should be handled. Current options are `remove`. (Default: remove).
|
||||
- `extra_fields`: These optional fields can be found by looking at AtomWorks' [`parser.py` file](https://github.com/RosettaCommons/atomworks/blob/production/src/atomworks/io/parser.py).
|
||||
|
||||
You can also use `STANDARD_PARSER_ARGS` from [AtomWorks](https://github.com/RosettaCommons/atomworks), more information can be found at [atomworks/io/parser.py](https://github.com/RosettaCommons/atomworks/blob/production/src/atomworks/io/parser.py)
|
||||
|
||||
(select-fixed-atoms)=
|
||||
### Select Fixed Atoms
|
||||
The `select_fixed_atoms` input setting can take a boolean, dictionary or contig string as input:
|
||||
- `True`: All atoms pulled from the input file (via `contig`, for example) are fixed in 3D space
|
||||
- `False`: All the atoms pulled from the input file are unfixed in 3D space
|
||||
- Contig string: See the [Contig Strings](#contig-strings) section for formatting. Specifying a contig string for this setting allows for the specification of several components to fix in 3D space. This string should only reference residues from the input. Chain breaks are irrelevant for this setting.
|
||||
- Dictionary: Allows for the specification of specific atoms within the residue to be fixed in 3D space. For example, `{"A1": "N,CA,C,O,CB,CG", "A2-10": "BKBN"}` fixes backbone and CB for residues 1 and 2, and all atoms for residues 3-10 in chain A.
|
||||
|
||||
(debugging-recommendations)=
|
||||
## Debugging recommendations
|
||||
- For unindexed scaffolding, you can use the option `cleanup_guideposts=False` to keep the models' outputs for the guideposts. The guideposts are saved as separate chains based on whether their relative indices were leaked to the model: e.g. for `unindex=A11-12,A22`, you should see `A11` and `A12` indexed together on one chain and `A22` on its own chain, indicating the model was provided with the fact that `A11` and `A12` are immediately next to one another in sequence but their distance to `A22` is unknown.
|
||||
- To see the full 14 diffused virtual atoms you can use `cleanup_virtual_atoms=False`. Default is to discard them for the sake of downstream processing.
|
||||
- To see the trajectories, you can use `dump_trajectories=True`. This can be useful if the outputs look strange but the config is correct, or if you want to make cool gifs of course! Trajectories do not have sequence labels and contain virtual atoms.
|
||||
|
||||
(faq--gotchas)=
|
||||
## FAQ / Gotchas
|
||||
|
||||
<details>
|
||||
<summary><b>Can I guide on secondary structure?</b></summary>
|
||||
Currently no - in future models we may do so, however, you can use `is_non_loopy: true` to make fewer loops. We find this produces a lot more helices and fewer loops (and less sheets).
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Do I need select_fixed_atoms & select_unfixed_sequence every time?</b></summary>
|
||||
No. Defaults apply when input present.
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary><b>Why "Input provided but unused"?</b></summary>
|
||||
|
||||
This indicates you gave an input pdb / cif (not `input: null`) but no contig, unindex, ligand, and/or partial_t.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>What do the logged bfactors mean?</b></summary>
|
||||
|
||||
The sequence head from RFD3 logs its confidence for each token in the output structure, you can run `spectrum b` in `pymol` to see it. It usually doesn't mean anything but can give you some idea if the model has gone vastly distribution if the entropy is high (uncertain assignment of sequence).
|
||||
</details>
|
||||
|
||||
|
||||
Let us know if you have any additional questions, we'd be happy to answer them either in our [Slack channel](https://join.slack.com/t/proteinmodelfoundry/shared_invite/zt-3kpwru8c6-nrmTW6LNHnSE7h16GNnfLA) or in a GitHub discussion.
|
||||
|
||||
## Further examples of InputSelection syntax
|
||||
|
||||
Below is a reference for more examples of different ways you can specify inputs to select from your pdb in configs; we hope the community can find use in this flexible system for future models!
|
||||
<!--<p align="center">
|
||||
<img src=".assets/input_selection_large.png" alt="Input selection syntax" width=650>
|
||||
</p>-->
|
||||
```{image} .assets/input_selection_large.png
|
||||
:alt: Input selection syntax.
|
||||
:width: 650px
|
||||
```
|
||||
39
_sources/models/rfd3/intro_inference_calculations.md.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
# Inference Calculation Basics
|
||||
In RFdiffusion3 (RFD3), [YAML](https://yaml.org/) or [JSON](https://www.json.org/json-en.html) files are used to specify the **settings** for your inference calculations and [**configuration options**](https://hydra.cc/docs/configure_hydra/intro/) are used to provide other information about your calculation, such as the location and name of the checkpoint file you want to use.
|
||||
|
||||
## Inference Settings
|
||||
The inference 'settings' are how you constrain your inference calculation, such as specifying portions of the output you wish to have designed (`contig`) and specifying any symmetries that exist in your system (`symmetry`). These settings are stored in either a YAML or JSON file to be interpreted by RFdiffusion3. Runnable examples of json and yaml files can be found in `foundry/models/rfd3/docs/examples`.
|
||||
|
||||
Using this type of input specification allows you to define different types of inference calculations all in the same file, and either run all of the calculation types defined in the file or specify the specific calculation you want to run via the command line.
|
||||
|
||||
```{note}
|
||||
For more information on many of the available options, see {doc}`input`. To see all available options, see [input_parsing.py](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/src/rfd3/inference/input_parsing.py).
|
||||
```
|
||||
|
||||
## Job configurations
|
||||
Once you have all of the settings you want to use to constrain your inference run in a JSON or YAML file, you can run the job using a command starting with `rfd3 design` and then including different 'configuration options'. You must include the path to the YAML/JSON file that defines your inference run(s) and the output directory:
|
||||
```bash
|
||||
rfd3 design inputs=/path/to/your/yaml/or/json/file out_dir=/path/to/your/output/directory ckpt_path=/path/to/an/rfd3_checkpoint_file.pt
|
||||
```
|
||||
|
||||
```{note}
|
||||
The output directory location specified will be created if it does not exist. This setting only specifies the location the output files will be stored in, not the naming of the various output files.
|
||||
```
|
||||
|
||||
Several options are available to you as well to control the number of designs, whether to save the trajectory files, etc. These options can be found in [`foundry/models/rfd3/configs/inference_engine/base.yaml`](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/configs/inference_engine/base.yaml) and [`foundry/models/rfd3/configs/inference_engine/rfdiffusion3.yaml`](https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/configs/inference_engine/rfdiffusion3.yaml)
|
||||
|
||||
## Output Files
|
||||
At the end of your inference calculation, you will be left with several output files in the directory you specified. At minimum (if you did not change any settings to include more outputs) you will be left with a JSON and a compressed CIF file (`.cif.gz`) for each design. The names of the files will be as follows:
|
||||
```bash
|
||||
<name of the json or yaml file>_<settings group name>_<batch_number>_model_n.<suffix>
|
||||
```
|
||||
Where `n` is the design number, the numbering for the designs will start at 0.
|
||||
|
||||
For an example, if I called the my JSON file `rfd3_example.json`, only ran one batch, and had a group of settings in it labeled `example_1` I would get files with names like:
|
||||
```bash
|
||||
rfd3_example_example_1_0_model_0.cif.gz
|
||||
rfd3_example_example_1_0_model_0.json
|
||||
rfd3_example_example_1_0_model_1.cif.gz
|
||||
rfd3_example_example_1_0_model_1.json
|
||||
...
|
||||
```
|
||||
202
_sources/models/rfd3/readme.md.txt
Normal file
@@ -0,0 +1,202 @@
|
||||
# De novo Design of Biomolecular Interactions with RFdiffusion3
|
||||
|
||||
RFdiffusion3 (RFD3) is a diffusion method that can design protein structures
|
||||
under complex constraints.
|
||||
|
||||
This repository contains both the training and inference code, and
|
||||
both are described in more detail below.
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/.assets/overview.png" alt="All-atom design with RFD3">
|
||||
</p>
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Looking for the InputSpecification?** The complete reference for all input fields, CLI arguments, and inference sampler options is in [`docs/input.md`](./docs/input.md) ([external docs](https://rosettacommons.github.io/foundry/models/rfd3/input.html)). This covers everything from contig strings and conditioning options to diffusion sampler parameters like `num_timesteps` and `n_recycle`.
|
||||
|
||||
## Getting Started
|
||||
1. Install RFdiffusion3.
|
||||
If you have already installed all the models and **are not** interested in hydrogen bond conditioning skip [here](#running-inference). <br><br>
|
||||
If you have already installed all the models and **are** interested in hydrogen bond conditioning skip [here](#hydrogen-bond-conditioning)
|
||||
If you would like to install all of the foundry models (recommended), see the [foundry README](../../README.md) for instructions. <br><br>
|
||||
If you would like to install only RFD3:
|
||||
```bash
|
||||
pip install rc-foundry[rfd3]
|
||||
```
|
||||
|
||||
2. Download checkpoint to your desired checkpoint location.
|
||||
```bash
|
||||
foundry install rfd3 --checkpoint-dir <path/to/ckpt/dir>
|
||||
```
|
||||
This sets `FOUNDRY_CHECKPOINT_DIRS` and will in future look for checkpoints in that directory (alongside the default `~/.foundry/checkpoints` location), allowing you to run inference without supplying the checkpoint path. The checkpoint directory is optional, defaulting to `~/.foundry/checkpoints` if unset.
|
||||
|
||||
### Hydrogen Bond Conditioning
|
||||
If you would like to use hydrogen bond conditioning in your designs,
|
||||
you need to install [HBPLUS](https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/). This is **not** installed by default:
|
||||
|
||||
3. Download HBPLUS from here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/download.html (available for free)
|
||||
4. Follow the installation instruction here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/install.html
|
||||
5. Update `HBPLUS_PATH` in `foundry/.env` file with the path to your `hbplus` executable.
|
||||
|
||||
## Running Inference
|
||||
|
||||
Below is a quick inference example to run to test that your setup
|
||||
is working correctly. If you are new to RFdiffusion methods or JSON/YAML structure, we recommend that you follow the [PPI tutorial]( https://rosettacommons.github.io/foundry/models/rfd3/tutorials/ppi_design_tutorial.html) to set up your first calculation.
|
||||
|
||||
To run inference (with foundry installed in your environment, or RFD3 & Foundry src in PYTHONPATH):
|
||||
```bash
|
||||
rfd3 design out_dir=logs/inference_outs/demo/0 inputs=models/rfd3/docs/examples/demo.json skip_existing=False dump_trajectories=True prevalidate_inputs=True
|
||||
```
|
||||
To run RFD3, you only need to provide the input (`inputs`) JSON/YAML file (see the [external documentation for more details](https://rosettacommons.github.io/foundry/models/rfd3/index.html#general)) where you specify your design constraints and the output directory (`out_dir`) where you want to store the files RFD3 generates.
|
||||
|
||||
Additional unnecessary (but useful!) options are added to the above command:
|
||||
- `dump_trajectories`: Dumps trajectory structures, can be useful for debugging your setup or making cool gifs. However, trajectory files are large, thus this setting is False by default.
|
||||
- `prevalidate_inputs`: Checks that your inputs are valid before running inference. Helpful if your JSON/YAML has a number of different configs you want to debug / double check are valid before loading the checkpoints.
|
||||
- `skip_existing`: Skips any existing files that would be in the same place and have the same name as the calculation being run. If you are testing your setup multiple times, including this option is important so that you actually run RFdiffusion3.
|
||||
|
||||
There are various interesting ways you can use RFD3 beyond [Atom14](https://www.biorxiv.org/content/10.1101/2024.08.16.608235v4) design as it's trained on a large array of different tasks.
|
||||
For example, you can fix sequence and not structure (prediction-type task), fix the backbone and unfix the sequence (MPNN-type inverse folding) or unfix the sidechains only (PLACER/ChemNet-style):
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/.assets/conditioning.png" alt="Conditioning options for RFD3">
|
||||
</p>
|
||||
|
||||
For full details on how to specify inputs, see the [input specification documentation](./docs/input.md). You can also see `foundry/models/rfd3/configs/inference_engine/rfdiffusion3.yaml` for even more options.
|
||||
|
||||
## Further example JSONs for different applications
|
||||
Additional examples are broken up by use case. If you have cloned the
|
||||
repository, matching `.json` files are in `foundry/models/rfd3/docs/examples`
|
||||
that can be run directly, similar to the previous example.
|
||||
|
||||
In the examples, the paths to the input files are specified assuming
|
||||
that you are running the examples from the `foundry/models/rfd3/docs/examples`
|
||||
directory. If you would like to run RFD3 from a different location,
|
||||
you will need to change the path in the `.json` file(s) before running.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<h3><a href="./docs/na_binder_design.md">Nucleic acid binder design</a></h3>
|
||||
<img src="docs/.assets/dna.png" height="150" />
|
||||
</td>
|
||||
<td align="center">
|
||||
<h3><a href="./docs/sm_binder_design.md">Small molecule binder design</a></h3>
|
||||
<img src="docs/.assets/sm.png" height="150" />
|
||||
</td>
|
||||
<td align="center">
|
||||
<h3><a href="./docs/protein_binder_design.md">Protein binder design</a></h3>
|
||||
<img src="docs/.assets/ppi.png" height="150" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<h3><a href="./docs/enzyme_design.md">Enzyme design</a></h3>
|
||||
<img src="docs/.assets/enzyme.png" height="150" />
|
||||
</td>
|
||||
<td align="center">
|
||||
<h3><a href="./docs/symmetry.md">Symmetric design</a></h3>
|
||||
<img src="docs/.assets/symm.png" height="150" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Training and Fine-Tuning
|
||||
|
||||
We make available to the community not only the weights to run RFdiffusion3 but also the complete training code, easily extendable to additional use cases. Any AtomWorks-compatible dataset (and thus, any collection of structure files) can be readily incorporated and used for training or fine-tuning.
|
||||
|
||||
### Dataset Configuration
|
||||
|
||||
#### PDB Training
|
||||
|
||||
To train on the PDB:
|
||||
|
||||
1. Set up PDB and CCD mirrors as described in the [AtomWorks documentation](https://rosettacommons.github.io/atomworks/latest/mirrors.html)
|
||||
2. Update the [path configs](/models/rfd3/configs/paths/) to point to the correct base directories for the metadata parquets
|
||||
3. Set the `PDB_MIRROR` and `CCD_PATH` variables in your `.env` file
|
||||
|
||||
#### Custom Datasets
|
||||
|
||||
RFdiffusion3 supports arbitrary datasets of structure files for training and fine-tuning via AtomWorks. See the [AtomWorks dataset documentation](https://rosettacommons.github.io/atomworks/latest/auto_examples/dataset_exploration.html) for details on creating custom datasets.
|
||||
|
||||
### Running Training
|
||||
|
||||
After setting up Hydra configs, launch a training run:
|
||||
```bash
|
||||
uv run python models/rfd3/src/rfd3/train.py experiment=pretrain ckpt_path=<path/to/ckpt>
|
||||
```
|
||||
|
||||
Supplying `ckpt_path=null` (default) will start with fresh weights.
|
||||
See the [path configs](/models/rfd3/configs/paths/) to customize data input and log output directories.
|
||||
|
||||
### Logging Configuration
|
||||
|
||||
Training runs support logging via [Weights & Biases](https://wandb.ai/). To enable wandb logging:
|
||||
|
||||
```bash
|
||||
uv run python models/rfd3/src/rfd3/train.py experiment=pretrain logger=wandb
|
||||
```
|
||||
|
||||
To run training without wandb (default):
|
||||
```bash
|
||||
uv run python models/rfd3/src/rfd3/train.py experiment=pretrain logger=csv
|
||||
```
|
||||
|
||||
### Install HBPLUS for training with hydrogen bond conditioning:
|
||||
|
||||
1. Download hbplus from here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/download.html (available for free)
|
||||
2. Follow the installation instruction here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/install.html
|
||||
3. Update `HBPLUS_PATH` in `foundry/.env` file with the path to your `hbplus` executable.
|
||||
|
||||
## Distributed Training
|
||||
To use distributed training, you could use a command such as this (we use Lightning Fabric to handle ddp)
|
||||
```
|
||||
EFFECTIVE_BATCH_SIZE=16
|
||||
DEVICES_PER_NODE= #INSERT NUMBER OF DEVICES PER NODE
|
||||
NNODES = # INSERT NUMBER OF NODES
|
||||
GRAD_ACCUM_STEPS=$((EFFECTIVE_BATCH_SIZE / (DEVICES_PER_NODE * NNODES)))
|
||||
uv run python models/rfd3/src/rfd3/train.py \
|
||||
experiment=pretrain \
|
||||
trainer.devices_per_node=$DEVICES_PER_NODE \
|
||||
trainer.num_nodes=$SLURM_NNODES \
|
||||
trainer.grad_accum_steps=$GRAD_ACCUM_STEPS"
|
||||
```
|
||||
Notably, fabric must receive `devices_per_node` and the number of nodes (`num_nodes`) you're training on.
|
||||
|
||||
**Dataset Paths:** See the paths [configs](/models/rfd3/configs/paths/) to customize the paths where data is read from and where logs are written. There is also a wandb config that can be enabled if you want to log training through wandb.
|
||||
|
||||
**Hydra configs and experiments:** In the example above, the `experiment` argument is a hydra-native argument. For RFD3, it will look for config overrides in `/models/rfd3/configs/experiment/<experiment-name>.yaml` and apply them on top of the base configs
|
||||
|
||||
**Conditioning during training:** RFD3 is trained on a multitude of conditioning tasks, and does so by randomly 'creating problems' for it to solve during training. For example, for a random training example it gets a random set of tokens to be 'motif tokens', then subsets those to whether specific atoms should be fixed, and further subsets the information to whether, say, sequence, coordinates or the sequence index should be fixed. It's pretty complicated to evaluate and how it was put together was more of an art than a science. There's likely still room for
|
||||
further optimization!
|
||||
|
||||
In `models/rfd3/configs/datasets/design_base.yaml` there's the shared configs for all datasets under `global_transform_args`. The dials that control the conditioning described above go under `training_conditions`, where for example `tipatom` - a specific preset conditioning sampler which more frequently fixes few tokens with few atoms - and others can be found.
|
||||
|
||||
**Training with WandB:** We strongly recommend tracking your runs via wandb. To use it, simply have your WANDB_API_KEY set and use the wandb logger. For more details see [here](https://wandb.ai/site/)
|
||||
|
||||
# Appendix
|
||||
|
||||
## Install HBPLUS for hydrogen bond conditioning:
|
||||
One of the examples shows how to incorporate hydrogen bond conditioning
|
||||
into your designs. To make use of this feature, you will need to
|
||||
additionally complete the following steps:
|
||||
|
||||
1. Download hbplus from here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/download.html (available for free)
|
||||
2. Follow the installation instruction here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/install.html
|
||||
3. Update `HBPLUS_PATH` in `foundry/.env` file with the path to your `hbplus` executable.
|
||||
|
||||
## Citation
|
||||
|
||||
If you use this code or data in your work, please consider citing:
|
||||
|
||||
```bibtex
|
||||
@article {butcher2025_rfdiffusion3,
|
||||
author = {Butcher, Jasper and Krishna, Rohith and Mitra, Raktim and Brent, Rafael Isaac and Li, Yanjing and Corley, Nathaniel and Kim, Paul T and Funk, Jonathan and Mathis, Simon Valentin and Salike, Saman and Muraishi, Aiko and Eisenach, Helen and Thompson, Tuscan Rock and Chen, Jie and Politanska, Yuliya and Sehgal, Enisha and Coventry, Brian and Zhang, Odin and Qiang, Bo and Didi, Kieran and Kazman, Maxwell and DiMaio, Frank and Baker, David},
|
||||
title = {De novo Design of All-atom Biomolecular Interactions with RFdiffusion3},
|
||||
elocation-id = {2025.09.18.676967},
|
||||
year = {2025},
|
||||
doi = {10.1101/2025.09.18.676967},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
URL = {https://www.biorxiv.org/content/early/2025/11/19/2025.09.18.676967},
|
||||
eprint = {https://www.biorxiv.org/content/early/2025/11/19/2025.09.18.676967.full.pdf},
|
||||
journal = {bioRxiv}
|
||||
}
|
||||
```
|
||||
5
_sources/models/rfd3/readmelink.md.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
README
|
||||
======
|
||||
|
||||
.. include:: ../README.md
|
||||
:parser: myst_parser.sphinx_
|
||||
@@ -0,0 +1,282 @@
|
||||
# Installation of RFdiffusion3 on Unix Systems
|
||||
|
||||
## Table of Contents
|
||||
- [Learning Objective](#install_tutorial_learning_objective)
|
||||
- [Prerequisites](#install_tutorial_prereqs)
|
||||
- [Tutorial](#install_tutorial_tutorial)
|
||||
- [Step 1: Creating a conda environment](#install_tutorial_step_1)
|
||||
- [Step 2: Installing RFdiffusion3](#install_tutorial_step_2)
|
||||
- [Step 3: Verify the installation](#install_tutorial_step_3)
|
||||
- [GPU vs. CPU Execution](#install_tutorial_gpu_v_cpu)
|
||||
- [How RFdiffusion3 detects and uses your GPU](#install_tutorial_detecting_gpu)
|
||||
- [Running on latest GPU architectures (e.g. Blackwell)](#install_tutorial_blackwell)
|
||||
- [Glossary](#install_tutorial_glossary)
|
||||
- [Resources & References](#install_tutorial_resources_references)
|
||||
|
||||
(install_tutorial_learning_objective)=
|
||||
## Learning Objective
|
||||
By the end of this tutorial, you will be able to install RFdiffusion3 (RFD3) on a Unix-based system using `pip` and verify that the installation was successful by running a minimal test example. After completing this tutorial, you will have a working RFdiffusion3 environment capable of running basic design tasks and ready for use in downstream protein design workflows.
|
||||
|
||||
(install_tutorial_prereqs)=
|
||||
## Prerequisites
|
||||
RFdiffusion3 is supported on Unix-based systems (Linux or MacOS). Windows is not officially supported unless used through a Linux subsystem (e.g., [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)). While not strictly required, using an environment manager such as [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html), [pixi](https://pixi.prefix.dev/latest/), [mamba](https://github.com/mamba-org/mamba), or [uv](https://docs.astral.sh/uv/) can be helpful to manage the dependencies that RFD3 relies on. For practical protein design workloads, a machine equipped with an NVIDIA GPU with ~3 GB of memory is highly recommended, as GPU acceleration substantially reduces inference time. This requires a recent NVIDIA driver installation. RFdiffusion3 can also run on CPU-only systems, however, runtime may increase significantly depending on the design task.
|
||||
|
||||
List of requirements:
|
||||
- Unix-based system
|
||||
- Python 3.9-3.12
|
||||
- Package manager (optional, but highly suggested)
|
||||
- A working internet connection
|
||||
- Sufficient disk space for the [model checkpoints](#install_tutorial_checkpoint) (~3 GB)
|
||||
- A downloading tool such as `wget` or `curl`
|
||||
- Optional but recommended: An NVIDIA GPU with a recent driver installation and at least ~16GB of RAM
|
||||
|
||||
(install_tutorial_tutorial)=
|
||||
## Tutorial
|
||||
<details>
|
||||
<summary><strong>Mini Tutorial: Requesting an Interactive GPU Node on SLURM systems</strong></summary>
|
||||
|
||||
If you are installing any of the models in Foundry on a high performance computing (HPC) cluster, you should install them from a compute node – specifically a GPU node is possible – not the login node. For those new to using these types of resources, we will go through how to request an interactive GPU node to use for installing RFD3 here. You can also run RFD3 by requesting an interactive GPU node.
|
||||
|
||||
```{important}
|
||||
This "Mini Tutorial" shows how to request an interactive GPU node for systems using [SLURM](https://slurm.schedmd.com/overview.html). This is a common workload manager that helps allocate resources and schedule jobs that various users want to run on the cluster. If your HPC system uses a different workload manager or you are using cloud computing, you will need to go to your cluster's documentation to learn how to do this.
|
||||
```
|
||||
|
||||
Once you are logged into your HPC system, the command to request an interactive node will have the following structure:
|
||||
```bash
|
||||
salloc --gres=gpu:1 --account=<account-name> --partition=<partition-name>
|
||||
```
|
||||
This requests:
|
||||
- 1 GPU
|
||||
- access under the specified account
|
||||
- resources from the specified partition
|
||||
|
||||
The partition and account names are going to be specific to your cluster and lab, respectively. Look through the documentation for your HPC resources or ask your lab members if you do not know what to put for these.
|
||||
|
||||
```{note}
|
||||
Typically your interactive session will not start right away, you will need to wait until resources become available. How long you need to wait depends on your system. Once it is ready you should see the command prompt reappear in your terminal window, perhaps slightly changed to reflect that you are now on a specific node. This means the allocation was "granted."
|
||||
```
|
||||
|
||||
You can directly run the commands to install and run tools like RFD3 from this command prompt, however it's good practice to open an interactive shell. This will be configured better for running commands on the interactive node:
|
||||
```bash
|
||||
srun --pty $SHELL
|
||||
```
|
||||
Doing this likely won't change anything that you can see, but if you run the command `hostname` before and after you run this command, you will see different results.
|
||||
|
||||
```{note}
|
||||
Some systems will automatically put you on an interactive shell on the allocated compute node after running salloc. In this case running the command to create an interactive shell will do nothing – running `hostname` before and after will result in the same information printed to screen.
|
||||
```
|
||||
|
||||
You can often add other information to your resource allocation request. For example:
|
||||
```bash
|
||||
salloc --gres=gpu:1 --cpus-per-task=4 --mem=16G --time=01:00:00 --account=<account-name> --partition=<partition-name>
|
||||
```
|
||||
This command includes:
|
||||
- Information about the number of CPU nodes you want (CPUs are needed to launch programs, feed data to GPUs, etc. GPU nodes are almost never run in complete isolation from CPU nodes.)
|
||||
- The amount of memory for your GPU node
|
||||
- The time limit for your interactive node
|
||||
|
||||
Your cluster will have limits on the number of CPUs, memory, and time that you can request. Refer to the documentation specific for your cluster if you need these pieces of information.
|
||||
|
||||
Now that you have your interactive GPU session running, continue to installing RFD3 on your system.
|
||||
<hr>
|
||||
</details>
|
||||
|
||||
<!--
|
||||
If you want to run RFdiffusion3 on a GPU and are working on a shared scientific cluster, a GPU is usually not available by default. In that case, you must first request one through the cluster's job scheduler (e.g., [SLURM](#SLURM)). If you are installing RFdiffusion3 on your local machine, or if you plan to run it only on CPU, you can [skip](#step-1-creating-a-conda-environment) this step.
|
||||
|
||||
On many [SLURM](#SLURM) clusters, the exact command for allocating a GPU depends on the local configuration. A general pattern is:
|
||||
```
|
||||
salloc --gres=gpu:1 --account=<account-name> --partition=<partition-name>
|
||||
```
|
||||
This requests:
|
||||
- 1 GPU
|
||||
- access under the specified account
|
||||
- resources from the specified partition
|
||||
|
||||
After the allocation is granted, start an interactive shell with:
|
||||
```
|
||||
srun --pty $SHELL
|
||||
```
|
||||
|
||||
If you cluster requires explicit CPU cores, system memory and a time limit, a more complete request may look like:
|
||||
```
|
||||
salloc --gres=gpu:1 --cpus-per-task=4 --mem=16G --time=01:00:00 --account=<account-name> --partition=<partition-name>
|
||||
```
|
||||
|
||||
Once the session has started, verify that a GPU was allocated by running:
|
||||
```
|
||||
nvidia-smi
|
||||
```
|
||||
|
||||
If the allocation was successful, this command will display information such as the GPU model, the NVIDIA driver version and the current GPU memory usage. If you see <code>command not found</code>, or if no GPU is listed, then no GPU is available in your current session.
|
||||
-->
|
||||
|
||||
(install_tutorial_step_1)=
|
||||
### Step 1: Creating a conda environment
|
||||
Next, create an isolated [environment](#environment_def). Here we will specifically create a conda environment, which requires [Anaconda](https://www.anaconda.com/download) or its lightweight variants, [Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/main) and Miniforge[https://conda-forge.org/download/]. These are often already installed on HPC clusters.
|
||||
|
||||
```{note}
|
||||
The rest of the tutorial assumes that you are working in a conda environment, but the commands can work with other package managers (uv, pixi, etc.) with only minor changes required. Using conda is not required for this installation or for running RFD3.
|
||||
```
|
||||
|
||||
Environments allow you to isolate the all the packages you need to install and any associated libraries from your system-wide installation. This prevents dependency conflicts when different tools need different dependency versions (e.g. your backbone design tool needs NumPy v.2.4.0 but your sequence generation tool needs v.2.3.5) and ensures that your global environment remains unaffected. If any issues occur during installation, the environment can simply be removed without impacting the rest of your system.
|
||||
|
||||
In the terminal input the following command:
|
||||
```bash
|
||||
conda create -n RFD3_env python=3.12 -y
|
||||
```
|
||||
|
||||
Here:
|
||||
- `-n RFD3_env` specifies the name of the environment.
|
||||
- `python=3.12` defines the Python version (a version between 3.9 and 3.12 is recommended).
|
||||
- `-y` automatically confirms installation prompts
|
||||
|
||||
Once the creation is completed, activate the environment with:
|
||||
```bash
|
||||
conda activate RFD3_env
|
||||
```
|
||||
|
||||
You should now see `(RFD3_env)` prefixed in your terminal prompt, indicating that the environment is active.
|
||||
To verify that the correct Python interpreter is being used, run:
|
||||
```bash
|
||||
which python
|
||||
```
|
||||
The displayed path should point to the newly created [environment](#environment_def), for example:
|
||||
```bash
|
||||
/home/username/miniconda3/envs/RFD3_env/bin/python`
|
||||
```
|
||||
|
||||
(install_tutorial_step_2)=
|
||||
### Step 2: Installing RFdiffusion3
|
||||
RFdiffusion3 is distributed as part of the [Foundry](https://github.com/RosettaCommons/foundry/tree/production) ([`rc-foundry`](https://pypi.org/project/rc-foundry/) on PyPI) Python package. Foundry is the RosettaCommons framework that provides a unified [command-line interface](#cli_def) for running multiple protein modeling and design deep learning models. In machine learning disciplines, this type of resource is often referred to as a ['model zoo'](#model_zoo_def). As of the last update of this tutorial, it includes [RosettaFold3 (RF3)](https://github.com/RosettaCommons/foundry/tree/production/models/rf3) for structure prediction, [MPNN](https://github.com/RosettaCommons/foundry/tree/production/models/mpnn) for inverse folding, and [RFdiffusion3](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3) for generative protein design. While this tutorial focuses on RFdiffusion3, RosettaFold3 and MPNN can be installed in a similar manner.
|
||||
|
||||
Install RFdiffusion3 using:
|
||||
```bash
|
||||
pip install "rc-foundry[rfd3]"
|
||||
```
|
||||
```{important}
|
||||
The quotation marks around `rc-foundry[rfd3]` are important in shells such as `zsh`, where square brackets have special meaning. Without quotes, the command may fail.
|
||||
```
|
||||
|
||||
(install_tutorial_checkpoint)=
|
||||
#### Dowloading the model checkpoint
|
||||
RFdiffusion3 requires a trained model file (a [checkpoint](#checkpoint_def)) file containing the learned neural network weights (~3 GB).
|
||||
Download the checkpoint file using:
|
||||
```bash
|
||||
foundry install rfd3
|
||||
```
|
||||
By default, this command will download the [checkpoint](#checkpoint_def) file to `~/.foundry/checkpoints`.
|
||||
|
||||
|
||||
If you prefer to store the [checkpoint](#checkpoint_def) files in a custom location (for example, on a cluster with limited home directory space), you can specify a custom checkpoint directory using the `--checkpoint-dir`flag:
|
||||
```bash
|
||||
foundry install rfd3 --checkpoint-dir <path/to/checkpoint_dir>`
|
||||
```
|
||||
|
||||
This will download the [checkpoint](#checkpoint_def) file to the specified directory and register that directory via the `FOUNDRY_CHECKPOINT_DIRS` [environment variable](#env_var_def), so that RFdiffusion3 automatically searches for it there in future runs (in addition to the default `~/.foundry/checkpoints` location).
|
||||
|
||||
(install_tutorial_step_3)=
|
||||
### Step 3: Verify the installation
|
||||
To verify that RFdiffusion3 was installed correctly, we will download and run a minimal demonstration example from the official RFdiffusion3 repository. First, create a working directory and a directory for the example input files, then download the required files:
|
||||
```
|
||||
mkdir -p input_pdbs
|
||||
mkdir -p verify_installation
|
||||
wget -P verify_installation https://raw.githubusercontent.com/RosettaCommons/foundry/refs/heads/production/models/rfd3/docs/examples/demo.json
|
||||
wget -P input_pdbs https://raw.githubusercontent.com/RosettaCommons/foundry/production/models/rfd3/docs/input_pdbs/M0255_1mg5.pdb
|
||||
wget -P input_pdbs https://raw.githubusercontent.com/RosettaCommons/foundry/production/models/rfd3/docs/input_pdbs/7v11.pdb
|
||||
wget -P input_pdbs https://raw.githubusercontent.com/RosettaCommons/foundry/production/models/rfd3/docs/input_pdbs/1bna.pdb
|
||||
```
|
||||
|
||||
```{note}
|
||||
If you have trouble accessing the files via `wget`, you can also place them on your cluster via [`scp`](https://snapshooter.com/learn/linux/copy-files-scp#scp-from-local-to-remote). A zip file has been created with just these JSON and PDB files and can be found [here](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3/docs/tutorials/installation_tutorial).
|
||||
```
|
||||
|
||||
After downloading the files, enter the working directory and run the demo using:
|
||||
```bash
|
||||
cd verify_installation
|
||||
rfd3 design out_dir=demo_output inputs=demo.json
|
||||
```
|
||||
The output directory (`demo_output`) will be created automatically if it does not exist already. On a modern GPU, this example typically completes within a few minutes. On a CPU, runtime may increase substantially depending on the hardware. Some warning messages during execution are normal and can be ignored.
|
||||
|
||||
Expected output:
|
||||
Inside `demo_output/`, you should find structure files (.cif.gz) for each demo example and summary score files (.json). If these were generated without errors, the installation was successful. You can expect the generated structures using a molecular visualization tool such as [PyMOL](https://www.pymol.org/), or examine the score files in a text editor.
|
||||
|
||||
(install_tutorial_gpu_v_cpu)=
|
||||
## GPU vs CPU Execution
|
||||
RFdiffusion3 can run on both CPUs and GPUs, but the performance difference is very large:
|
||||
- CPU only: Suitable for small tests and learning. Inference will run, but it can be very slow — often tens of minutes per example or longer depending on your CPU.
|
||||
- GPU: Strongly recommended for real use, especially with multiple targets. A modern NVIDIA GPU can reduce runtime from minutes to seconds per design.
|
||||
|
||||
(install_tutorial_detecting_gpu)=
|
||||
### How RFdiffusion3 detects and uses your GPU
|
||||
To run RFdiffusion3 on a GPU no additional setup steps are required. It will automatically try to use a GPU if:
|
||||
1. A compatible NVIDIA GPU is present
|
||||
2. A matching CUDA toolkit is installed
|
||||
3. [PyTorch](https://pytorch.org/) (an open-source machine learning library) can communicate with the GPU
|
||||
|
||||
You can verify your GPU availability inside your [environment](#environment_def) using:
|
||||
```python
|
||||
python - << 'EOF'
|
||||
import torch
|
||||
print(torch.cuda.is_available())
|
||||
print(torch.cuda.device_count(), "GPUs detected")
|
||||
print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else "No GPU")
|
||||
EOF
|
||||
```
|
||||
Make sure your environment is activated before running this check.
|
||||
If `CUDA available: True` is printed and a GPU name appears, PyTorch can access your GPU.
|
||||
|
||||
(install_tutorial_blackwell)=
|
||||
### Running on latest GPU architectures (e.g. Blackwell)
|
||||
Very recent NVIDIA GPU architectures (such as Lovelace or Blackwell) may require:
|
||||
- A sufficiently new NVIDIA driver
|
||||
- A compatible CUDA runtime
|
||||
- A recent PyTorch build that supports the architecture
|
||||
|
||||
In most cases, installing RFD3 as described above is sufficient. However, for very new GPUs, you may need to upgrade PyTorch to a more recent (or nightly) build that includes support for the latest CUDA versions.
|
||||
|
||||
Installation example:
|
||||
```bash
|
||||
# 1. Install rfd3 and its required dependencies
|
||||
pip install "rc-foundry[rfd3]"
|
||||
|
||||
# 2. Upgrade to PyTorch nightly (cu128) to add Blackwell GPU support
|
||||
pip install --pre torch torchvision torchaudio \
|
||||
--index-url https://download.pytorch.org/whl/nightly/cu128 \
|
||||
--upgrade --force-reinstall
|
||||
```
|
||||
|
||||
Important notes:
|
||||
- Replace cu128 with the CUDA version supported by your driver (check via `nvidia-smi`, if your system uses NVIDIA GPUs).
|
||||
- Installing a nightly PyTorch build overrides the version originally installed with `rc-foundry`.
|
||||
- After upgrading PyTorch, verify GPU detection again using the [Python check](#install_tutorial_detecting_gpu) from above.
|
||||
|
||||
(install_tutorial_glossary)=
|
||||
## Glossary
|
||||
|
||||
(checkpoint_def)=
|
||||
### Checkpoint
|
||||
A binary file that contains the trained model weights of a neural network model. For RFdiffusion3, this file stores the learned parameters the model needs for inference. Without a checkpoint, the model cannot run.
|
||||
|
||||
(cli_def)=
|
||||
### CLI (Command-Line Interface)
|
||||
A way to interact with software by typing commands in a terminal. Foundry and RFdiffusion3 provide CLI commands like `foundry install rfd3` and `rfd3`.
|
||||
|
||||
(environment_def)=
|
||||
### Environment
|
||||
An isolated Python environment created using a package manager. It keeps project dependencies separate from your system Python to prevent version conflicts.
|
||||
|
||||
(env_var_def)=
|
||||
### Environment Variable
|
||||
A value stored in the shell session that software can read to determine paths or settings (e.g., `FOUNDRY_CHECKPOINT_DIRS`).
|
||||
|
||||
(model_zoo_def)=
|
||||
### Model Zoo
|
||||
A curated repository of model architectures that typically also includes pre-trained model weights that are available for download. [Foundry](https://github.com/RosettaCommons/foundry/tree/production) is an example of a model zoo.
|
||||
|
||||
(install_tutorial_resources_references)=
|
||||
## Resources & References
|
||||
- RosettaCommons Foundry (GitHub Repository) https://github.com/RosettaCommons/foundry
|
||||
- RFdiffusion Documentation https://github.com/RosettaCommons/foundry/tree/production/models/rfd3
|
||||
- RFdiffusion3 publication https://www.science.org/doi/10.1126/science.ade2574
|
||||
- PyMOL visualization software https://pymol.org/
|
||||
177
_sources/models/rfd3/tutorials/enzyme_design_tutorial.md.txt
Normal file
@@ -0,0 +1,177 @@
|
||||
# Enzyme Design in RFdiffusion3
|
||||
|
||||
## Before We Get Started...
|
||||
This tutorial does not cover installing RFD3. If you need to install this model, see the [README](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3) for installation instructions. You will need to remember the path to the directory where you stored your checkpoint files, if you did not store them in the default location.
|
||||
|
||||
```{note}
|
||||
You will need to clone the repository to access the tutorial files. Using the `pip` commands to install the model does not automatically download the files in the repository to your system.
|
||||
```
|
||||
|
||||
Make sure you have activated any environment(s) you used to install RFD3.
|
||||
|
||||
RFD3 runs best on GPUs. It is suggested to follow this tutorial on an interactive GPU node if you have access to one.
|
||||
|
||||
You will need the file `1euv_lig.pdb`. This is provided in [`foundry/models/rfd3/docs/tutorials/enzyme_tutorial_files/`](enzyme_tutorial_files/1euv_lig.pdb). You can clone the [`foundry`](https://github.com/RosettaCommons/foundry) repository to easily access files related to this tutorial.
|
||||
|
||||
<!-- Lastly, we will be visualizing the outputs of the calculations presented in the tutorial using [PyMOL](https://pymol.org/). The visualization steps are completely optional, but if you would like to follow along you will need to have PyMOL installed.-->
|
||||
|
||||
(enzyme-learning-objectives)=
|
||||
## Learning Objectives
|
||||
In this tutorial, we will use RFdiffusion3 to design cysteine hydrolases, similar to what is described in [*De novo* design of All-atom Biomolecular Interactions with RFdiffusion3](https://www.biorxiv.org/content/10.1101/2025.09.18.676967v2). This will allow us to explore the constraint options useful in enzyme design tasks.
|
||||
|
||||
(enzyme-setup)=
|
||||
## Setup
|
||||
Create a directory named `rfd3_enzyme_tutorial` and `cd` into it:
|
||||
```bash
|
||||
mkdir rfd3_enzyme_tutorial && cd rfd3_enzyme_tutorial
|
||||
```
|
||||
This is where you will be storing the files related to this tutorial.
|
||||
|
||||
If you would like to compare your outputs against those generated by the authors of this tutorial, you can find pre-generated output files in `foundry/models/rfd3/docs/tutorials/enzyme_tutorial_files/outputs.zip`.
|
||||
|
||||
There is also a pre-made JSON file available in `foundry/models/rfd3/docs/enzyme_tutorial_files`. We recommend following the tutorial to create this file yourself to better understand the RFD3 options that are relevant to enzyme design.
|
||||
|
||||
(enzyme-creating-the-json-file)=
|
||||
## Creating the JSON file
|
||||
In the next few sections we will be briefly describing the settings we will be using for this example enzyme design project. If you would like more information about the options discussed here or information about the other options that are available, see the [input specification](../input.md) documentation.
|
||||
|
||||
1. Using your editor of choice, open a new file called `rfd3_enzyme_tutorial.json`. This is where we will be storing the options we will use to constrain our enzyme design.
|
||||
1. This is a JSON file, so all of the options contained in it need to be encapsulated in curly braces ({}). Go ahead and add a pair of these to your file.
|
||||
1. Like all designs you will create using RFD3, we need to start by giving our calculation a name. It should be short, but descriptive, so let's call it `cys_1euv_lig`. Add this name in quotes to your file and place a colon and another pair of curly brackets after this. Your file should now look like:
|
||||
```json
|
||||
{
|
||||
"cys_1euv_lig":{
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
All of the other settings discussed here will go inside the inner curly brackets.
|
||||
1. Next we need to specify the structure file (PDB, CIF, etc.) that contains information about any input structures related to our calculation:
|
||||
```json
|
||||
"input": "path/to/1euv_lig.pdb",
|
||||
```
|
||||
1. The identifier representing the ligand in our PDB file needs to be listed so that RFD3 knows to treat this molecule differently:
|
||||
```json
|
||||
"ligand": "l:g",
|
||||
```
|
||||
```{note}
|
||||
The ligand in this tutorial is a real molecule, but not one listed in the [Chemical Component Database](https://www.wwpdb.org/data/ccd) or the [RCSB Protein Data Bank](https://www.rcsb.org/). Placing a colon (:) in your ligand name ensures that it does not match a molecule in the Chemical Component Database. If you are running a calculation that uses a real ligand, feel free to use its actual chemical identifier.
|
||||
```
|
||||
1. Add an option to `unindex` the residues in the input file. These residues were determined to be important for the enzymatic activity we are trying to create and design a protein around. However, we don't know where in our designed structure we want these enzymes to be, making this option incredibly useful for enzyme design:
|
||||
```json
|
||||
"unindex": "A514,A531,A574,A579-581",
|
||||
```
|
||||
```{important}
|
||||
Choosing the residues to use in your enzyme design comes from knowledge of your system, literature searches, etc. The only guidance we will give on this topic is to try several combinations of the residues you think are important for your enzyme design. Too many and you might overconstrain your system, too few and you are less likely to obtain useful designs.
|
||||
```
|
||||
1. We will use the `length` option to tell RFD3 how long we want our designed proteins to be:
|
||||
```json
|
||||
"length": "100-200",
|
||||
```
|
||||
1. To define where our protein should be centered, we will give RFD3 an 'ori token'. This specifies the *ori*gin (center of mass) of the designed portion of our output structure:
|
||||
```json
|
||||
"ori_token": [0,1,0],
|
||||
```
|
||||
```{figure} ../.assets/enzyme_tutorial/enzyme_ori_token.png
|
||||
:width: 60%
|
||||
|
||||
Image of the input structure with the ORI token in the center, visualized as a white sphere.
|
||||
```
|
||||
```{important}
|
||||
In this example the ori token is placed close to the center of our input structure. When designing your own enzyme scaffolds, this may not be the best placement depending on your design goals. See the [RFdiffusion2 paper](https://www.nature.com/articles/s41592-025-02975-x) for more information about how ORI tokens impact the results of diffusion calculations.
|
||||
```
|
||||
1. Even though we do not care where our residues end up in our final protein sequence, we want their geometries (or at least some of their atoms) to remain in the same place spatially so that their relationships to the ligand stay the same. For this we use `select_fixed_atoms`:
|
||||
```json
|
||||
"select_fixed_atoms": {
|
||||
"A514":"NE2,CE1,ND1,CD2,CG,CB",
|
||||
"A531":"OD1,CG,OD2,CB",
|
||||
"A574":"NE2,CD,OE1,CG",
|
||||
"A579":"C,O,CA,N",
|
||||
"A580":"SG,CB,CA,N,C,O",
|
||||
"A581":"C,O,CA,N"
|
||||
},
|
||||
```
|
||||
For residue A514 (histidine), A531 (aspartic acid), and A574 (glutamine) the side chain is fixed, for residue 580 (cysteine) the entire residue is fixed, and for A579 (aspartic acid) and A581 (glycine) the backbones are fixed. The ligand is automatically held in place.
|
||||
|
||||
```{figure} ../.assets/enzyme_tutorial/select_fixed_atoms.png
|
||||
:width: 60%
|
||||
|
||||
Image of the starting structure where the fixed atoms have been highlighted in purple.
|
||||
```
|
||||
1. RFD3 allows for RASA conditioning to control how exposed or buried different portions of your input are relative to the designed protein.
|
||||
```json
|
||||
"select_buried": {
|
||||
"l:g": "O1,C8,O3,C4,C5,C23,C24,C25,C26,C27"
|
||||
},
|
||||
"select_exposed": {
|
||||
"l:g": "C2,C22,C19,C18,C17,C20,C16,C15,O21,O14,C13,C12"
|
||||
},
|
||||
```
|
||||
As the names of the options suggest, RFD3 will do its best to bury atoms that were passed to the `select_buried` option and expose the atoms passed to the `select_exposed` option.
|
||||
|
||||
```{figure} ../.assets/enzyme_tutorial/RASA_ligand.png
|
||||
:width: 60%
|
||||
|
||||
Image of the ligand where the exposed portion is colored blue and the buried portion is colored red.
|
||||
```
|
||||
|
||||
There is a third option for RASA conditioning which was not used here,`select_partially_buried`, that you might find useful for your protein design tasks.
|
||||
1. Next we're also going to unfix the *sequence* for residues A579 and A581. For this design, we know where we want the backbones for the residues next to A580 (the cysteine), but their exact identity and index does not matter. This is where the option `select_unfixed_sequence` becomes useful.
|
||||
```json
|
||||
"select_unfixed_sequence": "A579,A581",
|
||||
```
|
||||
```{note}
|
||||
These residues have fixed portions in the `select_fixed_atoms` setting, but the atoms chosen are **only the backbone atoms**. If you are using both of these settings in your designs it is important to not fix any of the side chain atoms to allow for the identity of the residue to actually change.
|
||||
```
|
||||
1. Save your file and close it. Your files should be similar to what is stored in `outputs.zip`.
|
||||
|
||||
(enzyme-running-rfd3)=
|
||||
## Running RFD3
|
||||
To actually run RFD3 you need to know:
|
||||
- the directory you want the outputs to be stored in
|
||||
- the path to the JSON (or YAML) file that stores the specific settings for the calculation
|
||||
- the location of your checkpoint files
|
||||
|
||||
Once you have these three things you can run something like this from the command line:
|
||||
```bash
|
||||
rfd3 design out_dir=enzyme_tutorial_outputs/0 inputs=rfd3_enzyme_tutorial.json ckpt_path=/path/to/your/checkpoint/files/rfd3_latest.ckpt
|
||||
```
|
||||
Your output files will be placed in a new directory `enzyme_tutorial_outputs/0`. Your output files will be named `enzyme_tutorial_cys_1euv_lig_0_model_n.cif.gz` where `n` is the number of the design. `enzyme_tutorial` comes from the name of the JSON file and `cys_1euv_lig` comes from the name you gave your calculation in the JSON file.
|
||||
|
||||
```{note}
|
||||
You may see several warning messages when you run RFD3, these should not interfere with the calculation.
|
||||
```
|
||||
|
||||
(enzyme-analyzing-the-outputs)=
|
||||
## Analyzing the Outputs
|
||||
You should end up with 8 designs, numbered 0-7, each with its own `.cif.gz` and `.json` file. If you want to adjust the number, add the configuration option `diffusion_batch_size` to your `rfd3 design` command.
|
||||
|
||||
The JSON file has many details about your diffusion run, including the options in the YAML file you created. The compressed CIF file contains information about the final diffused structure that you can easily visualize with tools like PyMOL.
|
||||
|
||||
Your results should look something like this:
|
||||
```{figure} ../.assets/enzyme_tutorial/example_output_fixed_ori.png
|
||||
:width: 60%
|
||||
|
||||
Example output for the enzyme scaffold design. The input structure is in green and the output structure is light pink. The residues that had some of their atoms fixed are highlighted in purple. The ORI token is shown as a white sphere.
|
||||
```
|
||||
|
||||
You'll notice:
|
||||
- The fixed atoms have stayed in place, once the structures have been aligned to the ligand
|
||||
- The index of the original residues has changed (easy to tell in this example because we have held their coordinates fixed, you can see the mapping in the output JSON file.)
|
||||
- The structures are all the same length, which is between 100 and 200 residues long. (All designs in the same batch will have the same length. Set the batch size to 1 if you want to design proteins with all different lengths.)
|
||||
|
||||
Changing the view slightly lets us see that our RASA conditioning was also followed:
|
||||
```{figure} ../.assets/enzyme_tutorial/RASA_output.png
|
||||
:width: 60%
|
||||
|
||||
You can see that the portion of the ligand that was specified as exposed (blue) is much less buried in the designed protein than the portion of the ligand that was specified as buried (red).
|
||||
```
|
||||
|
||||
## Conclusion
|
||||
You have now set up an RFD3 calculation and successfully ran the inference code for an enzyme design problem. While the options discussed here are particularly useful in enzyme design projects, RFD3 has many more that you can explore by looking at {doc}`../input`.
|
||||
|
||||
(enzyme-references)=
|
||||
## References and Further Reading
|
||||
- For more information on the different inference settings in RFD3, see {doc}`../input`
|
||||
- The calculation presented here was used to benchmark RFdiffusion2, for more information see [Atom-level enzyme active site scaffolding using RFdiffusion2](https://www.nature.com/articles/s41592-025-02975-x)
|
||||
- A more thorough discussion of the settings and configuration options in RFD3 can be found {doc}`here <../intro_inference_calculations>`
|
||||
@@ -0,0 +1,313 @@
|
||||
# Intermediate Enzyme Design Tutorial
|
||||
|
||||
## Table of Contents
|
||||
- [Introduction](#intermediate_enzyme_intro)
|
||||
- [Prerequisites](#intermediate_enzyme_prereq)
|
||||
- [Motif Preparation](#intermediate_enzyme_motif_prep)
|
||||
- [Inference Constraints](#intermediate_enzyme_constraints)
|
||||
- [Run Inference](#intermediate_enzyme_inference)
|
||||
- [Analyzing the Outputs](#intermediate_enzyme_outputs)
|
||||
- [Common Errors](#intermediate_enzyme_errors)
|
||||
- [Resources & References](#intermediate_enzyme_refs)
|
||||
|
||||
(intermediate_enzyme_intro)=
|
||||
## Introduction
|
||||
|
||||
In this tutorial, you will generate protein designs to a fixed catalytic motif using RFdiffusion3 (RFD3).
|
||||
|
||||
You will learn how to extract a scaffold motif using [PyMOL](https://www.pymol.org/), configure inference constraints, run RFD3, and inspect the generated designs.
|
||||
|
||||
```{note}
|
||||
PyMOL is not necessary to complete this tutorial, the steps shown here can be replicated using other protein visualization tools.
|
||||
```
|
||||
|
||||
By the end, you will have a set of newly generated protein structures that preserve your catalytic motif while redesigning the surrounding scaffold.
|
||||
|
||||
```{important}
|
||||
If you have never run an RFD3 calculation before, we recommend
|
||||
going through the {doc}`enzyme_design_tutorial` tutorial first.
|
||||
This tutorial provides more introductory information on running RFD3
|
||||
than the current document.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
(intermediate_enzyme_prereq)=
|
||||
## Prerequisites
|
||||
|
||||
- RFdiffusion3 installed and working <!-- TODO: Link to installation tutorial -->
|
||||
- Familiarity with [command line](https://www.freecodecamp.org/news/command-line-for-beginners/)
|
||||
- Protein visualization software, here we will use [PyMOL](https://www.pymol.org/)
|
||||
|
||||
---
|
||||
## Set-up
|
||||
|
||||
No input files are required for this tutorial as this tutorial walks you through how to create your input PDB. However, example input files and output files are provided at `foundry/models/rfd3/docs/tutorials/intermediate_enzyme_tutorial_files`.
|
||||
|
||||
---
|
||||
|
||||
(intermediate_enzyme_motif_prep)=
|
||||
## Motif Preparation
|
||||
|
||||
(intermediate_enzyme_ref_structure)=
|
||||
### Reference Structure
|
||||
|
||||
We use the Protein Data Bank structure [**1MG5**](https://www.rcsb.org/structure/1MG5), corresponding to alcohol dehydrogenase, as a reference for motif extraction. The goal is to isolate the catalytic residues together with their associated ligands (cofactor and acetate).
|
||||
|
||||
(intermediate_enzyme_example_structure)=
|
||||
### Example Structure
|
||||
|
||||
Alcohol dehydrogenase (ADH) from *Drosophila* catalyzes the oxidation of alcohols. However, the reaction does not necessarily stop at the aldehyde stage – it has been demonstrated in [this paper](https://doi.org/10.1016/j.jmb.2004.10.028) that *Drosophila* ADH can further oxidize acetaldehyde to acetate.
|
||||
|
||||
In the 1MG5 structure, the relevant ligands are:
|
||||
|
||||
- **NAI** – nicotinamide cofactor
|
||||
- **ACT** – acetate
|
||||
|
||||
The catalytic triad is composed of **Ser139, Tyr152, and Lys156**. In addition, **Asn108** is also crucial for catalysis, so we will focus on these residues for our design. You can find more information about the structure of the catalytic site in these two papers:
|
||||
- [Drosophila Alcohol Dehydrogenase: Acetate–Enzyme Interactions and Novel Insights into the Effects of Electrostatics on Catalysis](https://doi.org/10.1016/j.jmb.2004.10.028)
|
||||
- [Critical Residues for Structure and Catalysis in Short-chain Dehydrogenases/Reductases](https://www.sciencedirect.com/science/article/pii/S0021925819665348)
|
||||
|
||||
We have highlighted these important structural components below:
|
||||
|
||||
```{figure} ../.assets/intermediate_enzyme_tutorial/1mg5_final.png
|
||||
:width: 80%
|
||||
|
||||
The alcohol dehydrogenase 1MG5 structure is displayed, with the relevant catalytic residues and ligands highlighted.
|
||||
```
|
||||
|
||||
(intermediate_enzyme_prep_pdb)=
|
||||
### Preparing the Input PDB
|
||||
|
||||
In this section we will use PyMOL to manipulate our the PDB file we retrieved to isolate the portion of the structure we want to use as the input to RFD3.
|
||||
|
||||
```{important}
|
||||
The use of PyMOL is not required for this tutorial. Other visualization tools can be used and a prepared input PDB is available [here](./intermediate_enzyme_tutorial_files/1mg5_motif.pdb).
|
||||
```
|
||||
|
||||
1. Using the PDB identifier, one can fetch the structure in PyMOL using a single command.
|
||||
```python
|
||||
fetch 1mg5
|
||||
```
|
||||
2. Create a new object containing the motif (chain A, catalytic residues, and ligands):
|
||||
```python
|
||||
create motif, chain A and (resi 108+139+152+156 or resn ACT+NAI)
|
||||
```
|
||||
```{note}
|
||||
To learn more about PyMOL's `create` functionality, see the [PyMOL wiki](https://pymolwiki.org/Create).
|
||||
```
|
||||
|
||||
Verify that your selection matches the image below. Note that your selection will still have the backbone for residues 108, 139, 152, and 156. They have been removed from the image below for the sake of clarity.
|
||||
|
||||
You may have to unselect the original 1mg5 structure to see only the 'motif'.
|
||||
|
||||
```{figure} ../.assets/intermediate_enzyme_tutorial/1mg5_theozyme_final.png
|
||||
:width: 80%
|
||||
```
|
||||
|
||||
<!--
|
||||
(intermediate_enzyme_selection_cmd)=
|
||||
### Explanation of the Selection Command
|
||||
|
||||
| | Description |
|
||||
| ---------------------- | ------------------------------------------------------------------------------ |
|
||||
| `chain A` | Restricts the selection to chain A. |
|
||||
| `resi 108+139+152+156` | Selects the catalytic residues by residue number. |
|
||||
| `resn ACT+NAI` | Selects acetate and the nicotinamide cofactor. |
|
||||
| `create motif` | Generates a new object called `motif` containing the currently selected atoms. |
|
||||
This isolates the catalytic motif including protein residues and functional ligands. -->
|
||||
|
||||
3. Go to **File → Export Molecule** in PyMOL. You can use the default settings if a window appears.
|
||||
4. Save the structure as a PDB file named "1mg5_motif.pdb". The resulting file contains the extracted catalytic motif and is ready for diffusion inference.
|
||||
|
||||
---
|
||||
|
||||
(intermediate_enzyme_constraints)=
|
||||
## Inference Constraints
|
||||
|
||||
RFdiffusion3 uses **inference settings files** to define how a design calculation should be executed. These settings constrain the diffusion process and specify what structural elements must be preserved, what regions can be generated, and whether symmetry or other structural constraints are applied.
|
||||
The configuration is provided in either **JSON** or **YAML** format.
|
||||
Detailed information on constraints can be found in {doc}`../intro_inference_calculations`.
|
||||
|
||||
We will create a constraints file that tells RFD3 to:
|
||||
|
||||
- Use the extracted 1MG5 catalytic motif
|
||||
- Preserve key catalytic residues
|
||||
- Retain bound ligands (NAI and ACT)
|
||||
- Generate a 180–200 residue scaffold around the motif
|
||||
- Constrain selected atoms to maintain geometry
|
||||
|
||||
Create a file named `1mg5_motif.json` and open it in your favorite [text editor](https://xkcd.com/378/):
|
||||
```text
|
||||
1mg5_motif.json
|
||||
```
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"enzyme_design_intro": {
|
||||
"input": "./input_path/1mg5_motif.pdb",
|
||||
"ligand": "NAI,ACT",
|
||||
"unindex": "A108,A139,A152,A156",
|
||||
"length": "180-200",
|
||||
"select_fixed_atoms": {
|
||||
"A108": "ND2,CG",
|
||||
"A139": "OG,CB,CA",
|
||||
"A152": "OH,CZ",
|
||||
"A156": "NZ,CE,CD"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```{important}
|
||||
You will need to change the path to the input structure based on where you placed it in your file system.
|
||||
```
|
||||
|
||||
This configuration instructs RFdiffusion3 to **generate a protein scaffold around a catalytic motif while maintaining key structural constraints**.
|
||||
The top-level key defines a **named inference configuration**.
|
||||
|
||||
Here's a brief description of the options used in the JSON file:
|
||||
|
||||
| Key | Value | Description |
|
||||
| -------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `input` | `/path/to/1mg5_motif.pdb"` | Supply the path and name of the input PDB file you created in the previous section. |
|
||||
| `ligand` | `"NAI,ACT"` | Including ligands allows RFdiffusion3 to maintain their spatial relationship to the motif during scaffold generation. |
|
||||
| `unindex` | `"A108,A139,A152,A156"` | Specifies motif residues whose positions are (partially) structurally fixed but whose sequence placement is not predefined. |
|
||||
| `length` | `"180-200"` | Defines the allowed total length of the generated protein scaffold. In this example RFdiffusion3 generates proteins between **180 and 200 residues**, embedding the motif residues specified in `unindex` within that range. |
|
||||
| `select_fixed_atoms` | `"A108": "ND2,CG"`<br>`"A139": "OG,CB,CA"`<br>`"A152": "OH,CZ"`<br>`"A156": "NZ,CE,CD"` | Specifies which atoms remain fixed during diffusion. Example: only atoms **ND2** and **CG** of residue A108 remain constrained. |
|
||||
|
||||
```{important}
|
||||
For more information about the options used in this JSON file, see the {doc}`introductory enzyme design tutorial <enzyme_design_tutorial>` or {ref}`inputspecification-fields`
|
||||
```
|
||||
|
||||
### Fixing the Atoms
|
||||
The choice of the fixed atoms will vary by project and requires knowledge of the reactivity of your structure. Let's go through an example of how some of the fixed atoms where chosen for this tutorial:
|
||||
|
||||
For Lys156, it is know that NZ is the "reactive atom" so it needs to be fixed to maintain its precise placement relative to the ligand/substrate. The carbons near it, the delta and epsilon carbons, are also held fixed to ensure the orientation of the tip of the side chain is correct relative to the ligand/substrate. The rest of the side chain and backbone is allowed to adapt to the designed backbone structure.
|
||||
|
||||
### Unindexing the Motif
|
||||
We have listed the catalytic residues as 'unindexed' so that RFdiffusion can fully design a new protein backbone around these residues. This will not limit how many residues need to come before, between, or after each residue. This flexibility is also why none of the backbone atoms are included in the `select_fixed_atoms` constraint – including them would likely over constrain the backbone and produce strained designs.
|
||||
|
||||
---
|
||||
(intermediate_enzyme_inference)=
|
||||
## Run Inference
|
||||
|
||||
`rfd3 design inputs=/path/to/1mg5_motif.json out_dir=/path/to/output`
|
||||
Adjust the paths according to your local setup.
|
||||
|
||||
The **inputs** file (JSON/YAML) defines the inference setup and constraints, while **out_dir** specifies where generated designs and logs will be written. If the directory does not exist, it will be created automatically.
|
||||
|
||||
Additional runtime and job configuration options (e.g. number of designs, trajectory saving, validation) can be found [here](https://rosettacommons.github.io/foundry/models/rfd3/intro_inference_calculations.html#job-configurations).
|
||||
|
||||
```{note}
|
||||
During execution, the terminal prints initialization messages, hardware allocation (e.g., GPU detection), runtime logs, and the sampling progress of the diffusion process. Warnings may appear about PDB and CCD clones, you can ignore them.
|
||||
```
|
||||
|
||||
The total runtime depends primarily on the selected sequence length range, the number of generated designs, and the available compute hardware.
|
||||
|
||||
---
|
||||
|
||||
(intermediate_enzyme_outputs)=
|
||||
## Analyzing the Outputs
|
||||
Navigate to where your output files have been saved. In the next few sections we will look at some simple ways to analyze the quality of structures produced by RFD3.
|
||||
|
||||
(intermediate_enzyme_metrics)=
|
||||
### Inspect the Metrics - Text-Based Analysis
|
||||
|
||||
Open the output files in your favorite text editor.
|
||||
|
||||
Locate the metrics file (JSON file) for one of your designs, for example <!-- TODO: put example output file name here! --> and examine key values such as `join_point_rmsd`, `loop fraction`, `helix_fraction`, `sheet_fraction`. A straightforward evaluation focuses on:
|
||||
- a low `join_point_rmsd`
|
||||
- For this example below ~0.5 Å is considered good, but a different threshold may be needed for your own projects
|
||||
- the absence of chain breaks (`n_chainbreaks`)
|
||||
- a reasonable secondary structure composition
|
||||
- Look at `loop_fraction`, `helix_fraction`, and `sheet_fraction`
|
||||
- For most design problems, you'll want the helix and loop fractions to be higher and the sheet fractions to be lower
|
||||
|
||||
```json
|
||||
"metrics": {
|
||||
"join_point_rmsd_by_token": {
|
||||
"A108": 0.16884943842887878,
|
||||
"A152": 0.21462973952293396,
|
||||
"A156": 1.0839585065841675
|
||||
},
|
||||
"insertion.mae": 0.49845656007528305,
|
||||
"insertion.rmcd": 0.35271910205483437,
|
||||
"insertion_rmsd": 0.36135003715753555,
|
||||
"join_point_rmsd": 0.4891458948453267,
|
||||
"n_conjoined_residues": 0,
|
||||
"max_ca_deviation": 0.17333555221557617,
|
||||
"n_chainbreaks": 0,
|
||||
"n_clashing.interresidue_clashes_w_sidechain": 2,
|
||||
"n_clashing.interresidue_clashes_w_backbone": 0,
|
||||
"n_clashing.ligand_clashes": 0,
|
||||
"n_clashing.ligand_min_distance": 2.814537525177002,
|
||||
"non_loop_fraction": 0.6041666666666667,
|
||||
"loop_fraction": 0.3958333333333333,
|
||||
"helix_fraction": 0.4635416666666667,
|
||||
"sheet_fraction": 0.140625,
|
||||
"num_ss_elements": 10,
|
||||
"radius_of_gyration": 15.200447511975698,
|
||||
"alanine_content": 0.3160621761658031,
|
||||
"glycine_content": 0.07772020725388601,
|
||||
"num_residues": 193
|
||||
```
|
||||
Above is an example metrics section for a design. This example is provided for illustration, your data will be different.
|
||||
|
||||
---
|
||||
(intermediate_enzyme_structure)=
|
||||
### Inspect the Structure - Structural Analysis
|
||||
Open the selected PDB file in a molecular visualization tool such as PyMOL and assess whether the motif geometry is preserved, whether the overall fold appears plausible, and whether the catalytic residues are properly integrated into the scaffold. The `diffused index map` in the output JSON file for a given design shows where the original motif residues appear in the generated protein. For example:
|
||||
```json
|
||||
"diffused_index_map": {
|
||||
"A108": "A3",
|
||||
"A139": "A80",
|
||||
"A152": "A49",
|
||||
"A156": "A53"
|
||||
}
|
||||
```
|
||||
|
||||
The identifiers on the left correspond to residues from the input motif structure, while the identifiers on the right indicate their positions in the generated design. For example, `"A108": "A3"` means that the motif asparagine appears at **position 3 in chain A** of the generated protein.
|
||||
|
||||
```{figure} ../.assets/intermediate_enzyme_tutorial/1mg5_redesign_final.png
|
||||
:width: 80%
|
||||
|
||||
This image shows one of the generated protein designs. The catalytic motif is highlighted, illustrating how it has been embedded within the newly generated scaffold while maintaining its structural arrangement.
|
||||
```
|
||||
|
||||
---
|
||||
(intermediate_enzyme_errors)=
|
||||
## Common Errors
|
||||
|
||||
(intermediate_enzyme_motif_errors)=
|
||||
### Motif-Related Errors
|
||||
|
||||
**Incorrect residue numbering**
|
||||
Residue numbering in the configuration must match exactly the numbering used in the PDB file. Always verify both the chain identifier and residue indices directly in the structure file before defining motif residues.
|
||||
|
||||
---
|
||||
(intermediate_enzyme_config_errors)=
|
||||
### JSON Configuration Errors
|
||||
|
||||
**Ligand name mismatch**
|
||||
Ligand names must exactly match the residue names defined in the PDB file.
|
||||
|
||||
**Syntax issues**
|
||||
Formatting errors such as missing brackets, misplaced commas, or incorrect quotation marks will invalidate the JSON file. Ensure that the file is properly structured and syntactically correct.
|
||||
|
||||
---
|
||||
(intermediate_enzyme_cli_errors)=
|
||||
### Command-Line Errors
|
||||
|
||||
If command-line arguments are incorrect, incomplete, or missing, the CLI typically returns descriptive error messages. These messages indicate which parameter is invalid or absent and should be reviewed carefully to identify and correct the issue.
|
||||
|
||||
---
|
||||
(intermediate_enzyme_refs)=
|
||||
## Resources & References
|
||||
|
||||
- RFdiffusion3 https://doi.org/10.1101/2025.09.18.676967
|
||||
- RFdiffusion3 documentation and GitHub https://github.com/RosettaCommons/foundry/tree/production
|
||||
- PDB: [https://doi.org/10.2210/pdb1MG5/pdb](https://doi.org/10.2210/pdb1MG5/pdb)
|
||||
- Structure: https://doi.org/10.1016/j.jmb.2004.10.028
|
||||
- Visualization tools: [PyMOL](https://www.pymol.org/)
|
||||
215
_sources/models/rfd3/tutorials/na_binder_tutorial.md.txt
Normal file
@@ -0,0 +1,215 @@
|
||||
# Nuclei Acid Binder Design in RFdiffusion3
|
||||
|
||||
## Before We Get Started...
|
||||
This tutorial does not cover installing RFD3. Before continuing, you should make sure that RFdiffusion3 (RFD3) is installed and runnable on your system. See the [README](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3) for installation instructions.
|
||||
|
||||
```{note}
|
||||
You will need to clone the repository to access the tutorial files. Using the `pip` commands to install the model does not automatically download the files required to complete this tutorial.
|
||||
```
|
||||
|
||||
RFD3 runs best on GPUs. It is suggested to follow this tutorial on an interactive GPU node if you have access to one.
|
||||
|
||||
You will need the file `2r5z.pdb`. This is provided in [`foundry/models/rfd3/docs/input_pdbs`](../input_pdbs/2r5z.pdb). You can clone the [`foundry`](https://github.com/RosettaCommons/foundry) repository to easily access files related to this tutorial.
|
||||
|
||||
(na-learning-objectives)=
|
||||
## Learning Objectives
|
||||
In this tutorial, we will design a DNA-protein complex to explore the settings available in RFD3 that are useful for nucleic acid binder design.
|
||||
(na-setup)=
|
||||
## Setup
|
||||
Create a directory named `rfd3_na_tutorial` and `cd` into it:
|
||||
```bash
|
||||
mkdir rfd3_na_tutorial && cd rfd3_na_tutorial
|
||||
```
|
||||
This is where you will be storing the files related to this tutorial.
|
||||
|
||||
If you would like to compare your outputs against those generated by the authors of this tutorial, you can find pre-generated output files in `foundry/models/rfd3/docs/tutorials/na_tutorial_files`.
|
||||
The 'basic' zip file contains outputs that did not use the setting discussed in the [Additional Constraints](#na-additional-constraints) section. The 'hbond' zip file has the outputs resulting from adding [hydrogen bond conditioning constraints](#na-hydrogen-bond-conditioning) and the 'unfix' zip file has the outputs resulting from adding a [constraint that allows the input sequence to be modified](#na-unfix-sequence).
|
||||
|
||||
There is also a pre-made JSON file available in `foundry/models/rfd3/docs/na_tutorial_files`. We recommend following the tutorial to create this file yourself to better understand the RFD3 options that are relevant to nucleic acid binder design.
|
||||
|
||||
(na-creating-the-yaml-file)=
|
||||
## Creating the JSON file
|
||||
In this tutorial, we will be briefly describing each of the settings we will be using for this example.
|
||||
|
||||
1. Using your editor of choice, open a new file called `rfd3_na_tutorial.json`. This is where we will be storing the options we will use to constrain our enzyme design.
|
||||
1. This is a JSON file, so all of the options contained in it need to be encapsulated in curly braces ({}). Go ahead and add a pair of these to your file.
|
||||
1. Like all designs you will create using RFD3, we need to start by giving our calculation a name. It should be short, but descriptive, so let's call it `dsDNA_complex`. Add this name in quotes to your file and place a colon and another pair of curly brackets after this. Your file should now look like:
|
||||
```json
|
||||
{
|
||||
"dsDNA_complex":{
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
1. Next we need to specify the structure file (PDB, CIF, etc.) that contains information about any input structures related to our calculation:
|
||||
```json
|
||||
"input": "path/to/2r5z.pdb",
|
||||
```
|
||||
1. To define the portions of our final structure that will be defined vs. taken from our input structure file we will use the `contig` option:
|
||||
```json
|
||||
"contig": "C5-18,/0,D24-37,/0,40-50,A146-154,80-90",
|
||||
```
|
||||
Let's break down what's going on here a bit further:
|
||||
- `C5-18`: Our final design will start with residues C5-C18 from our input PDB
|
||||
- `/0`: This indicates a chain break, the C5-18 residues will not be connected to anything coming next in our `contig` string.
|
||||
- `D24-27`: After the chain break we have residues D24-37 from the input structure file.
|
||||
- `/0,40-50`: After another chain break RFD3 will design a segment with 40-50 residues.
|
||||
- `A146-154`: residues A146-154 from the input structure will be connected to the C-terminus of the designed residues
|
||||
- `80-90`: RFD3 will design 80-90 residues connected to the C-terminus of A154 from the input structure
|
||||
1. Since there are two portions of the designed structure with random lengths, it is useful to specify the overall `length` of our design:
|
||||
```json
|
||||
"length": "157-177",
|
||||
```
|
||||
1. For the purposes of this design, we happen to know that residues B251-B255 are important to include in our design, but it does not matter where they end up in our final structure. This is referred to as an 'unindexed motif' in the documentation. To include them, we will add the `undindex` option:
|
||||
```json
|
||||
"unindex": "/0,/0,B251-B255",
|
||||
```
|
||||
Here we have two chain breaks before our unindexed motif to correspond to the contig string, these residues will go in the third chain of the output structure.
|
||||
1. Next, the portions of our input structure we specified in the `contig` string are automatically held fixed, however it is useful to let some of these residues move in response to the the designed portions of our structure. Here we want certain portions of our DNA strands to be stationary (the middle sections) while the portions towards either end of the double helix can relax:
|
||||
```json
|
||||
"select_fixed_atoms": {
|
||||
"C9-14":"ALL",
|
||||
"D28-33":"ALL",
|
||||
"C5-8,C15-18": "",
|
||||
"D24-27,D34-37": ""
|
||||
},
|
||||
```
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/fixed_and_unfixed_residues.png
|
||||
:width: 60%
|
||||
|
||||
Image of the input structure with the fixed residues highlighted in cyan and the residues allowed to move highlighted in red.
|
||||
```
|
||||
|
||||
```{note}
|
||||
Holding residues C9-14 and D28-33 is not necessary here and was included for the sake of clarity.
|
||||
```
|
||||
1. To define where the center of mass of our designed structure should go, we will use an ORI (origin) token:
|
||||
|
||||
```json
|
||||
"ori_token":[25,35,20],
|
||||
```
|
||||
|
||||
```{important}
|
||||
In this example the ori token is placed close to the center of our input structure. When designing your own enzyme scaffolds, you should try many ORI token placements. See the [RFdiffusion2 paper](https://www.nature.com/articles/s41592-025-02975-x) for more information about how ORI tokens impact the results of diffusion calculations.
|
||||
```
|
||||
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/ori_token_input_structure.png
|
||||
:width: 80%
|
||||
|
||||
The input structure with the addition of a white sphere to represent the location of the ORI token.
|
||||
```
|
||||
|
||||
1. Last, but not least, we want our design to have minimal loops. We will use the `is_non_loopy` option for this. As of the creation of this tutorial, there are no other parameters to control the secondary structure of the designs from RFD3.
|
||||
```json
|
||||
"is_non_loopy": true
|
||||
```
|
||||
1. Save your file and close it. If you run the file now, your files should be similar to what is stored in `foundry/models/rfd3/docs/tutorials/na_tutorial_files/outputs.zip`.
|
||||
|
||||
(na-additional-constraints)=
|
||||
### Additional Constraints
|
||||
The steps in this section are optional, skip to [Running RFD3](#na-running-rfd3). If you would like to include them, reopen your JSON file and append to what you added in the previous section.
|
||||
|
||||
(na-hydrogen-bond-conditioning)=
|
||||
#### Hydrogen Bond Conditioning
|
||||
```{important}
|
||||
Using hydrogen bond conditioning with RFdiffusion3 requires having HBPLUS installed. See the [RFdiffusion3 README](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3) for more information.
|
||||
|
||||
```
|
||||
Hydrogen bond conditioning can be useful in the design of nucleic acid binders. Here we will apply it to some backbone and base atoms for a few of the DNA bases:
|
||||
```json
|
||||
"select_hbond_acceptor": {"C16":"N7,O6", "D31-32":"N7", "D28-30":"OP1,OP2,O3',O5'"},
|
||||
"select_hbond_donor": {"D31-32":"N6"}
|
||||
```
|
||||
|
||||
(na-unfix-sequence)=
|
||||
#### Unfix Sequence
|
||||
The steps in this section are optional, skip to [Running RFD3](#na-running-rfd3). If you would like to include them, reopen your JSON file and add the following:
|
||||
1. Add the backbone of the unindexed motif (B251-255) to the list of atoms being fixed:
|
||||
```json
|
||||
"select_fixed_atoms": {
|
||||
"C9-14":"ALL",
|
||||
"D28-33":"ALL",
|
||||
"C5-8,C15-18": "",
|
||||
"D24-27,D34-37": "",
|
||||
"B251-255": "BKBN"
|
||||
},
|
||||
```
|
||||
2. Unfix the sequence for the unindexed motif:
|
||||
```json
|
||||
"select_unfixed_sequence": "B251-255"
|
||||
```
|
||||
These constraints will keep this portion of the protein backbone in place while allowing the side chains to change.
|
||||
|
||||
|
||||
(na-running-rfd3)=
|
||||
## Running RFD3
|
||||
To actually run RFD3 you need to know:
|
||||
- the directory you want the outputs to be stored in
|
||||
- the path to the JSON (or YAML) file that stores the specific settings for the calculation
|
||||
- the location of your checkpoint files
|
||||
|
||||
Once you have these three things you can run something like this from the command line:
|
||||
```bash
|
||||
rfd3 design out_dir=na_tutorial_outputs/0 inputs=rfd3_na_tutorial.json ckpt_path=/path/to/your/checkpoint/files/rfd3_latest.ckpt
|
||||
```
|
||||
|
||||
Your output files will be placed in a new directory `na_tutorial_outputs/0`. Your output files will be named `rfd3_na_tutorial_dsDNA_complex_0_model_n.cif.gz` where `n` is the number of the design. `rfd3_na_tutorial` comes from the name of the JSON file and `dsDNA_complex` comes from the name you gave your calculation in the JSON file.
|
||||
|
||||
```{note}
|
||||
You may see several warning messages when you run RFD3, these should not interfere with the calculation.
|
||||
```
|
||||
|
||||
(na-analyzing-the-outputs)=
|
||||
## Analyzing the Outputs
|
||||
You should end up with 8 designs, numbered 0-7, each with its own `.cif.gz` and `.json` file. If you want to adjust the number of output designs, add the configuration option `diffusion_batch_size` to your `rfd3 design` command.
|
||||
|
||||
The JSON file has many details about your diffusion run, including the options in the JSON file you created. The compressed CIF file contains information about the final diffused structure that you can easily visualize with tools like PyMOL.
|
||||
|
||||
Your results should look something like this:
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/possible_output_structure_0.png
|
||||
:width: 60%
|
||||
|
||||
Image of a possible output for this calculation visualized in PyMOL.
|
||||
```
|
||||
|
||||
However, if we visualize the location of our original ORI token it is no where near the center of our output structure! This is because RFD3 has completely moved our structure in coordinate space, and has moved the ORI token with it. In the output JSON files for your designs, the new location of the ORI token can be found by looking at the `diffused_com`.
|
||||
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/compare_ori_tokens.png
|
||||
:width: 100%
|
||||
|
||||
The input structure (right) with its ORI token represented as a white sphere. An example output (left) is shown with the location of the `diffused_com` represented as a red sphere.
|
||||
```
|
||||
|
||||
You can also align the 2R5Z structure with any of the outputs to see that the atoms selected in `select_fixed_atoms` have stayed in the same physical locations.
|
||||
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/aligning_dna_strands.png
|
||||
:width: 60%
|
||||
|
||||
The DNA strands from the input (lavender, light green, light blue) and a possible output structure (dark green, dark blue). The portions held fixed are in blue and the portions allowed to move are in green.
|
||||
```
|
||||
|
||||
Checking that our unindexed motif is present in our designs is a bit more difficult, but the information we need is provided in the JSON file that is created with each design. If you open one of these JSON files, the first piece of information you see is a `diffused_index_map` that connects the residues from the input to residues in the output design. You should see that residues B251-255 have been mapped to residues in your output structure.
|
||||
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/unindexed_motif.png
|
||||
:width: 80%
|
||||
|
||||
Input structure (green) and model_0 (cyan) from the basic.zip outputs with the unindexed motif highlighted in magenta. For this output (model_0 in outputs.zip), the unindexed motif is found in residues C130-134.
|
||||
```
|
||||
|
||||
If you added the additional hydrogen bonding constraints, the outputs should look very similar to those shown from the 'basic' calculation. The hydrogen bond conditioning is a statistical effect and difficult to visualize when so many other constraints have been applied.
|
||||
|
||||
If you added the `select_unfixed_sequence` constraint, you will see that your output JSON files still have a mapping between residues B251-255 in the input to the output structure and that the backbones have remained the same but the side chains have changed. For example:
|
||||
|
||||
```{figure} ../.assets/na_tutorial/renabindertutorialupdate/unfix_ligands.png
|
||||
:width: 80%
|
||||
|
||||
The input structure (green) and output structure (cyan) with the unindexed motif colored pink. Note how the backbone structures have remained the same, but the side chains have changed.
|
||||
```
|
||||
|
||||
## What's Next?
|
||||
For your actual projects, you would want to filter the designed structures based on metrics relevant to your design task. Then, even though RFD3 outputs come with a sequence, it is recommended to still use sequence design tools ([MPNN](https://rosettacommons.github.io/foundry/models/mpnn/index.html)) to redesign the sequence. Finally you will want to see if the sequence refolds into a similar structure as was predicted by RFD3 using tools like [RosettaFold3](https://www.biorxiv.org/content/10.1101/2025.08.14.670328v2).
|
||||
|
||||
(na-references-and-further-reading)=
|
||||
## References and Further Reading
|
||||
- For more information on the different inference settings in RFD3, see {doc}`input.md <../input>`
|
||||
- A more thorough discussion of the settings and configuration options in RFD3 can be found {doc}`here <../intro_inference_calculations>`
|
||||
162
_sources/models/rfd3/tutorials/ppi_design_tutorial.md.txt
Normal file
@@ -0,0 +1,162 @@
|
||||
# Protein-Protein Interface Design in RFdiffusion3
|
||||
|
||||
## Before We Get Started...
|
||||
This tutorial does not cover installing RFD3. Before continuing, you should make sure that RFdiffusion3 (RFD3) is installed and runnable on your system.
|
||||
|
||||
See the [README](https://github.com/RosettaCommons/foundry/tree/production/models/rfd3) for installation instructions. You will need to remember the path to the directory where you stored your checkpoint files.
|
||||
|
||||
```{note}
|
||||
The instructions below assume that you have installed RFD3 via the pip commands.
|
||||
You may need to slightly modify how you run the calculations based on your setup.
|
||||
```
|
||||
|
||||
Make sure you have activated any environment(s) you used to install RFD3.
|
||||
|
||||
RFD3 runs best on GPUs. It is suggested to follow this tutorial on an interactive GPU node if you have access to one.
|
||||
|
||||
You will need the file `4zxb_cropped.pdb`. This is provided in [`foundry/models/rfd3/docs/input_pdbs`](../input_pdbs/4zxb_cropped.pdb). You can clone the [`foundry`](https://github.com/RosettaCommons/foundry) repository to easily access files related to this tutorial.
|
||||
|
||||
Lastly, we will be visualizing the outputs of the calculations presented in the tutorial using [PyMOL](https://pymol.org/). The visualization steps are completely optional, but if you would like to follow along you will need to have PyMOL installed.
|
||||
|
||||
(ppi-learning-objectives)=
|
||||
## Learning Objectives
|
||||
In this tutorial, we will design a binder for the human insulin receptor to explore the settings available in RFD3 that are useful in protein-protein interface (PPI) design.
|
||||
|
||||
(ppi-setup)=
|
||||
## Setup
|
||||
Create a directory named `rfd3_ppi_tutorial` and `cd` into it:
|
||||
```bash
|
||||
mkdir rfd3_ppi_tutorial && cd rfd3_ppi_tutorial
|
||||
```
|
||||
This is where you will be storing the files related to this tutorial.
|
||||
|
||||
If you would like to compare your outputs against those generated by the authors of this tutorial, you can find pre-generated output files in `foundry/models/rfd3/docs/tutorials/ppi_tutorial_files`.
|
||||
The 'basic' zip file contains outputs that did not use the setting discussed in [Other Useful Settings](#ppi-other-useful-settings) section. The 'fixed' zip file has the outputs resulting from using the `select_fixed_atoms` option.
|
||||
|
||||
There is also a pre-made YAML file available in `foundry/models/rfd3/docs/tutorials/ppi_tutorial_files`. We recommend following the tutorial to create this file yourself to better understand the RFD3 options that are relevant to PPI design.
|
||||
|
||||
(ppi-creating-the-yaml-file)=
|
||||
## Creating the YAML file
|
||||
In this tutorial, we will be briefly describing each of the settings we will be using for this example binder design project.
|
||||
|
||||
1. Using your editor of choice, open a new file called `ppi_tutorial.yaml`. This is where we will be storing all of the settings that tell RFD3 the type of designs we would like to make.
|
||||
1. Our calculation needs a name. For this tutorial, we will only be including one example calculation, but your YAML file could have several. A name allows you (and RFD3) to differentiate them. Since we are designing binders for the human insulin receptor, let's just call it `insulinr`:
|
||||
```yaml
|
||||
insulinr:
|
||||
```
|
||||
Everything that comes after this should be indented to show that it's part of this `insulinr` calculation. You will want to use spaces, not the tab character. If a tab character (`\t `) is found in the file, RFD3 will crash.
|
||||
1. Tell RFD3 where to find your input file:
|
||||
```yaml
|
||||
input: /path/to/4zxb_cropped.pdb
|
||||
```
|
||||
This file was directly cropped from the 4zxb structure that can be found in the [RSCB PDB library](https://www.rcsb.org/). *If you visualize the cropped structure against the full one from the RSCB library, they may not appear to be exactly the same structure. However, if you align the two you will get an RMSD of 0.0.*
|
||||
<!-- ```{figure} ../.assets/ppi_tutorial/cropped_vs_full.png
|
||||
:width: 60%
|
||||
|
||||
Cropped vs. full structure of 4XZB with the RMSD of their alignment shown. The cropped structure is in green while the full structure is shown in purple.
|
||||
``` -->
|
||||
1. The `contig` string is the main way you can tell RFD3 what portions of your input structure you want defined and what portions you want preserved from your input structure.
|
||||
```yaml
|
||||
contig: 40-120,/0,E6-155
|
||||
```
|
||||
The different sections of the `contig` string are separated by commas. Here's what each section is telling RFD3:
|
||||
- `40-120` specifies that we want RFD3 to design a new peptide chain that is between 40 and 120 residues long
|
||||
- `/0` is how a chain break is specified in RFD3.
|
||||
- `E6-155` is the portion of the input structure that we are keeping in our final output. The letter corresponds to the chain label in the input PDB and the starting and ending residues are included in the final structure. If you do not include the chain label, then RFD3 would just design a peptide chain between 6 and 155 residues in length.
|
||||
1. We can also specify the overall number of residues in our final structure:
|
||||
```yaml
|
||||
length: 190-270
|
||||
```
|
||||
This is not absolutely necessary for this calculation as we only have one designed portion of our structure. Our `contig` string already enforces that the length of the final structure is between 190 and 270 residues long as the portion of the input structure we are using is 150 residues long. However, this becomes important when you have several designed sections of your protein that can have random lengths.
|
||||
1. Specifying 'hotspots' in your structure is a way to tell RFD3 which portions of your input structure should be close to the designed binder. More specifically, RFD3 was trained to produce structures where the hotspots will typically be at most 4.5 Å to any heavy atom on the binder. Typically the hotspot residues are a subset of the residues that are important to the function of the protein, e.g. the catalytic residues. Choosing these residues will require some scientific intuition, a thorough literature search, and some experimenting.
|
||||
|
||||
Hotspots are specified by naming both the residue and the specific atoms within the residue that you want closest to the designed structure:
|
||||
```yaml
|
||||
select_hotspots:
|
||||
E64: CD2,CZ
|
||||
E88: CG,CZ
|
||||
E96: CD1,CZ
|
||||
```
|
||||
```{figure} ../.assets/ppi_tutorial/hotspots.png
|
||||
:width: 60%
|
||||
|
||||
The hotspot residues along with the specific target atoms circled in yellow.
|
||||
```
|
||||
```{note}
|
||||
The residues whose atoms were selected as hotspots were specified in our `contig` string. This is necessary so that RFD3 is 'aware' of these residues.
|
||||
```
|
||||
1. Next we need to add information about our ORI token. This token specifies where we want the center of mass of our designed protein to be. Unless you know where you want to place the ORI token for your specific design needs, it is often easiest to have RFD3 infer the ORI placement based on the chosen `hotspots`:
|
||||
```yaml
|
||||
infer_ori_strategy: hotspots
|
||||
```
|
||||
This setting will place the ORI token 10Å outward from the center of mass of the `hotspots`. The center of mass of the diffused region will typically be within 5Å of the ORI token.
|
||||
1. There is a setting in RFD3, `is_non_loopy` that, if set to `true`, will cause fewer loops to be in your structure. It's recommended to use this setting for PPI design tasks in RFD3, let's add it to our YAML file:
|
||||
```yaml
|
||||
is_non_loopy: true
|
||||
```
|
||||
1. Save your file and close it. If you run the file now, your outputs should be similar to what is stored in `basic.zip`.
|
||||
|
||||
(ppi-other-useful-settings)=
|
||||
### Other Useful Settings
|
||||
This section provides other settings that are useful for protein-protein binder design tasks, but you may or may not need depending on your specific project.
|
||||
|
||||
1. There is a setting for allowing structural flexibility while keeping the sequence fixed in the input structure, for example:
|
||||
```yaml
|
||||
select_fixed_atoms:
|
||||
E25: []
|
||||
E26: BKBN
|
||||
E27: CA,CB,OG
|
||||
```
|
||||
Here, an empty list indicates that all atoms are flexible, `BKBN` keeps the backbone atoms fixed while allowing side chain atoms to move, and for the last residue, specific atoms are fixed in place while allowing the others to move. Feel free to try adding this to your YAML file and see how your outputs change.
|
||||
|
||||
Including this setting will give you structures similar to what is in `fixed.zip`.
|
||||
|
||||
(ppi-running-rfd3)=
|
||||
## Running RFD3
|
||||
To actually run RFD3 you need to know:
|
||||
- the directory you want the outputs to be stored in
|
||||
- the path to the YAML (or JSON) file that stores the specific settings for the calculation
|
||||
- the location of your checkpoint files
|
||||
|
||||
Once you have these three things you can run something like this from the command line:
|
||||
```bash
|
||||
rfd3 design out_dir=ppi_tutorial_outputs/0 inputs=ppi_tutorial.yaml ckpt_path=/path/to/your/checkpoint/files/rfd3_latest.ckpt
|
||||
```
|
||||
Your output files will be placed in a new directory `ppi_tutorial_outputs/0`. Your output files will be named `ppi_tutorial_insulinr_0_model_n.cif.gz` where `n` is the number of the design. `ppi_tutorial` comes from the name of the YAML file and `insulinr` comes from the name you gave your calculation in the YAML file.
|
||||
|
||||
```{note}
|
||||
You may see several warning messages when you run RFD3, these should not interfere with the calculation.
|
||||
```
|
||||
|
||||
(ppi-analyzing-the-outputs)=
|
||||
## Analyzing the Outputs
|
||||
You should end up with 8 designs, numbered 0-7, each with its own `.cif.gz` and `.json` file. If you want to adjust the number, add the configuration option `diffusion_batch_size` to your `rfd3 design` command.
|
||||
|
||||
The JSON file has many details about your diffusion run, including the options in the YAML file you created. The compressed CIF file contains information about the final diffused structure that you can easily visualize with tools like PyMOL.
|
||||
|
||||
Your results should look something like this:
|
||||
```{figure} ../.assets/ppi_tutorial/example_output_w_hotspots.png
|
||||
:width: 60%
|
||||
|
||||
Green is the original input structure while blue is the designed binder. The hotspot residues are purple and represented as ball and sticks.
|
||||
```
|
||||
You'll notice that the binders are always on the side of the input structure closest to the hotspots.
|
||||
|
||||
The lengths of the designed binders are all also between 40 and 120 amino acids long. However, you'll also notice that they are all the same length!
|
||||
This is because RFD3 runs batched inference calculations. All of the calculations in a single 'batch' will have the same randomly sampled length, while designs from other batches will have different lengths. If you want to change the number of batches, you will want to add the setting `n_batches` to your `run rfd3` command.
|
||||
|
||||
## What's Next?
|
||||
For your actual projects, you would want to filter the designed structures based on metrics relevant to your design task. Then, even though RFD3 outputs come with a sequence, it is recommended to still use sequence design tools ([MPNN](https://rosettacommons.github.io/foundry/models/mpnn/index.html)) to redesign the sequence. Finally you will want to see if the sequence refolds into a similar structure as was predicted by RFD3 using tools like [RosettaFold3](https://www.biorxiv.org/content/10.1101/2025.08.14.670328v2).
|
||||
|
||||
If you are working on a PPI design project, {doc}`../designability_vs_diversity` shows how different settings impact the designability of RFD3-produced structures in a PPI benchmark.
|
||||
|
||||
Feel free to go through the [other tutorials](https://rosettacommons.github.io/foundry/models/rfd3/index.html#tutorials) and other files provided in the documentation.
|
||||
|
||||
(ppi-references-and-further-reading)=
|
||||
## References and Further Reading
|
||||
- For more information on the different inference settings in RFD3, see {doc}`input.md <../input>`
|
||||
- For more information on the example used here, see [*De novo design of protein structure and function with RFdiffusion*](https://www.nature.com/articles/s41586-023-06415-8#Sec12) by Joeseph L. Watson, et. al.
|
||||
- A more thorough discussion of the settings and configuration options in RFD3 can be found {doc}`here <../intro_inference_calculations>`
|
||||
|
||||
|
||||
|
||||
476
_static/base-stemmer.js
Normal file
@@ -0,0 +1,476 @@
|
||||
// @ts-check
|
||||
|
||||
/**@constructor*/
|
||||
BaseStemmer = function() {
|
||||
/** @protected */
|
||||
this.current = '';
|
||||
this.cursor = 0;
|
||||
this.limit = 0;
|
||||
this.limit_backward = 0;
|
||||
this.bra = 0;
|
||||
this.ket = 0;
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
this.setCurrent = function(value) {
|
||||
this.current = value;
|
||||
this.cursor = 0;
|
||||
this.limit = this.current.length;
|
||||
this.limit_backward = 0;
|
||||
this.bra = this.cursor;
|
||||
this.ket = this.limit;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.getCurrent = function() {
|
||||
return this.current;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {BaseStemmer} other
|
||||
*/
|
||||
this.copy_from = function(other) {
|
||||
/** @protected */
|
||||
this.current = other.current;
|
||||
this.cursor = other.cursor;
|
||||
this.limit = other.limit;
|
||||
this.limit_backward = other.limit_backward;
|
||||
this.bra = other.bra;
|
||||
this.ket = other.ket;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor++;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min)
|
||||
return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
|
||||
return true;
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor--;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.limit - this.cursor < s.length) return false;
|
||||
if (this.current.slice(this.cursor, this.cursor + s.length) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor += s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s_b = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.cursor - this.limit_backward < s.length) return false;
|
||||
if (this.current.slice(this.cursor - s.length, this.cursor) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor -= s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length;
|
||||
|
||||
var c = this.cursor;
|
||||
var l = this.limit;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >>> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j; // smaller
|
||||
// w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = common; i2 < w[0].length; i2++)
|
||||
{
|
||||
if (c + common == l)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break; // v->s has been inspected
|
||||
if (j == i) break; // only one item in v
|
||||
|
||||
// - but now we need to go round once more to get
|
||||
// v->s inspected. This looks messy, but is actually
|
||||
// the optimal approach.
|
||||
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c + w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c + w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
// find_among_b is for backwards processing. Same comments apply
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among_b = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length
|
||||
|
||||
var c = this.cursor;
|
||||
var lb = this.limit_backward;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j;
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
|
||||
{
|
||||
if (c - common == lb)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break;
|
||||
if (j == i) break;
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c - w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c - w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
/* to replace chars between c_bra and c_ket in this.current by the
|
||||
* chars in s.
|
||||
*/
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
* @return {number}
|
||||
*/
|
||||
this.replace_s = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = s.length - (c_ket - c_bra);
|
||||
this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
|
||||
this.limit += adjustment;
|
||||
if (this.cursor >= c_ket) this.cursor += adjustment;
|
||||
else if (this.cursor > c_bra) this.cursor = c_bra;
|
||||
return adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_check = function()
|
||||
{
|
||||
/** @protected */
|
||||
if (this.bra < 0 ||
|
||||
this.bra > this.ket ||
|
||||
this.ket > this.limit ||
|
||||
this.limit > this.current.length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_from = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
var result = false;
|
||||
if (this.slice_check())
|
||||
{
|
||||
this.replace_s(this.bra, this.ket, s);
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_del = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.slice_from("");
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
*/
|
||||
this.insert = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = this.replace_s(c_bra, c_ket, s);
|
||||
if (c_bra <= this.bra) this.bra += adjustment;
|
||||
if (c_bra <= this.ket) this.ket += adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.slice_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
var result = '';
|
||||
if (this.slice_check())
|
||||
{
|
||||
result = this.current.slice(this.bra, this.ket);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.assign_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.current.slice(0, this.limit);
|
||||
};
|
||||
};
|
||||
906
_static/basic.css
Normal file
@@ -0,0 +1,906 @@
|
||||
/*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 360px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #551A8B;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, figure.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, figure.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar,
|
||||
aside.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
aside.sidebar > :last-child,
|
||||
nav.contents > :last-child,
|
||||
aside.topic > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
aside.sidebar::after,
|
||||
nav.contents::after,
|
||||
aside.topic::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure, figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption, figcaption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number,
|
||||
figcaption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text,
|
||||
figcaption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
aside.footnote > span,
|
||||
div.citation > span {
|
||||
float: left;
|
||||
}
|
||||
aside.footnote > span:last-of-type,
|
||||
div.citation > span:last-of-type {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
aside.footnote > p {
|
||||
margin-left: 2em;
|
||||
}
|
||||
div.citation > p {
|
||||
margin-left: 4em;
|
||||
}
|
||||
aside.footnote > p:last-of-type,
|
||||
div.citation > p:last-of-type {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
aside.footnote > p:last-of-type:after,
|
||||
div.citation > p:last-of-type:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.sig dd {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.sig dl {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0 0.5em;
|
||||
content: ":";
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
4
_static/check-solid.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="44" height="44" viewBox="0 0 24 24" stroke-width="2" stroke="#22863a" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 313 B |
7
_static/clipboard.min.js
vendored
Normal file
5
_static/copy-button.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copy" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<rect x="8" y="8" width="12" height="12" rx="2" />
|
||||
<path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 411 B |
94
_static/copybutton.css
Normal file
@@ -0,0 +1,94 @@
|
||||
/* Copy buttons */
|
||||
button.copybtn {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
top: .3em;
|
||||
right: .3em;
|
||||
width: 1.7em;
|
||||
height: 1.7em;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s, border .3s, background-color .3s;
|
||||
user-select: none;
|
||||
padding: 0;
|
||||
border: none;
|
||||
outline: none;
|
||||
border-radius: 0.4em;
|
||||
/* The colors that GitHub uses */
|
||||
border: #1b1f2426 1px solid;
|
||||
background-color: #f6f8fa;
|
||||
color: #57606a;
|
||||
}
|
||||
|
||||
button.copybtn.success {
|
||||
border-color: #22863a;
|
||||
color: #22863a;
|
||||
}
|
||||
|
||||
button.copybtn svg {
|
||||
stroke: currentColor;
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
padding: 0.1em;
|
||||
}
|
||||
|
||||
div.highlight {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Show the copybutton */
|
||||
.highlight:hover button.copybtn, button.copybtn.success {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.highlight button.copybtn:hover {
|
||||
background-color: rgb(235, 235, 235);
|
||||
}
|
||||
|
||||
.highlight button.copybtn:active {
|
||||
background-color: rgb(187, 187, 187);
|
||||
}
|
||||
|
||||
/**
|
||||
* A minimal CSS-only tooltip copied from:
|
||||
* https://codepen.io/mildrenben/pen/rVBrpK
|
||||
*
|
||||
* To use, write HTML like the following:
|
||||
*
|
||||
* <p class="o-tooltip--left" data-tooltip="Hey">Short</p>
|
||||
*/
|
||||
.o-tooltip--left {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.o-tooltip--left:after {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
content: attr(data-tooltip);
|
||||
padding: .2em;
|
||||
font-size: .8em;
|
||||
left: -.2em;
|
||||
background: grey;
|
||||
color: white;
|
||||
white-space: nowrap;
|
||||
z-index: 2;
|
||||
border-radius: 2px;
|
||||
transform: translateX(-102%) translateY(0);
|
||||
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
|
||||
}
|
||||
|
||||
.o-tooltip--left:hover:after {
|
||||
display: block;
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transform: translateX(-100%) translateY(0);
|
||||
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
|
||||
transition-delay: .5s;
|
||||
}
|
||||
|
||||
/* By default the copy button shouldn't show up when printing a page */
|
||||
@media print {
|
||||
button.copybtn {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
248
_static/copybutton.js
Normal file
@@ -0,0 +1,248 @@
|
||||
// Localization support
|
||||
const messages = {
|
||||
'en': {
|
||||
'copy': 'Copy',
|
||||
'copy_to_clipboard': 'Copy to clipboard',
|
||||
'copy_success': 'Copied!',
|
||||
'copy_failure': 'Failed to copy',
|
||||
},
|
||||
'es' : {
|
||||
'copy': 'Copiar',
|
||||
'copy_to_clipboard': 'Copiar al portapapeles',
|
||||
'copy_success': '¡Copiado!',
|
||||
'copy_failure': 'Error al copiar',
|
||||
},
|
||||
'de' : {
|
||||
'copy': 'Kopieren',
|
||||
'copy_to_clipboard': 'In die Zwischenablage kopieren',
|
||||
'copy_success': 'Kopiert!',
|
||||
'copy_failure': 'Fehler beim Kopieren',
|
||||
},
|
||||
'fr' : {
|
||||
'copy': 'Copier',
|
||||
'copy_to_clipboard': 'Copier dans le presse-papier',
|
||||
'copy_success': 'Copié !',
|
||||
'copy_failure': 'Échec de la copie',
|
||||
},
|
||||
'ru': {
|
||||
'copy': 'Скопировать',
|
||||
'copy_to_clipboard': 'Скопировать в буфер',
|
||||
'copy_success': 'Скопировано!',
|
||||
'copy_failure': 'Не удалось скопировать',
|
||||
},
|
||||
'zh-CN': {
|
||||
'copy': '复制',
|
||||
'copy_to_clipboard': '复制到剪贴板',
|
||||
'copy_success': '复制成功!',
|
||||
'copy_failure': '复制失败',
|
||||
},
|
||||
'it' : {
|
||||
'copy': 'Copiare',
|
||||
'copy_to_clipboard': 'Copiato negli appunti',
|
||||
'copy_success': 'Copiato!',
|
||||
'copy_failure': 'Errore durante la copia',
|
||||
}
|
||||
}
|
||||
|
||||
let locale = 'en'
|
||||
if( document.documentElement.lang !== undefined
|
||||
&& messages[document.documentElement.lang] !== undefined ) {
|
||||
locale = document.documentElement.lang
|
||||
}
|
||||
|
||||
let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT;
|
||||
if (doc_url_root == '#') {
|
||||
doc_url_root = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* SVG files for our copy buttons
|
||||
*/
|
||||
let iconCheck = `<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="44" height="44" viewBox="0 0 24 24" stroke-width="2" stroke="#22863a" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<title>${messages[locale]['copy_success']}</title>
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M5 12l5 5l10 -10" />
|
||||
</svg>`
|
||||
|
||||
// If the user specified their own SVG use that, otherwise use the default
|
||||
let iconCopy = ``;
|
||||
if (!iconCopy) {
|
||||
iconCopy = `<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copy" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<title>${messages[locale]['copy_to_clipboard']}</title>
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
||||
<rect x="8" y="8" width="12" height="12" rx="2" />
|
||||
<path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" />
|
||||
</svg>`
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up copy/paste for code blocks
|
||||
*/
|
||||
|
||||
const runWhenDOMLoaded = cb => {
|
||||
if (document.readyState != 'loading') {
|
||||
cb()
|
||||
} else if (document.addEventListener) {
|
||||
document.addEventListener('DOMContentLoaded', cb)
|
||||
} else {
|
||||
document.attachEvent('onreadystatechange', function() {
|
||||
if (document.readyState == 'complete') cb()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const codeCellId = index => `codecell${index}`
|
||||
|
||||
// Clears selected text since ClipboardJS will select the text when copying
|
||||
const clearSelection = () => {
|
||||
if (window.getSelection) {
|
||||
window.getSelection().removeAllRanges()
|
||||
} else if (document.selection) {
|
||||
document.selection.empty()
|
||||
}
|
||||
}
|
||||
|
||||
// Changes tooltip text for a moment, then changes it back
|
||||
// We want the timeout of our `success` class to be a bit shorter than the
|
||||
// tooltip and icon change, so that we can hide the icon before changing back.
|
||||
var timeoutIcon = 2000;
|
||||
var timeoutSuccessClass = 1500;
|
||||
|
||||
const temporarilyChangeTooltip = (el, oldText, newText) => {
|
||||
el.setAttribute('data-tooltip', newText)
|
||||
el.classList.add('success')
|
||||
// Remove success a little bit sooner than we change the tooltip
|
||||
// So that we can use CSS to hide the copybutton first
|
||||
setTimeout(() => el.classList.remove('success'), timeoutSuccessClass)
|
||||
setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon)
|
||||
}
|
||||
|
||||
// Changes the copy button icon for two seconds, then changes it back
|
||||
const temporarilyChangeIcon = (el) => {
|
||||
el.innerHTML = iconCheck;
|
||||
setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon)
|
||||
}
|
||||
|
||||
const addCopyButtonToCodeCells = () => {
|
||||
// If ClipboardJS hasn't loaded, wait a bit and try again. This
|
||||
// happens because we load ClipboardJS asynchronously.
|
||||
if (window.ClipboardJS === undefined) {
|
||||
setTimeout(addCopyButtonToCodeCells, 250)
|
||||
return
|
||||
}
|
||||
|
||||
// Add copybuttons to all of our code cells
|
||||
const COPYBUTTON_SELECTOR = 'div.highlight pre';
|
||||
const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR)
|
||||
codeCells.forEach((codeCell, index) => {
|
||||
const id = codeCellId(index)
|
||||
codeCell.setAttribute('id', id)
|
||||
|
||||
const clipboardButton = id =>
|
||||
`<button class="copybtn o-tooltip--left" data-tooltip="${messages[locale]['copy']}" data-clipboard-target="#${id}">
|
||||
${iconCopy}
|
||||
</button>`
|
||||
codeCell.insertAdjacentHTML('afterend', clipboardButton(id))
|
||||
})
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes excluded text from a Node.
|
||||
*
|
||||
* @param {Node} target Node to filter.
|
||||
* @param {string} exclude CSS selector of nodes to exclude.
|
||||
* @returns {DOMString} Text from `target` with text removed.
|
||||
*/
|
||||
function filterText(target, exclude) {
|
||||
const clone = target.cloneNode(true); // clone as to not modify the live DOM
|
||||
if (exclude) {
|
||||
// remove excluded nodes
|
||||
clone.querySelectorAll(exclude).forEach(node => node.remove());
|
||||
}
|
||||
return clone.innerText;
|
||||
}
|
||||
|
||||
// Callback when a copy button is clicked. Will be passed the node that was clicked
|
||||
// should then grab the text and replace pieces of text that shouldn't be used in output
|
||||
function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
|
||||
var regexp;
|
||||
var match;
|
||||
|
||||
// Do we check for line continuation characters and "HERE-documents"?
|
||||
var useLineCont = !!lineContinuationChar
|
||||
var useHereDoc = !!hereDocDelim
|
||||
|
||||
// create regexp to capture prompt and remaining line
|
||||
if (isRegexp) {
|
||||
regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
|
||||
} else {
|
||||
regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
|
||||
}
|
||||
|
||||
const outputLines = [];
|
||||
var promptFound = false;
|
||||
var gotLineCont = false;
|
||||
var gotHereDoc = false;
|
||||
const lineGotPrompt = [];
|
||||
for (const line of textContent.split('\n')) {
|
||||
match = line.match(regexp)
|
||||
if (match || gotLineCont || gotHereDoc) {
|
||||
promptFound = regexp.test(line)
|
||||
lineGotPrompt.push(promptFound)
|
||||
if (removePrompts && promptFound) {
|
||||
outputLines.push(match[2])
|
||||
} else {
|
||||
outputLines.push(line)
|
||||
}
|
||||
gotLineCont = line.endsWith(lineContinuationChar) & useLineCont
|
||||
if (line.includes(hereDocDelim) & useHereDoc)
|
||||
gotHereDoc = !gotHereDoc
|
||||
} else if (!onlyCopyPromptLines) {
|
||||
outputLines.push(line)
|
||||
} else if (copyEmptyLines && line.trim() === '') {
|
||||
outputLines.push(line)
|
||||
}
|
||||
}
|
||||
|
||||
// If no lines with the prompt were found then just use original lines
|
||||
if (lineGotPrompt.some(v => v === true)) {
|
||||
textContent = outputLines.join('\n');
|
||||
}
|
||||
|
||||
// Remove a trailing newline to avoid auto-running when pasting
|
||||
if (textContent.endsWith("\n")) {
|
||||
textContent = textContent.slice(0, -1)
|
||||
}
|
||||
return textContent
|
||||
}
|
||||
|
||||
|
||||
var copyTargetText = (trigger) => {
|
||||
var target = document.querySelector(trigger.attributes['data-clipboard-target'].value);
|
||||
|
||||
// get filtered text
|
||||
let exclude = '.linenos';
|
||||
|
||||
let text = filterText(target, exclude);
|
||||
return formatCopyText(text, '', false, true, true, true, '', '')
|
||||
}
|
||||
|
||||
// Initialize with a callback so we can modify the text before copy
|
||||
const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText})
|
||||
|
||||
// Update UI with error/success messages
|
||||
clipboard.on('success', event => {
|
||||
clearSelection()
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success'])
|
||||
temporarilyChangeIcon(event.trigger)
|
||||
})
|
||||
|
||||
clipboard.on('error', event => {
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure'])
|
||||
})
|
||||
}
|
||||
|
||||
runWhenDOMLoaded(addCopyButtonToCodeCells)
|
||||
73
_static/copybutton_funcs.js
Normal file
@@ -0,0 +1,73 @@
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes excluded text from a Node.
|
||||
*
|
||||
* @param {Node} target Node to filter.
|
||||
* @param {string} exclude CSS selector of nodes to exclude.
|
||||
* @returns {DOMString} Text from `target` with text removed.
|
||||
*/
|
||||
export function filterText(target, exclude) {
|
||||
const clone = target.cloneNode(true); // clone as to not modify the live DOM
|
||||
if (exclude) {
|
||||
// remove excluded nodes
|
||||
clone.querySelectorAll(exclude).forEach(node => node.remove());
|
||||
}
|
||||
return clone.innerText;
|
||||
}
|
||||
|
||||
// Callback when a copy button is clicked. Will be passed the node that was clicked
|
||||
// should then grab the text and replace pieces of text that shouldn't be used in output
|
||||
export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
|
||||
var regexp;
|
||||
var match;
|
||||
|
||||
// Do we check for line continuation characters and "HERE-documents"?
|
||||
var useLineCont = !!lineContinuationChar
|
||||
var useHereDoc = !!hereDocDelim
|
||||
|
||||
// create regexp to capture prompt and remaining line
|
||||
if (isRegexp) {
|
||||
regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
|
||||
} else {
|
||||
regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
|
||||
}
|
||||
|
||||
const outputLines = [];
|
||||
var promptFound = false;
|
||||
var gotLineCont = false;
|
||||
var gotHereDoc = false;
|
||||
const lineGotPrompt = [];
|
||||
for (const line of textContent.split('\n')) {
|
||||
match = line.match(regexp)
|
||||
if (match || gotLineCont || gotHereDoc) {
|
||||
promptFound = regexp.test(line)
|
||||
lineGotPrompt.push(promptFound)
|
||||
if (removePrompts && promptFound) {
|
||||
outputLines.push(match[2])
|
||||
} else {
|
||||
outputLines.push(line)
|
||||
}
|
||||
gotLineCont = line.endsWith(lineContinuationChar) & useLineCont
|
||||
if (line.includes(hereDocDelim) & useHereDoc)
|
||||
gotHereDoc = !gotHereDoc
|
||||
} else if (!onlyCopyPromptLines) {
|
||||
outputLines.push(line)
|
||||
} else if (copyEmptyLines && line.trim() === '') {
|
||||
outputLines.push(line)
|
||||
}
|
||||
}
|
||||
|
||||
// If no lines with the prompt were found then just use original lines
|
||||
if (lineGotPrompt.some(v => v === true)) {
|
||||
textContent = outputLines.join('\n');
|
||||
}
|
||||
|
||||
// Remove a trailing newline to avoid auto-running when pasting
|
||||
if (textContent.endsWith("\n")) {
|
||||
textContent = textContent.slice(0, -1)
|
||||
}
|
||||
return textContent
|
||||
}
|
||||
69
_static/debug.css
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
This CSS file should be overridden by the theme authors. It's
|
||||
meant for debugging and developing the skeleton that this theme provides.
|
||||
*/
|
||||
body {
|
||||
font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
|
||||
"Apple Color Emoji", "Segoe UI Emoji";
|
||||
background: lavender;
|
||||
}
|
||||
.sb-announcement {
|
||||
background: rgb(131, 131, 131);
|
||||
}
|
||||
.sb-announcement__inner {
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
.sb-header {
|
||||
background: lightskyblue;
|
||||
}
|
||||
.sb-header__inner {
|
||||
background: royalblue;
|
||||
color: white;
|
||||
}
|
||||
.sb-header-secondary {
|
||||
background: lightcyan;
|
||||
}
|
||||
.sb-header-secondary__inner {
|
||||
background: cornflowerblue;
|
||||
color: white;
|
||||
}
|
||||
.sb-sidebar-primary {
|
||||
background: lightgreen;
|
||||
}
|
||||
.sb-main {
|
||||
background: blanchedalmond;
|
||||
}
|
||||
.sb-main__inner {
|
||||
background: antiquewhite;
|
||||
}
|
||||
.sb-header-article {
|
||||
background: lightsteelblue;
|
||||
}
|
||||
.sb-article-container {
|
||||
background: snow;
|
||||
}
|
||||
.sb-article-main {
|
||||
background: white;
|
||||
}
|
||||
.sb-footer-article {
|
||||
background: lightpink;
|
||||
}
|
||||
.sb-sidebar-secondary {
|
||||
background: lightgoldenrodyellow;
|
||||
}
|
||||
.sb-footer-content {
|
||||
background: plum;
|
||||
}
|
||||
.sb-footer-content__inner {
|
||||
background: palevioletred;
|
||||
}
|
||||
.sb-footer {
|
||||
background: pink;
|
||||
}
|
||||
.sb-footer__inner {
|
||||
background: salmon;
|
||||
}
|
||||
.sb-article {
|
||||
background: white;
|
||||
}
|
||||
BIN
_static/dna.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
150
_static/doctools.js
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Base JavaScript utilities for all Sphinx HTML documentation.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
|
||||
"TEXTAREA",
|
||||
"INPUT",
|
||||
"SELECT",
|
||||
"BUTTON",
|
||||
]);
|
||||
|
||||
const _ready = (callback) => {
|
||||
if (document.readyState !== "loading") {
|
||||
callback();
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
const Documentation = {
|
||||
init: () => {
|
||||
Documentation.initDomainIndexTable();
|
||||
Documentation.initOnKeyListeners();
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS: {},
|
||||
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
|
||||
LOCALE: "unknown",
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext: (string) => {
|
||||
const translated = Documentation.TRANSLATIONS[string];
|
||||
switch (typeof translated) {
|
||||
case "undefined":
|
||||
return string; // no translation
|
||||
case "string":
|
||||
return translated; // translation exists
|
||||
default:
|
||||
return translated[0]; // (singular, plural) translation tuple exists
|
||||
}
|
||||
},
|
||||
|
||||
ngettext: (singular, plural, n) => {
|
||||
const translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated !== "undefined")
|
||||
return translated[Documentation.PLURAL_EXPR(n)];
|
||||
return n === 1 ? singular : plural;
|
||||
},
|
||||
|
||||
addTranslations: (catalog) => {
|
||||
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
|
||||
Documentation.PLURAL_EXPR = new Function(
|
||||
"n",
|
||||
`return (${catalog.plural_expr})`,
|
||||
);
|
||||
Documentation.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to focus on search bar
|
||||
*/
|
||||
focusSearchBar: () => {
|
||||
document.querySelectorAll("input[name=q]")[0]?.focus();
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialise the domain index toggle buttons
|
||||
*/
|
||||
initDomainIndexTable: () => {
|
||||
const toggler = (el) => {
|
||||
const idNumber = el.id.substr(7);
|
||||
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
|
||||
if (el.src.substr(-9) === "minus.png") {
|
||||
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = "none"));
|
||||
} else {
|
||||
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = ""));
|
||||
}
|
||||
};
|
||||
|
||||
const togglerElements = document.querySelectorAll("img.toggler");
|
||||
togglerElements.forEach((el) =>
|
||||
el.addEventListener("click", (event) => toggler(event.currentTarget)),
|
||||
);
|
||||
togglerElements.forEach((el) => (el.style.display = ""));
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
|
||||
},
|
||||
|
||||
initOnKeyListeners: () => {
|
||||
// only install a listener if it is really needed
|
||||
if (
|
||||
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS
|
||||
&& !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
|
||||
)
|
||||
return;
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
// bail for input elements
|
||||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
|
||||
return;
|
||||
// bail with special keys
|
||||
if (event.altKey || event.ctrlKey || event.metaKey) return;
|
||||
|
||||
if (!event.shiftKey) {
|
||||
switch (event.key) {
|
||||
case "ArrowLeft":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const prevLink = document.querySelector('link[rel="prev"]');
|
||||
if (prevLink && prevLink.href) {
|
||||
window.location.href = prevLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
case "ArrowRight":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const nextLink = document.querySelector('link[rel="next"]');
|
||||
if (nextLink && nextLink.href) {
|
||||
window.location.href = nextLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// some keyboard layouts may need Shift to get /
|
||||
switch (event.key) {
|
||||
case "/":
|
||||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
|
||||
Documentation.focusSearchBar();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
const _ = Documentation.gettext;
|
||||
|
||||
_ready(Documentation.init);
|
||||
13
_static/documentation_options.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const DOCUMENTATION_OPTIONS = {
|
||||
VERSION: '0.1.7',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false,
|
||||
SHOW_SEARCH_SUMMARY: true,
|
||||
ENABLE_SEARCH_SHORTCUTS: true,
|
||||
};
|
||||
1066
_static/english-stemmer.js
Normal file
BIN
_static/enzyme.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
_static/file.png
Normal file
|
After Width: | Height: | Size: 286 B |
5
_static/ga.js
Normal file
@@ -0,0 +1,5 @@
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-6Q7T573HLF');
|
||||
13
_static/language_data.js
Normal file
BIN
_static/minus.png
Normal file
|
After Width: | Height: | Size: 90 B |
BIN
_static/plus.png
Normal file
|
After Width: | Height: | Size: 90 B |
BIN
_static/ppi.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
250
_static/pygments.css
Normal file
@@ -0,0 +1,250 @@
|
||||
.highlight pre { line-height: 125%; }
|
||||
.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight .hll { background-color: #fdf2e2 }
|
||||
.highlight { background: #f2f2f2; color: #1e1e1e }
|
||||
.highlight .c { color: #515151 } /* Comment */
|
||||
.highlight .err { color: #d71835 } /* Error */
|
||||
.highlight .k { color: #8045e5 } /* Keyword */
|
||||
.highlight .l { color: #7f4707 } /* Literal */
|
||||
.highlight .n { color: #1e1e1e } /* Name */
|
||||
.highlight .o { color: #116633 } /* Operator */
|
||||
.highlight .p { color: #1e1e1e } /* Punctuation */
|
||||
.highlight .ch { color: #515151 } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #515151 } /* Comment.Multiline */
|
||||
.highlight .cp { color: #515151 } /* Comment.Preproc */
|
||||
.highlight .cpf { color: #515151 } /* Comment.PreprocFile */
|
||||
.highlight .c1 { color: #515151 } /* Comment.Single */
|
||||
.highlight .cs { color: #515151 } /* Comment.Special */
|
||||
.highlight .gd { color: #00749c } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gh { color: #00749c } /* Generic.Heading */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #00749c } /* Generic.Subheading */
|
||||
.highlight .kc { color: #8045e5 } /* Keyword.Constant */
|
||||
.highlight .kd { color: #8045e5 } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #8045e5 } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #8045e5 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #8045e5 } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #7f4707 } /* Keyword.Type */
|
||||
.highlight .ld { color: #7f4707 } /* Literal.Date */
|
||||
.highlight .m { color: #7f4707 } /* Literal.Number */
|
||||
.highlight .s { color: #116633 } /* Literal.String */
|
||||
.highlight .na { color: #7f4707 } /* Name.Attribute */
|
||||
.highlight .nb { color: #7f4707 } /* Name.Builtin */
|
||||
.highlight .nc { color: #00749c } /* Name.Class */
|
||||
.highlight .no { color: #00749c } /* Name.Constant */
|
||||
.highlight .nd { color: #7f4707 } /* Name.Decorator */
|
||||
.highlight .ni { color: #116633 } /* Name.Entity */
|
||||
.highlight .ne { color: #8045e5 } /* Name.Exception */
|
||||
.highlight .nf { color: #00749c } /* Name.Function */
|
||||
.highlight .nl { color: #7f4707 } /* Name.Label */
|
||||
.highlight .nn { color: #1e1e1e } /* Name.Namespace */
|
||||
.highlight .nx { color: #1e1e1e } /* Name.Other */
|
||||
.highlight .py { color: #00749c } /* Name.Property */
|
||||
.highlight .nt { color: #00749c } /* Name.Tag */
|
||||
.highlight .nv { color: #d71835 } /* Name.Variable */
|
||||
.highlight .ow { color: #8045e5 } /* Operator.Word */
|
||||
.highlight .pm { color: #1e1e1e } /* Punctuation.Marker */
|
||||
.highlight .w { color: #1e1e1e } /* Text.Whitespace */
|
||||
.highlight .mb { color: #7f4707 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #7f4707 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #7f4707 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #7f4707 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #7f4707 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #116633 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #116633 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #116633 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #116633 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #116633 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #116633 } /* Literal.String.Double */
|
||||
.highlight .se { color: #116633 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #116633 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #116633 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #116633 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #d71835 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #116633 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #00749c } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #7f4707 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #00749c } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #d71835 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #d71835 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #d71835 } /* Name.Variable.Instance */
|
||||
.highlight .vm { color: #7f4707 } /* Name.Variable.Magic */
|
||||
.highlight .il { color: #7f4707 } /* Literal.Number.Integer.Long */
|
||||
@media not print {
|
||||
body[data-theme="dark"] .highlight pre { line-height: 125%; }
|
||||
body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
body[data-theme="dark"] .highlight .hll { background-color: #404040 }
|
||||
body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 }
|
||||
body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */
|
||||
body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */
|
||||
body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */
|
||||
body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */
|
||||
body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */
|
||||
body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */
|
||||
body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */
|
||||
body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */
|
||||
body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */
|
||||
body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */
|
||||
body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */
|
||||
body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */
|
||||
body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */
|
||||
body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */
|
||||
body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */
|
||||
body[data-theme="dark"] .highlight .gd { color: #d22323 } /* Generic.Deleted */
|
||||
body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */
|
||||
body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||
body[data-theme="dark"] .highlight .gr { color: #d22323 } /* Generic.Error */
|
||||
body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
|
||||
body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */
|
||||
body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */
|
||||
body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */
|
||||
body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */
|
||||
body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */
|
||||
body[data-theme="dark"] .highlight .gt { color: #d22323 } /* Generic.Traceback */
|
||||
body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */
|
||||
body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */
|
||||
body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */
|
||||
body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */
|
||||
body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */
|
||||
body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */
|
||||
body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */
|
||||
body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */
|
||||
body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */
|
||||
body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */
|
||||
body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */
|
||||
body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */
|
||||
body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */
|
||||
body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */
|
||||
body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */
|
||||
body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */
|
||||
body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */
|
||||
body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */
|
||||
body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */
|
||||
body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */
|
||||
body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */
|
||||
body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */
|
||||
body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */
|
||||
body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */
|
||||
body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */
|
||||
body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */
|
||||
body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */
|
||||
body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */
|
||||
body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */
|
||||
body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */
|
||||
body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */
|
||||
body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */
|
||||
body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */
|
||||
body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */
|
||||
body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */
|
||||
body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */
|
||||
body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */
|
||||
body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */
|
||||
body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */
|
||||
body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */
|
||||
body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */
|
||||
body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */
|
||||
body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */
|
||||
body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */
|
||||
body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */
|
||||
body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */
|
||||
body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */
|
||||
body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */
|
||||
body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */
|
||||
body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */
|
||||
body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) .highlight pre { line-height: 125%; }
|
||||
body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
body:not([data-theme="light"]) .highlight .hll { background-color: #404040 }
|
||||
body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 }
|
||||
body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */
|
||||
body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */
|
||||
body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */
|
||||
body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */
|
||||
body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */
|
||||
body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */
|
||||
body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */
|
||||
body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */
|
||||
body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */
|
||||
body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */
|
||||
body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */
|
||||
body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */
|
||||
body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */
|
||||
body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */
|
||||
body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */
|
||||
body:not([data-theme="light"]) .highlight .gd { color: #d22323 } /* Generic.Deleted */
|
||||
body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */
|
||||
body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||
body:not([data-theme="light"]) .highlight .gr { color: #d22323 } /* Generic.Error */
|
||||
body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
|
||||
body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */
|
||||
body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */
|
||||
body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */
|
||||
body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */
|
||||
body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */
|
||||
body:not([data-theme="light"]) .highlight .gt { color: #d22323 } /* Generic.Traceback */
|
||||
body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */
|
||||
body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */
|
||||
body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */
|
||||
body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */
|
||||
body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */
|
||||
body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */
|
||||
body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */
|
||||
body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */
|
||||
body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */
|
||||
body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */
|
||||
body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */
|
||||
body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */
|
||||
body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */
|
||||
body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */
|
||||
body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */
|
||||
body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */
|
||||
body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */
|
||||
body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */
|
||||
body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */
|
||||
body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */
|
||||
body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */
|
||||
body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */
|
||||
body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */
|
||||
body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */
|
||||
body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */
|
||||
body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */
|
||||
body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */
|
||||
body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */
|
||||
body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */
|
||||
body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */
|
||||
body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */
|
||||
body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */
|
||||
body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */
|
||||
body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */
|
||||
body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */
|
||||
body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */
|
||||
body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */
|
||||
body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */
|
||||
body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */
|
||||
body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */
|
||||
body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */
|
||||
body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */
|
||||
body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */
|
||||
body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */
|
||||
body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */
|
||||
body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */
|
||||
body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */
|
||||
body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */
|
||||
body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */
|
||||
body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */
|
||||
body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */
|
||||
}
|
||||
}
|
||||
0
_static/scripts/furo-extensions.js
Normal file
3
_static/scripts/furo.js
Normal file
7
_static/scripts/furo.js.LICENSE.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* gumshoejs v5.1.2 (patched by @pradyunsg)
|
||||
* A simple, framework-agnostic scrollspy script.
|
||||
* (c) 2019 Chris Ferdinandi
|
||||
* MIT License
|
||||
* http://github.com/cferdinandi/gumshoe
|
||||
*/
|
||||
1
_static/scripts/furo.js.map
Normal file
693
_static/searchtools.js
Normal file
@@ -0,0 +1,693 @@
|
||||
/*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
if (typeof Scorer === "undefined") {
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [docname, title, anchor, descr, score, filename]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: result => {
|
||||
const [docname, title, anchor, descr, score, filename, kind] = result
|
||||
return score
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {
|
||||
0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5, // used to be unimportantResults
|
||||
},
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
partialTitle: 7,
|
||||
// query found in terms
|
||||
term: 5,
|
||||
partialTerm: 2,
|
||||
};
|
||||
}
|
||||
|
||||
// Global search result kind enum, used by themes to style search results.
|
||||
// prettier-ignore
|
||||
class SearchResultKind {
|
||||
static get index() { return "index"; }
|
||||
static get object() { return "object"; }
|
||||
static get text() { return "text"; }
|
||||
static get title() { return "title"; }
|
||||
}
|
||||
|
||||
const _removeChildren = (element) => {
|
||||
while (element && element.lastChild) element.removeChild(element.lastChild);
|
||||
};
|
||||
|
||||
/**
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
|
||||
*/
|
||||
const _escapeRegExp = (string) =>
|
||||
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||
|
||||
const _escapeHTML = (text) => {
|
||||
return text
|
||||
.replaceAll("&", "&")
|
||||
.replaceAll("<", "<")
|
||||
.replaceAll(">", ">")
|
||||
.replaceAll('"', """)
|
||||
.replaceAll("'", "'");
|
||||
};
|
||||
|
||||
const _displayItem = (item, searchTerms, highlightTerms) => {
|
||||
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
|
||||
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
|
||||
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
|
||||
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
|
||||
const contentRoot = document.documentElement.dataset.content_root;
|
||||
|
||||
const [docName, title, anchor, descr, score, _filename, kind] = item;
|
||||
|
||||
let listItem = document.createElement("li");
|
||||
// Add a class representing the item's type:
|
||||
// can be used by a theme's CSS selector for styling
|
||||
// See SearchResultKind for the class names.
|
||||
listItem.classList.add(`kind-${kind}`);
|
||||
let requestUrl;
|
||||
let linkUrl;
|
||||
if (docBuilder === "dirhtml") {
|
||||
// dirhtml builder
|
||||
let dirname = docName + "/";
|
||||
if (dirname.match(/\/index\/$/))
|
||||
dirname = dirname.substring(0, dirname.length - 6);
|
||||
else if (dirname === "index/") dirname = "";
|
||||
requestUrl = contentRoot + dirname;
|
||||
linkUrl = requestUrl;
|
||||
} else {
|
||||
// normal html builders
|
||||
requestUrl = contentRoot + docName + docFileSuffix;
|
||||
linkUrl = docName + docLinkSuffix;
|
||||
}
|
||||
let linkEl = listItem.appendChild(document.createElement("a"));
|
||||
linkEl.href = linkUrl + anchor;
|
||||
linkEl.dataset.score = score;
|
||||
linkEl.innerHTML = _escapeHTML(title);
|
||||
if (descr) {
|
||||
listItem.appendChild(document.createElement("span")).innerHTML =
|
||||
` (${_escapeHTML(descr)})`;
|
||||
// highlight search terms in the description
|
||||
if (SPHINX_HIGHLIGHT_ENABLED)
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
highlightTerms.forEach((term) =>
|
||||
_highlightText(listItem, term, "highlighted"),
|
||||
);
|
||||
} else if (showSearchSummary)
|
||||
fetch(requestUrl)
|
||||
.then((responseData) => responseData.text())
|
||||
.then((data) => {
|
||||
if (data)
|
||||
listItem.appendChild(
|
||||
Search.makeSearchSummary(data, searchTerms, anchor),
|
||||
);
|
||||
// highlight search terms in the summary
|
||||
if (SPHINX_HIGHLIGHT_ENABLED)
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
highlightTerms.forEach((term) =>
|
||||
_highlightText(listItem, term, "highlighted"),
|
||||
);
|
||||
});
|
||||
Search.output.appendChild(listItem);
|
||||
};
|
||||
const _finishSearch = (resultCount) => {
|
||||
Search.stopPulse();
|
||||
Search.title.innerText = _("Search Results");
|
||||
if (!resultCount)
|
||||
Search.status.innerText = Documentation.gettext(
|
||||
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.",
|
||||
);
|
||||
else
|
||||
Search.status.innerText = Documentation.ngettext(
|
||||
"Search finished, found one page matching the search query.",
|
||||
"Search finished, found ${resultCount} pages matching the search query.",
|
||||
resultCount,
|
||||
).replace("${resultCount}", resultCount);
|
||||
};
|
||||
const _displayNextItem = (
|
||||
results,
|
||||
resultCount,
|
||||
searchTerms,
|
||||
highlightTerms,
|
||||
) => {
|
||||
// results left, load the summary and display it
|
||||
// this is intended to be dynamic (don't sub resultsCount)
|
||||
if (results.length) {
|
||||
_displayItem(results.pop(), searchTerms, highlightTerms);
|
||||
setTimeout(
|
||||
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
|
||||
5,
|
||||
);
|
||||
}
|
||||
// search finished, update title and status message
|
||||
else _finishSearch(resultCount);
|
||||
};
|
||||
// Helper function used by query() to order search results.
|
||||
// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
|
||||
// Order the results by score (in opposite order of appearance, since the
|
||||
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
|
||||
const _orderResultsByScoreThenName = (a, b) => {
|
||||
const leftScore = a[4];
|
||||
const rightScore = b[4];
|
||||
if (leftScore === rightScore) {
|
||||
// same score: sort alphabetically
|
||||
const leftTitle = a[1].toLowerCase();
|
||||
const rightTitle = b[1].toLowerCase();
|
||||
if (leftTitle === rightTitle) return 0;
|
||||
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
||||
}
|
||||
return leftScore > rightScore ? 1 : -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
|
||||
* custom function per language.
|
||||
*
|
||||
* The regular expression works by splitting the string on consecutive characters
|
||||
* that are not Unicode letters, numbers, underscores, or emoji characters.
|
||||
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
|
||||
*/
|
||||
if (typeof splitQuery === "undefined") {
|
||||
var splitQuery = (query) =>
|
||||
query
|
||||
.split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
|
||||
.filter((term) => term); // remove remaining empty strings
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
const Search = {
|
||||
_index: null,
|
||||
_queued_query: null,
|
||||
_pulse_status: -1,
|
||||
|
||||
htmlToText: (htmlString, anchor) => {
|
||||
const htmlElement = new DOMParser().parseFromString(
|
||||
htmlString,
|
||||
"text/html",
|
||||
);
|
||||
for (const removalQuery of [".headerlink", "script", "style"]) {
|
||||
htmlElement.querySelectorAll(removalQuery).forEach((el) => {
|
||||
el.remove();
|
||||
});
|
||||
}
|
||||
if (anchor) {
|
||||
const anchorContent = htmlElement.querySelector(
|
||||
`[role="main"] ${anchor}`,
|
||||
);
|
||||
if (anchorContent) return anchorContent.textContent;
|
||||
|
||||
console.warn(
|
||||
`Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`,
|
||||
);
|
||||
}
|
||||
|
||||
// if anchor not specified or not found, fall back to main content
|
||||
const docContent = htmlElement.querySelector('[role="main"]');
|
||||
if (docContent) return docContent.textContent;
|
||||
|
||||
console.warn(
|
||||
"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.",
|
||||
);
|
||||
return "";
|
||||
},
|
||||
|
||||
init: () => {
|
||||
const query = new URLSearchParams(window.location.search).get("q");
|
||||
document
|
||||
.querySelectorAll('input[name="q"]')
|
||||
.forEach((el) => (el.value = query));
|
||||
if (query) Search.performSearch(query);
|
||||
},
|
||||
|
||||
loadIndex: (url) =>
|
||||
(document.body.appendChild(document.createElement("script")).src = url),
|
||||
|
||||
setIndex: (index) => {
|
||||
Search._index = index;
|
||||
if (Search._queued_query !== null) {
|
||||
const query = Search._queued_query;
|
||||
Search._queued_query = null;
|
||||
Search.query(query);
|
||||
}
|
||||
},
|
||||
|
||||
hasIndex: () => Search._index !== null,
|
||||
|
||||
deferQuery: (query) => (Search._queued_query = query),
|
||||
|
||||
stopPulse: () => (Search._pulse_status = -1),
|
||||
|
||||
startPulse: () => {
|
||||
if (Search._pulse_status >= 0) return;
|
||||
|
||||
const pulse = () => {
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
Search.dots.innerText = ".".repeat(Search._pulse_status);
|
||||
if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
|
||||
};
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch: (query) => {
|
||||
// create the required interface elements
|
||||
const searchText = document.createElement("h2");
|
||||
searchText.textContent = _("Searching");
|
||||
const searchSummary = document.createElement("p");
|
||||
searchSummary.classList.add("search-summary");
|
||||
searchSummary.innerText = "";
|
||||
const searchList = document.createElement("ul");
|
||||
searchList.setAttribute("role", "list");
|
||||
searchList.classList.add("search");
|
||||
|
||||
const out = document.getElementById("search-results");
|
||||
Search.title = out.appendChild(searchText);
|
||||
Search.dots = Search.title.appendChild(document.createElement("span"));
|
||||
Search.status = out.appendChild(searchSummary);
|
||||
Search.output = out.appendChild(searchList);
|
||||
|
||||
const searchProgress = document.getElementById("search-progress");
|
||||
// Some themes don't use the search progress node
|
||||
if (searchProgress) {
|
||||
searchProgress.innerText = _("Preparing search...");
|
||||
}
|
||||
Search.startPulse();
|
||||
|
||||
// index already loaded, the browser was quick!
|
||||
if (Search.hasIndex()) Search.query(query);
|
||||
else Search.deferQuery(query);
|
||||
},
|
||||
|
||||
_parseQuery: (query) => {
|
||||
// stem the search terms and add them to the correct list
|
||||
const stemmer = new Stemmer();
|
||||
const searchTerms = new Set();
|
||||
const excludedTerms = new Set();
|
||||
const highlightTerms = new Set();
|
||||
const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
|
||||
splitQuery(query.trim()).forEach((queryTerm) => {
|
||||
const queryTermLower = queryTerm.toLowerCase();
|
||||
|
||||
// maybe skip this "word"
|
||||
// stopwords set is from language_data.js
|
||||
if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return;
|
||||
|
||||
// stem the word
|
||||
let word = stemmer.stemWord(queryTermLower);
|
||||
// select the correct list
|
||||
if (word[0] === "-") excludedTerms.add(word.substr(1));
|
||||
else {
|
||||
searchTerms.add(word);
|
||||
highlightTerms.add(queryTermLower);
|
||||
}
|
||||
});
|
||||
|
||||
if (SPHINX_HIGHLIGHT_ENABLED) {
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
localStorage.setItem(
|
||||
"sphinx_highlight_terms",
|
||||
[...highlightTerms].join(" "),
|
||||
);
|
||||
}
|
||||
|
||||
// console.debug("SEARCH: searching for:");
|
||||
// console.info("required: ", [...searchTerms]);
|
||||
// console.info("excluded: ", [...excludedTerms]);
|
||||
|
||||
return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
_performSearch: (
|
||||
query,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
) => {
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const titles = Search._index.titles;
|
||||
const allTitles = Search._index.alltitles;
|
||||
const indexEntries = Search._index.indexentries;
|
||||
|
||||
// Collect multiple result groups to be sorted separately and then ordered.
|
||||
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
|
||||
const normalResults = [];
|
||||
const nonMainIndexResults = [];
|
||||
|
||||
_removeChildren(document.getElementById("search-progress"));
|
||||
|
||||
const queryLower = query.toLowerCase().trim();
|
||||
for (const [title, foundTitles] of Object.entries(allTitles)) {
|
||||
if (
|
||||
title.toLowerCase().trim().includes(queryLower)
|
||||
&& queryLower.length >= title.length / 2
|
||||
) {
|
||||
for (const [file, id] of foundTitles) {
|
||||
const score = Math.round(
|
||||
(Scorer.title * queryLower.length) / title.length,
|
||||
);
|
||||
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
|
||||
normalResults.push([
|
||||
docNames[file],
|
||||
titles[file] !== title ? `${titles[file]} > ${title}` : title,
|
||||
id !== null ? "#" + id : "",
|
||||
null,
|
||||
score + boost,
|
||||
filenames[file],
|
||||
SearchResultKind.title,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// search for explicit entries in index directives
|
||||
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
|
||||
if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) {
|
||||
for (const [file, id, isMain] of foundEntries) {
|
||||
const score = Math.round((100 * queryLower.length) / entry.length);
|
||||
const result = [
|
||||
docNames[file],
|
||||
titles[file],
|
||||
id ? "#" + id : "",
|
||||
null,
|
||||
score,
|
||||
filenames[file],
|
||||
SearchResultKind.index,
|
||||
];
|
||||
if (isMain) {
|
||||
normalResults.push(result);
|
||||
} else {
|
||||
nonMainIndexResults.push(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// lookup as object
|
||||
objectTerms.forEach((term) =>
|
||||
normalResults.push(...Search.performObjectSearch(term, objectTerms)),
|
||||
);
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
normalResults.push(
|
||||
...Search.performTermsSearch(searchTerms, excludedTerms),
|
||||
);
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||
}
|
||||
|
||||
// Sort each group of results by score and then alphabetically by name.
|
||||
normalResults.sort(_orderResultsByScoreThenName);
|
||||
nonMainIndexResults.sort(_orderResultsByScoreThenName);
|
||||
|
||||
// Combine the result groups in (reverse) order.
|
||||
// Non-main index entries are typically arbitrary cross-references,
|
||||
// so display them after other results.
|
||||
let results = [...nonMainIndexResults, ...normalResults];
|
||||
|
||||
// remove duplicate search results
|
||||
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
|
||||
let seen = new Set();
|
||||
results = results.reverse().reduce((acc, result) => {
|
||||
let resultStr = result
|
||||
.slice(0, 4)
|
||||
.concat([result[5]])
|
||||
.map((v) => String(v))
|
||||
.join(",");
|
||||
if (!seen.has(resultStr)) {
|
||||
acc.push(result);
|
||||
seen.add(resultStr);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
return results.reverse();
|
||||
},
|
||||
|
||||
query: (query) => {
|
||||
const [
|
||||
searchQuery,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
] = Search._parseQuery(query);
|
||||
const results = Search._performSearch(
|
||||
searchQuery,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
);
|
||||
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
// console.info("search results:", Search.lastresults);
|
||||
|
||||
// print the results
|
||||
_displayNextItem(results, results.length, searchTerms, highlightTerms);
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch: (object, objectTerms) => {
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const objects = Search._index.objects;
|
||||
const objNames = Search._index.objnames;
|
||||
const titles = Search._index.titles;
|
||||
|
||||
const results = [];
|
||||
|
||||
const objectSearchCallback = (prefix, match) => {
|
||||
const name = match[4];
|
||||
const fullname = (prefix ? prefix + "." : "") + name;
|
||||
const fullnameLower = fullname.toLowerCase();
|
||||
if (fullnameLower.indexOf(object) < 0) return;
|
||||
|
||||
let score = 0;
|
||||
const parts = fullnameLower.split(".");
|
||||
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullnameLower === object || parts.slice(-1)[0] === object)
|
||||
score += Scorer.objNameMatch;
|
||||
else if (parts.slice(-1)[0].indexOf(object) > -1)
|
||||
score += Scorer.objPartialMatch; // matches in last name
|
||||
|
||||
const objName = objNames[match[1]][2];
|
||||
const title = titles[match[0]];
|
||||
|
||||
// If more than one term searched for, we require other words to be
|
||||
// found in the name/title/description
|
||||
const otherTerms = new Set(objectTerms);
|
||||
otherTerms.delete(object);
|
||||
if (otherTerms.size > 0) {
|
||||
const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
|
||||
if (
|
||||
[...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
let anchor = match[3];
|
||||
if (anchor === "") anchor = fullname;
|
||||
else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
|
||||
|
||||
const descr = objName + _(", in ") + title;
|
||||
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2]))
|
||||
score += Scorer.objPrio[match[2]];
|
||||
else score += Scorer.objPrioDefault;
|
||||
|
||||
results.push([
|
||||
docNames[match[0]],
|
||||
fullname,
|
||||
"#" + anchor,
|
||||
descr,
|
||||
score,
|
||||
filenames[match[0]],
|
||||
SearchResultKind.object,
|
||||
]);
|
||||
};
|
||||
Object.keys(objects).forEach((prefix) =>
|
||||
objects[prefix].forEach((array) => objectSearchCallback(prefix, array)),
|
||||
);
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch: (searchTerms, excludedTerms) => {
|
||||
// prepare search
|
||||
const terms = Search._index.terms;
|
||||
const titleTerms = Search._index.titleterms;
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const titles = Search._index.titles;
|
||||
|
||||
const scoreMap = new Map();
|
||||
const fileMap = new Map();
|
||||
|
||||
// perform the search on the required terms
|
||||
searchTerms.forEach((word) => {
|
||||
const files = [];
|
||||
// find documents, if any, containing the query word in their text/title term indices
|
||||
// use Object.hasOwnProperty to avoid mismatching against prototype properties
|
||||
const arr = [
|
||||
{
|
||||
files: terms.hasOwnProperty(word) ? terms[word] : undefined,
|
||||
score: Scorer.term,
|
||||
},
|
||||
{
|
||||
files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined,
|
||||
score: Scorer.title,
|
||||
},
|
||||
];
|
||||
// add support for partial matches
|
||||
if (word.length > 2) {
|
||||
const escapedWord = _escapeRegExp(word);
|
||||
if (!terms.hasOwnProperty(word)) {
|
||||
Object.keys(terms).forEach((term) => {
|
||||
if (term.match(escapedWord))
|
||||
arr.push({ files: terms[term], score: Scorer.partialTerm });
|
||||
});
|
||||
}
|
||||
if (!titleTerms.hasOwnProperty(word)) {
|
||||
Object.keys(titleTerms).forEach((term) => {
|
||||
if (term.match(escapedWord))
|
||||
arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// no match but word was a required one
|
||||
if (arr.every((record) => record.files === undefined)) return;
|
||||
|
||||
// found search word in contents
|
||||
arr.forEach((record) => {
|
||||
if (record.files === undefined) return;
|
||||
|
||||
let recordFiles = record.files;
|
||||
if (recordFiles.length === undefined) recordFiles = [recordFiles];
|
||||
files.push(...recordFiles);
|
||||
|
||||
// set score for the word in each file
|
||||
recordFiles.forEach((file) => {
|
||||
if (!scoreMap.has(file)) scoreMap.set(file, new Map());
|
||||
const fileScores = scoreMap.get(file);
|
||||
fileScores.set(word, record.score);
|
||||
});
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
files.forEach((file) => {
|
||||
if (!fileMap.has(file)) fileMap.set(file, [word]);
|
||||
else if (fileMap.get(file).indexOf(word) === -1)
|
||||
fileMap.get(file).push(word);
|
||||
});
|
||||
});
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
const results = [];
|
||||
for (const [file, wordList] of fileMap) {
|
||||
// check if all requirements are matched
|
||||
|
||||
// as search terms with length < 3 are discarded
|
||||
const filteredTermCount = [...searchTerms].filter(
|
||||
(term) => term.length > 2,
|
||||
).length;
|
||||
if (
|
||||
wordList.length !== searchTerms.size
|
||||
&& wordList.length !== filteredTermCount
|
||||
)
|
||||
continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
if (
|
||||
[...excludedTerms].some(
|
||||
(term) =>
|
||||
terms[term] === file
|
||||
|| titleTerms[term] === file
|
||||
|| (terms[term] || []).includes(file)
|
||||
|| (titleTerms[term] || []).includes(file),
|
||||
)
|
||||
)
|
||||
break;
|
||||
|
||||
// select one (max) score for the file.
|
||||
const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
|
||||
// add result to the result list
|
||||
results.push([
|
||||
docNames[file],
|
||||
titles[file],
|
||||
"",
|
||||
null,
|
||||
score,
|
||||
filenames[file],
|
||||
SearchResultKind.text,
|
||||
]);
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words.
|
||||
*/
|
||||
makeSearchSummary: (htmlText, keywords, anchor) => {
|
||||
const text = Search.htmlToText(htmlText, anchor);
|
||||
if (text === "") return null;
|
||||
|
||||
const textLower = text.toLowerCase();
|
||||
const actualStartPosition = [...keywords]
|
||||
.map((k) => textLower.indexOf(k.toLowerCase()))
|
||||
.filter((i) => i > -1)
|
||||
.slice(-1)[0];
|
||||
const startWithContext = Math.max(actualStartPosition - 120, 0);
|
||||
|
||||
const top = startWithContext === 0 ? "" : "...";
|
||||
const tail = startWithContext + 240 < text.length ? "..." : "";
|
||||
|
||||
let summary = document.createElement("p");
|
||||
summary.classList.add("context");
|
||||
summary.textContent =
|
||||
top + text.substr(startWithContext, 240).trim() + tail;
|
||||
|
||||
return summary;
|
||||
},
|
||||
};
|
||||
|
||||
_ready(Search.init);
|
||||
296
_static/skeleton.css
vendored
Normal file
@@ -0,0 +1,296 @@
|
||||
/* Some sane resets. */
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
/* All the flexbox magic! */
|
||||
body,
|
||||
.sb-announcement,
|
||||
.sb-content,
|
||||
.sb-main,
|
||||
.sb-container,
|
||||
.sb-container__inner,
|
||||
.sb-article-container,
|
||||
.sb-footer-content,
|
||||
.sb-header,
|
||||
.sb-header-secondary,
|
||||
.sb-footer {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
/* These order things vertically */
|
||||
body,
|
||||
.sb-main,
|
||||
.sb-article-container {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
/* Put elements in the center */
|
||||
.sb-header,
|
||||
.sb-header-secondary,
|
||||
.sb-container,
|
||||
.sb-content,
|
||||
.sb-footer,
|
||||
.sb-footer-content {
|
||||
justify-content: center;
|
||||
}
|
||||
/* Put elements at the ends */
|
||||
.sb-article-container {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* These elements grow. */
|
||||
.sb-main,
|
||||
.sb-content,
|
||||
.sb-container,
|
||||
article {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
/* Because padding making this wider is not fun */
|
||||
article {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* The announcements element should never be wider than the page. */
|
||||
.sb-announcement {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.sb-sidebar-primary,
|
||||
.sb-sidebar-secondary {
|
||||
flex-shrink: 0;
|
||||
width: 17rem;
|
||||
}
|
||||
|
||||
.sb-announcement__inner {
|
||||
justify-content: center;
|
||||
|
||||
box-sizing: border-box;
|
||||
height: 3rem;
|
||||
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Sidebars, with checkbox-based toggle */
|
||||
.sb-sidebar-primary,
|
||||
.sb-sidebar-secondary {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.sb-sidebar-primary {
|
||||
left: -17rem;
|
||||
transition: left 250ms ease-in-out;
|
||||
}
|
||||
.sb-sidebar-secondary {
|
||||
right: -17rem;
|
||||
transition: right 250ms ease-in-out;
|
||||
}
|
||||
|
||||
.sb-sidebar-toggle {
|
||||
display: none;
|
||||
}
|
||||
.sb-sidebar-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
|
||||
transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease;
|
||||
|
||||
opacity: 0;
|
||||
background-color: rgba(0, 0, 0, 0.54);
|
||||
}
|
||||
|
||||
#sb-sidebar-toggle--primary:checked
|
||||
~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"],
|
||||
#sb-sidebar-toggle--secondary:checked
|
||||
~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
transition: width 0ms ease, height 0ms ease, opacity 250ms ease;
|
||||
}
|
||||
|
||||
#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary {
|
||||
left: 0;
|
||||
}
|
||||
#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* Full-width mode */
|
||||
.drop-secondary-sidebar-for-full-width-content
|
||||
.hide-when-secondary-sidebar-shown {
|
||||
display: none !important;
|
||||
}
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Mobile views */
|
||||
.sb-page-width {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.sb-article-container,
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
padding: 0 1rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (min-width: 32rem) {
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
padding: 0 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Tablet views */
|
||||
@media (min-width: 42rem) {
|
||||
.sb-article-container {
|
||||
width: auto;
|
||||
}
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 42rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 42rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 46rem) {
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 46rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 46rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 50rem) {
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 50rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 50rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Tablet views */
|
||||
@media (min-width: 59rem) {
|
||||
.sb-sidebar-secondary {
|
||||
position: static;
|
||||
}
|
||||
.hide-when-secondary-sidebar-shown {
|
||||
display: none !important;
|
||||
}
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 59rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 42rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 63rem) {
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 63rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 46rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 67rem) {
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 67rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 50rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Desktop views */
|
||||
@media (min-width: 76rem) {
|
||||
.sb-sidebar-primary {
|
||||
position: static;
|
||||
}
|
||||
.hide-when-primary-sidebar-shown {
|
||||
display: none !important;
|
||||
}
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 59rem;
|
||||
}
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 42rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Full desktop views */
|
||||
@media (min-width: 80rem) {
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 46rem;
|
||||
}
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 63rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 84rem) {
|
||||
.sb-article,
|
||||
.match-content-width {
|
||||
width: 50rem;
|
||||
}
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 67rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 88rem) {
|
||||
.sb-footer-content__inner,
|
||||
.drop-secondary-sidebar-for-full-width-content .sb-article,
|
||||
.drop-secondary-sidebar-for-full-width-content .match-content-width {
|
||||
width: 67rem;
|
||||
}
|
||||
.sb-page-width {
|
||||
width: 88rem;
|
||||
}
|
||||
}
|
||||
BIN
_static/sm.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
159
_static/sphinx_highlight.js
Normal file
@@ -0,0 +1,159 @@
|
||||
/* Highlighting utilities for Sphinx HTML documentation. */
|
||||
"use strict";
|
||||
|
||||
const SPHINX_HIGHLIGHT_ENABLED = true;
|
||||
|
||||
/**
|
||||
* highlight a given string on a node by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
const _highlight = (node, addItems, text, className) => {
|
||||
if (node.nodeType === Node.TEXT_NODE) {
|
||||
const val = node.nodeValue;
|
||||
const parent = node.parentNode;
|
||||
const pos = val.toLowerCase().indexOf(text);
|
||||
if (
|
||||
pos >= 0
|
||||
&& !parent.classList.contains(className)
|
||||
&& !parent.classList.contains("nohighlight")
|
||||
) {
|
||||
let span;
|
||||
|
||||
const closestNode = parent.closest("body, svg, foreignObject");
|
||||
const isInSVG = closestNode && closestNode.matches("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.classList.add(className);
|
||||
}
|
||||
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
const rest = document.createTextNode(val.substr(pos + text.length));
|
||||
parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
/* There may be more occurrences of search term in this node. So call this
|
||||
* function recursively on the remaining fragment.
|
||||
*/
|
||||
_highlight(rest, addItems, text, className);
|
||||
|
||||
if (isInSVG) {
|
||||
const rect = document.createElementNS(
|
||||
"http://www.w3.org/2000/svg",
|
||||
"rect",
|
||||
);
|
||||
const bbox = parent.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute("class", className);
|
||||
addItems.push({ parent: parent, target: rect });
|
||||
}
|
||||
}
|
||||
} else if (node.matches && !node.matches("button, select, textarea")) {
|
||||
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
|
||||
}
|
||||
};
|
||||
const _highlightText = (thisNode, text, className) => {
|
||||
let addItems = [];
|
||||
_highlight(thisNode, addItems, text, className);
|
||||
addItems.forEach((obj) =>
|
||||
obj.parent.insertAdjacentElement("beforebegin", obj.target),
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
const SphinxHighlight = {
|
||||
/**
|
||||
* highlight the search words provided in localstorage in the text
|
||||
*/
|
||||
highlightSearchWords: () => {
|
||||
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
|
||||
|
||||
// get and clear terms from localstorage
|
||||
const url = new URL(window.location);
|
||||
const highlight =
|
||||
localStorage.getItem("sphinx_highlight_terms")
|
||||
|| url.searchParams.get("highlight")
|
||||
|| "";
|
||||
localStorage.removeItem("sphinx_highlight_terms");
|
||||
// Update history only if '?highlight' is present; otherwise it
|
||||
// clears text fragments (not set in window.location by the browser)
|
||||
if (url.searchParams.has("highlight")) {
|
||||
url.searchParams.delete("highlight");
|
||||
window.history.replaceState({}, "", url);
|
||||
}
|
||||
|
||||
// get individual terms from highlight string
|
||||
const terms = highlight
|
||||
.toLowerCase()
|
||||
.split(/\s+/)
|
||||
.filter((x) => x);
|
||||
if (terms.length === 0) return; // nothing to do
|
||||
|
||||
// There should never be more than one element matching "div.body"
|
||||
const divBody = document.querySelectorAll("div.body");
|
||||
const body = divBody.length ? divBody[0] : document.querySelector("body");
|
||||
window.setTimeout(() => {
|
||||
terms.forEach((term) => _highlightText(body, term, "highlighted"));
|
||||
}, 10);
|
||||
|
||||
const searchBox = document.getElementById("searchbox");
|
||||
if (searchBox === null) return;
|
||||
searchBox.appendChild(
|
||||
document
|
||||
.createRange()
|
||||
.createContextualFragment(
|
||||
'<p class="highlight-link">'
|
||||
+ '<a href="javascript:SphinxHighlight.hideSearchWords()">'
|
||||
+ _("Hide Search Matches")
|
||||
+ "</a></p>",
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to hide the search marks again
|
||||
*/
|
||||
hideSearchWords: () => {
|
||||
document
|
||||
.querySelectorAll("#searchbox .highlight-link")
|
||||
.forEach((el) => el.remove());
|
||||
document
|
||||
.querySelectorAll("span.highlighted")
|
||||
.forEach((el) => el.classList.remove("highlighted"));
|
||||
localStorage.removeItem("sphinx_highlight_terms");
|
||||
},
|
||||
|
||||
initEscapeListener: () => {
|
||||
// only install a listener if it is really needed
|
||||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
// bail for input elements
|
||||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
|
||||
return;
|
||||
// bail with special keys
|
||||
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
|
||||
return;
|
||||
if (
|
||||
DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
|
||||
&& event.key === "Escape"
|
||||
) {
|
||||
SphinxHighlight.hideSearchWords();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
_ready(() => {
|
||||
/* Do not call highlightSearchWords() when we are on the search page.
|
||||
* It will highlight words from the *previous* search query.
|
||||
*/
|
||||
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
|
||||
SphinxHighlight.initEscapeListener();
|
||||
});
|
||||
2
_static/styles/furo-extensions.css
Normal file
1
_static/styles/furo-extensions.css.map
Normal file
2
_static/styles/furo.css
Normal file
1
_static/styles/furo.css.map
Normal file
BIN
_static/symm.png
Normal file
|
After Width: | Height: | Size: 592 KiB |
BIN
_static/trajectory.png
Normal file
|
After Width: | Height: | Size: 404 KiB |
492
contributing_link.html
Normal file
@@ -0,0 +1,492 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="./">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="RFdiffusion3 Documentation" href="models/rfd3/index.html"><link rel="prev" title="Common Installation Issues" href="installation_faq.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>CONTRIBUTING - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="_sources/contributing_link.rst.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="contributing">
|
||||
<h1>CONTRIBUTING<a class="headerlink" href="#contributing" title="Link to this heading">¶</a></h1>
|
||||
<section id="contributing-to-foundry">
|
||||
<h2>Contributing to foundry<a class="headerlink" href="#contributing-to-foundry" title="Link to this heading">¶</a></h2>
|
||||
<p>This contributor’s guide is a non-exhaustive list of best practices for contributing to the foundry source code, adding a model, and/or contributing to the foundry documentation. These recommendations are a mixture of industry standards and expectations for this specific repository.</p>
|
||||
<section id="table-of-contents">
|
||||
<h3>Table of Contents<a class="headerlink" href="#table-of-contents" title="Link to this heading">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference internal" href="#code-contributions"><span class="xref myst">Code Contributions</span></a></p></li>
|
||||
<li><p><a class="reference internal" href="#adding-a-model"><span class="xref myst">Adding a Model</span></a></p></li>
|
||||
<li><p><a class="reference internal" href="#documentation-contributions"><span class="xref myst">Documentation Contributions</span></a></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="code-contributions">
|
||||
<h3>Code Contributions<a class="headerlink" href="#code-contributions" title="Link to this heading">¶</a></h3>
|
||||
<section id="code-organization">
|
||||
<h4>Code Organization<a class="headerlink" href="#code-organization" title="Link to this heading">¶</a></h4>
|
||||
<p>There is a strict dependency flow of Foundry -> <a class="reference external" href="https://github.com/RosettaCommons/atomworks">AtomWorks</a>. All models within Foundry use AtomWorks for manipulating and processing biomolecular structures, in both training and inference.</p>
|
||||
<p>Here is an overview of how this system is structured:</p>
|
||||
<ul class="simple">
|
||||
<li><p>AtomWorks: I/O, preprocessing structures, data featurization</p></li>
|
||||
<li><p>Foundry: Model architectures, training, inference endpoints</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">models/<model></span></code>: Released models that use the structure provided by Foundry and AtomWorks</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="installing-foundry-in-editable-mode">
|
||||
<h4>Installing Foundry in Editable Mode<a class="headerlink" href="#installing-foundry-in-editable-mode" title="Link to this heading">¶</a></h4>
|
||||
<p>Install both foundry and models in editable mode for development:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span><span class="s1">'.[all,dev]'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This approach allows you to:</p>
|
||||
<ul class="simple">
|
||||
<li><p>Modify foundry shared utilities and see changes immediately</p></li>
|
||||
<li><p>Work on specific models without installing all models</p></li>
|
||||
<li><p>Add new models as independent packages in <code class="docutils literal notranslate"><span class="pre">models/</span></code></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="as-you-code">
|
||||
<h4>As You Code<a class="headerlink" href="#as-you-code" title="Link to this heading">¶</a></h4>
|
||||
<ol class="arabic">
|
||||
<li><p>Reduce cognitive overhead:</p>
|
||||
<ol type="a">
|
||||
<li>Pick meaningful, descriptive variable names.</li>
|
||||
<li>Write docstrings and comments. All docstrings should be written using in the <a href=https://www.sphinx-doc.org/en/master/usage/extensions/example_google.html>Google-format</a>.</li>
|
||||
<li>Follow <a href=https://peps.python.org/pep-0008/>PEP8 (Style Guide for Python Code)</a> whenever possible</li>
|
||||
<li>Follow <a href=https://peps.python.org/pep-0020/>PEP20 (The Zen of Python)</a> whenever possible.</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><p>Write tests. Tests for the Foundry source code can be found in <code class="docutils literal notranslate"><span class="pre">foundry/tests</span></code>, tests for individual models will be in their respective directories.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Running tests is not currently supported, test files may be missing.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
<section id="as-you-commit">
|
||||
<h4>As You Commit<a class="headerlink" href="#as-you-commit" title="Link to this heading">¶</a></h4>
|
||||
<p>Foundry comes with a <code class="docutils literal notranslate"><span class="pre">.pre-commit-config.yaml</span></code> that runs <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">format</span></code> (via <code class="docutils literal notranslate"><span class="pre">ruff</span> <span class="pre">format</span></code>) before each commit, enable it once per clone:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span>pre-commit<span class="w"> </span><span class="c1"># if not already installed</span>
|
||||
pre-commit<span class="w"> </span>install
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Once it is successfully installed, it will automatically format the repo whenever you run <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span></code>, but you can apply it manually via <code class="docutils literal notranslate"><span class="pre">pre-commit</span> <span class="pre">run</span> <span class="pre">--all-files</span></code>.</p>
|
||||
<p>Even with this, there are a few things to keep in mind to make sure your commits are easily reviewable:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Keep commits as “one logical unit.” This means that each commit should be a set of related changes that accomplish one task, fix one bug, or implement one feature. Using an editor like <a class="reference external" href="https://code.visualstudio.com/docs/sourcecontrol/overview">VS Code</a> or using <a class="reference external" href="https://docs.github.com/en/desktop">GitHub Desktop</a> can help you stage related changes together.</p></li>
|
||||
<li><p>Adhere to <a class="reference external" href="https://www.conventionalcommits.org/en/v1.0.0/">semantic commit conventions</a>.</p></li>
|
||||
<li><p>Submit a draft PR so people know you are working on this & can provide advice/feedback early on.</p></li>
|
||||
</ol>
|
||||
</section>
|
||||
<section id="as-you-finalize-a-pr">
|
||||
<h4>As you Finalize a PR<a class="headerlink" href="#as-you-finalize-a-pr" title="Link to this heading">¶</a></h4>
|
||||
<ol class="arabic simple">
|
||||
<li><p>To make a PR merge your branch to production. The maintainers will review your PR.</p></li>
|
||||
<li><p>Keep overall PR under <400 LOC (lines of code) (Rule of thumb: 500 LOC takes about 1h to review).</p></li>
|
||||
</ol>
|
||||
</section>
|
||||
</section>
|
||||
<section id="adding-a-model">
|
||||
<h3>Adding a Model<a class="headerlink" href="#adding-a-model" title="Link to this heading">¶</a></h3>
|
||||
<p>To be able to add new models as independent packages, make sure to install foundry and its models in ‘editable’ mode:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span><span class="s1">'.[all,dev]'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Once you have done this you can follow these steps to incorporate your model into the repository:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Create a <code class="docutils literal notranslate"><span class="pre">models/<model_name></span></code> directory with its own <code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code></p></li>
|
||||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">foundry</span></code> as a dependency</p></li>
|
||||
<li><p>Implement model-specific code in <code class="docutils literal notranslate"><span class="pre">models/<model-name>/src/</span></code></p></li>
|
||||
<li><p>Users can install this new model via <code class="docutils literal notranslate"><span class="pre">uv</span> <span class="pre">pip</span> <span class="pre">install</span> <span class="pre">-e</span> <span class="pre">./models/<model_name></span></code></p></li>
|
||||
</ol>
|
||||
</section>
|
||||
<section id="documentation-contributions">
|
||||
<h3>Documentation Contributions<a class="headerlink" href="#documentation-contributions" title="Link to this heading">¶</a></h3>
|
||||
<p>The external Foundry documentation is built using <a class="reference external" href="https://www.sphinx-doc.org/en/master/#">Sphinx</a> and <a class="reference external" href="https://docs.github.com/en/pages">GitHub Pages</a>.</p>
|
||||
<p>To build the documentation you need to have the dependencies listed in <code class="docutils literal notranslate"><span class="pre">foundry/docs/docs_requirements.txt</span></code> installed, which can be easily done via</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>uv<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>docs/docs_requirements.txt
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>To build the documentation, navigate to the <code class="docutils literal notranslate"><span class="pre">docs</span></code> directory and run:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make<span class="w"> </span>html
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>If you are new to Sphinx, please refer to the <a class="reference external" href="https://www.sphinx-doc.org/en/master/">Sphinx documentation</a> for guidance on writing and formatting documentation. The documentation for Foundry uses MyST_parser so that documentation pages can be written in <a class="reference external" href="https://www.markdownguide.org/">Markdown</a> or <a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html">ReStructured Text</a>.</p>
|
||||
<section id="organization">
|
||||
<h4>Organization<a class="headerlink" href="#organization" title="Link to this heading">¶</a></h4>
|
||||
<p>The <code class="docutils literal notranslate"><span class="pre">docs/source</span></code> directory contains the documentation about the Foundry source code. The <code class="docutils literal notranslate"><span class="pre">index.rst</span></code> file located here is the landing page for the documentation.</p>
|
||||
<p>Each model has its own <code class="docutils literal notranslate"><span class="pre">docs</span></code> folder (<code class="docutils literal notranslate"><span class="pre">foundry/models/<model_name>/docs</span></code>). The <code class="docutils literal notranslate"><span class="pre">foundry/docs/source/models</span></code> directory contains symlinks to these individual docs folders, this is necessary to allow Sphinx to see the model-specific documentation. If you are adding documentation for a new model, you will need to make a similar symlink:</p>
|
||||
<ol class="arabic">
|
||||
<li><p>Make a <code class="docutils literal notranslate"><span class="pre">docs</span></code> directory in <code class="docutils literal notranslate"><span class="pre">foundry/models/<model_name></span></code></p></li>
|
||||
<li><p>From the <code class="docutils literal notranslate"><span class="pre">foundry/docs/source/models</span></code> directory run</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ln<span class="w"> </span>-s<span class="w"> </span>../../../models/<model_name>/docs<span class="w"> </span><model_name>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
<p>Each of the model documentation directories have their own <code class="docutils literal notranslate"><span class="pre">index.md</span></code> file that organizes that model’s documentation.</p>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="models/rfd3/index.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">RFdiffusion3 Documentation</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="installation_faq.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">Common Installation Issues</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer">
|
||||
|
||||
|
||||
<div class="toc-sticky toc-scroll">
|
||||
<div class="toc-title-container">
|
||||
<span class="toc-title">
|
||||
On this page
|
||||
</span>
|
||||
</div>
|
||||
<div class="toc-tree-container">
|
||||
<div class="toc-tree">
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">CONTRIBUTING</a><ul>
|
||||
<li><a class="reference internal" href="#contributing-to-foundry">Contributing to foundry</a><ul>
|
||||
<li><a class="reference internal" href="#table-of-contents">Table of Contents</a></li>
|
||||
<li><a class="reference internal" href="#code-contributions">Code Contributions</a><ul>
|
||||
<li><a class="reference internal" href="#code-organization">Code Organization</a></li>
|
||||
<li><a class="reference internal" href="#installing-foundry-in-editable-mode">Installing Foundry in Editable Mode</a></li>
|
||||
<li><a class="reference internal" href="#as-you-code">As You Code</a></li>
|
||||
<li><a class="reference internal" href="#as-you-commit">As You Commit</a></li>
|
||||
<li><a class="reference internal" href="#as-you-finalize-a-pr">As you Finalize a PR</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#adding-a-model">Adding a Model</a></li>
|
||||
<li><a class="reference internal" href="#documentation-contributions">Documentation Contributions</a><ul>
|
||||
<li><a class="reference internal" href="#organization">Organization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
313
genindex.html
Normal file
@@ -0,0 +1,313 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="./">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="#"><link rel="search" title="Search" href="search.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 --><title>Index - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
|
||||
<section class="genindex-section">
|
||||
<h1 id="index">Index</h1>
|
||||
<div class="genindex-jumpbox"></div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
345
index.html
Normal file
@@ -0,0 +1,345 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="./">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="LICENSE" href="license_link.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="#"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="#">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="_sources/index.rst.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="welcome-to-the-official-documentation-for-foundry">
|
||||
<h1>Welcome to the official documentation for Foundry<a class="headerlink" href="#welcome-to-the-official-documentation-for-foundry" title="Link to this heading">¶</a></h1>
|
||||
<p><a class="reference external" href="https://github.com/RosettaCommons/foundry/tree/production">Foundry</a> is a home for
|
||||
many of the machine learning models produced by <a class="reference external" href="https://rosettacommons.org/about/labs/">Rosetta Commons member labs</a>.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="license_link.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">LICENSE</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
348
installation_faq.html
Normal file
@@ -0,0 +1,348 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="./">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="CONTRIBUTING" href="contributing_link.html"><link rel="prev" title="LICENSE" href="license_link.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>Common Installation Issues - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="_sources/installation_faq.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="common-installation-issues">
|
||||
<h1>Common Installation Issues<a class="headerlink" href="#common-installation-issues" title="Link to this heading">¶</a></h1>
|
||||
<details>
|
||||
<summary><strong>Installation on NVIDIA GeForce RTX 5060 - Blackwell architecture</strong></summary>
|
||||
Taken from [Issue #105](https://github.com/RosettaCommons/foundry/issues/105):
|
||||
If, when installing any of the models included in foundry, you get an error related to CUDA (see linked issue for examples) try installing a version of torch, torchvision and torchaudio that matches your python and CUDA distribution. For CUDA, choose the next lowest available library if there is not a version that matches your exact CUDA build.
|
||||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>For example:
|
||||
```
|
||||
pip install torch==2.9.1+cu128 torchvision==0.24.1+cu128 torchaudio==2.9.1+cu128 --extra-index-url https://download.pytorch.org/whl/cu128
|
||||
```
|
||||
This is for Python 2.9.1 and CUDA 12.8.
|
||||
</pre></div>
|
||||
</div>
|
||||
</details></section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="contributing_link.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">CONTRIBUTING</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="license_link.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">LICENSE</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
361
license_link.html
Normal file
@@ -0,0 +1,361 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="./">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="Common Installation Issues" href="installation_faq.html"><link rel="prev" title="Welcome to the official documentation for Foundry" href="index.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>LICENSE - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="models/rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="models/rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="models/mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="_sources/license_link.rst.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="license">
|
||||
<h1>LICENSE<a class="headerlink" href="#license" title="Link to this heading">¶</a></h1>
|
||||
<p>BSD 3-Clause License</p>
|
||||
<p>Copyright (c) 2025, Institute for Protein Design, University of Washington</p>
|
||||
<p>Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:</p>
|
||||
<ul class="simple">
|
||||
<li><p>Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.</p></li>
|
||||
<li><p>Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.</p></li>
|
||||
<li><p>Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.</p></li>
|
||||
</ul>
|
||||
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="installation_faq.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">Common Installation Issues</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="index.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">Home</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
348
models/mpnn/index.html
Normal file
@@ -0,0 +1,348 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="prev" title="RF3 Documentation" href="../rf3/index.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>MPNN Documentation - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="../rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../_sources/models/mpnn/index.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="mpnn-documentation">
|
||||
<h1>MPNN Documentation<a class="headerlink" href="#mpnn-documentation" title="Link to this heading">¶</a></h1>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The documentation for the MPNN model is currently incomplete.
|
||||
If you would like to contribute, feel free to open a PR.</p>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The MPNN model is still being benchmarked for comparison to the
|
||||
original ProteinMPNN, LigandMPNN, and SolubleMPNN implementations.</p>
|
||||
</div>
|
||||
<p>The MPNN model in <a class="reference external" href="https://github.com/RosettaCommons/foundry">foundry</a>
|
||||
has all of the functionality of <a class="reference external" href="https://www.science.org/doi/10.1126/science.add2187">ProteinMPNN</a>,
|
||||
<a class="reference external" href="https://www.nature.com/articles/s41592-025-02626-1">LigandMPNN</a>,
|
||||
and <a class="reference external" href="https://www.nature.com/articles/s41586-024-07601-y">SolubleMPNN</a>,
|
||||
but with the backend support of <a class="reference external" href="https://github.com/RosettaCommons/atomworks">atomworks</a> and
|
||||
<a class="reference external" href="https://github.com/RosettaCommons/foundry">foundry</a>. More MPNN
|
||||
models and weights will be added to foundry in the future.</p>
|
||||
<p>Are we missing a model you would like to work with? Create a PR with the
|
||||
necessary files and/or code changes or open an issue requesting it.</p>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
|
||||
<a class="prev-page" href="../rf3/index.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RF3 Documentation</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
348
models/rf3/index.html
Normal file
@@ -0,0 +1,348 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="MPNN Documentation" href="../mpnn/index.html"><link rel="prev" title="RFdiffusion3 — Enzyme design examples" href="../rfd3/examples/enzyme_design.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RF3 Documentation - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 has-children"><a class="reference internal" href="../rfd3/index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rfd3/examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../_sources/models/rf3/index.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rf3-documentation">
|
||||
<h1>RF3 Documentation<a class="headerlink" href="#rf3-documentation" title="Link to this heading">¶</a></h1>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The documentation for RF3 is currently incomplete. If you would like
|
||||
to contribute, feel free to open a PR!</p>
|
||||
</div>
|
||||
<p>RF3 is an all-atom biomolecular structure prediction network
|
||||
competitive with leading open-source models. By including additional features at train-time – implicit chirality representations and atom-level geometric conditioning – we improve performance on tasks such as prediction of chiral ligands and fixed-backbone or fixed-conformer docking.</p>
|
||||
<p><strong>Preprint</strong>: <a class="reference external" href="https://doi.org/10.1101/2025.08.14.670328">Accelerating Biomolecular Modeling with AtomWorks and RF3</a></p>
|
||||
<hr class="docutils" />
|
||||
<p>For more information on how to run RF3, see the <a class="reference external" href="https://github.com/RosettaCommons/foundry/blob/production/models/rf3/README.md">README</a>.</p>
|
||||
<p>You can install RF3, and the other models included in <a class="reference external" href="https://github.com/RosettaCommons/foundry">Foundry</a> by following the instructions in <a class="reference external" href="https://github.com/RosettaCommons/foundry/blob/production/README.md">Foundry’s README</a>.</p>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="../mpnn/index.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">MPNN Documentation</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="../rfd3/examples/enzyme_design.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RFdiffusion3 — Enzyme design examples</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
387
models/rfd3/designability_vs_diversity.html
Normal file
@@ -0,0 +1,387 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Protein-Protein Interface Design in RFdiffusion3" href="tutorials/ppi_design_tutorial.html"><link rel="prev" title="RFdiffusion3 — Input Specification & Command-line arguments" href="input.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>Designability vs. Diversity - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../_sources/models/rfd3/designability_vs_diversity.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="designability-vs-diversity">
|
||||
<h1>Designability vs. Diversity<a class="headerlink" href="#designability-vs-diversity" title="Link to this heading">¶</a></h1>
|
||||
<p>When using RFdiffusion3 there is a balance between designability and diversity of generated structures. Increasing the diversity of the designs will lead to a greater number of novel folds, however, there will also be a larger portion of structures that have low confidence scores when refolded.</p>
|
||||
<p>Whether you are struggling to produce designable structures or you are looking to increase the diversity of the folds you see, here are a few settings to try changing:</p>
|
||||
<ul>
|
||||
<li><p><strong>Low temperature sampling:</strong></p>
|
||||
<p>One can increase <code class="docutils literal notranslate"><span class="pre">inference_sampler.step_scale</span></code> and decrease <code class="docutils literal notranslate"><span class="pre">inference_sampler.gamma_0</span></code> to decrease the sampling space that RFdiffusion3 has access to, similar to what lowering the temperature does in physics-based design methods. These settings directly change how the RFdiffusion3 inference engine works, so these options are specified in the CLI, and are not options you specify in your input JSON or YAML file.</p>
|
||||
<p>Here are what these settings do:</p>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">inference_sampler.step_scale</span></code>: Changing this value (default 1.5) changes the diffusion step size, or how much you go towards the most probable result. Increasing this setting will increase the designability of the output structures, as these are more probable, but will also decrease the diversity of the produced structures.</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">inference_sampler.gamma_0</span></code>: Changing this value (default 0.6) will change how much noise is added at each step in the inference trajectory. Decreasing this setting will increase the designability of the output structures as the reduced randomness will lead RFdiffusion3 to higher-probability structures. Increase this quantity to increase the diversity of designed structures.</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> setting:</strong></p>
|
||||
<p>The <code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> setting is a constraint on the designs RFdiffusion3 produces, which makes it a setting provided in a JSON/YAML file. If <code class="docutils literal notranslate"><span class="pre">True</span></code> it biases the model away from forming structures with many regions without a defined secondary structure. This will slightly decrease the diversity of structures that RFdiffusion3 produces while increasing the designability.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Here are a few plots showing the impacts of these settings in protein-protein interface design tasks:</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>For the purposes of the plots below:</p>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">Low</span> <span class="pre">temperature</span></code> means a <code class="docutils literal notranslate"><span class="pre">step_scale</span></code> of 3 and a <code class="docutils literal notranslate"><span class="pre">gamma_0</span></code> of 0.2.</p></li>
|
||||
<li><p>Pass rates are refolding pass rates, the number of backbones that pass after four attempts at designing the sequence using MPNN-based methods.</p></li>
|
||||
<li><p>‘Cluster’ refers to <code class="docutils literal notranslate"><span class="pre">foldseek-based</span> <span class="pre">clusters</span> <span class="pre"><https://www.nature.com/articles/s41587-023-01773-0></span></code>_, and the cluster pass rate is the number of clusters represented among the passing designs divided by the total number of designed backbones.</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<figure class="align-default" id="id1">
|
||||
<a class="reference internal image-reference" href="../../_images/400bb_rfd3_inference_settings_designability.png"><img alt="../../_images/400bb_rfd3_inference_settings_designability.png" src="../../_images/400bb_rfd3_inference_settings_designability.png" style="width: 800px;" />
|
||||
</a>
|
||||
<figcaption>
|
||||
<p><span class="caption-text">Impacts of using low temperature settings (inf) and the <code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> constraint on the outputs of RFdiffusion3.</span><a class="headerlink" href="#id1" title="Link to this image">¶</a></p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</br>
|
||||
<hr class="docutils" />
|
||||
<figure class="align-default" id="id2">
|
||||
<a class="reference internal image-reference" href="../../_images/400bb_rfd3_inference_settings_diversity.png"><img alt="../../_images/400bb_rfd3_inference_settings_diversity.png" src="../../_images/400bb_rfd3_inference_settings_diversity.png" style="width: 800px;" />
|
||||
</a>
|
||||
<figcaption>
|
||||
<p><span class="caption-text">Diversity of folds in structures designed by RFD3 when using low temperature sampling and the <code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> setting.</span><a class="headerlink" href="#id2" title="Link to this image">¶</a></p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</br>
|
||||
<hr class="docutils" />
|
||||
<figure class="align-default" id="id3">
|
||||
<a class="reference internal image-reference" href="../../_images/400bb_rfd3_inference_settings_secondary_structure.png"><img alt="../../_images/400bb_rfd3_inference_settings_secondary_structure.png" src="../../_images/400bb_rfd3_inference_settings_secondary_structure.png" style="width: 800px;" />
|
||||
</a>
|
||||
<figcaption>
|
||||
<p><span class="caption-text">Compares the amount of alpha helices and beta sheets in structures designed by RFD3 when the low temperature sampling and <code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> settings are used. The removal of the <code class="docutils literal notranslate"><span class="pre">is_non_loopy</span></code> setting results in a large reduction in α-helices and a small increase in the number of ß-sheets.</span><a class="headerlink" href="#id3" title="Link to this image">¶</a></p>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="tutorials/ppi_design_tutorial.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">Protein-Protein Interface Design in RFdiffusion3</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="input.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RFdiffusion3 — Input Specification & Command-line arguments</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
378
models/rfd3/examples/enzyme_design.html
Normal file
@@ -0,0 +1,378 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html"><link rel="search" title="Search" href="../../../search.html"><link rel="next" title="RF3 Documentation" href="../../rf3/index.html"><link rel="prev" title="Overview of Symmetry in RFD3" href="symmetry.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RFdiffusion3 — Enzyme design examples - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../../_sources/models/rfd3/examples/enzyme_design.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rfdiffusion3-enzyme-design-examples">
|
||||
<h1>RFdiffusion3 — Enzyme design examples<a class="headerlink" href="#rfdiffusion3-enzyme-design-examples" title="Link to this heading">¶</a></h1>
|
||||
<p>RFD3 contains several knobs and dials for enzyme design.</p>
|
||||
<ul class="simple">
|
||||
<li><p>input: the pdb or cif file that contains the input theozyme</p></li>
|
||||
<li><p>ligand: any ligand res names that are to be included (comma separated)</p></li>
|
||||
<li><p>unindex: which residues should have their index be inferred by the model instead of prespecified</p></li>
|
||||
<li><p>length: the length range of the generated protein</p></li>
|
||||
<li><p>select_fixed_atoms: dictionary that indicated which atoms should be fixed (can use ALL, BKBN, or TIP for all atoms in the residue, backbone atoms only and tip atoms only)</p></li>
|
||||
</ul>
|
||||
<p>If you would like to run the examples below, <code class="docutils literal notranslate"><span class="pre">enzyme_design.json</span></code>, located in this directory, contains the example code. You can run it via:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rfd3</span> <span class="n">design</span> <span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">enzyme</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">enzyme_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or, if you have cloned the repo rather than using <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">foundry</span><span class="o">/</span><span class="n">models</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">run_inference</span><span class="o">.</span><span class="n">py</span> \
|
||||
<span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">enzyme</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">enzyme_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>An example script for running these examples in batches is also provided in <code class="docutils literal notranslate"><span class="pre">run_inf_tutorial.sh</span></code>.</p>
|
||||
<p>The input files for the different examples are provided in <code class="docutils literal notranslate"><span class="pre">foundry/models/rfd3/docs/input_pdbs</span></code>.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"M0255_1mg5_unfixed"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/M0255_1mg5.pdb"</span><span class="p">,</span><span class="w"> </span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NAI,ACT"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unindex"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A108,A139,A152,A156"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"180-200"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"A108"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ND2,CG"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A139"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OG,CB,CA"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A152"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OH,CZ"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A156"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NZ,CE,CD"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ACT"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OXT"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"NAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="../../rf3/index.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">RF3 Documentation</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="symmetry.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">Overview of Symmetry in RFD3</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
468
models/rfd3/examples/na_binder_design.html
Normal file
@@ -0,0 +1,468 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html"><link rel="search" title="Search" href="../../../search.html"><link rel="next" title="RFdiffusion3 — Small molecule binder design examples" href="sm_binder_design.html"><link rel="prev" title="Intermediate Enzyme Design Tutorial" href="../tutorials/intermediate_enzyme_design_tutorial.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RFdiffusion3 — Nucleic acid binder design examples - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../../_sources/models/rfd3/examples/na_binder_design.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rfdiffusion3-nucleic-acid-binder-design-examples">
|
||||
<h1>RFdiffusion3 — Nucleic acid binder design examples<a class="headerlink" href="#rfdiffusion3-nucleic-acid-binder-design-examples" title="Link to this heading">¶</a></h1>
|
||||
<p>If you would like to run the examples below, <code class="docutils literal notranslate"><span class="pre">na_binder_design.json</span></code>, located in this directory, contains the example code. You can run it via:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rfd3</span> <span class="n">design</span> <span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">na_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">na_binder_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or, if you have cloned the repo rather than using <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">foundry</span><span class="o">/</span><span class="n">models</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">run_inference</span><span class="o">.</span><span class="n">py</span> \
|
||||
<span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">na_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">na_binder_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>An example script for running these examples in batches is also provided in <code class="docutils literal notranslate"><span class="pre">run_inf_tutorial.sh</span></code>.</p>
|
||||
<p>The input files for the different examples are already provided in <code class="docutils literal notranslate"><span class="pre">input_pdbs</span></code>, but if you would like
|
||||
to see how you could download these directly from the PDB, see <code class="docutils literal notranslate"><span class="pre">get_na_input.sh</span></code>.</p>
|
||||
<section id="simple-dsdna-binder-example">
|
||||
<h2>1. Simple dsDNA binder example<a class="headerlink" href="#simple-dsdna-binder-example" title="Link to this heading">¶</a></h2>
|
||||
<p>The DNA chains are A and B and specified as such in the contig. RFD3 will treat these as fixed in space. the contig specifies to generate a protein chain of length between 120-130. An ori token is specified.
|
||||
The length attribute should be the sum of all polymer lengths. in this case (120 to 130) + 10 + 10 = (140 to 150)</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"dsDNA_basic"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/1bna.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A1-10,/0,B15-24,/0,120-130"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"140-150"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ori_token"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="mi">24</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">10</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="simple-ssdna-binder-example-g-quadruplex">
|
||||
<h2>2. Simple ssDNA binder example G-quadruplex<a class="headerlink" href="#simple-ssdna-binder-example-g-quadruplex" title="Link to this heading">¶</a></h2>
|
||||
<p>Similar to the previous example, but done for a PDB containing one DNA strand (A):</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"ssDNA_basic"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/5o4d.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A1-23,/0,120-130"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"143-153"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ori_token"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="mi">-5</span><span class="p">,</span><span class="mi">-10</span><span class="p">,</span><span class="mi">8</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="ssdna-example-based-on-dna-sequence-diffused-from-dsdna-pdb-as-input">
|
||||
<h2>3. ssDNA example based on DNA sequence diffused from dsDNA pdb as input<a class="headerlink" href="#ssdna-example-based-on-dna-sequence-diffused-from-dsdna-pdb-as-input" title="Link to this heading">¶</a></h2>
|
||||
<p>Similar to the previous example but the input PDB has a dsDNA. One of the chains (A) is selected. However, the single stranded DNA conformation will be sampled by RFD3 because we have specified to not have any fixed DNA atoms by using <code class="docutils literal notranslate"><span class="pre">"select_fixed_atoms":</span> <span class="pre">{"A1-10":""}</span></code>. ori_token is not meaningful to specify when there are no fixed atoms.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"ssDNA_diffused_from_dsDNA_pdb"</span><span class="p">:{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/1bna.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A1-10,/0,120-130"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"130-140"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"A1-10"</span><span class="p">:</span><span class="s2">""</span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="simple-rna-binder-example">
|
||||
<h2>4. Simple RNA binder example<a class="headerlink" href="#simple-rna-binder-example" title="Link to this heading">¶</a></h2>
|
||||
<p>Example on RNA. Similar to the ssDNA example, example 2.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"RNA_basic"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/1q75.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A1-15,/0,120-130"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"135-145"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ori_token"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="mi">15</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">-4</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="complex-example-based-on-a-protein-dsdna-input-pdb-with-parts-of-protein-and-dna-partially-fixed-indexed-and-unindexed-with-hbond-conditioning">
|
||||
<h2>5. Complex example based on a protein-dsDNA input pdb with parts of protein and dna partially fixed (indexed and unindexed), with Hbond conditioning<a class="headerlink" href="#complex-example-based-on-a-protein-dsdna-input-pdb-with-parts-of-protein-and-dna-partially-fixed-indexed-and-unindexed-with-hbond-conditioning" title="Link to this heading">¶</a></h2>
|
||||
<p>This is a complex example which has a dsDNA specified in the contig: <code class="docutils literal notranslate"><span class="pre">C5-18</span></code> and <code class="docutils literal notranslate"><span class="pre">D24-37</span></code>. However, it also specifies an indexed protein motif component (<code class="docutils literal notranslate"><span class="pre">A146-154</span></code>) and diffuses the two flanks of the protein indexed region in the same chain. The diffused protein region has an unindexed motif specified via <code class="docutils literal notranslate"><span class="pre">"unindex":</span> <span class="pre">"/0,/0,B251-B255".</span></code> (<em>Note: the chain breaks applied are analogous to the contig string</em>). Parts of the DNA have been specified as fixed or to be sampled by RFD3 (<code class="docutils literal notranslate"><span class="pre">select_fixed_atoms</span></code>). Additionally hydrogen bond conditioning is applied to some backbone and base atoms of a few DNA bases.</p>
|
||||
<p>To run this without warnings, you will need to install <a class="reference external" href="https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/">hbplus</a> to enable hydrogen bond metrics computation. This is discussed at the end of the RFD3 README, but the instructions are reproduced here for convenience:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Download hbplus from here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/download.html (available for free)</p></li>
|
||||
<li><p>Follow the installation instruction here: https://www.ebi.ac.uk/thornton-srv/software/HBPLUS/install.html</p></li>
|
||||
<li><p>Update <code class="docutils literal notranslate"><span class="pre">HBPLUS_PATH</span></code> in <code class="docutils literal notranslate"><span class="pre">foundry/.env</span></code> file with the path to your <code class="docutils literal notranslate"><span class="pre">hbplus</span></code> executable.</p></li>
|
||||
</ol>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"dsDNA_complex"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/2r5z.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C5-18,/0,D24-37,/0,40-50,A146-154,80-90"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"157-177"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unindex"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/0,/0,B251-255"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"C9-14"</span><span class="p">:</span><span class="s2">"ALL"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"D28-33"</span><span class="p">:</span><span class="s2">"ALL"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"C5-8,C15-18"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"D24-27,D34-37"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"ori_token"</span><span class="p">:[</span><span class="mi">25</span><span class="p">,</span><span class="mi">35</span><span class="p">,</span><span class="mi">20</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"select_hbond_acceptor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"C16"</span><span class="p">:</span><span class="s2">"N7,O6"</span><span class="p">,</span><span class="w"> </span><span class="nt">"D31-32"</span><span class="p">:</span><span class="s2">"N7"</span><span class="p">,</span><span class="w"> </span><span class="nt">"D28-30"</span><span class="p">:</span><span class="s2">"OP1,OP2,O3',O5'"</span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"select_hbond_donor"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"D31-32"</span><span class="p">:</span><span class="s2">"N6"</span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="sm_binder_design.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">RFdiffusion3 — Small molecule binder design examples</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="../tutorials/intermediate_enzyme_design_tutorial.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">Intermediate Enzyme Design Tutorial</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer">
|
||||
|
||||
|
||||
<div class="toc-sticky toc-scroll">
|
||||
<div class="toc-title-container">
|
||||
<span class="toc-title">
|
||||
On this page
|
||||
</span>
|
||||
</div>
|
||||
<div class="toc-tree-container">
|
||||
<div class="toc-tree">
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">RFdiffusion3 — Nucleic acid binder design examples</a><ul>
|
||||
<li><a class="reference internal" href="#simple-dsdna-binder-example">1. Simple dsDNA binder example</a></li>
|
||||
<li><a class="reference internal" href="#simple-ssdna-binder-example-g-quadruplex">2. Simple ssDNA binder example G-quadruplex</a></li>
|
||||
<li><a class="reference internal" href="#ssdna-example-based-on-dna-sequence-diffused-from-dsdna-pdb-as-input">3. ssDNA example based on DNA sequence diffused from dsDNA pdb as input</a></li>
|
||||
<li><a class="reference internal" href="#simple-rna-binder-example">4. Simple RNA binder example</a></li>
|
||||
<li><a class="reference internal" href="#complex-example-based-on-a-protein-dsdna-input-pdb-with-parts-of-protein-and-dna-partially-fixed-indexed-and-unindexed-with-hbond-conditioning">5. Complex example based on a protein-dsDNA input pdb with parts of protein and dna partially fixed (indexed and unindexed), with Hbond conditioning</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
398
models/rfd3/examples/protein_binder_design.html
Normal file
@@ -0,0 +1,398 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html"><link rel="search" title="Search" href="../../../search.html"><link rel="next" title="Overview of Symmetry in RFD3" href="symmetry.html"><link rel="prev" title="RFdiffusion3 — Small molecule binder design examples" href="sm_binder_design.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RFdiffusion3 — Protein binder design examples - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../../_sources/models/rfd3/examples/protein_binder_design.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rfdiffusion3-protein-binder-design-examples">
|
||||
<h1>RFdiffusion3 — Protein binder design examples<a class="headerlink" href="#rfdiffusion3-protein-binder-design-examples" title="Link to this heading">¶</a></h1>
|
||||
<p>RFD3 is a highly proficient protein binder designer. The following arguments have to be specified to RFD3 to make protein binders.</p>
|
||||
<ul class="simple">
|
||||
<li><p>input: the PDB or CIF file of the structure you want to bind</p></li>
|
||||
<li><p>contig: the length range of the binder to make (indicated as a range) and which residues from the target file to consider.</p></li>
|
||||
<li><p>infer_ori_strategy: how RFD3 decides to place the origin of the generated protein binder with respect to the target. We find that using the “hotspots” strategy works best</p></li>
|
||||
<li><p>select_hotspots: which atoms on the target should be bound (dictionary of residues on the target and atoms in those residues)</p></li>
|
||||
</ul>
|
||||
<p>In addition, we strongly recommend the following setting, which encourages the model to make more structured designs:</p>
|
||||
<ul class="simple">
|
||||
<li><p>is_non_loopy: true</p></li>
|
||||
</ul>
|
||||
<p>We also recommend the following command-line overrides: <code class="docutils literal notranslate"><span class="pre">inference_sampler.step_scale=3</span></code> (defaults to 1.5) and
|
||||
<code class="docutils literal notranslate"><span class="pre">inference_sampler.gamma_0=0.2</span></code> (defaults to 0.6). Increasing the <code class="docutils literal notranslate"><span class="pre">step_scale</span></code> and decreasing <code class="docutils literal notranslate"><span class="pre">gamma_0</span></code> yields lower-temperature
|
||||
designs, which greatly increases PPI designability.</p>
|
||||
<p>If you would like to run the examples below, <code class="docutils literal notranslate"><span class="pre">protein_binder_design.json</span></code>, located in this directory, contains the example code. You can run it via:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rfd3</span> <span class="n">design</span> <span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">protein_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">protein_binder_design</span><span class="o">.</span><span class="n">json</span> \
|
||||
<span class="n">inference_sampler</span><span class="o">.</span><span class="n">step_scale</span><span class="o">=</span><span class="mi">3</span> \
|
||||
<span class="n">inference_sampler</span><span class="o">.</span><span class="n">gamma_0</span><span class="o">=</span><span class="mf">0.2</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or, if you have cloned the repo rather than using <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">foundry</span><span class="o">/</span><span class="n">models</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">run_inference</span><span class="o">.</span><span class="n">py</span> \
|
||||
<span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">protein_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">protein_binder_design</span><span class="o">.</span><span class="n">json</span> \
|
||||
<span class="n">inference_sampler</span><span class="o">.</span><span class="n">step_scale</span><span class="o">=</span><span class="mi">3</span> \
|
||||
<span class="n">inference_sampler</span><span class="o">.</span><span class="n">gamma_0</span><span class="o">=</span><span class="mf">0.2</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>An example script for running these examples in batches is also provided in <code class="docutils literal notranslate"><span class="pre">run_inf_tutorial.sh</span></code>.</p>
|
||||
<p>The input files for the different examples are provided in <code class="docutils literal notranslate"><span class="pre">foundry/models/rfd3/docs/input_pdbs</span></code>.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"insulinr"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"dialect"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"infer_ori_strategy"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hotspots"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/4zxb_cropped.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"40-120,/0,E6-155"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_hotspots"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"E64"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CD2,CZ"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"E88"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CG,CZ"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"E96"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CD1,CZ"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"pdl1"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"dialect"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"infer_ori_strategy"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hotspots"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/5o45_cropped.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"50-120,/0,A17-131"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_hotspots"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"A56"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CG,OH"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A115"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CG,SD"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A123"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CD2,OH"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="symmetry.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">Overview of Symmetry in RFD3</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="sm_binder_design.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RFdiffusion3 — Small molecule binder design examples</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer no-toc">
|
||||
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
412
models/rfd3/examples/sm_binder_design.html
Normal file
@@ -0,0 +1,412 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html"><link rel="search" title="Search" href="../../../search.html"><link rel="next" title="RFdiffusion3 — Protein binder design examples" href="protein_binder_design.html"><link rel="prev" title="RFdiffusion3 — Nucleic acid binder design examples" href="na_binder_design.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RFdiffusion3 — Small molecule binder design examples - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../../_sources/models/rfd3/examples/sm_binder_design.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rfdiffusion3-small-molecule-binder-design-examples">
|
||||
<h1>RFdiffusion3 — Small molecule binder design examples<a class="headerlink" href="#rfdiffusion3-small-molecule-binder-design-examples" title="Link to this heading">¶</a></h1>
|
||||
<p>If you would like to run the examples below, <code class="docutils literal notranslate"><span class="pre">sm_binder_design.json</span></code>, located in this directory, contains the example code. You can run it via:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rfd3</span> <span class="n">design</span> <span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">sm_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">sm_binder_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or, if you have cloned the repo rather than using <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">foundry</span><span class="o">/</span><span class="n">models</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">rfd3</span><span class="o">/</span><span class="n">run_inference</span><span class="o">.</span><span class="n">py</span> \
|
||||
<span class="n">out_dir</span><span class="o">=</span><span class="n">inference_outputs</span><span class="o">/</span><span class="n">sm_binder</span><span class="o">/</span><span class="mi">0</span> \
|
||||
<span class="n">ckpt_path</span><span class="o">=/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">rfd3_latest</span><span class="o">.</span><span class="n">ckpt</span> \
|
||||
<span class="n">inputs</span><span class="o">=./</span><span class="n">sm_binder_design</span><span class="o">.</span><span class="n">json</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>An example script for running these examples in batches is also provided in <code class="docutils literal notranslate"><span class="pre">run_inf_tutorial.sh</span></code>.</p>
|
||||
<p>The input files for the different examples are provided in <code class="docutils literal notranslate"><span class="pre">foundry/models/rfd3/docs/input_pdbs</span></code>.</p>
|
||||
<section id="small-molecule-binder-examples-against-the-ligand-iai-with-different-rasa-conditioning">
|
||||
<h2>Small molecule binder examples against the ligand IAI with different RASA conditioning<a class="headerlink" href="#small-molecule-binder-examples-against-the-ligand-iai-with-different-rasa-conditioning" title="Link to this heading">¶</a></h2>
|
||||
<p>RFD3 is also capable of designing proteins that bind small molecules. Here are some inputs that could be useful:</p>
|
||||
<ul class="simple">
|
||||
<li><p>input: a PDB or CIF file that contains the small molecule</p></li>
|
||||
<li><p>ligand: the 3 letter code in the file that is the ligand to be bound</p></li>
|
||||
<li><p>length: how long the generated protein should be (can be a range)</p></li>
|
||||
<li><p>select_fixed_atoms: selecting which atoms in the ligand should be fixed to the coordinates in the PDB</p></li>
|
||||
<li><p>select_exposed: selecting which atoms in the ligand should not be buried in the designed protein (exposed to solvent)</p></li>
|
||||
<li><p>select_buried: selecting which atoms in the ligand should be buried in the designed protein</p></li>
|
||||
</ul>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"buried"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/IAI.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"180-180"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"IAI"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"IAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"select_buried"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"IAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C22,C23,C25,C24,C21,C20,N13,C15,C16,N14,C19,C11,N12,C18,C17,N9,O8,C4,C1,N3,C10,N5,C7,C2,C6,N27,O26,C33,C29,C32,O31,C30,N28"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"partial"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/IAI.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"IAI"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="s2">"180-180"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"IAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"select_exposed"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"IAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C22,C23,C25,C24,C21,C20,N13,C15,C16,N14,C19,C11,N12,C18,C17"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"select_buried"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"IAI"</span><span class="p">:</span><span class="w"> </span><span class="s2">"N9,O8,C4,C1,N3,C10,N5,C7,C2,C6,N27,O26,C33,C29,C32,O31,C30,N28"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="protein_binder_design.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">RFdiffusion3 — Protein binder design examples</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="na_binder_design.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RFdiffusion3 — Nucleic acid binder design examples</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer">
|
||||
|
||||
|
||||
<div class="toc-sticky toc-scroll">
|
||||
<div class="toc-title-container">
|
||||
<span class="toc-title">
|
||||
On this page
|
||||
</span>
|
||||
</div>
|
||||
<div class="toc-tree-container">
|
||||
<div class="toc-tree">
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">RFdiffusion3 — Small molecule binder design examples</a><ul>
|
||||
<li><a class="reference internal" href="#small-molecule-binder-examples-against-the-ligand-iai-with-different-rasa-conditioning">Small molecule binder examples against the ligand IAI with different RASA conditioning</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
505
models/rfd3/examples/symmetry.html
Normal file
@@ -0,0 +1,505 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html"><link rel="search" title="Search" href="../../../search.html"><link rel="next" title="RFdiffusion3 — Enzyme design examples" href="enzyme_design.html"><link rel="prev" title="RFdiffusion3 — Protein binder design examples" href="protein_binder_design.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>Overview of Symmetry in RFD3 - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../index.html">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../../_sources/models/rfd3/examples/symmetry.md.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="overview-of-symmetry-in-rfd3">
|
||||
<h1>Overview of Symmetry in RFD3<a class="headerlink" href="#overview-of-symmetry-in-rfd3" title="Link to this heading">¶</a></h1>
|
||||
<section id="specifying-symmetry-in-your-input-specifications">
|
||||
<h2>Specifying symmetry in your input specifications<a class="headerlink" href="#specifying-symmetry-in-your-input-specifications" title="Link to this heading">¶</a></h2>
|
||||
<p>Symmetry configurations are specified within the input JSON or YAML file, nested under its own specific configuration. The symmetry specific config has the following:</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C3"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_unsym_motif"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Y1-11,Z16-25"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_symmetric_motif"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">symmetry</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="s">"C3"</span>
|
||||
<span class="w"> </span><span class="nt">is_unsym_motif</span><span class="p">:</span><span class="w"> </span><span class="s">"Y1-11,Z16-25"</span>
|
||||
<span class="w"> </span><span class="nt">is_symmetric_motif</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">id</span></code> : Symmetry group ID; e.g. “C3” for a cyclic protein with 3 subunits, “D2” for a dihedral protein with 2 subunits. Note that only C and D symmetry types are supported currently.</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">is_unsym_motif</span></code> : Comma separated string list of contig/ligand names that should NOT be symmetrized (e.g. DNA strands). If not provided, all motifs are assumed to be symmetrized. See <a class="reference internal" href="#designs-with-motifs"><span class="xref myst">Designs with motifs</span></a> section for details.</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">is_symmetric_motif</span></code>: Boolean value whether the input motif is symmetric. Currently only symmetric input motifs are supported, therefore, <code class="docutils literal notranslate"><span class="pre">true</span></code> by default.</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="example-command">
|
||||
<h2>Example command<a class="headerlink" href="#example-command" title="Link to this heading">¶</a></h2>
|
||||
<p>You can run the following example command:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>./src/modelhub/inference.py inference_sampler.kind=symmetry out_dir=logs/inference_outs/sym_demo/0 ckpt_path=$cur_ckpt inputs=./projects/aa_design/tests/test_data/sym_tests.json diffusion_batch_size=1
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">inference_sampler.kind</span></code>: Set <code class="docutils literal notranslate"><span class="pre">symmetry</span></code> to tern on symmetry mode.</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">diffusion_batch_size</span></code> : <code class="docutils literal notranslate"><span class="pre">8</span></code> by default, but it is recommended to set it to <code class="docutils literal notranslate"><span class="pre">1</span></code> for symmetry due to memory limitations.</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">low_memory_mode</span></code> : Additionally you can set this to <code class="docutils literal notranslate"><span class="pre">True</span></code> if you have memory constraints (e.g. “CUDA error: out of memory”). However, this will significantly slow the inference.</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="unconditional-multimer-design">
|
||||
<h2>Unconditional multimer design<a class="headerlink" href="#unconditional-multimer-design" title="Link to this heading">¶</a></h2>
|
||||
<p>As mentioned above, we currently only support C and D symmetry types.
|
||||
The following provides a general overview of the types of symmetry and examples of how to run:</p>
|
||||
<section id="cyclic">
|
||||
<h3>Cyclic<a class="headerlink" href="#cyclic" title="Link to this heading">¶</a></h3>
|
||||
<p><strong>Defaults:</strong></p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"uncond_C5"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C5"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="dihedrals">
|
||||
<h3>Dihedrals<a class="headerlink" href="#dihedrals" title="Link to this heading">¶</a></h3>
|
||||
<p><strong>Defaults:</strong></p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"uncond_D4"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"D4"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="designs-with-motifs">
|
||||
<h2>Designs with motifs<a class="headerlink" href="#designs-with-motifs" title="Link to this heading">¶</a></h2>
|
||||
<p>As mentioned above, symmetry sampling currently only supports pre-symmetrized motifs around the origin. Therefore, <code class="docutils literal notranslate"><span class="pre">is_symmetric_motif</span></code> is set to <code class="docutils literal notranslate"><span class="pre">true</span></code> by default.
|
||||
The following are example JSON specifications for different symmetric motif scaffolding. You can also find the corresponding input PDBs in <code class="docutils literal notranslate"><span class="pre">docs/input_pdbs/symmetry_examples</span></code>. Although we only give JSON examples, you can also use YAML for everything shown below.</p>
|
||||
<p>The tasks that these examples describe are as follows:</p>
|
||||
<ul class="simple">
|
||||
<li><p>unindexed_C2_1j79, unindexed_C2_1e3v:
|
||||
Unindexed motif scaffolding for symmetric enzyme active sites. The motifs are located within a subunit; no inter-subunit motifs.</p></li>
|
||||
<li><p>indexed_unsym_C2_1bfr:
|
||||
Indexed motif scaffolding for a single active site held by a symmetric enzyme. <code class="docutils literal notranslate"><span class="pre">is_unsym_motif</span></code> specifies the ligand that shouldn’t be symmetrized.</p></li>
|
||||
<li><p>uncond_unsym_C3_6t8h:
|
||||
Unconditional generation of C3 proteins around a DNA helix. The DNA chains are the motifs. <code class="docutils literal notranslate"><span class="pre">is_unsym_motif</span></code> specifies the DNA strands that shouldn’t be symmetrized.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"unindexed_C2_1j79"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C2"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_symmetric_motif"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/symmetry_examples/1j79_C2.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ORO,ZN"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unindex"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A250"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">130</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"A250"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OD1,CG"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unindexed_C2_1e3v"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C2"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_symmetric_motif"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/symmetry_examples/1e3v_C2.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DXC"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unindex"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A16,A40,A100,A103"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">80</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"A16"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OH,CZ,CE1,CE2"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A40"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OD2,CG"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A100"</span><span class="p">:</span><span class="w"> </span><span class="s2">"N,CA,C,CB"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"A103"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OD2,CG"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"indexed_unsym_C2_1bfr"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C2"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_symmetric_motif"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_unsym_motif"</span><span class="p">:</span><span class="w"> </span><span class="s2">"HEM"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/symmetry_examples/1bfr_C2.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ligand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"HEM"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"51,M52,80"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"select_fixed_atoms"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"M52"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CG,SD,CE"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unsym_C3_6t8h"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"symmetry"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C3"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_symmetric_motif"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_unsym_motif"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Y1-11,Z16-25"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"input"</span><span class="p">:</span><span class="w"> </span><span class="s2">"../input_pdbs/symmetry_examples/6t8h_C3.pdb"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"contig"</span><span class="p">:</span><span class="w"> </span><span class="s2">"150-150,/0,Y1-11,/0,Z16-25"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_non_loopy"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="enzyme_design.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">RFdiffusion3 — Enzyme design examples</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="protein_binder_design.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">RFdiffusion3 — Protein binder design examples</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer">
|
||||
|
||||
|
||||
<div class="toc-sticky toc-scroll">
|
||||
<div class="toc-title-container">
|
||||
<span class="toc-title">
|
||||
On this page
|
||||
</span>
|
||||
</div>
|
||||
<div class="toc-tree-container">
|
||||
<div class="toc-tree">
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">Overview of Symmetry in RFD3</a><ul>
|
||||
<li><a class="reference internal" href="#specifying-symmetry-in-your-input-specifications">Specifying symmetry in your input specifications</a></li>
|
||||
<li><a class="reference internal" href="#example-command">Example command</a></li>
|
||||
<li><a class="reference internal" href="#unconditional-multimer-design">Unconditional multimer design</a><ul>
|
||||
<li><a class="reference internal" href="#cyclic">Cyclic</a></li>
|
||||
<li><a class="reference internal" href="#dihedrals">Dihedrals</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#designs-with-motifs">Designs with motifs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
414
models/rfd3/index.html
Normal file
@@ -0,0 +1,414 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en" data-content_root="../../">
|
||||
<head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="next" title="Installation of RFdiffusion3 on Unix Systems" href="tutorials/RFdiffusion3_installation_tutorial.html"><link rel="prev" title="CONTRIBUTING" href="../../contributing_link.html">
|
||||
|
||||
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
|
||||
<title>RFdiffusion3 Documentation - foundry 0.1.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=acfd86a5" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=7bdb33bb" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
--color-code-background: #f2f2f2;
|
||||
--color-code-foreground: #1e1e1e;
|
||||
--color-brand-primary: #F68A33;
|
||||
--color-brand-content: #37939B;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-background-hover: #DCE8E8ff;
|
||||
--color-announcement-background: #F68A33dd;
|
||||
--color-announcement-text: #070707;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media not print {
|
||||
body[data-theme="dark"] {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-theme="light"]) {
|
||||
--color-code-background: #202020;
|
||||
--color-code-foreground: #d0d0d0;
|
||||
--color-brand-primary: #37939B;
|
||||
--color-brand-content: #F68A33;
|
||||
--font-stack: Open Sans, sans-serif;
|
||||
--font-stack--headings: Open Sans, sans-serif;
|
||||
--color-brand-visited: #37939B;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
|
||||
</script>
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="svg-toc" viewBox="0 0 24 24">
|
||||
<title>Contents</title>
|
||||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
|
||||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-menu" viewBox="0 0 24 24">
|
||||
<title>Menu</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
|
||||
<line x1="3" y1="12" x2="21" y2="12"></line>
|
||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||
<line x1="3" y1="18" x2="21" y2="18"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
||||
<title>Expand</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun" viewBox="0 0 24 24">
|
||||
<title>Light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon" viewBox="0 0 24 24">
|
||||
<title>Dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in light mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
|
||||
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
|
||||
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
|
||||
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
|
||||
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
|
||||
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
|
||||
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
|
||||
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
|
||||
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
|
||||
<circle cx="14.5" cy="9.55" r="3.6"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
|
||||
<title>Auto light/dark, in dark mode</title>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
|
||||
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
|
||||
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
|
||||
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
|
||||
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
|
||||
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
|
||||
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
|
||||
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
|
||||
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-pencil" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
|
||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
||||
<path d="M13.5 6.5l4 4" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
<symbol id="svg-eye" viewBox="0 0 24 24">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path
|
||||
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
|
||||
<path d="M20 21l2 -2l-2 -2" />
|
||||
<path d="M17 17l-2 2l2 2" />
|
||||
</svg>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
|
||||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
|
||||
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
||||
<label class="overlay toc-overlay" for="__toc"></label>
|
||||
|
||||
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
<div class="page">
|
||||
<header class="mobile-header">
|
||||
<div class="header-left">
|
||||
<label class="nav-overlay-icon" for="__navigation">
|
||||
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">foundry 0.1.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-header-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
</header>
|
||||
<aside class="sidebar-drawer">
|
||||
<div class="sidebar-container">
|
||||
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
<span class="sidebar-brand-text">foundry 0.1.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
||||
<input type="hidden" name="check_keywords" value="yes">
|
||||
<input type="hidden" name="area" value="default">
|
||||
</form>
|
||||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
|
||||
<p class="caption" role="heading"><span class="caption-text">General</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../license_link.html">LICENSE</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation_faq.html">Common Installation Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing_link.html">CONTRIBUTING</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Models</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current has-children current-page"><a class="current reference internal" href="#">RFdiffusion3 Documentation</a><input aria-label="Toggle navigation of RFdiffusion3 Documentation" checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../rf3/index.html">RF3 Documentation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../mpnn/index.html">MPNN Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<div class="main">
|
||||
<div class="content">
|
||||
<div class="article-container">
|
||||
<a href="#" class="back-to-top muted-link">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
|
||||
</svg>
|
||||
<span>Back to top</span>
|
||||
</a>
|
||||
<div class="content-icon-container">
|
||||
<div class="view-this-page">
|
||||
<a class="muted-link" href="../../_sources/models/rfd3/index.rst.txt" title="View this page">
|
||||
<svg><use href="#svg-eye"></use></svg>
|
||||
<span class="visually-hidden">View this page</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="theme-toggle-container theme-toggle-content">
|
||||
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
|
||||
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
|
||||
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
|
||||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
|
||||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toc-overlay-icon toc-content-icon" for="__toc">
|
||||
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
|
||||
</label>
|
||||
</div>
|
||||
<article role="main" id="furo-main-content">
|
||||
<section id="rfdiffusion3-documentation">
|
||||
<h1>RFdiffusion3 Documentation<a class="headerlink" href="#rfdiffusion3-documentation" title="Link to this heading">¶</a></h1>
|
||||
<p>RFdiffusion3 is a powerful protein design tool that operates on the atomic level to
|
||||
study ligand-protein interactions, create nucleic acid-protein interfaces, and
|
||||
design <em>de novo</em> enzymes. It is designed to be highly flexible and
|
||||
user-friendly, making it suitable for a wide range of applications in computational biology and biochemistry.</p>
|
||||
<section id="general">
|
||||
<h2>General<a class="headerlink" href="#general" title="Link to this heading">¶</a></h2>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorials/RFdiffusion3_installation_tutorial.html">Installation of RFdiffusion3 on Unix Systems</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro_inference_calculations.html">Inference Calculation Basics</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="input.html">RFdiffusion3 — Input Specification & Command-line arguments</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="designability_vs_diversity.html">Designability vs. Diversity</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
<section id="introductory-tutorials">
|
||||
<h2>Introductory Tutorials<a class="headerlink" href="#introductory-tutorials" title="Link to this heading">¶</a></h2>
|
||||
<p>These introductory tutorials are designed to help users get familiar
|
||||
with the capabilities of RFD3 for specific design tasks.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorials/ppi_design_tutorial.html">Protein-Protein Interface Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorials/enzyme_design_tutorial.html">Enzyme Design in RFdiffusion3</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorials/na_binder_tutorial.html">Nuclei Acid Binder Design in RFdiffusion3</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
<section id="intermediate-tutorials">
|
||||
<h2>Intermediate Tutorials<a class="headerlink" href="#intermediate-tutorials" title="Link to this heading">¶</a></h2>
|
||||
<p>These intermediate tutorials cover more complex topics related
|
||||
to specific design tasks in RFD3. If this is your first time using
|
||||
RFD3, we recommend starting with the introductory tutorials before moving on to these.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorials/intermediate_enzyme_design_tutorial.html">Intermediate Enzyme Design Tutorial</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
<section id="examples">
|
||||
<h2>Examples<a class="headerlink" href="#examples" title="Link to this heading">¶</a></h2>
|
||||
<p>The following examples demonstrate how to use RFD3 for various design
|
||||
tasks. However, they do not go into detail about how to set up RFD3
|
||||
or how the different constraints work. If you are new to RFD3, we
|
||||
recommend starting with the introductory tutorials before moving
|
||||
on to these examples.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/na_binder_design.html">RFdiffusion3 — Nucleic acid binder design examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/sm_binder_design.html">RFdiffusion3 — Small molecule binder design examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/protein_binder_design.html">RFdiffusion3 — Protein binder design examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/symmetry.html">Overview of Symmetry in RFD3</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/enzyme_design.html">RFdiffusion3 — Enzyme design examples</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="related-pages">
|
||||
<a class="next-page" href="tutorials/RFdiffusion3_installation_tutorial.html">
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Next</span>
|
||||
</div>
|
||||
<div class="title">Installation of RFdiffusion3 on Unix Systems</div>
|
||||
</div>
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
</a>
|
||||
<a class="prev-page" href="../../contributing_link.html">
|
||||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
|
||||
<div class="page-info">
|
||||
<div class="context">
|
||||
<span>Previous</span>
|
||||
</div>
|
||||
|
||||
<div class="title">CONTRIBUTING</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="bottom-of-page">
|
||||
<div class="left-details">
|
||||
<div class="copyright">
|
||||
Copyright © 2025, Institute for Protein Design, University of Washington
|
||||
</div>
|
||||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
||||
|
||||
<a href="https://github.com/pradyunsg/furo">Furo</a>
|
||||
|
||||
</div>
|
||||
<div class="right-details">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
<aside class="toc-drawer">
|
||||
|
||||
|
||||
<div class="toc-sticky toc-scroll">
|
||||
<div class="toc-title-container">
|
||||
<span class="toc-title">
|
||||
On this page
|
||||
</span>
|
||||
</div>
|
||||
<div class="toc-tree-container">
|
||||
<div class="toc-tree">
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">RFdiffusion3 Documentation</a><ul>
|
||||
<li><a class="reference internal" href="#general">General</a></li>
|
||||
<li><a class="reference internal" href="#introductory-tutorials">Introductory Tutorials</a></li>
|
||||
<li><a class="reference internal" href="#intermediate-tutorials">Intermediate Tutorials</a></li>
|
||||
<li><a class="reference internal" href="#examples">Examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
</div><script src="../../_static/documentation_options.js?v=ca7ad2ea"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
|
||||
<script src="../../_static/clipboard.min.js?v=a7894cd8"></script>
|
||||
<script src="../../_static/copybutton.js?v=f281be69"></script>
|
||||
<script async="async" defer="defer" src="https://scripts.simpleanalyticscdn.com/latest.js"></script>
|
||||
</body>
|
||||
</html>
|
||||