Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
interface_vector_calculate.hh
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 core/pack/task/operation/util/interface_vector_calculate.hh
11 /// @brief calculates an interface definition based on a short distance
12 /// @author Ben Stranges (stranges@unc.edu)
13 
14 #ifndef INCLUDED_core_pack_task_operation_util_interface_vector_calculate_hh
15 #define INCLUDED_core_pack_task_operation_util_interface_vector_calculate_hh
16 
17 
18 #include <core/pose/Pose.fwd.hh>
19 //#include <core/conformation/Residue.fwd.hh>
20 #include <core/types.hh>
21 //#include <numeric/xyzVector.fwd.hh>
22 //#include <numeric/HomogeneousTransform.hh>
23 #include <set>
24 
25 #include <utility/vector1.hh>
26 
27 namespace core{
28 namespace pack{
29 namespace task{
30 namespace operation{
31 namespace util{
32 
33 ///@details Calculates the residues at an interface between two protein chains or jump.
34 /// The calculation is done in the following manner. First the point graph
35 /// is used to find all residues within some big cutoff of residues on the other chain.
36 /// For these residues near the interface, two metrics are used to decide if they are actually
37 /// possible interface residues. The first metric is to itterate through all the side chain
38 /// atoms in the residue of interest and check to see if their distance is less than the nearby
39 /// atom cutoff, if so then they are an interface residue. If a residue does not pass that
40 /// check, then two vectors are drawn, a CA-CB vector and a vector from CB to a CB atom on the
41 /// neighboring chain. The dot product between these two vectors is then found and if the angle
42 /// between them is less than some cutoff then they are classified as interface.
43 
44 ///@details minimal chain number definition
45 utility::vector1_bool
46 calc_interface_vector( core::pose::Pose const & pose, core::Size const chain1_number, core::Size const chain2_number );
47 
48 ///@details full runner that takes all of the inputs for chains
49 utility::vector1_bool
51  core::pose::Pose const & pose,
52  core::Size const chain1_number, core::Size const chain2_number,
53  core::Real const CB_dist_cutoff, core::Real const nearby_atom_cutoff,
54  core::Real const vector_angle_cutoff, core::Real const vector_dist_cutoff );
55 
56 ///@details full runner that takes the jump
57 utility::vector1_bool
59  core::pose::Pose const & pose,
60  int const interface_jump,
61  core::Real const CB_dist_cutoff,
62  core::Real const nearby_atom_cutoff,
63  core::Real const vector_angle_cutoff,
64  core::Real const vector_dist_cutoff );
65 
66 ///@details minimal jump runner
67 utility::vector1_bool
68 calc_interface_vector( core::pose::Pose const & pose, int const interface_jump );
69 
70 ///@brief calculate the same thing but don't require an interface
71 utility::vector1_bool
73  core::pose::Pose const & pose,
74  std::set< core::Size > & part1res,
75  std::set< core::Size > & part2res,
76  core::Real const CB_dist_cutoff,
77  core::Real const nearby_atom_cutoff,
78  core::Real const vector_angle_cutoff,
79  core::Real const vector_dist_cutoff );
80 
81 }//end namespace util
82 }//operation
83 }//task
84 }//pack
85 }//end namespace core
86 
87 #endif //INCLUDED_protocols_toolbox_interface_vector_calculate_HH