minor optimization switching to wavefront pointers
This commit is contained in:
parent
1bbf38aaab
commit
bd720f06fb
@ -101,13 +101,13 @@ type WavefrontComponent struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewWavefrontComponent: returns initialized WavefrontComponent
|
// NewWavefrontComponent: returns initialized WavefrontComponent
|
||||||
func NewWavefrontComponent(preallocateSize int) WavefrontComponent {
|
func NewWavefrontComponent(preallocateSize int) *WavefrontComponent {
|
||||||
// new wavefront component = {
|
// new wavefront component = {
|
||||||
// lo = [0]
|
// lo = [0]
|
||||||
// hi = [0]
|
// hi = [0]
|
||||||
// W = []
|
// W = []
|
||||||
// }
|
// }
|
||||||
w := WavefrontComponent{
|
w := &WavefrontComponent{
|
||||||
lo: &PositiveSlice[int]{
|
lo: &PositiveSlice[int]{
|
||||||
data: []int{0},
|
data: []int{0},
|
||||||
valid: []bool{true},
|
valid: []bool{true},
|
||||||
|
@ -95,7 +95,7 @@ func SafeArgMin[T constraints.Integer](valids []bool, values []T) (bool, int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NextLoHi(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent, score int, penalties Penalty) (int, int) {
|
func NextLoHi(M *WavefrontComponent, I *WavefrontComponent, D *WavefrontComponent, score int, penalties Penalty) (int, int) {
|
||||||
x := penalties.X
|
x := penalties.X
|
||||||
o := penalties.O
|
o := penalties.O
|
||||||
e := penalties.E
|
e := penalties.E
|
||||||
@ -125,7 +125,7 @@ func NextLoHi(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent,
|
|||||||
return lo, hi
|
return lo, hi
|
||||||
}
|
}
|
||||||
|
|
||||||
func NextI(M WavefrontComponent, I WavefrontComponent, score int, k int, penalties Penalty) {
|
func NextI(M *WavefrontComponent, I *WavefrontComponent, score int, k int, penalties Penalty) {
|
||||||
o := penalties.O
|
o := penalties.O
|
||||||
e := penalties.E
|
e := penalties.E
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ func NextI(M WavefrontComponent, I WavefrontComponent, score int, k int, penalti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NextD(M WavefrontComponent, D WavefrontComponent, score int, k int, penalties Penalty) {
|
func NextD(M *WavefrontComponent, D *WavefrontComponent, score int, k int, penalties Penalty) {
|
||||||
o := penalties.O
|
o := penalties.O
|
||||||
e := penalties.E
|
e := penalties.E
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ func NextD(M WavefrontComponent, D WavefrontComponent, score int, k int, penalti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NextM(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent, score int, k int, penalties Penalty) {
|
func NextM(M *WavefrontComponent, I *WavefrontComponent, D *WavefrontComponent, score int, k int, penalties Penalty) {
|
||||||
x := penalties.X
|
x := penalties.X
|
||||||
|
|
||||||
a_ok, a, _ := M.GetVal(score-x, k)
|
a_ok, a, _ := M.GetVal(score-x, k)
|
||||||
|
@ -38,7 +38,7 @@ func WFAlign(s1 string, s2 string, penalties Penalty, doCIGAR bool) Result {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func WFExtend(M WavefrontComponent, s1 string, n int, s2 string, m int, score int) {
|
func WFExtend(M *WavefrontComponent, s1 string, n int, s2 string, m int, score int) {
|
||||||
_, lo, hi := M.GetLoHi(score)
|
_, lo, hi := M.GetLoHi(score)
|
||||||
for k := lo; k <= hi; k++ {
|
for k := lo; k <= hi; k++ {
|
||||||
// v = M[score][k] - k
|
// v = M[score][k] - k
|
||||||
@ -60,7 +60,7 @@ func WFExtend(M WavefrontComponent, s1 string, n int, s2 string, m int, score in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func WFNext(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent, score int, penalties Penalty) {
|
func WFNext(M *WavefrontComponent, I *WavefrontComponent, D *WavefrontComponent, score int, penalties Penalty) {
|
||||||
// get this score's lo, hi
|
// get this score's lo, hi
|
||||||
lo, hi := NextLoHi(M, I, D, score, penalties)
|
lo, hi := NextLoHi(M, I, D, score, penalties)
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ func WFNext(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent, sc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func WFBacktrace(M WavefrontComponent, I WavefrontComponent, D WavefrontComponent, score int, penalties Penalty, A_k int, A_offset uint32, s1 string, s2 string) string {
|
func WFBacktrace(M *WavefrontComponent, I *WavefrontComponent, D *WavefrontComponent, score int, penalties Penalty, A_k int, A_offset uint32, s1 string, s2 string) string {
|
||||||
x := penalties.X
|
x := penalties.X
|
||||||
o := penalties.O
|
o := penalties.O
|
||||||
e := penalties.E
|
e := penalties.E
|
||||||
|
Loading…
Reference in New Issue
Block a user