Files
obitools4/pkg/obiformats/fastseq_header.go

37 lines
1.3 KiB
Go
Raw Permalink Normal View History

2022-01-13 23:27:39 +01:00
package obiformats
import (
"strings"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
2022-01-13 23:27:39 +01:00
)
// ParseGuessedFastSeqHeader parses the guessed fast sequence header.
//
// The function takes a pointer to a BioSequence object as its parameter.
// It determines whether the sequence definition starts with "{" or not.
// If it does, it calls the ParseFastSeqJsonHeader function.
// If it doesn't, it calls the ParseFastSeqOBIHeader function.
func ParseGuessedFastSeqHeader(sequence *obiseq.BioSequence) {
2022-01-13 23:27:39 +01:00
if strings.HasPrefix(sequence.Definition(), "{") {
// Sequence definition starts with "{"
2022-01-13 23:27:39 +01:00
ParseFastSeqJsonHeader(sequence)
} else {
// Sequence definition does not start with "{"
2022-01-13 23:27:39 +01:00
ParseFastSeqOBIHeader(sequence)
}
}
// IParseFastSeqHeaderBatch is a function that processes a batch of biosequences and returns an iterator of biosequences.
//
// It takes an iterator of biosequences as the first parameter and accepts optional options as variadic arguments.
// The function returns an iterator of biosequences.
2023-01-22 22:04:17 +01:00
func IParseFastSeqHeaderBatch(iterator obiiter.IBioSequence,
options ...WithOption) obiiter.IBioSequence {
2022-01-13 23:27:39 +01:00
opt := MakeOptions(options)
return iterator.MakeIWorker(obiseq.AnnotatorToSeqWorker(opt.ParseFastSeqHeader()),
false,
opt.ParallelWorkers())
2022-01-13 23:27:39 +01:00
}