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 }