def getIdentityFromPathList( lPaths, checkSubjects=True ): if len( PathUtils.getListOfDistinctQueryNames( lPaths ) ) > 1: msg = "ERROR: try to compute identity from Paths with different queries" sys.stderr.write( "%s\n" % msg ); sys.stderr.flush() raise Exception if checkSubjects and len( PathUtils.getListOfDistinctSubjectNames( lPaths ) ) > 1: msg = "ERROR: try to compute identity from Paths with different subjects" sys.stderr.write( "%s\n" % msg ); sys.stderr.flush() raise Exception identity = 0 lMergedPaths = PathUtils.mergePathsInListUsingQueryCoordsOnly( lPaths ) lQuerySets = PathUtils.getSetListFromQueries( lMergedPaths ) lMergedQuerySets = SetUtils.mergeSetsInList( lQuerySets ) totalLengthOnQry = SetUtils.getCumulLength( lMergedQuerySets ) for iPath in lMergedPaths: identity += iPath.identity * iPath.getLengthOnQuery() weightedIdentity = identity / float(totalLengthOnQry) if weightedIdentity < 0 or weightedIdentity > 100: msg = "ERROR: weighted identity '%.2f' outside range" % ( weightedIdentity ) sys.stderr.write( "%s\n" % msg ); sys.stderr.flush() raise Exception return weightedIdentity
qmax = qmax + 1 if stype == "path": lPaths = stablePathAdaptator.getPathListOverlappingQueryCoord( lQuerySets[0].seqname.split()[0], qmin, qmax ) lSubjectSets = PathUtils.getSetListFromQueries( lPaths ) elif stype == "set": lSubjectSets = stableSetAdaptator.getSetListFromQueryCoord( lQuerySets[0].seqname.split()[0], qmin, qmax ) if verbose > 1: print "----------------------------------------" if len(lSubjectSets) > 0: if verbose > 1: print "annot:" SetUtils.showList( lQuerySets ) lQuerySets = SetUtils.mergeSetsInList( lQuerySets ) qsize = SetUtils.getCumulLength( lQuerySets ) string += "\nannot size: %i" % ( qsize ) if verbose > 1: print "annot size=", qsize if verbose > 1: print "simple repeats list:" SetUtils.showList( lSubjectSets ) lSubjectSets = SetUtils.mergeSetsInList( lSubjectSets ) ssize = SetUtils.getCumulLength( lSubjectSets ) string += "\nsimple repeats size: %i" % ( ssize ) osize = SetUtils.getOverlapLengthBetweenLists( lQuerySets, lSubjectSets ) string += "\noverlap size: %i" % ( osize ) string += "\nremains %i" % ( qsize - osize ) if verbose > 1:
def getLengthOnQueryFromPathList( lPaths ): lSets = PathUtils.getSetListFromQueries( lPaths ) lMergedSets = SetUtils.mergeSetsInList( lSets ) length = SetUtils.getCumulLength( lMergedSets ) return length