github.com/biogo/biogo@v1.0.4/align/sw_example_test.go (about) 1 // Copyright ©2011-2013 The bíogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package align 6 7 import ( 8 "github.com/biogo/biogo/alphabet" 9 "github.com/biogo/biogo/seq/linear" 10 11 "fmt" 12 ) 13 14 func ExampleSW_Align_a() { 15 swsa := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("ACACACTA"))} 16 swsa.Alpha = alphabet.DNAgapped 17 swsb := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("AGCACACA"))} 18 swsb.Alpha = alphabet.DNAgapped 19 20 // w(gap) = -1 21 // w(match) = +2 22 // w(mismatch) = -1 23 smith := SW{ 24 {0, -1, -1, -1, -1}, 25 {-1, 2, -1, -1, -1}, 26 {-1, -1, 2, -1, -1}, 27 {-1, -1, -1, 2, -1}, 28 {-1, -1, -1, -1, 2}, 29 } 30 31 aln, err := smith.Align(swsa, swsb) 32 if err == nil { 33 fmt.Printf("%v\n", aln) 34 fa := Format(swsa, swsb, aln, '-') 35 fmt.Printf("%s\n%s\n", fa[0], fa[1]) 36 } 37 // Output: 38 // [[0,1)/[0,1)=2 -/[1,2)=-1 [1,6)/[2,7)=10 [6,7)/-=-1 [7,8)/[7,8)=2] 39 // A-CACACTA 40 // AGCACAC-A 41 } 42 43 func ExampleSW_Align_b() { 44 swsa := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("AAAATTTAAAA"))} 45 swsa.Alpha = alphabet.DNAgapped 46 swsb := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("AAAAGGGAAAA"))} 47 swsb.Alpha = alphabet.DNAgapped 48 49 // w(gap) = 0 50 // w(match) = +2 51 // w(mismatch) = -1 52 smith := SW{ 53 {0, 0, 0, 0, 0}, 54 {0, 2, -1, -1, -1}, 55 {0, -1, 2, -1, -1}, 56 {0, -1, -1, 2, -1}, 57 {0, -1, -1, -1, 2}, 58 } 59 60 aln, err := smith.Align(swsa, swsb) 61 if err == nil { 62 fmt.Printf("%v\n", aln) 63 fa := Format(swsa, swsb, aln, '-') 64 fmt.Printf("%s\n%s\n", fa[0], fa[1]) 65 } 66 // Output: 67 // [[0,4)/[0,4)=8 -/[4,7)=0 [4,7)/-=0 [7,11)/[7,11)=8] 68 // AAAA---TTTAAAA 69 // AAAAGGG---AAAA 70 } 71 72 func ExampleSWAffine_Align() { 73 swsa := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("ATAGGAAG"))} 74 swsa.Alpha = alphabet.DNAgapped 75 swsb := &linear.Seq{Seq: alphabet.BytesToLetters([]byte("ATTGGCAATG"))} 76 swsb.Alpha = alphabet.DNAgapped 77 78 // Query letter 79 // - A C G T 80 // - 0 -1 -1 -1 -1 81 // A -1 1 -1 -1 -1 82 // C -1 -1 1 -1 -1 83 // G -1 -1 -1 1 -1 84 // T -1 -1 -1 -1 1 85 // 86 // Gap open: -5 87 smith := SWAffine{ 88 Matrix: Linear{ 89 {0, -1, -1, -1, -1}, 90 {-1, 1, -1, -1, -1}, 91 {-1, -1, 1, -1, -1}, 92 {-1, -1, -1, 1, -1}, 93 {-1, -1, -1, -1, 1}, 94 }, 95 GapOpen: -5, 96 } 97 98 aln, err := smith.Align(swsa, swsb) 99 if err == nil { 100 fmt.Printf("%s\n", aln) 101 fa := Format(swsa, swsb, aln, '-') 102 fmt.Printf("%s\n%s\n", fa[0], fa[1]) 103 } 104 // Output: 105 // [[0,7)/[0,7)=3] 106 // ATAGGAA 107 // ATTGGCA 108 }