Remove trailing spaces

git-svn-id: https://bucket.mit.edu/svn/nilm/nilmdb@10824 ddd99763-3ecb-0310-9145-efcb8ce7c51f
This commit is contained in:
Jim Paris 2012-05-03 19:17:23 +00:00
parent 47245df9bd
commit 565d0e98a9

View File

@ -1,3 +1,4 @@
# cython: profile=True
# This is from bx-python 554:07aca5a9f6fc (BSD licensed), modified to
# store interval ranges as doubles rather than 32-bit integers.
@ -63,9 +64,9 @@ cdef float nlog = -1.0 / log(0.5)
cdef class IntervalNode:
"""
A single node of an `IntervalTree`.
NOTE: Unless you really know what you are doing, you probably should us
`IntervalTree` rather than using this directly.
`IntervalTree` rather than using this directly.
"""
cdef float priority
cdef public object interval
@ -82,7 +83,7 @@ cdef class IntervalNode:
property root_node:
def __get__(self):
return self.croot if self.croot is not EmptyNode else None
def __repr__(self):
return "IntervalNode(%g, %g)" % (self.start, self.end)
@ -101,7 +102,7 @@ cdef class IntervalNode:
self.cleft = EmptyNode
self.cright = EmptyNode
self.croot = EmptyNode
cpdef IntervalNode insert(IntervalNode self, double start, double end, object interval):
"""
Insert a new IntervalNode into the tree of which this node is
@ -114,7 +115,7 @@ cdef class IntervalNode:
cdef double decision_endpoint = start
if start == self.start:
decision_endpoint = end
if decision_endpoint > self.start:
# insert to cright tree
if self.cright is not EmptyNode:
@ -133,7 +134,7 @@ cdef class IntervalNode:
# rebalance tree
if self.priority < self.cleft.priority:
croot = self.rotate_right()
croot.set_ends()
self.cleft.croot = croot
self.cright.croot = croot
@ -154,7 +155,7 @@ cdef class IntervalNode:
return croot
cdef inline void set_ends(IntervalNode self):
if self.cright is not EmptyNode and self.cleft is not EmptyNode:
if self.cright is not EmptyNode and self.cleft is not EmptyNode:
self.maxend = dmax3(self.end, self.cright.maxend, self.cleft.maxend)
self.minend = dmin3(self.end, self.cright.minend, self.cleft.minend)
self.minstart = dmin3(self.start, self.cright.minstart, self.cleft.minstart)
@ -166,7 +167,7 @@ cdef class IntervalNode:
self.maxend = dmax2(self.end, self.cleft.maxend)
self.minend = dmin2(self.end, self.cleft.minend)
self.minstart = dmin2(self.start, self.cleft.minstart)
def intersect( self, double start, double end, sort=True ):
"""
@ -180,7 +181,7 @@ cdef class IntervalNode:
return results
find = intersect
cdef void _intersect( IntervalNode self, double start, double end, list results):
# Left subtree
if self.cleft is not EmptyNode and self.cleft.maxend > start:
@ -191,7 +192,7 @@ cdef class IntervalNode:
# Right subtree
if self.cright is not EmptyNode and self.start < end:
self.cright._intersect( start, end, results )
cdef void _seek_left(IntervalNode self, double position, list results, int n, double max_dist):
# we know we can bail in these 2 cases.
@ -213,7 +214,7 @@ cdef class IntervalNode:
self.cleft._seek_left(position, results, n, max_dist)
cdef void _seek_right(IntervalNode self, double position, list results, int n, double max_dist):
# we know we can bail in these 2 cases.
if self.maxend < position: return
@ -223,7 +224,7 @@ cdef class IntervalNode:
# the ordering of these 3 blocks makes it so the results are
# ordered nearest to farest from the query position
if self.cleft is not EmptyNode:
if self.cleft is not EmptyNode:
self.cleft._seek_right(position, results, n, max_dist)
if -1 < self.start - position < max_dist:
@ -232,7 +233,7 @@ cdef class IntervalNode:
if self.cright is not EmptyNode:
self.cright._seek_right(position, results, n, max_dist)
cpdef left(self, position, int n=1, double max_dist=2500):
"""
find n features with a start > than `position`
@ -330,49 +331,49 @@ cdef class Interval:
cdef class IntervalTree:
"""
Data structure for performing window intersect queries on a set of
Data structure for performing window intersect queries on a set of
of possibly overlapping 1d intervals.
Usage
=====
Create an empty IntervalTree
>>> from bx.intervals.intersection import Interval, IntervalTree
>>> intersecter = IntervalTree()
An interval is a start and end position and a value (possibly None).
You can add any object as an interval:
>>> intersecter.insert( 0, 10, "food" )
>>> intersecter.insert( 3, 7, dict(foo='bar') )
>>> intersecter.find( 2, 5 )
['food', {'foo': 'bar'}]
If the object has start and end attributes (like the Interval class) there
is are some shortcuts:
>>> intersecter = IntervalTree()
>>> intersecter.insert_interval( Interval( 0, 10 ) )
>>> intersecter.insert_interval( Interval( 3, 7 ) )
>>> intersecter.insert_interval( Interval( 3, 40 ) )
>>> intersecter.insert_interval( Interval( 13, 50 ) )
>>> intersecter.find( 30, 50 )
[Interval(3, 40), Interval(13, 50)]
>>> intersecter.find( 100, 200 )
[]
Before/after for intervals
>>> intersecter.before_interval( Interval( 10, 20 ) )
[Interval(3, 7)]
>>> intersecter.before_interval( Interval( 5, 20 ) )
[]
Upstream/downstream
>>> intersecter.upstream_of_interval(Interval(11, 12))
[Interval(0, 10)]
>>> intersecter.upstream_of_interval(Interval(11, 12, strand="-"))
@ -381,16 +382,16 @@ cdef class IntervalTree:
>>> intersecter.upstream_of_interval(Interval(1, 2, strand="-"), num_intervals=3)
[Interval(3, 7), Interval(3, 40), Interval(13, 50)]
"""
cdef IntervalNode root
def __cinit__( self ):
root = None
# ---- Position based interfaces -----------------------------------------
def insert( self, double start, double end, object value=None ):
"""
Insert the interval [start,end) associated with value `value`.
@ -399,7 +400,7 @@ cdef class IntervalTree:
self.root = IntervalNode( start, end, value )
else:
self.root = self.root.insert( start, end, value )
add = insert
@ -410,7 +411,7 @@ cdef class IntervalTree:
if self.root is None:
return []
return self.root.find( start, end )
def before( self, position, num_intervals=1, max_dist=2500 ):
"""
Find `num_intervals` intervals that lie before `position` and are no
@ -481,7 +482,7 @@ cdef class IntervalTree:
return self.root.left( interval.start, num_intervals, max_dist )
else:
return self.root.right( interval.end, num_intervals, max_dist )
def traverse(self):
"""
iterator that traverses the tree