Spaces:
Runtime error
Runtime error
# 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 | |