private void recordUnidentifiableAtomLinkages ( List < ModifiedCompound > modComps , List < Group > ligands ) { // first put identified linkages in a map for fast query Set < StructureAtomLinkage > identifiedLinkages = new HashSet < StructureAtomLinkage > ( ) ; for ( ModifiedCompound mc : modComps ) { identifiedLinkages . addAll ( mc . getAtomLinkages ( ) ) ; } // record // cross link int nRes = residues . size ( ) ; for ( int i = 0 ; i < nRes - 1 ; i ++ ) { Group group1 = residues . get ( i ) ; for ( int j = i + 1 ; j < nRes ; j ++ ) { Group group2 = residues . get ( j ) ; List < Atom [ ] > linkages = StructureUtil . findAtomLinkages ( group1 , group2 , true , bondLengthTolerance ) ; for ( Atom [ ] atoms : linkages ) { StructureAtomLinkage link = StructureUtil . getStructureAtomLinkage ( atoms [ 0 ] , true , atoms [ 1 ] , true ) ; unidentifiableAtomLinkages . add ( link ) ; } } } // attachment int nLig = ligands . size ( ) ; for ( int i = 0 ; i < nRes ; i ++ ) { Group group1 = residues . get ( i ) ; for ( int j = 0 ; j < nLig ; j ++ ) { Group group2 = ligands . get ( j ) ; if ( group1 . equals ( group2 ) ) { // overlap between residues and ligands continue ; } List < Atom [ ] > linkages = StructureUtil . findAtomLinkages ( group1 , group2 , false , bondLengthTolerance ) ; for ( Atom [ ] atoms : linkages ) { StructureAtomLinkage link = StructureUtil . getStructureAtomLinkage ( atoms [ 0 ] , true , atoms [ 1 ] , false ) ; unidentifiableAtomLinkages . add ( link ) ; } } } }
Record unidentifiable atom linkages in a chain . Only linkages between two residues or one residue and one ligand will be recorded .