Documentation
¶
Overview ¶
A Go library implementing Allen's Algebra 13 interval base relations.
Index ¶
- Constants
- func After[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func AsFloat(value int) float64
- func AsString(value int) string
- func Before[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func CompareBofI[T constraints.Ordered](i1 BagOfIntervals[T], i2 BagOfIntervals[T]) bool
- func CompareBofI_SLOW[T constraints.Ordered](i1 BagOfIntervals[T], i2 BagOfIntervals[T]) bool
- func Contains[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func During[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Finished_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Finishes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func IfElse[T any](condition bool, yes T, no T) T
- func IntervalEqual[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func IntervalMean[T constraints.Ordered](i OrdInterval[T]) (float64, error)
- func IsBofI[T constraints.Ordered](i OrdInterval[T]) bool
- func IsInterval[T constraints.Ordered](i OrdInterval[T]) bool
- func IsIntervalOrBofI[T constraints.Ordered](i OrdInterval[T]) bool
- func IsPoint[T constraints.Ordered](i OrdInterval[T]) bool
- func Meets[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Met_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Overlapped_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Overlaps[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func PointEqual[T constraints.Ordered](p1 OrdInterval[T], p2 OrdInterval[T]) bool
- func PointFinishes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func PointFinishes_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func PointStart[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func PointStarts_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Preceded_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Precedes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Started_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Starts[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
- func Textual(i RelationshipKind) (output string)
- func ValidBofI[T constraints.Ordered](i BagOfIntervals[T]) bool
- func ValidInterval[T constraints.Ordered](i Interval[T]) bool
- func ValidPoint[T constraints.Ordered](i Point[T]) bool
- func ValueAsFloat(input any) (output float64, err error)
- type BagOfIntervals
- type BofIReport
- type Histogram
- type HistogramPlus
- type Interval
- type IntervalKind
- type Number
- type OrdInterval
- type Parallel
- type Point
- type RelationshipKind
- type WGTasks
Constants ¶
const ( P = 1 << iota // Point I // Interval BofI // BagOfInterval )
Variables ¶
This section is empty.
Functions ¶
func After ¶
func After[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1/BoI1 takes place After Interval2/Point2/BoI2.
.............................................. ├── Interval1/Point1 ──┤
├── Interval2/Point2 ──┤
func Before ¶
func Before[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1/BoI1 takes place Before Interval2/Point2/BoI2.
├── Interval1/Point1 ──┤
.............................................. ├── Interval2/Point2 ──┤
func CompareBofI ¶
func CompareBofI[T constraints.Ordered](i1 BagOfIntervals[T], i2 BagOfIntervals[T]) bool
compare i1 & i2 cycling through their bags of intervals
func CompareBofI_SLOW ¶
func CompareBofI_SLOW[T constraints.Ordered](i1 BagOfIntervals[T], i2 BagOfIntervals[T]) bool
compare i1 & i2 cycling through their bags of intervals
func Contains ¶
func Contains[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1 Contains Interval2/Point2.
├──────── Interval2/Point2 ──────────┤
.......├── Interval1/Point1 ──┤
func During ¶
func During[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1 occurs During Interval2/Point2.
.......├── Interval1/Point1 ──┤
├──────── Interval2/Point2 ──────────┤
func Finished_by ¶
func Finished_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 is finished by Interval2/BoI2.
├──────── Interval2 ──────────┤
..............├── Interval1 ──┤
func Finishes ¶
func Finishes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 Finishes Interval2/BoI2.
..............├── Interval1 ──┤
├──────── Interval2 ──────────┤
func IntervalEqual ¶
func IntervalEqual[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1 is IntervalEqual to Interval2.
......├── Interval1 ──┤
......├── Interval2 ──┤
func IntervalMean ¶
func IntervalMean[T constraints.Ordered](i OrdInterval[T]) (float64, error)
func IsBofI ¶
func IsBofI[T constraints.Ordered](i OrdInterval[T]) bool
func IsInterval ¶
func IsInterval[T constraints.Ordered](i OrdInterval[T]) bool
func IsIntervalOrBofI ¶
func IsIntervalOrBofI[T constraints.Ordered](i OrdInterval[T]) bool
func IsPoint ¶
func IsPoint[T constraints.Ordered](i OrdInterval[T]) bool
func Meets ¶
func Meets[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 Meets Interval2/BoI2.
├── Interval1 ──┼── Interval2 ──┤
func Met_by ¶
func Met_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 is met by Interval2/BoI2.
├── Interval2 ──┼── Interval1 ──┤
func Overlapped_by ¶
func Overlapped_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1 is overlapped by Interval2.
.........├── Interval1 ──┤
├── Interval2 ──┤ TODO: incorporate BoI
func Overlaps ¶
func Overlaps[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1 Overlaps with Interval2.
├── Interval1 ──┤
.........├── Interval2 ──┤ TODO: incorporate BoI
func PointEqual ¶
func PointEqual[T constraints.Ordered](p1 OrdInterval[T], p2 OrdInterval[T]) bool
True if Point1 is Equal to Point2. (From Reich's paper)
......| Point1
......| Point2
func PointFinishes ¶
func PointFinishes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Point1 is at Interval2/BoI2 finish (From Reich's paper)
................| Point 1
├── Interval2 ──┤
func PointFinishes_by ¶
func PointFinishes_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval2/BoI2 finishes by Point1 (From Reich's paper)
├── Interval2 ──┤
................| Point 1
func PointStart ¶
func PointStart[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Point1 is at Interval2/BoI2 start (From Reich's paper)
................| Point 1
├── Interval2 ──┤
func PointStarts_by ¶
func PointStarts_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval2/Boi2 starts by Point1 (From Reich's paper)
├── Interval2 ──┤
................| Point 1
func Preceded_by ¶
func Preceded_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1/BoI1 takes place after Interval2/Point2/BoI2.
.............................................. ├── Interval1/Point1 ──┤
├── Interval2/Point2 ──┤
func Precedes ¶
func Precedes[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/Point1/BoI1 takes place before Interval2/Point2/BoI2.
├── Interval1/Point1 ──┤
.............................................. ├── Interval2/Point2 ──┤
func Started_by ¶
func Started_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 is started by Interval2/BoI2.
├──────── Interval1 ──────────┤
├── Interval2 ──┤
func Starts ¶
func Starts[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) bool
True if Interval1/BoI1 Starts Interval2/BoI2.
├── Interval1 ──┤
├──────── Interval2 ──────────┤
func Textual ¶
func Textual(i RelationshipKind) (output string)
func ValidBofI ¶
func ValidBofI[T constraints.Ordered](i BagOfIntervals[T]) bool
True if BofI is a valid (i.Start < i.End)
func ValidInterval ¶
func ValidInterval[T constraints.Ordered](i Interval[T]) bool
True if Interval is a valid interval (i.Start < i.End)
func ValidPoint ¶
func ValidPoint[T constraints.Ordered](i Point[T]) bool
True if Interval is a valid point (i.Start == i.End)
func ValueAsFloat ¶
1 --> 1.0 1.0 --> 1.0 "1.0" --> 1.0
Types ¶
type BagOfIntervals ¶
type BagOfIntervals[T constraints.Ordered] struct { // contains filtered or unexported fields }
func NewBagOfIntervals ¶
func NewBagOfIntervals[T constraints.Ordered](intervals ...Interval[T]) (output BagOfIntervals[T])
creates a bag of Intervals
BagofIntervals stores /intervals/ sorted if len(intervals) == 1 returns invervals[0] as an Inverval[T]
func (BagOfIntervals[T]) End ¶
func (i BagOfIntervals[T]) End() T
func (BagOfIntervals[T]) Kind ¶
func (i BagOfIntervals[T]) Kind() IntervalKind
func (BagOfIntervals[T]) Len ¶
func (i BagOfIntervals[T]) Len() int
func (BagOfIntervals[T]) Start ¶
func (i BagOfIntervals[T]) Start() T
func (BagOfIntervals[T]) String ¶
func (i BagOfIntervals[T]) String() (output string)
type BofIReport ¶
type BofIReport[T constraints.Ordered] struct { NumElems int // total number of elements NumDiffElems int // number of different elements FullCoverage bool // if the BofI has continuous intervals from .Start() to .End() Overlaps bool // if any of the intervals overlaps/is_overlaped by other interval. MeanLength float64 // still wip ValidMeanLength bool // wip Bofi *BagOfIntervals[T] }
func NewBofIAnalysis ¶
func NewBofIAnalysis[T constraints.Ordered](i BagOfIntervals[T]) (output BofIReport[T])
func (BofIReport[T]) String ¶
func (r BofIReport[T]) String() string
type Histogram ¶
type Histogram[K comparable] struct { // contains filtered or unexported fields }
Histogram calculates the frequency of value K treating any negative V as zero. So if we remove K when freq(K) == 0 we do not update its frequency.
type HistogramPlus ¶
type HistogramPlus[K comparable] struct { // contains filtered or unexported fields }
HistogramPlus calculates the frequency of value K treating any negative V as negative. So if we remove K when freq(K) == 0 then freq(K) == -1
func (HistogramPlus[K]) Add ¶
func (d HistogramPlus[K]) Add(key K) (NewValue int)
func (HistogramPlus[K]) IsZero ¶
func (d HistogramPlus[K]) IsZero() bool
func (HistogramPlus[K]) Len ¶
func (d HistogramPlus[K]) Len() int
func (HistogramPlus[K]) Remove ¶
func (d HistogramPlus[K]) Remove(key K) (NewValue int)
type Interval ¶
type Interval[T constraints.Ordered] struct { // contains filtered or unexported fields }
func NewInterval ¶
func NewInterval[T constraints.Ordered](start T, end T) Interval[T]
func (Interval[T]) Kind ¶
func (i Interval[T]) Kind() IntervalKind
type IntervalKind ¶
type IntervalKind int
type Number ¶
type Number interface { constraints.Integer | constraints.Float }
type OrdInterval ¶
type OrdInterval[T constraints.Ordered] interface { Start() T End() T Values() iter.Seq[Interval[T]] // Loop through BagOfIntervals if it's required. Kind() IntervalKind // P, I, BofI Len() int String() string }
type Point ¶
type Point[T constraints.Ordered] struct { // contains filtered or unexported fields }
func (Point[T]) Kind ¶
func (i Point[T]) Kind() IntervalKind
type RelationshipKind ¶
type RelationshipKind int
The 13 relationships defined by Allen's interval algebra.
const ( PRECEDES RelationshipKind = 1 << iota // Relation (p), alias BEFORE PRECEDED_BY // Converse (P), alias AFTER MEETS // Relation (m) MET_BY // Converse (M) OVERLAPS // Relation (o) OVERLAPPED_BY // Converse (O) STARTS // Relation (s) STARTED_BY // Converse (S) DURING // Converse (d) CONTAINS // Relation (D) FINISHES // Converse (f) FINISHED_BY // Relation (F) EQUAL_INTERVAL // Relation/Converse (e) POINT_FINISHES // Point Finishes (pf) POINT_FINISHES_BY // Point Finishes by (pfi) POINT_STARTS // Point Starts (ps) POINT_STARTS_BY // Point Starts by (psi) EQUAL_POINT // Point Equal (pe) )
func Related_by ¶
func Related_by[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) (output RelationshipKind)
reverse of Relationship
func Relationship ¶
func Relationship[T constraints.Ordered](i1 OrdInterval[T], i2 OrdInterval[T]) (output RelationshipKind)
Returns one of the 13 Allen's relations between Interval1 and Interval2
func RelationshipSet ¶
func RelationshipSet(relationships ...RelationshipKind) (set RelationshipKind)
OVERLAPS, STARTS, FINISHES, CONTAINS --> 0b11001010000
func (RelationshipKind) String ¶
func (d RelationshipKind) String() (output string)