diff options
Diffstat (limited to 'test/bench/k-nucleotide.go')
| -rw-r--r-- | test/bench/k-nucleotide.go | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/test/bench/k-nucleotide.go b/test/bench/k-nucleotide.go index 47debecb3..a5c7f79bb 100644 --- a/test/bench/k-nucleotide.go +++ b/test/bench/k-nucleotide.go @@ -36,71 +36,71 @@ POSSIBILITY OF SUCH DAMAGE. package main import ( - "bufio"; - "bytes"; - "fmt"; - "io/ioutil"; - "os"; - "sort"; - "strings"; + "bufio" + "bytes" + "fmt" + "io/ioutil" + "os" + "sort" + "strings" ) var in *bufio.Reader func count(data string, n int) map[string]int { - counts := make(map[string]int); - top := len(data) - n; + counts := make(map[string]int) + top := len(data) - n for i := 0; i <= top; i++ { - s := data[i : i+n]; + s := data[i : i+n] if k, ok := counts[s]; ok { counts[s] = k + 1 } else { counts[s] = 1 } } - return counts; + return counts } func countOne(data string, s string) int { - counts := count(data, len(s)); + counts := count(data, len(s)) if i, ok := counts[s]; ok { return i } - return 0; + return 0 } type kNuc struct { - name string; - count int; + name string + count int } type kNucArray []kNuc -func (kn kNucArray) Len() int { return len(kn) } -func (kn kNucArray) Swap(i, j int) { kn[i], kn[j] = kn[j], kn[i] } +func (kn kNucArray) Len() int { return len(kn) } +func (kn kNucArray) Swap(i, j int) { kn[i], kn[j] = kn[j], kn[i] } func (kn kNucArray) Less(i, j int) bool { if kn[i].count == kn[j].count { - return kn[i].name > kn[j].name // sort down + return kn[i].name > kn[j].name // sort down } - return kn[i].count > kn[j].count; + return kn[i].count > kn[j].count } func sortedArray(m map[string]int) kNucArray { - kn := make(kNucArray, len(m)); - i := 0; + kn := make(kNucArray, len(m)) + i := 0 for k, v := range m { - kn[i].name = k; - kn[i].count = v; - i++; + kn[i].name = k + kn[i].count = v + i++ } - sort.Sort(kn); - return kn; + sort.Sort(kn) + return kn } func print(m map[string]int) { - a := sortedArray(m); - sum := 0; + a := sortedArray(m) + sum := 0 for _, kn := range a { sum += kn.count } @@ -110,40 +110,40 @@ func print(m map[string]int) { } func main() { - in = bufio.NewReader(os.Stdin); - three := strings.Bytes(">THREE "); + in = bufio.NewReader(os.Stdin) + three := strings.Bytes(">THREE ") for { - line, err := in.ReadSlice('\n'); + line, err := in.ReadSlice('\n') if err != nil { - fmt.Fprintln(os.Stderr, "ReadLine err:", err); - os.Exit(2); + fmt.Fprintln(os.Stderr, "ReadLine err:", err) + os.Exit(2) } if line[0] == '>' && bytes.Equal(line[0:len(three)], three) { break } } - data, err := ioutil.ReadAll(in); + data, err := ioutil.ReadAll(in) if err != nil { - fmt.Fprintln(os.Stderr, "ReadAll err:", err); - os.Exit(2); + fmt.Fprintln(os.Stderr, "ReadAll err:", err) + os.Exit(2) } // delete the newlines and convert to upper case - j := 0; + j := 0 for i := 0; i < len(data); i++ { if data[i] != '\n' { - data[j] = data[i] &^ ' '; // upper case - j++; + data[j] = data[i] &^ ' ' // upper case + j++ } } - str := string(data[0:j]); + str := string(data[0:j]) - print(count(str, 1)); - fmt.Print("\n"); + print(count(str, 1)) + fmt.Print("\n") - print(count(str, 2)); - fmt.Print("\n"); + print(count(str, 2)) + fmt.Print("\n") - interests := []string{"GGT", "GGTA", "GGTATT", "GGTATTTTAATT", "GGTATTTTAATTTATAGT"}; + interests := []string{"GGT", "GGTA", "GGTATT", "GGTATTTTAATT", "GGTATTTTAATTTATAGT"} for _, s := range interests { fmt.Printf("%d %s\n", countOne(str, s), s) } |
