Big change iin the data model, and a first version of obiuniq

This commit is contained in:
2022-02-21 19:00:23 +01:00
parent 9737f97084
commit 2e7c1834b0
43 changed files with 664 additions and 440 deletions

View File

@ -65,24 +65,24 @@ func _BuildAlignment(seqA, seqB []byte, path []int, gap byte, bufferA, bufferB *
// In that case an arena will be allocated by the function but, it will not
// be reusable for other alignments and desallocated at the BuildAlignment
// return.
func BuildAlignment(seqA, seqB obiseq.BioSequence,
path []int, gap byte) (obiseq.BioSequence, obiseq.BioSequence) {
func BuildAlignment(seqA, seqB *obiseq.BioSequence,
path []int, gap byte) (*obiseq.BioSequence, *obiseq.BioSequence) {
bufferSA := obiseq.GetSlice()
defer obiseq.RecycleSlice(bufferSA)
defer obiseq.RecycleSlice(&bufferSA)
bufferSB := obiseq.GetSlice()
defer obiseq.RecycleSlice(bufferSB)
defer obiseq.RecycleSlice(&bufferSB)
_BuildAlignment(seqA.Sequence(), seqB.Sequence(), path, gap,
&bufferSA,
&bufferSB)
seqA = obiseq.MakeBioSequence(seqA.Id(),
seqA = obiseq.NewBioSequence(seqA.Id(),
bufferSA,
seqA.Definition())
seqB = obiseq.MakeBioSequence(seqB.Id(),
seqB = obiseq.NewBioSequence(seqB.Id(),
bufferSB,
seqB.Definition())
@ -110,15 +110,15 @@ func BuildAlignment(seqA, seqB obiseq.BioSequence,
// In that case arenas will be allocated by the function but, they will not
// be reusable for other alignments and desallocated at the BuildQualityConsensus
// return.
func BuildQualityConsensus(seqA, seqB obiseq.BioSequence, path []int) (obiseq.BioSequence, int) {
func BuildQualityConsensus(seqA, seqB *obiseq.BioSequence, path []int) (*obiseq.BioSequence, int) {
bufferSA := obiseq.GetSlice()
bufferSB := obiseq.GetSlice()
defer obiseq.RecycleSlice(bufferSB)
defer obiseq.RecycleSlice(&bufferSB)
bufferQA := obiseq.GetSlice()
bufferQB := obiseq.GetSlice()
defer obiseq.RecycleSlice(bufferQB)
defer obiseq.RecycleSlice(&bufferQB)
_BuildAlignment(seqA.Sequence(), seqB.Sequence(), path, ' ',
&bufferSA, &bufferSB)
@ -178,7 +178,7 @@ func BuildQualityConsensus(seqA, seqB obiseq.BioSequence, path []int) (obiseq.Bi
bufferQA[i] = q
}
consSeq := obiseq.MakeBioSequence(
consSeq := obiseq.NewBioSequence(
seqA.Id(),
bufferSA,
seqA.Definition(),

View File

@ -57,7 +57,7 @@ var _FourBitsBaseDecode = []byte{
// by the ambiguity set to 1.
// A byte slice can be provided (buffer) to preveent allocation of a new
// memory chunk by th function.
func Encode4bits(seq obiseq.BioSequence, buffer []byte) []byte {
func Encode4bits(seq *obiseq.BioSequence, buffer []byte) []byte {
length := seq.Length()
rawseq := seq.Sequence()

View File

@ -220,7 +220,7 @@ func _FillMatrixPeRightAlign(seqA, qualA, seqB, qualB []byte, gap float64,
return _GetMatrix(scoreMatrix, la, la-1, lb1)
}
func PELeftAlign(seqA, seqB obiseq.BioSequence, gap float64,
func PELeftAlign(seqA, seqB *obiseq.BioSequence, gap float64,
arena PEAlignArena) (int, []int) {
if !_InitializedDnaScore {
@ -244,7 +244,7 @@ func PELeftAlign(seqA, seqB obiseq.BioSequence, gap float64,
return score, arena.pointer.path
}
func PERightAlign(seqA, seqB obiseq.BioSequence, gap float64,
func PERightAlign(seqA, seqB *obiseq.BioSequence, gap float64,
arena PEAlignArena) (int, []int) {
if !_InitializedDnaScore {
@ -268,7 +268,7 @@ func PERightAlign(seqA, seqB obiseq.BioSequence, gap float64,
return score, arena.pointer.path
}
func PEAlign(seqA, seqB obiseq.BioSequence,
func PEAlign(seqA, seqB *obiseq.BioSequence,
gap float64, delta int,
arena PEAlignArena) (int, []int) {
var score, shift int