github.com/vertgenlab/gonomics@v1.0.0/genomeGraph/fastSeed.go (about)

     1  package genomeGraph
     2  
     3  import (
     4  	"log"
     5  	"sort"
     6  )
     7  
     8  func printSeedDev(a []*SeedDev) {
     9  	for i := range a {
    10  		log.Printf("tId:%d\ttStart:%d\tqStart:%d\tLen:%d\ttotalLen:%d\tposStrand:%t\n", a[i].TargetId, a[i].TargetStart, a[i].QueryStart, a[i].Length, a[i].TotalLength, a[i].PosStrand)
    11  	}
    12  }
    13  
    14  func SortSeedDevByLen(seeds []*SeedDev) {
    15  	sort.Slice(seeds, func(i, j int) bool { return CompareLenSeedDev(seeds[i], seeds[j]) == 1 })
    16  }
    17  
    18  func CompareLenSeedDev(a *SeedDev, b *SeedDev) int {
    19  	if a.TotalLength == b.TotalLength {
    20  		return 0
    21  	} else if a.TotalLength < b.TotalLength {
    22  		return -1
    23  	} else if a.TotalLength > b.TotalLength {
    24  		return 1
    25  	} else {
    26  		log.Fatalf("Error: SeedDev total length compare failed on:%d %d %d, %d %d %d\n", a.TargetId, a.TargetStart, a.TotalLength, b.TargetId, b.TargetStart, b.TotalLength)
    27  		return 0
    28  	}
    29  }
    30  
    31  func CompareSeedDev(a *SeedDev, b *SeedDev) int {
    32  	if a.TargetId == b.TargetId && a.TargetStart == b.TargetStart && a.Length == b.Length {
    33  		return 0
    34  	} else if a.TargetId < b.TargetId ||
    35  		(a.TargetId == b.TargetId && a.TargetStart < b.TargetStart) ||
    36  		(a.TargetId == b.TargetId && a.TargetStart == b.TargetStart && a.Length < b.Length) {
    37  		return -1
    38  	} else if a.TargetId > b.TargetId ||
    39  		(a.TargetId == b.TargetId && a.TargetStart > b.TargetStart) ||
    40  		(a.TargetId == b.TargetId && a.TargetStart == b.TargetStart && a.Length > b.Length) {
    41  		return 1
    42  	} else {
    43  		log.Fatalf("Error: SeedDev compare failed on:%d %d %d, %d %d %d\n", a.TargetId, a.TargetStart, a.Length, b.TargetId, b.TargetStart, b.Length)
    44  		return 0
    45  	}
    46  }