30 #include <utility/exit.hh>
32 #include <ObjexxFCL/format.hh>
33 #include <ObjexxFCL/string.functions.hh>
34 using ObjexxFCL::fmt::I;
39 #include <utility/vector1.hh>
52 nres_( pose.total_residue() ),
53 force_ideal_chainbreak_( false )
66 return new_allow_insert;
73 if (
this == &src )
return *
this;
110 AtomID const atom_id( j, i );
121 atom_ids.push_back( atom_id );
153 if (fail)
return false;
165 utility_exit_with_message(
"Out of bounds for allow_insert" );
170 if ( domain == 0 )
return 0;
178 std::map< AtomID, AtomID >::const_iterator it_original =
map_to_original_.find( atom_id );
186 std::map< AtomID, AtomID >::const_iterator it_original =
map_to_original_.find( atom_id );
188 AtomID original_atom_id = it_original->second;
190 std::map< core::id::AtomID, Size >::const_iterator it =
allow_insert_.find( original_atom_id );
192 utility_exit_with_message(
"Asked allow_insert for an atom_id it does not know about!" );
208 std::map< AtomID, AtomID >::const_iterator it_original =
map_to_original_.find( atom_id );
210 std::cerr <<
"Problem ID: " << atom_id << std::endl;
211 utility_exit_with_message(
"Asked allow_insert to set atom_id that cannot be mapped to original pose!" );
214 AtomID original_atom_id = it_original->second;
217 utility_exit_with_message(
"Asked allow_insert to set atom_id it does not know about!" );
226 for( std::map< AtomID, Size >::iterator it =
allow_insert_.begin();
228 it->second = setting;
236 Size const & setting ){
260 set_domain( i, ( setting ) ? 0 : FIXED_DOMAIN );
266 set_domain( atom_id, ( setting ) ? 0 : FIXED_DOMAIN );
274 bool const & setting ){
283 std::cout <<
"RES" << i;
287 std::cout << std::endl;
295 for( std::map< AtomID, Size >::iterator it =
allow_insert_.begin();
298 Size const & current_setting = it->second;
299 Size const & other_setting = allow_insert_in->get_domain( it->first );
301 if ( other_setting > current_setting ) it->second = other_setting;
308 std::map< AtomID, Size >
const &
316 std::map< core::Size, core::Size >
const & res_map,
318 std::map< AtomID, AtomID > & atom_id_map ){
322 std::map< core::Size, core::Size > in_source_res;
323 for( std::map< Size, Size >::const_iterator it = res_map.begin(); it != res_map.end(); it++ ){
324 Size const & insert_pos = it->first;
325 Size const & source_pos = it->second;
326 in_source_res[ source_pos ] = insert_pos;
329 for( std::map< Size, Size >::const_iterator it = res_map.begin(); it != res_map.end(); it++ ){
331 Size const & insert_pos = it->first;
332 Size const & source_pos = it->second;
336 AtomID const atom_id( j, insert_pos );
338 std::map< AtomID, AtomID >::const_iterator it_original =
map_to_original_.find( atom_id );
344 AtomID original_atom_id = it_original->second;
346 int const rsd_offset =
int( original_atom_id.
rsd() ) -
int( atom_id.
rsd() );
347 Size const source_atomno = original_atom_id.
atomno();
349 Size const source_pos_offset = source_pos + rsd_offset;
351 if ( in_source_res.find( source_pos_offset ) == in_source_res.end() )
continue;
353 if ( rsd_offset == +1 && scratch_fold_tree.
is_cutpoint( source_pos ) )
continue;
354 if ( rsd_offset == -1 && scratch_fold_tree.
is_cutpoint( source_pos-1 ) )
continue;
367 AtomID source_atom_id( source_atomno, source_pos + rsd_offset );
369 atom_id_map[ atom_id ] = source_atom_id;
388 utility_exit_with_message(
"AllowInsert cannot currenty handle changes in no. residues!" );
397 AtomID const new_atom_id( j, i );
400 NamedAtomID const new_named_atom_id( atom_name, i );
402 std::map< NamedAtomID, AtomID >::const_iterator it =
named_atom_id_map_.find( new_named_atom_id );
406 AtomID const & original_atom_id = it->second;
421 if ( rsd_type.
is_RNA() ) {
423 if ( atom_name ==
"OVL1" ){
424 alternative_named_atom_id =
NamedAtomID(
" P ", i+1 );
425 }
else if ( atom_name ==
"OVL2" ) {
426 alternative_named_atom_id =
NamedAtomID(
" S ", i+1 );
427 }
else if ( atom_name ==
"OVU1" ) {
428 alternative_named_atom_id =
NamedAtomID(
" S ", i-1 );
433 if ( atom_name ==
"OVL1" ){
434 alternative_named_atom_id =
NamedAtomID(
" P ", i+1 );
435 }
else if ( atom_name ==
"OVL2" ) {
436 alternative_named_atom_id =
NamedAtomID(
" O5*", i+1 );
437 }
else if ( atom_name ==
"OVU1" ) {
438 alternative_named_atom_id =
NamedAtomID(
" O3*", i-1 );
445 std::map< NamedAtomID, AtomID >::const_iterator it2 =
named_atom_id_map_.find( alternative_named_atom_id );
448 AtomID const & original_atom_id = it2->second;
474 std::map< AtomID, Size >
const &
483 AtomID const atom_id( j, i );
499 bool const & setting ){
505 AtomID const atom_id( j, i );
508 atom_ids.push_back( atom_id );