> seq , score , RMSD , Recovery
+ , pLDDT
+ +
+within 5 of resid 94
All residues that have >1 atom closer than 5 Å to any atom of residue 94
+ - name CA and within 5 of resid 94
All residues that have CA atom closer than 5 Å to any atom of residue 94
+ - resid 94 96 119
Residues 94, 94 and 119
+ - within 5 of resname ZN
All residues with any atom <5 Å of zinc ion
+ - chain A and within 5 of chain B
All residues of chain A that are part of the interface with chain B
+ - protein and within 5 of nucleic
All residues that bind to DNA (if present in structure)
+ - not (chain A and within 5 of chain B)
only modify residues that are in the interface with the fixed chain, not further away
+ - chain A or (chain B and sasa < 20)
Keep chain A and all core residues fixeds
+ - pLDDT >70
Redesign all residues with low pLDDT
+
+ Note that sasa
and pLDDT
selectors modify default VMD behavior. SASA is calculated using moleculekit and written to the mass attribute. Selections based on mass do not work.
+ pLDDT is an alias for beta, it only works correctly with structures that contain the appropriate values in the beta column of the PDB file. """
+ )
+ atomsel = gr.Textbox(
+ placeholder="Specify atom selection ", label="Fixed positions"
+ )
+
+ btn = gr.Button("Run")
+ label = gr.Textbox(label="Label", visible=False)
+
+ samples = [["Monomer design", "6MRR", "A", "", False, 2, 0.1, ""]]
+
+ if is_local:
+ samples.extend(
+ [
+ ["Homomer design", "1O91", "A,B,C", "", True, 2, 0.1, ""],
+ [
+ "Redesign of Homomer to Heteromer",
+ "3HTN",
+ "A,B",
+ "C",
+ False,
+ 2,
+ 0.1,
+ "",
+ ],
+ [
+ "Redesign of MID1 scaffold keeping binding site fixed",
+ "3V1C",
+ "A,B",
+ "",
+ False,
+ 2,
+ 0.1,
+ "within 5 of resname ZN",
+ ],
+ [
+ "Redesign of DNA binding protein",
+ "3JRD",
+ "A,B",
+ "",
+ False,
+ 2,
+ 0.1,
+ "within 8 of nucleic",
+ ],
+ [
+ "Surface Redesign of miniprotein",
+ "7JZM",
+ "A,B",
+ "",
+ False,
+ 2,
+ 0.1,
+ "chain B or (chain A and sasa < 20)",
+ ],
+ ]
+ )
+ examples = gr.Dataset(
+ components=[
+ label,
+ inp,
+ designed_chain,
+ fixed_chain,
+ homomer,
+ num_seqs,
+ sampling_temp,
+ atomsel,
+ ],
+ samples=samples,
+ )
+
+ gr.Markdown("# Output")
+
+ with gr.Tabs():
+ with gr.TabItem("Designed sequences"):
+ chosen_seq = gr.Dropdown(
+ choices=[],
+ label="Select a sequence for validation",
+ )
+ mol = gr.HTML()
+ out = gr.Textbox(label="Fasta Output")
+
+ with gr.TabItem("Amino acid probabilities"):
+ plot = gr.Plot()
+ all_log_probs = gr.File(visible=False)
+ with gr.TabItem("T adjusted probabilities"):
+ gr.Markdown("Sampling temperature adjusted amino acid probabilties")
+ plot_tadjusted = gr.Plot()
+ all_probs = gr.File(visible=False)
+
+ tempFile = gr.Variable()
+ selectedResidues = gr.Variable()
+ seq_dict = gr.Variable()
+ btn.click(
+ fn=update,
+ inputs=[
+ inp,
+ file,
+ designed_chain,
+ fixed_chain,
+ homomer,
+ num_seqs,
+ sampling_temp,
+ model_name,
+ backbone_noise,
+ atomsel,
+ ],
+ outputs=[
+ out,
+ plot,
+ plot_tadjusted,
+ all_log_probs,
+ all_probs,
+ tempFile,
+ chosen_seq,
+ selectedResidues,
+ seq_dict,
+ mol,
+ ],
+ )
+ chosen_seq.change(
+ updateseq,
+ inputs=[chosen_seq, seq_dict, tempFile, selectedResidues],
+ outputs=mol,
+ )
+ examples.click(fn=set_examples, inputs=examples, outputs=examples.components)
+ gr.Markdown(
+ """Citation: **Robust deep learning based protein sequence design using ProteinMPNN**