Ejemplo n.º 1
0
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()
}
Ejemplo n.º 2
0
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)
}
Ejemplo n.º 3
0
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)
	}
}
Ejemplo n.º 4
0
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)
}
Ejemplo n.º 5
0
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)
}
Ejemplo n.º 6
0
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)
}
Ejemplo n.º 7
0
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)
}
Ejemplo n.º 8
0
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)
}
Ejemplo n.º 9
0
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()
	}
}
Ejemplo n.º 10
0
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)
}
Ejemplo n.º 11
0
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)
}