Documentation ¶
Overview ¶
Package rangeset has set operations on ranges: Union, Intersect and Difference
Example ¶
package main import ( "fmt" "github.com/brentp/go-athenaeum/rangeset" ) func main() { chromLength := 1000 genes, _ := rangeset.New(0, chromLength) genes.SetRange(100, 200) genes.SetRange(250, 350) genes.SetRange(900, 950) regions, _ := rangeset.New(0, chromLength) regions.SetRange(150, 250) regions.SetRange(500, 925) fmt.Println("genes :", genes.Ranges()) fmt.Println("regions :", regions.Ranges()) fmt.Println("genes ∩ regions:", rangeset.Intersection(genes, regions).Ranges()) fmt.Println("genes ∪ regions:", rangeset.Union(genes, regions).Ranges()) fmt.Println("genes - regions:", rangeset.Difference(genes, regions).Ranges()) fmt.Println("regions - genes:", rangeset.Difference(regions, genes).Ranges()) }
Output: genes : [Range(100-200) Range(250-350) Range(900-950)] regions : [Range(150-250) Range(500-925)] genes ∩ regions: [Range(150-200) Range(900-925)] genes ∪ regions: [Range(100-350) Range(500-950)] genes - regions: [Range(100-150) Range(250-350) Range(925-950)] regions - genes: [Range(200-250) Range(500-900)]
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type RangeSet ¶
type RangeSet struct {
// contains filtered or unexported fields
}
RangeSet acts like a bitvector where the interval values for true can be extracted.
func Difference ¶
Difference returns a new RangeSet with regions in a that are absent from b.
func Intersection ¶
Intersection returns a new RangeSet with intersecting regions from a and b.
func (*RangeSet) ClearRange ¶
ClearRange sets the values between start and end to false.
Click to show internal directories.
Click to hide internal directories.