private List < List < Atom [ ] > > getMatchedAtomsOfLinkages ( ModificationCondition condition , Map < Component , Set < Group > > mapCompGroups ) { List < ModificationLinkage > linkages = condition . getLinkages ( ) ; int nLink = linkages . size ( ) ; List < List < Atom [ ] > > matchedAtomsOfLinkages = new ArrayList < List < Atom [ ] > > ( nLink ) ; for ( int iLink = 0 ; iLink < nLink ; iLink ++ ) { ModificationLinkage linkage = linkages . get ( iLink ) ; Component comp1 = linkage . getComponent1 ( ) ; Component comp2 = linkage . getComponent2 ( ) ; // boolean isAA1 = comp1.; // boolean isAA2 = comp2.getType()==true; Set < Group > groups1 = mapCompGroups . get ( comp1 ) ; Set < Group > groups2 = mapCompGroups . get ( comp2 ) ; List < Atom [ ] > list = new ArrayList < Atom [ ] > ( ) ; List < String > potentialNamesOfAtomOnGroup1 = linkage . getPDBNameOfPotentialAtomsOnComponent1 ( ) ; for ( String name : potentialNamesOfAtomOnGroup1 ) { if ( name . equals ( "*" ) ) { // wildcard potentialNamesOfAtomOnGroup1 = null ; // search all atoms break ; } } List < String > potentialNamesOfAtomOnGroup2 = linkage . getPDBNameOfPotentialAtomsOnComponent2 ( ) ; for ( String name : potentialNamesOfAtomOnGroup2 ) { if ( name . equals ( "*" ) ) { // wildcard potentialNamesOfAtomOnGroup2 = null ; // search all atoms break ; } } for ( Group g1 : groups1 ) { for ( Group g2 : groups2 ) { if ( g1 . equals ( g2 ) ) { continue ; } // only for wildcard match of two residues boolean ignoreNCLinkage = potentialNamesOfAtomOnGroup1 == null && potentialNamesOfAtomOnGroup2 == null && residues . contains ( g1 ) && residues . contains ( g2 ) ; Atom [ ] atoms = StructureUtil . findNearestAtomLinkage ( g1 , g2 , potentialNamesOfAtomOnGroup1 , potentialNamesOfAtomOnGroup2 , ignoreNCLinkage , bondLengthTolerance ) ; if ( atoms != null ) { list . add ( atoms ) ; } } } if ( list . isEmpty ( ) ) { // broken linkage break ; } matchedAtomsOfLinkages . add ( list ) ; } return matchedAtomsOfLinkages ; }
Get matched atoms for all linkages .