protected ArrayList < SameLengthMotifs > removeOverlappingInSimiliar ( ArrayList < SameLengthMotifs > allClassifiedMotifs , GrammarRules grammarRules , double [ ] ts , double thresouldCom ) { ArrayList < SAXMotif > motifsBeDeleted = new ArrayList < SAXMotif > ( ) ; SAXPointsNumber [ ] pointsNumberRemoveStrategy = countPointNumber ( grammarRules , ts ) ; for ( SameLengthMotifs sameLenMotifs : allClassifiedMotifs ) { outer : for ( int j = 0 ; j < sameLenMotifs . getSameLenMotifs ( ) . size ( ) ; j ++ ) { SAXMotif tempMotif = sameLenMotifs . getSameLenMotifs ( ) . get ( j ) ; int tempMotifLen = tempMotif . getPos ( ) . getEnd ( ) - tempMotif . getPos ( ) . getStart ( ) + 1 ; for ( int i = j + 1 ; i < sameLenMotifs . getSameLenMotifs ( ) . size ( ) ; i ++ ) { SAXMotif anotherMotif = sameLenMotifs . getSameLenMotifs ( ) . get ( i ) ; int anotherMotifLen = anotherMotif . getPos ( ) . getEnd ( ) - anotherMotif . getPos ( ) . getStart ( ) + 1 ; double minEndPos = Math . min ( tempMotif . getPos ( ) . getEnd ( ) , anotherMotif . getPos ( ) . getEnd ( ) ) ; double maxStartPos = Math . max ( tempMotif . getPos ( ) . getStart ( ) , anotherMotif . getPos ( ) . getStart ( ) ) ; // the length in common. double commonLen = minEndPos - maxStartPos + 1 ; // if they are overlapped motif, remove the shorter one if ( commonLen > ( tempMotifLen * thresouldCom ) ) { SAXMotif deletedMotif = new SAXMotif ( ) ; SAXMotif similarWith = new SAXMotif ( ) ; boolean isAnotherBetter ; if ( pointsNumberRemoveStrategy != null ) { isAnotherBetter = decideRemove ( anotherMotif , tempMotif , pointsNumberRemoveStrategy ) ; } else { isAnotherBetter = anotherMotifLen > tempMotifLen ; } if ( isAnotherBetter ) { deletedMotif = tempMotif ; similarWith = anotherMotif ; sameLenMotifs . getSameLenMotifs ( ) . remove ( j ) ; deletedMotif . setSimilarWith ( similarWith ) ; motifsBeDeleted . add ( deletedMotif ) ; j -- ; continue outer ; } else { deletedMotif = anotherMotif ; similarWith = tempMotif ; sameLenMotifs . getSameLenMotifs ( ) . remove ( i ) ; deletedMotif . setSimilarWith ( similarWith ) ; motifsBeDeleted . add ( deletedMotif ) ; i -- ; } } } } int minLength = sameLenMotifs . getSameLenMotifs ( ) . get ( 0 ) . getPos ( ) . endPos - sameLenMotifs . getSameLenMotifs ( ) . get ( 0 ) . getPos ( ) . startPos + 1 ; int sameLenMotifsSize = sameLenMotifs . getSameLenMotifs ( ) . size ( ) ; int maxLength = sameLenMotifs . getSameLenMotifs ( ) . get ( sameLenMotifsSize - 1 ) . getPos ( ) . endPos - sameLenMotifs . getSameLenMotifs ( ) . get ( sameLenMotifsSize - 1 ) . getPos ( ) . startPos + 1 ; sameLenMotifs . setMinMotifLen ( minLength ) ; sameLenMotifs . setMaxMotifLen ( maxLength ) ; } return allClassifiedMotifs ; }
Removes overlapping rules in similar rule set .