move the worker class to the obiseq package

This commit is contained in:
2023-01-22 22:39:13 +01:00
parent f97f92df72
commit 2d375df94f
12 changed files with 153 additions and 43 deletions

View File

@@ -64,3 +64,12 @@ func (sequence *BioSequence) _revcmpMutation() *BioSequence {
return sequence
}
func ReverseComplementWorker(inplace bool) SeqWorker {
f := func(input *BioSequence) *BioSequence {
return input.ReverseComplement(inplace)
}
return f
}

31
pkg/obiseq/worker.go Normal file
View File

@@ -0,0 +1,31 @@
package obiseq
type SeqAnnotator func(*BioSequence)
type SeqWorker func(*BioSequence) *BioSequence
type SeqSliceWorker func(BioSequenceSlice) BioSequenceSlice
func AnnotatorToSeqWorker(function SeqAnnotator) SeqWorker {
f := func(seq *BioSequence) *BioSequence {
function(seq)
return seq
}
return f
}
func SeqToSliceWorker(worker SeqWorker, inplace bool) SeqSliceWorker {
f := func(input BioSequenceSlice) BioSequenceSlice {
output := input
if (! inplace) {
output = MakeBioSequenceSlice()
}
for i,s := range(input) {
output[i] = worker(s)
}
return output
}
return f
}