33 #include <basic/Tracer.hh>
35 #include <utility/vector1.hh>
40 static basic::Tracer
tr(
"protocols.filters.PackerNeighborGraphFilter");
43 namespace simple_filters {
60 if( (res1_in_region1 && res2_in_region2) || (res2_in_region1 && res1_in_region2 ) ){
68 : task_( NULL ), sfxn_( NULL ), task_invalidated_( false )
82 std::pair< core::Size, core::Size > con_pair( std::make_pair( residue, required_connections ) );
99 else map_it->second++;
105 std::set< core::Size >
const & region1,
106 std::set< core::Size >
const & region2,
115 using namespace core::graph;
119 std::map< core::Size, core::Size > connections_for_important_res;
124 reg_it != regions_end; ++reg_it ){
125 reg_it->reset_num_connections();
134 edge_it != edge_end; ++edge_it ){
137 core::Size res1 = (*edge_it)->get_first_node_ind();
138 core::Size res2 = (*edge_it)->get_second_node_ind();
143 std::map< core::Size, core::Size >::iterator map_it = connections_for_important_res.find( res1 );
144 if( map_it == connections_for_important_res.end() ){
146 connections_for_important_res.insert( std::pair< core::Size, core::Size >( res1, 1 ) );
148 else map_it->second++;
153 std::map< core::Size, core::Size >::iterator map_it = connections_for_important_res.find( res2 );
154 if( map_it == connections_for_important_res.end() ){
156 connections_for_important_res.insert( std::pair< core::Size, core::Size >( res2, 1 ) );
158 else map_it->second++;
163 reg_it != regions_end; ++reg_it ){
164 reg_it->check_if_connected_residues_belong_to_regions( res1, res2 );
175 std::map< core::Size, core::Size >::const_iterator curmap_it = connections_for_important_res.find( reqmap_it->first );
177 if( curmap_it == connections_for_important_res.end() )
return false;
179 else if( curmap_it->second < reqmap_it->second )
return false;
185 reg_it != regions_end; ++reg_it ){
186 if( ! reg_it->enough_connections() )
return false;