Spaces:
Runtime error
Runtime error
File size: 1,286 Bytes
753e275 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# pyright: reportMissingImports=false
import pyrosetta
from pyrosetta.rosetta.protocols.analysis import InterfaceAnalyzerMover
pyrosetta.init(' '.join([
'-mute', 'all',
'-use_input_sc',
'-ignore_unrecognized_res',
'-ignore_zero_occupancy', 'false',
'-load_PDB_components', 'false',
'-relax:default_repeats', '2',
'-no_fconfig',
]))
from tools.eval.base import EvalTask
def pyrosetta_interface_energy(pdb_path, interface):
pose = pyrosetta.pose_from_pdb(pdb_path)
mover = InterfaceAnalyzerMover(interface)
mover.set_pack_separated(True)
mover.apply(pose)
return pose.scores['dG_separated']
def eval_interface_energy(task: EvalTask):
model_gen = task.get_gen_biopython_model()
antigen_chains = set()
for chain in model_gen:
if chain.id not in task.ab_chains:
antigen_chains.add(chain.id)
antigen_chains = ''.join(list(antigen_chains))
antibody_chains = ''.join(task.ab_chains)
interface = f"{antibody_chains}_{antigen_chains}"
dG_gen = pyrosetta_interface_energy(task.in_path, interface)
dG_ref = pyrosetta_interface_energy(task.ref_path, interface)
task.scores.update({
'dG_gen': dG_gen,
'dG_ref': dG_ref,
'ddG': dG_gen - dG_ref
})
return task
|