Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FloppyTail_publication.cc
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file protocols/floppy_tail/FloppyTail_publication.cc
11 /// @brief FloppyTail extra functions from original publication - this calculates some statistics used for the first published use of the code (Kleiger G, Saha A, Lewis S, Kuhlman B, Deshaies RJ. Rapid E2-E3 assembly and disassembly enable processive ubiquitylation of cullin-RING ubiquitin ligase substrates. Cell. 2009 Nov 25;139(5):957-68. PubMed PMID: 19945379.)
12 /// @author Steven Lewis smlewi@gmail.com
13 
14 // Unit Headers
16 
17 // Project Headers
19 
20 #include <core/pose/Pose.hh>
21 #include <core/pose/PDBInfo.hh>
22 
24 
25 //JD headers
27 //#include <protocols/jd2/JobOutputter.hh>
28 #include <protocols/jd2/Job.hh>
29 
30 namespace protocols {
31 namespace floppy_tail {
32 
33 ///@details This function is specific to the original system for which this code was written
35 
36  //score main pose
37  core::Real const full_score((*score_fxn)(pose));
38 
39  //constants for hacking up pose
40  core::Size const E2_chain(pose.conformation().num_chains()); //E2 is last chain
41  core::Size const E2_start(pose.conformation().chain_begin(E2_chain));
42 
43  //create and score E3_RING portion
44  core::pose::Pose E3_RING(pose);
45  E3_RING.conformation().delete_residue_range_slow(E2_start, E3_RING.total_residue());
46  core::Real const E3_RING_score((*score_fxn)(E3_RING));
47 
48  //create and score E2 portion
49  core::pose::Pose E2 = pose.split_by_chain(E2_chain);
50  core::Real const E2_score((*score_fxn)(E2));
51 
52  //print Job
54  protocols::jd2::JobOP job_me( JobDistributor::get_instance()->current_job() );
55  //debugging - check these pdbs
56  //JobDistributor::get_instance()->job_outputter()->other_pose( job_me, E2, "E2");
57  //JobDistributor::get_instance()->job_outputter()->other_pose( job_me, E3_RING, "E3_RING");
58 
59  //print Binding_Energy
60  core::Real const BE(full_score - E3_RING_score - E2_score);
61  job_me->add_string("Binding_Energy = Complex - E2 alone - E3/RING alone");
62  job_me->add_string_real_pair("Binding energy", BE);
63  //print crosslink distance
64  //magic numbers: crosslink experiment tested these residues
65  bool const NEDD8(E2_chain == 4);
66  core::Size const cl_base(pose.pdb_info()->pdb2pose('A', (NEDD8 ? 1676: 679))); //K1676??
67  core::Size const cl_tail(pose.pdb_info()->pdb2pose('C', 223));
68 
69  core::Real const cl_dist(pose.residue(cl_base).atom("CA").xyz().distance( pose.residue(cl_tail).atom("CA").xyz() ));
70  job_me->add_string("Crosslink = distance between atom CA on residues (chain A, K679/K1676; chain C, 223)");
71  job_me->add_string_real_pair("crosslink distance", cl_dist);
72 
73  //std::cout << full_score << " " << E3_RING_score << " " << E2_score << std::endl;
74 
75  return;
76 }
77 
78 } //floppy_tail
79 } //protocols