| |
|
|
| |
| |
|
|
| from copy import deepcopy |
|
|
| from biotite.database.rcsb import fetch |
| from biotite.structure import AtomArray |
|
|
| from language import ( |
| ConstantSequenceSegment, |
| FixedLengthSequenceSegment, |
| MaximizePLDDT, |
| MaximizePTM, |
| MaximizeSurfaceExposure, |
| MinimizeCRmsd, |
| MinimizeDRmsd, |
| MinimizeSurfaceHydrophobics, |
| ProgramNode, |
| SymmetryRing, |
| get_atomarray_in_residue_range, |
| pdb_file_to_atomarray, |
| sequence_from_atomarray, |
| ) |
|
|
|
|
| def symmetric_binding_il10(num_binding_sites: int = 3) -> ProgramNode: |
| binding_site_atoms: AtomArray = pdb_file_to_atomarray(fetch("1y6k", format="pdb")) |
| binding_site_atoms = get_atomarray_in_residue_range( |
| binding_site_atoms, start=31, end=40 |
| ) |
| binding_site_sequence: str = sequence_from_atomarray(binding_site_atoms) |
|
|
| leader_amino_acid_sequence = FixedLengthSequenceSegment(45) |
| binding_site_sequence = ConstantSequenceSegment(binding_site_sequence) |
| follower_amino_acid_sequence = FixedLengthSequenceSegment(45) |
|
|
| def _binder_protomer_program() -> ProgramNode: |
| return ProgramNode( |
| children=[ |
| ProgramNode(sequence_segment=leader_amino_acid_sequence), |
| ProgramNode( |
| sequence_segment=binding_site_sequence, |
| energy_function_terms=[ |
| MaximizeSurfaceExposure(), |
| MinimizeCRmsd(template=binding_site_atoms), |
| MinimizeDRmsd(template=binding_site_atoms), |
| ], |
| energy_function_weights=[1.0, 10.0, 10.0], |
| ), |
| ProgramNode(sequence_segment=follower_amino_acid_sequence), |
| ] |
| ) |
|
|
| return ProgramNode( |
| energy_function_terms=[ |
| MaximizePTM(), |
| MaximizePLDDT(), |
| SymmetryRing(), |
| MinimizeSurfaceHydrophobics(), |
| ], |
| children=[_binder_protomer_program() for _ in range(num_binding_sites)], |
| ) |
|
|