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  }