本文整理汇总了Golang中github.com/biogo/biogo/alphabet.Letters类的典型用法代码示例。如果您正苦于以下问题:Golang Letters类的具体用法?Golang Letters怎么用?Golang Letters使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Letters类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: drawSWTableLetters
//line sw_type.got:17
func drawSWTableLetters(rSeq, qSeq alphabet.Letters, index alphabet.Index, table []int, a [][]int) {
tw := tabwriter.NewWriter(os.Stdout, 0, 0, 0, ' ', tabwriter.AlignRight|tabwriter.Debug)
fmt.Printf("rSeq: %s\n", rSeq)
fmt.Printf("qSeq: %s\n", qSeq)
fmt.Fprint(tw, "\tqSeq\t")
for _, l := range qSeq {
fmt.Fprintf(tw, "%c\t", l)
}
fmt.Fprintln(tw)
r, c := rSeq.Len()+1, qSeq.Len()+1
fmt.Fprint(tw, "rSeq\t")
for i := 0; i < r; i++ {
if i != 0 {
fmt.Fprintf(tw, "%c\t", rSeq[i-1])
}
for j := 0; j < c; j++ {
p := pointerSWLetters(rSeq, qSeq, i, j, table, index, a, c)
fmt.Fprintf(tw, "%s %3v\t", p, table[i*c+j])
}
fmt.Fprintln(tw)
}
tw.Flush()
}
示例2: drawSWAffineTableLetters
//line sw_affine_type.got:17
func drawSWAffineTableLetters(rSeq, qSeq alphabet.Letters, index alphabet.Index, table [][3]int, a SWAffine) {
tw := tabwriter.NewWriter(os.Stdout, 0, 0, 0, ' ', tabwriter.AlignRight|tabwriter.Debug)
fmt.Printf("rSeq: %s\n", rSeq)
fmt.Printf("qSeq: %s\n", qSeq)
for l := 0; l < 3; l++ {
fmt.Fprintf(tw, "%c\tqSeq\t", "MUL"[l])
for _, l := range qSeq {
fmt.Fprintf(tw, "%c\t", l)
}
fmt.Fprintln(tw)
r, c := rSeq.Len()+1, qSeq.Len()+1
fmt.Fprint(tw, "rSeq\t")
for i := 0; i < r; i++ {
if i != 0 {
fmt.Fprintf(tw, "%c\t", rSeq[i-1])
}
for j := 0; j < c; j++ {
p := pointerSWAffineLetters(rSeq, qSeq, i, j, l, table, index, a, c)
var vi interface{}
if vi = table[i*c+j][l]; vi == minInt {
vi = "-Inf"
}
fmt.Fprintf(tw, "%s % 4v\t", p, vi)
}
fmt.Fprintln(tw)
}
fmt.Fprintln(tw)
}
tw.Flush()
}
示例3: alignLetters
func (a SWAffine) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a.Matrix)
if let < alpha.Len() {
return nil, ErrMatrixWrongSize{Size: let, Len: alpha.Len()}
}
la := make([]int, 0, let*let)
for _, row := range a.Matrix {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([][3]int, r*c)
var (
index = alpha.LetterIndex()
maxS, maxI, maxJ = 0, 0, 0
score int
scores [3]int
)
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
p := i*c + j
scores = [3]int{
diag: table[p-c-1][diag],
up: table[p-c-1][up],
left: table[p-c-1][left],
}
score = max(&scores)
matched := score == scores[diag]
score += la[rVal*let+qVal]
switch {
case score > 0:
if score >= maxS && matched {
maxS, maxI, maxJ = score, i, j
}
default:
score = 0
}
table[p][diag] = score
score = max2(
table[p-c][diag]+a.GapOpen+la[rVal*let],
table[p-c][up]+la[rVal*let],
)
if score < 0 {
score = 0
}
table[p][up] = score
score = max2(
table[p-1][diag]+a.GapOpen+la[qVal],
table[p-1][left]+la[qVal],
)
if score < 0 {
score = 0
}
table[p][left] = score
}
}
if debugSmithAffine {
drawSWAffineTableLetters(rSeq, qSeq, index, table, a)
}
var aln []feat.Pair
score, last, layer := 0, diag, diag
i, j := maxI, maxJ
loop:
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
switch p := i*c + j; table[p][layer] {
case 0:
break loop
case table[p-c][up] + la[rVal*let]:
if last != up && p != len(table)-1 {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
//.........这里部分代码省略.........
示例4: alignLetters
func (a SW) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a)
la := make([]int, 0, let*let)
for _, row := range a {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([]int, r*c)
var (
index = alpha.LetterIndex()
maxS, maxI, maxJ = 0, 0, 0
score int
scores [3]int
)
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
p := i*c + j
scores = [3]int{
diag: table[p-c-1] + la[rVal*let+qVal],
up: table[p-c] + la[rVal*let],
left: table[p-1] + la[qVal],
}
score = max(&scores)
switch {
case score > 0:
if score >= maxS && score == scores[diag] {
maxS, maxI, maxJ = score, i, j
}
default:
score = 0
}
table[p] = score
}
}
if debugSmith {
drawSWTableLetters(rSeq, qSeq, index, table, a)
}
var aln []feat.Pair
score, last := 0, diag
i, j := maxI, maxJ
loop:
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
switch p := i*c + j; table[p] {
case 0:
break loop
case table[p-c-1] + la[rVal*let+qVal]:
if last != diag {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c-1]
i--
j--
last = diag
case table[p-c] + la[rVal*let]:
if last != up {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c]
i--
last = up
case table[p-1] + la[qVal]:
if last != left {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
//.........这里部分代码省略.........
示例5: alignLetters
func (a NWAffine) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a.Matrix)
la := make([]int, 0, let*let)
for _, row := range a.Matrix {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
index := alpha.LetterIndex()
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([][3]int, r*c)
table[0] = [3]int{
diag: 0,
up: minInt,
left: minInt,
}
table[1] = [3]int{
diag: minInt,
up: minInt,
left: a.GapOpen + la[index[qSeq[0]]],
}
for j := range table[2:c] {
table[j+2] = [3]int{
diag: minInt,
up: minInt,
left: table[j+1][left] + la[index[qSeq[j+1]]],
}
}
table[c] = [3]int{
diag: minInt,
up: a.GapOpen + la[index[rSeq[0]]*let],
left: minInt,
}
for i := 2; i < r; i++ {
table[i*c] = [3]int{
diag: minInt,
up: table[(i-1)*c][up] + la[index[rSeq[i-1]]*let],
left: minInt,
}
}
var scores [3]int
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
p := i*c + j
scores = [3]int{
diag: table[p-c-1][diag],
up: table[p-c-1][up],
left: table[p-c-1][left],
}
table[p][diag] = max(&scores) + la[rVal*let+qVal]
table[p][up] = max2(
add(table[p-c][diag], a.GapOpen+la[rVal*let]),
add(table[p-c][up], la[rVal*let]),
)
table[p][left] = max2(
add(table[p-1][diag], a.GapOpen+la[qVal]),
add(table[p-1][left], la[qVal]),
)
}
}
if debugNeedleAffine {
drawNWAffineTableLetters(rSeq, qSeq, index, table, a)
}
var (
aln []feat.Pair
layer int
)
score, last := 0, diag
i, j := r-1, c-1
t := table[i*c+j]
best := t[0]
for i, s := range t[1:] {
if s > best {
best, layer = s, i+1
}
}
maxI, maxJ := i, j
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
switch p := i*c + j; table[p][layer] {
case table[p-c][up] + la[rVal*let]:
//.........这里部分代码省略.........
示例6: alignLetters
func (a Fitted) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a)
la := make([]int, 0, let*let)
for _, row := range a {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
index := alpha.LetterIndex()
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([]int, r*c)
for j := range table[1:c] {
table[j+1] = table[j] + la[index[qSeq[j]]]
}
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 {
return nil, fmt.Errorf("align: illegal letter %q at position %d in rSeq", rSeq[i-1], i-1)
}
if qVal < 0 {
return nil, fmt.Errorf("align: illegal letter %q at position %d in qSeq", qSeq[j-1], j-1)
}
p := i*c + j
diagScore := table[p-c-1] + la[rVal*let+qVal]
upScore := table[p-c] + la[rVal*let]
leftScore := table[p-1] + la[qVal]
table[p] = max3(diagScore, upScore, leftScore)
}
}
if debugFitted {
drawFittedTableLetters(rSeq, qSeq, index, table, a)
}
var aln []feat.Pair
score, last := 0, diag
max := minInt
var (
i int
j = c - 1
qVal int
)
for {
qVal = index[qSeq[j-1]]
if qVal >= 0 {
break
}
j--
}
for y := 1; y < r; y++ {
v := table[(y*c)+c-1]
rVal := index[rSeq[y-1]]
if rVal < 0 {
continue
}
if v >= max && la[rVal*let+qVal] >= 0 {
i = y
max = v
}
}
maxI, maxJ := i, j
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
switch p := i*c + j; table[p] {
case table[p-c-1] + la[rVal*let+qVal]:
if last != diag {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c-1]
i--
j--
last = diag
case table[p-c] + la[rVal*let]:
if last != up && p != len(table)-1 {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c]
//.........这里部分代码省略.........
示例7: alignLetters
func (a FittedAffine) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a.Matrix)
la := make([]int, 0, let*let)
for _, row := range a.Matrix {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
index := alpha.LetterIndex()
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([][3]int, r*c)
table[0] = [3]int{
diag: 0,
up: minInt,
left: minInt,
}
table[1] = [3]int{
diag: minInt,
up: minInt,
}
table[1][left] = a.GapOpen + la[index[qSeq[0]]]
for j := range table[2:c] {
table[j+2] = [3]int{
diag: minInt,
up: minInt,
left: table[j+1][left] + la[index[qSeq[j+1]]],
}
}
table[c] = [3]int{
diag: minInt,
left: minInt,
}
for i := 2; i < r; i++ {
table[i*c] = [3]int{
diag: minInt,
left: minInt,
}
}
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 {
return nil, fmt.Errorf("align: illegal letter %q at position %d in rSeq", rSeq[i-1], i-1)
}
if qVal < 0 {
return nil, fmt.Errorf("align: illegal letter %q at position %d in qSeq", qSeq[j-1], j-1)
}
p := i*c + j
diagScore := table[p-c-1][diag]
upScore := table[p-c-1][up]
leftScore := table[p-c-1][left]
table[p][diag] = max3(diagScore, upScore, leftScore) + la[rVal*let+qVal]
table[p][up] = max2(
add(table[p-c][diag], a.GapOpen+la[rVal*let]),
add(table[p-c][up], la[rVal*let]),
)
table[p][left] = max2(
add(table[p-1][diag], a.GapOpen+la[qVal]),
add(table[p-1][left], la[qVal]),
)
}
}
if debugFittedAffine {
drawFittedAffineTableLetters(rSeq, qSeq, index, table, a)
}
var aln []feat.Pair
score, last, layer := 0, diag, diag
var (
i int
j = c - 1
)
max := minInt
for y := 1; y < r; y++ {
v := table[(y*c)+c-1][diag]
if v >= max {
i = y
max = v
}
}
maxI, maxJ := i, j
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
switch p := i*c + j; table[p][layer] {
case table[p-c][up] + la[rVal*let]:
if last != up && p != len(table)-1 {
aln = append(aln, &featPair{
//.........这里部分代码省略.........
示例8: alignLetters
func (a NW) alignLetters(rSeq, qSeq alphabet.Letters, alpha alphabet.Alphabet) ([]feat.Pair, error) {
let := len(a)
if let < alpha.Len() {
return nil, ErrMatrixWrongSize{Size: let, Len: alpha.Len()}
}
la := make([]int, 0, let*let)
for _, row := range a {
if len(row) != let {
return nil, ErrMatrixNotSquare
}
la = append(la, row...)
}
index := alpha.LetterIndex()
r, c := rSeq.Len()+1, qSeq.Len()+1
table := make([]int, r*c)
for j := range table[1:c] {
table[j+1] = table[j] + la[index[qSeq[j]]]
}
for i := 1; i < r; i++ {
table[i*c] = table[(i-1)*c] + la[index[rSeq[i-1]]*let]
}
var scores [3]int
for i := 1; i < r; i++ {
for j := 1; j < c; j++ {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
p := i*c + j
scores = [3]int{
diag: table[p-c-1] + la[rVal*let+qVal],
up: table[p-c] + la[rVal*let],
left: table[p-1] + la[qVal],
}
table[p] = max(&scores)
}
}
if debugNeedle {
drawNWTableLetters(rSeq, qSeq, index, table, a)
}
var aln []feat.Pair
score, last := 0, diag
i, j := r-1, c-1
maxI, maxJ := i, j
for i > 0 && j > 0 {
var (
rVal = index[rSeq[i-1]]
qVal = index[qSeq[j-1]]
)
if rVal < 0 || qVal < 0 {
continue
}
switch p := i*c + j; table[p] {
case table[p-c-1] + la[rVal*let+qVal]:
if last != diag {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c-1]
i--
j--
last = diag
case table[p-c] + la[rVal*let]:
if last != up && p != len(table)-1 {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-c]
i--
last = up
case table[p-1] + la[qVal]:
if last != left && p != len(table)-1 {
aln = append(aln, &featPair{
a: feature{start: i, end: maxI},
b: feature{start: j, end: maxJ},
score: score,
})
maxI, maxJ = i, j
score = 0
}
score += table[p] - table[p-1]
j--
last = left
default:
//.........这里部分代码省略.........