22 #include <utility/vector1.hh>
32 max_connpoints_for_residue_( 0 ),
33 has_pseudobonds_( false )
120 using namespace conformation;
122 Size n_connection_partners( 0 );
123 std::map< Size, Size > resid_2_connection_partner_id;
125 std::map< Size, std::map< Size, Size > > bonds_to_residues;
130 std::map< Size, utility::vector1< Size > > pseudobonds_to_residues;
139 if ( resid_2_connection_partner_id.find( other_resid ) == resid_2_connection_partner_id.end() ) {
140 ++n_connection_partners;
141 resid_2_connection_partner_id[ other_resid ] = n_connection_partners;
142 connection_partner_id_2_resid.push_back( other_resid );
143 std::map< Size, Size > ii_connmap;
149 ii_connmap[ lower_res_connid ] = jj;
151 bonds_to_residues[ other_resid ] = ii_connmap;
155 std::map< Size, PseudoBondCollectionCOP >
const & pb_map( example_rotamer.
pseudobonds());
156 for ( std::map< Size, PseudoBondCollectionCOP >::const_iterator
157 pbc_iter = pb_map.begin(), pbc_iter_end = pb_map.end();
158 pbc_iter != pbc_iter_end; ++pbc_iter ) {
160 Size const other_resid = pbc_iter->first;
163 if ( resid_2_connection_partner_id.find( other_resid ) == resid_2_connection_partner_id.end() ) {
164 ++n_connection_partners;
165 resid_2_connection_partner_id[ other_resid ] = n_connection_partners;
166 connection_partner_id_2_resid.push_back( other_resid );
172 pbiter != pbiter_end; ++pbiter ) {
177 pseudobond_connection_points[ count ] = seqpos <= other_resid ? pb.
lr_conn_id() : pb.
ur_conn_id();
179 pseudobonds_to_residues[ other_resid ] = pseudobond_connection_points;
201 cpdata_map.
n_entries( n_connection_partners );
202 for (
Size ii = 1; ii <= n_connection_partners; ++ii ) {
203 Size const other_resid = connection_partner_id_2_resid[ ii ];
204 cpdata_map.resid_for_entry( ii, other_resid );
206 Size ii_n_connpoints( 0 );
207 if ( bonds_to_residues.find( other_resid ) != bonds_to_residues.end() ) {
208 ii_n_connpoints = bonds_to_residues[ other_resid ].size();
210 if ( pseudobonds_to_residues.find( other_resid ) != pseudobonds_to_residues.end() ) {
211 ii_n_connpoints += pseudobonds_to_residues[ other_resid ].size();
214 cpdata_map.n_connpoints_for_entry( ii, ii_n_connpoints );
215 Size count_connpoints( 0 );
217 if ( bonds_to_residues.find( other_resid ) != bonds_to_residues.end() ) {
218 std::map< Size, Size >
const & ii_connmap = bonds_to_residues[ other_resid ];
219 for ( std::map< Size, Size >::const_iterator
220 iter = ii_connmap.begin(), iter_end = ii_connmap.end();
221 iter != iter_end; ++iter ) {
222 cpdata_map.connid_for_entry_connpoint( ii, ++count_connpoints, iter->second );
226 if ( pseudobonds_to_residues.find( other_resid ) != pseudobonds_to_residues.end() ) {
229 iter = ii_pbmap.begin(), iter_end = ii_pbmap.end();
230 iter != iter_end; ++iter ) {
231 cpdata_map.connid_for_entry_connpoint( ii, ++count_connpoints, *iter );
233 cpdata_map.note_has_pseudobonds();