pose = pyrosetta.toolbox.pose_from_rcsb('1ubq') rts = pose.residue_type_set_for_pose() lig = pyrosetta.rosetta.core.conformation.ResidueFactory.create_residue(rts.name_map('CA')) pose.append_residue_by_jump(lig, pose.num_jump() + 1) calcium_index = pose.total_residue() calcium = pose.residue(pose.total_residue()) assert calcium.name3() == ' CA' pdb_info = pose.pdb_info() pdb_info.chain(calcium_index, 'X') pdb_info.number(calcium_index, 1) pdb_info.pose2pdb(calcium_index) print('plonked', calcium.xyz(1)) copyxyz = pyrosetta.rosetta.numeric.xyzVector_double_t(pose.residue(1).xyz(1)) sf = pyrosetta.rosetta.protocols.ligand_docking.StartFrom() sf.add_coords(copyxyz) sf.chain('X') #sf.use_nbr(True) sf.apply(pose) print('placed - preslide', calcium.xyz(1)) scorefxn = pyrosetta.get_fa_scorefxn() scorefxn(pose) print('placed - scored - preslide', calcium.xyz(1)) st = pyrosetta.rosetta.protocols.ligand_docking.SlideTogether('A_X') st.apply(pose) print('applied - slide', calcium.xyz(1)) print('expected', copyxyz) sf.apply(pose) st.apply(pose) for i in range(3): sf.apply(pose) st.apply(pose) print(f'from+slide iteration # {i}', calcium.xyz(1)) for i in range(3): sf.apply(pose) #st.apply(pose) print(f'from iteration # {i}', calcium.xyz(1))