rekall.predicates module¶
A collection of built-in predicate functions. Each function in this module takes in some number of arguments and returns an anonymous function that evaluates to True or False.
Example
The area_at_least predicate returns a predicate that computes whether a
2D bounding box’s area is at least some value. This is how you would use
it:
bbox = { 'x1': 0.1, 'x2': 0.3, 'y1': 0.1, 'y2': 0.3 }
pred = area_at_least(.03)
bbox_satisfies_pred = pred(bbox)
-
rekall.predicates.above()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly above the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box’s ‘y2’ value is less than the second bounding box’s ‘y1’ value.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly above the second one.
-
rekall.predicates.after(min_dist=0, max_dist='infty')¶ Returns a function that computes whether a temporal interval is after another, optionally filtering the time difference to be between
min_distandmax_dist(inclusive).The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the time difference between the start of the first interval and the end of the second interval is betweenmin_distandmax_dist, inclusive.- Arg:
- min_dist: The minimum time difference between the two intervals.
- Negative values are undefined.
- max_dist: The maximum time difference between the two intervals. If
- this is
INFTY, then the maximum time difference is unbounded.
Returns: An output function that takes two temporal intervals and returns Trueif the first interval is after the second interval.
-
rekall.predicates.and_pred(*preds)¶ ANDs the predicates.
-
rekall.predicates.area_at_least(area)¶ Returns a function that computes whether a 2D bounding box’s area is at least
area.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s area is greater than or equal toarea.Parameters: area – Target area value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s area is greater than or equal toarea.
-
rekall.predicates.area_at_most(area)¶ Returns a function that computes whether a 2D bounding box’s area less than or equal to
area.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s area is less than or equal toarea.Parameters: area – Target area value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s area is less than or equal toarea.
-
rekall.predicates.area_between(area1, area2)¶ Returns a function that computes whether a 2D bounding box’s area is between
area1andarea2(inclusive).The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s area is betweenarea1andarea2.Parameters: - area1 – Minimum area value.
- area2 – Maximum area value.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s area is betweenarea1andarea2.
-
rekall.predicates.area_exactly(area, epsilon=0.1)¶ Returns a function that computes whether a 2D bounding box has a certain area (+/- epsilon).
The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the absolute difference between the bounding box’s area and the specified area is less thanepsilon.Parameters: - area – Target area value.
- epsilon – Maximum difference between the bounding box’s area and
area.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s area is withinepsilonofarea.
-
rekall.predicates.before(min_dist=0, max_dist='infty')¶ Returns a function that computes whether a temporal interval is before another, optionally filtering the time difference to be between
min_distandmax_dist(inclusive).The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the time difference between the start of the second interval and the end of the first interval is betweenmin_distandmax_dist, inclusive.- Arg:
- min_dist: The minimum time difference between the two intervals.
- Negative values are undefined.
- max_dist: The maximum time difference between the two intervals. If
- this is
INFTY, then the maximum time difference is unbounded.
Returns: An output function that takes two temporal intervals and returns Trueif the first interval is before the second interval.
-
rekall.predicates.below()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly below the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box’s ‘y1’ value is greater than the second bounding box’s ‘y2’ value.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly below the second one.
-
rekall.predicates.contains()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one contains the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first one contains the second one (boundaries inclusive).Returns: A function that takes two 2D bounding boxes and returns Trueif the first one contains the second one.
-
rekall.predicates.during()¶ Returns a function that computes whether a temporal interval takes place entirely during another temporal interval (i.e. it starts after the other interval starts and ends before the other interval ends).
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the first interval starts strictly after the second interval starts and ends strictly before the second interval ends.Returns: An output function that takes two temporal intervals and returns Trueif the first interval takes place strictly during the second interval.
-
rekall.predicates.during_inv()¶ Returns a function that computes whether a temporal interval takes place entirely during another temporal interval (i.e. it starts after the other interval starts and ends before the other interval ends). This is the inverse of the
duringpredicate; it checks whether the second interval takes place during the first interval.The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the second interval starts strictly after the first interval starts and ends strictly before the first interval ends.Returns: An output function that takes two temporal intervals and returns Trueif the second interval takes place strictly during the first interval.
-
rekall.predicates.equal()¶ Returns a function that computes whether two temporal intervals are strictly equal.
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the two intervals have equal start times and equal end times.Returns: An output function that takes two temporal intervals and returns Trueif the two intervals have equal start times and equal end times.
-
rekall.predicates.false_pred()¶ Returns a predicate that always returns
False.
-
rekall.predicates.finishes(epsilon=0)¶ Returns a function that computes whether a temporal interval has the same end time as another interval (+/- epsilon), and starts after it.
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the first interval ends at the same time as the second interval (+/-epsilon), and the first interval starts after the second interval.Parameters: epsilon – The maximum difference between the end time of the first interval and the end time of the second interval. Returns: An output function that takes two temporal intervals and returns Trueif the first interval ends at the same time as the second interval, and starts after the second interval starts.
-
rekall.predicates.finishes_inv(epsilon=0)¶ Returns a function that computes whether a temporal interval has the same end time as another interval (+/- epsilon), and starts after it. This is the inverse of the
finishespredicate; it checks whether the second interval finishes the first interval.The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the second interval ends at the same time as the first interval (+/-epsilon), and the second interval starts after the first interval.Parameters: epsilon – The maximum difference between the end time of the second interval and the end time of the first interval. Returns: An output function that takes two temporal intervals and returns Trueif the second interval ends at the same time as the first interval, and starts after the first interval starts.
-
rekall.predicates.has_value(key, target, epsilon=0.1)¶ Returns a function that computes whether a specified value in a dict is within
epsilonoftarget.The output function takes in a dict
dand returnsTrueif the absolute difference betweend[key]andtargetis less thanepsilon.Parameters: - key – Lookup key for the value in the dict to compare.
- target – The value to compare against.
- epsilon – Maximum difference between the two values.
Returns: A function that takes a dict and returns
Trueif the absolute value betweendict[key]andtargetis less thanepsilon.
-
rekall.predicates.height_at_least(height)¶ Returns a function that computes whether a 2D bounding box’s height is at least
height.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s height is greater than or equal toheight.Parameters: height – Target height value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s height is greater than or equal toheight.
-
rekall.predicates.height_at_most(height)¶ Returns a function that computes whether a 2D bounding box’s height is less than or equal to
height.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s height is less than or equal toheight.Parameters: height – Target height value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s height is less than or equal toheight.
-
rekall.predicates.height_between(height1, height2)¶ Returns a function that computes whether a 2D bounding box’s height is between
height1andheight2(inclusive).The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s height is betweenheight1andheight2.Parameters: - height1 – Minimum height value.
- height2 – Maximum height value.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s height is betweenheight1andheight2.
-
rekall.predicates.height_exactly(height, epsilon=0.1)¶ Returns a function that computes whether a 2D bounding box has a certain height (+/- epsilon).
The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the absolute difference between the bounding box’s height and the specified height is less thanepsilon.Parameters: - height – Target height value.
- epsilon – Maximum difference between the bounding box’s height and
height.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s height is withinepsilonofheight.
-
rekall.predicates.inside()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is inside the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first one is inside the second one (boundaries inclusive).Returns: A function that takes two 2D bounding boxes and returns Trueif the first one is inside the second one.
-
rekall.predicates.iou_at_least(n)¶ Returns a function that takes two 2D bounding boxes and computes whether their intersection over area is at least
n.Parameters: n – Minimum IOU (float). Returns: A function that takes in two 2D bounding boxes and returns Trueif their IOU is at leastn.
-
rekall.predicates.left_of()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly to the left of the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box’s ‘x2’ value is less than the second bounding box’s ‘x1’ value.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly to the left of the second one.
-
rekall.predicates.length_at_least(n)¶ Returns a function that checks whether a list has length at least
n.Parameters: n – The length to check against. Returns: A function that takes in a list land returnsTrueiflen(l)is greater than or equal ton.
-
rekall.predicates.length_at_most(n)¶ Returns a function that checks whether a list has length less than or equal to
n.Parameters: n – The length to check against. Returns: A function that takes in a list land returnsTrueiflen(l)is less than or equal ton.
-
rekall.predicates.length_between(n1, n2)¶ Returns a function that checks whether a list’s length is between
n1andn2(inclusive).Parameters: - n1 – The minimum length of the list.
- n2 – The maximum length of the list.
Returns: A function that takes in a list
land returnsTrueiflen(l)is betweenn1andn2(inclusive).
-
rekall.predicates.length_exactly(n)¶ Returns a function that checks whether a list has length exactly
n.Parameters: n – The length to check against. Returns: A function that takes in a list land returnsTrueiflen(l)is equal ton.
-
rekall.predicates.less_area()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one has strictly less area than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box has strictly less area than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box has strictly less area than the second one.
-
rekall.predicates.less_height()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly shorter than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box is strictly shorter than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly shorter than the second one.
-
rekall.predicates.less_width()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly narrower than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box is strictly narrower than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly narrower than the second one.
-
rekall.predicates.meets_after(epsilon=0)¶ Returns a function that computes whether a temporal interval ends at the same time as another interval starts (+/- epsilon). This is the inverse of the
meets_beforepredicate; it checks whether the first interval starts when the second interval ends.The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the absolute time difference between the start of the first interval and the end of the second interval is less thanepsilon.Parameters: epsilon – The maximum time difference between the start of the first interval and the end of the second interval. Returns: An output function that takes two temporal intervals and returns Trueif the first interval starts at the same time as the second interval ends.
-
rekall.predicates.meets_before(epsilon=0)¶ Returns a function that computes whether a temporal interval ends at the same time as another interval starts (+/- epsilon).
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the absolute time difference between the end of the first interval and the start of the second interval is less thanepsilon.Parameters: epsilon – The maximum time difference between the end of the first interval and the start of the second interval. Returns: An output function that takes two temporal intervals and returns Trueif the first interval ends at the same time as the second interval starts.
-
rekall.predicates.more_area()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one has strictly more area than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box has strictly more area than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box has strictly more area than the second one.
-
rekall.predicates.more_height()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly taller than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box is strictly taller than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly taller than the second one.
-
rekall.predicates.more_width()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly wider than the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box is strictly wider than the second one.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly wider than the second one.
-
rekall.predicates.not_pred(pred)¶ Negates the predicate.
-
rekall.predicates.on_key(key, pred)¶ This wraps a predicate so it is applied to a value in a dict instead of the dict itself.
The output function expects one or more dicts as input (depending on how many arguments
predexpects) and applies the predicate tod[key]for every dictdof input.- Arg:
- key: The key of the dict to apply the predicate to. pred: The predicate to wrap.
Returns: An output function that applies predto keyed values of dict(s).
-
rekall.predicates.or_pred(*preds)¶ ORs the predicates.
-
rekall.predicates.overlaps()¶ Returns a function that computes whether a temporal interval overlaps another in any way (including just at the endpoints).
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the two intervals overlap in any wayReturns: An output function that takes two temporal intervals and returns Trueif the two intervals overlap in any way.
-
rekall.predicates.overlaps_after()¶ Returns a function that computes whether a temporal interval has non-zero overlap with another interval, and starts after it.
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the first interval starts after the second interval, and the two intervals have a non-zero amount of overlap.Returns: An output function that takes two temporal intervals and returns Trueif the first interval starts after the second interval, and the two intervals have non-zero overlap.
-
rekall.predicates.overlaps_before()¶ Returns a function that computes whether a temporal interval has non-zero overlap with another interval, and starts before it.
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the first interval starts before the second interval, and the two intervals have a non-zero amount of overlap.Returns: An output function that takes two temporal intervals and returns Trueif the first interval starts before the second interval, and the two intervals have non-zero overlap.
-
rekall.predicates.payload_satisfies(pred)¶ This wraps a predicate so it is applied to the payloads of intervals.
The output function expects one or more Intervals as input (depending on how many arguments
predexpects) and applies the predicate to the payloads of the Intervals instead of the Intervals themselves.- Arg:
- pred: The predicate to wrap.
Returns: An output function that applies predto payloads.
-
rekall.predicates.position(x1, y1, x2, y2, epsilon=0.1)¶ Returns a function that computes whether a 2D bounding box has certain co-ordinates (+/- epsilon).
The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the absolute difference between the dict’s values and the specified co-ordinates are all less thanepsilon.Parameters: - x1 – Value to compare against the bounding box’s ‘x1’ field.
- y1 – Value to compare against the bounding box’s ‘y1’ field.
- x2 – Value to compare against the bounding box’s ‘x2’ field.
- y2 – Value to compare against the bounding box’s ‘y2’ field.
- epsilon – Maximum difference against specified co-ordinates.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s spatial co-ordinates are all withinepsilonofx1,y1,x2, andy2.
-
rekall.predicates.right_of()¶ Returns a function that takes two 2D bounding boxes and computes whether the first one is strictly to the right of the second one.
The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the first bounding box’s ‘x1’ value is greater than the second bounding box’s ‘x2’ value.Returns: A function that takes two 2D bounding boxes and returns Trueif the first bounding box is strictly to the right of the second one.
-
rekall.predicates.same_area(epsilon=0.1)¶ Returns a function that takes two 2D bounding boxes and computes whether the difference in their areas is less than
epsilon.The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the difference in their areas is less thanepsilon.Parameters: epsilon – The maximum difference in area between the two bounding boxes. Returns: A function that takes two 2D bounding boxes and returns Trueif the difference in their areas is less thanepsilon.
-
rekall.predicates.same_height(epsilon=0.1)¶ Returns a function that takes two 2D bounding boxes and computes whether the difference in their heights is less than
epsilon.The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the difference in their heights is less thanepsilon.Parameters: epsilon – The maximum difference in area between the two bounding boxes. Returns: A function that takes two 2D bounding boxes and returns Trueif the difference in their heights is less thanepsilon.
-
rekall.predicates.same_value(key, epsilon=0.1)¶ Returns a function that takes two dicts and computes whether the difference between two of their values is less than
epsilon.The output function takes in two dicts
d1andd2and returnsTrueif the absolute difference betweend1[key]andd2[key]is less thanepsilon.Parameters: epsilon – The maximum difference between the two values of the two dicts. Returns: A function that takes two dicts and returns Trueif the absolute difference between two of their values is less thanepsilon.
-
rekall.predicates.same_width(epsilon=0.1)¶ Returns a function that takes two 2D bounding boxes and computes whether the difference in their widths is less than
epsilon.The output function takes in two 2D bounding boxes (dicts with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the difference in their widths is less thanepsilon.Parameters: epsilon – The maximum difference in area between the two bounding boxes. Returns: A function that takes two 2D bounding boxes and returns Trueif the difference in their widths is less thanepsilon.
-
rekall.predicates.starts(epsilon=0)¶ Returns a function that computes whether a temporal interval has the same start time as another interval (+/- epsilon), and ends before it.
The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the first interval starts at the same time as the second interval (+/-epsilon), and the first interval ends before the second interval.Parameters: epsilon – The maximum difference between the start time of the first interval and the start time of the second interval. Returns: An output function that takes two temporal intervals and returns Trueif the first interval starts at the same time as the second interval, and ends before the second interval ends.
-
rekall.predicates.starts_inv(epsilon=0)¶ Returns a function that computes whether a temporal interval has the same start time as another interval (+/- epsilon), and ends before it. This is the inverse of the
startspredicate; it checks whether the second interval starts the first interval.The output function expects two temporal intervals (dicts with keys ‘t1’ and ‘t2’ for the start and end times, respectively). It returns
Trueif the second interval starts at the same time as the first interval (+/-epsilon), and the second interval ends before the first interval.Parameters: epsilon – The maximum difference between the start time of the second interval and the start time of the first interval. Returns: An output function that takes two temporal intervals and returns Trueif the second interval starts at the same time as the first interval, and ends before the first interval ends.
-
rekall.predicates.true_pred()¶ Returns a predicate that always returns
True.
-
rekall.predicates.width_at_least(width)¶ Returns a function that computes whether a 2D bounding box’s width is at least
width.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s width is greater than or equal towidth.Parameters: width – Target width value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s width is greater than or equal towidth.
-
rekall.predicates.width_at_most(width)¶ Returns a function that computes whether a 2D bounding box’s width is less than or equal to
width.The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s width is less than or equal towidth.Parameters: width – Target width value. Returns: A function that takes a 2D bounding box and returns Trueif the bounding box’s width is less than or equal towidth.
-
rekall.predicates.width_between(width1, width2)¶ Returns a function that computes whether a 2D bounding box’s width is between
width1andwidth2(inclusive).The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the bounding box’s width is betweenwidth1andwidth2.Parameters: - width1 – Minimum width value.
- width2 – Maximum width value.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s width is betweenwidth1andwidth2.
-
rekall.predicates.width_exactly(width, epsilon=0.1)¶ Returns a function that computes whether a 2D bounding box has a certain width (+/- epsilon).
The output function takes in a 2D bounding box (dict with keys ‘x1’, ‘x2’, ‘y1’, ‘y2’) and returns
Trueif the absolute difference between the bounding box’s width and the specified width is less thanepsilon.Parameters: - width – Target width value.
- epsilon – Maximum difference between the bounding box’s width and
width.
Returns: A function that takes a 2D bounding box and returns
Trueif the bounding box’s width is withinepsilonofwidth.