github.com/biogo/biogo@v1.0.4/align/matrix/generated.go (about)

     1  package matrix
     2  
     3  import "github.com/biogo/biogo/alphabet"
     4  
     5  // Match generates a penalty matrix for a.
     6  // Perfect matches have penalty match.
     7  // Gaps have penalty gap.
     8  // Everything else has penalty mismatch.
     9  // For example, Match(alphabet.DNA, 0, 1, -1) generates the original Needleman-Wunsch penalty matrix.
    10  func Match(a alphabet.Alphabet, gap, match, mismatch int) [][]int {
    11  	l := a.Len()
    12  	arr := make([]int, l*l)
    13  	g := a.IndexOf(a.Gap())
    14  	for i := 0; i < l; i++ {
    15  		for j := 0; j < l; j++ {
    16  			score := mismatch
    17  			switch {
    18  			case i == g, j == g:
    19  				score = gap
    20  			case i == j:
    21  				score = match
    22  			}
    23  			arr[i*l+j] = score
    24  		}
    25  	}
    26  	x := make([][]int, l)
    27  	for i := 0; i < l; i++ {
    28  		x[i] = arr[i*l : (i+1)*l]
    29  	}
    30  	return x
    31  }