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 }