func main() { fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data indices := []int{} j := 0 for i := range s { if j >= len(t) { break } if s[i] == t[j] { indices = append(indices, i) j++ } } if j < len(t) { log.Fatal("Subsequence not found") } for _, i := range indices { fmt.Printf("%v ", i+1) } fmt.Println() }
func main() { flag.Parse() var m, n int m, _ = strconv.Atoi(flag.Arg(0)) if flag.NArg() == 1 { n = m } else { n, _ = strconv.Atoi(flag.Arg(1)) } fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0] t := fasta[1] if len(s.Data) > m { s.Data = s.Data[:m] } if len(t.Data) > n { t.Data = t.Data[:n] } gene.WriteFasta(os.Stdout, s) gene.WriteFasta(os.Stdout, t) }
func main() { debug := flag.Bool("debug", false, "Show debug output") flag.Parse() strings.DebugEditDistance = *debug fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := []string{} for _, f := range fasta { s = append(s, f.Data) } scoreFunc := func(c, d int16) int32 { if c == d { return 0 } return -1 } score, a := strings.MultipleAlignment(s, scoreFunc, '-') fmt.Println(score) for _, t := range a { fmt.Println(t) } }
func main() { fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data lcs := strings.LongestCommonSubsequence(s, t) fmt.Println(lcs) }
func main() { fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data m := (1 << 27) - 1 n := strings.NumOptimalAlignments(s, t, m) fmt.Println(n) }
func main() { debug := flag.Bool("debug", false, "Show debug output") flag.Parse() strings.DebugEditDistance = *debug fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data x := strings.MaxAlignmentScore(s, t, gene.Blosum62Scores, -5) fmt.Println(x) }
func main() { debug := flag.Bool("debug", false, "Show debug output") flag.Parse() strings.DebugEditDistance = *debug fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data d := strings.EditDistance(s, t) fmt.Println(d) }
func main() { debug := flag.Bool("debug", false, "Show debug output") flag.Parse() strings.DebugEditDistance = *debug fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0].Data t := fasta[1].Data sa, ta := strings.Alignment(s, t, '-') fmt.Println(strings.HammingDistance(sa, ta)) fmt.Println(sa) fmt.Println(ta) }
func main() { fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } a := make([]string, len(fasta)) for i, f := range fasta { a[i] = f.Data } d := strings.DistanceMatrix(a, strings.PDistance) for _, row := range d { for _, x := range row { fmt.Printf("%7.5f ", x) } fmt.Println() } }
func main() { br := bufio.NewReader(os.Stdin) line, _ := br.ReadString('\n') t, err := tree.ReadNewick(strings.NewReader(line)) if err != nil { log.Fatal(err) } fasta, err := gene.ReadAllFasta(br) if err != nil { log.Fatal(err) } for _, f := range fasta { dna[f.Description] = f.Data } n = len(fasta[0].Data) d := bestDistances(t) where := make([]int32, n) total := float32(0) for i := 0; i < n; i++ { bestDist := d[i][0] where[i] = 0 for j := int32(1); j < 5; j++ { if d[i][j] < bestDist { bestDist = d[i][j] where[i] = j } } total += bestDist } fmt.Println(total) collectBestDna(t, where) }
func main() { fasta, err := gene.ReadAllFasta(os.Stdin) if err != nil { log.Fatal(err) } s := fasta[0] t := fasta[1] if len(s.Data) != len(t.Data) { log.Fatalf("Length mismatch: %d vs. %d", len(s.Data), len(t.Data)) } nTransit := float64(0) nTransver := float64(0) for i := range s.Data { switch pair(s.Data[i], t.Data[i]) { case pair('A', 'G'), pair('G', 'A'), pair('C', 'T'), pair('T', 'C'): nTransit += 1 case pair('A', 'C'), pair('C', 'A'), pair('A', 'T'), pair('T', 'A'), pair('C', 'G'), pair('G', 'C'), pair('G', 'T'), pair('T', 'G'): nTransver += 1 } } r := nTransit / nTransver fmt.Println(r) }