diff --git a/models/rfd3/docs/demo.json b/models/rfd3/docs/demo.json index fd716bb..c6c42af 100644 --- a/models/rfd3/docs/demo.json +++ b/models/rfd3/docs/demo.json @@ -29,6 +29,7 @@ "input": "./input_pdbs/1bna.pdb", "contig": "A1-10,/0,B15-24,/0,120-130", "length": "140-150", - "ori_token": [24,20,10] + "ori_token": [24,20,10], + "is_non_loopy": true } } diff --git a/models/rfd3/docs/na_binder_design.json b/models/rfd3/docs/na_binder_design.json index f9a0b9e..a04e68b 100644 --- a/models/rfd3/docs/na_binder_design.json +++ b/models/rfd3/docs/na_binder_design.json @@ -3,25 +3,29 @@ "input": "./input_pdbs/1bna.pdb", "contig": "A1-10,/0,B15-24,/0,120-130", "length": "140-150", - "ori_token": [24,20,10] + "ori_token": [24,20,10], + "is_non_loopy": true }, "ssDNA_basic": { "input": "./input_pdbs/5o4d.pdb", "contig": "A1-23,/0,120-130", "length": "143-153", - "ori_token": [-5,-10,8] + "ori_token": [-5,-10,8], + "is_non_loopy": true }, "ssDNA_diffused_from_dsDNA_pdb":{ "input": "./input_pdbs/1bna.pdb", "contig": "A1-10,/0,120-130", "length": "130-140", - "select_fixed_atoms": {"A1-10":""} + "select_fixed_atoms": {"A1-10":""}, + "is_non_loopy": true }, "RNA_basic": { "input": "./input_pdbs/1q75.pdb", "contig": "A1-15,/0,120-130", "length": "135-145", - "ori_token": [15,2,-4] + "ori_token": [15,2,-4], + "is_non_loopy": true }, "dsDNA_complex": { "input": "./input_pdbs/2r5z.pdb", @@ -36,7 +40,8 @@ }, "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"} + "select_hbond_donor": {"D31-32":"N6"}, + "is_non_loopy": true } } diff --git a/models/rfd3/docs/na_binder_design.md b/models/rfd3/docs/na_binder_design.md index 8969316..d367ae7 100644 --- a/models/rfd3/docs/na_binder_design.md +++ b/models/rfd3/docs/na_binder_design.md @@ -30,7 +30,8 @@ The length attribute should be the sum of all polymer lengths. in this case (120 "input": "./input_pdbs/1bna.pdb", "contig": "A1-10,/0,B15-24,/0,120-130", "length": "140-150", - "ori_token": [24,20,10] + "ori_token": [24,20,10], + "is_non_loopy": true } } ``` @@ -45,7 +46,8 @@ Similar to the previous example, but done for a PDB containing one DNA strand (A "input": "./input_pdbs/5o4d.pdb", "contig": "A1-23,/0,120-130", "length": "143-153", - "ori_token": [-5,-10,8] + "ori_token": [-5,-10,8], + "is_non_loopy": true } } ``` @@ -59,7 +61,8 @@ Similar to the previous example but the input PDB has a dsDNA. One of the chains "input": "./input_pdbs/1bna.pdb", "contig": "A1-10,/0,120-130", "length": "130-140", - "select_fixed_atoms": {"A1-10":""} + "select_fixed_atoms": {"A1-10":""}, + "is_non_loopy": true } } ``` @@ -74,7 +77,8 @@ Example on RNA. Similar to the ssDNA example, example 2. "input": "./input_pdbs/1q75.pdb", "contig": "A1-15,/0,120-130", "length": "135-145", - "ori_token": [15,2,-4] + "ori_token": [15,2,-4], + "is_non_loopy": true } } ``` @@ -104,7 +108,8 @@ To run this without warnings, you will need to install [hbplus](https://www.ebi. }, "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"} + "select_hbond_donor": {"D31-32":"N6"}, + "is_non_loopy": true } } diff --git a/models/rfd3/docs/protein_binder_design.json b/models/rfd3/docs/protein_binder_design.json index 65ddadb..be50614 100644 --- a/models/rfd3/docs/protein_binder_design.json +++ b/models/rfd3/docs/protein_binder_design.json @@ -8,7 +8,8 @@ "E64": "CD2,CZ", "E88": "CG,CZ", "E96": "CD1,CZ" - } + }, + "is_non_loopy": true }, "pdl1": { "dialect": 2, @@ -19,6 +20,7 @@ "A56": "CG,OH", "A115": "CG,SD", "A123": "CD2,OH" - } + }, + "is_non_loopy": true } } \ No newline at end of file diff --git a/models/rfd3/docs/protein_binder_design.md b/models/rfd3/docs/protein_binder_design.md index b639057..9960e11 100644 --- a/models/rfd3/docs/protein_binder_design.md +++ b/models/rfd3/docs/protein_binder_design.md @@ -5,6 +5,13 @@ RFD3 is a highly proficient protein binder designer. The following arguments hav - 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 + +Some useful command-line overrides to experiment with include `inference_sampler.step_scale` (defaults to 1.5) and +`inference_sampler.gamma_0` (defaults to 0.6). Increasing the `step_scale` and decreasing `gamma_0` yields lower-temperature +designs, which tends to increase designability and decrease diversity. + 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 \ @@ -35,7 +42,8 @@ The input files for the different examples are provided in `foundry/models/rfd3/ "E64": "CD2,CZ", "E88": "CG,CZ", "E96": "CD1,CZ", - } + }, + "is_non_loopy": true }, "pdl1": { "dialect": 2, @@ -46,7 +54,8 @@ The input files for the different examples are provided in `foundry/models/rfd3/ "A56": "CG,OH", "A115": "CG,SD", "A123": "CD2,OH", - } + }, + "is_non_loopy": true } } ```