mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-12-08 16:50:27 +00:00
change the model for representing paired reads and extend its usage to other commands
This commit is contained in:
@@ -69,7 +69,7 @@ func WriteFasta(iterator obiiter.IBioSequence,
|
||||
options ...WithOption) (obiiter.IBioSequence, error) {
|
||||
opt := MakeOptions(options)
|
||||
|
||||
file,_ = goutils.CompressStream(file,opt.CompressedFile(),opt.CloseFile())
|
||||
file, _ = goutils.CompressStream(file, opt.CompressedFile(), opt.CloseFile())
|
||||
|
||||
buffsize := iterator.BufferSize()
|
||||
newIter := obiiter.MakeIBioSequence(buffsize)
|
||||
@@ -136,7 +136,7 @@ func WriteFasta(iterator obiiter.IBioSequence,
|
||||
}
|
||||
|
||||
file.Close()
|
||||
|
||||
|
||||
log.Debugln("End of the fasta file writing")
|
||||
obiiter.UnregisterPipe()
|
||||
waitWriter.Done()
|
||||
@@ -156,7 +156,6 @@ func WriteFastaToFile(iterator obiiter.IBioSequence,
|
||||
filename string,
|
||||
options ...WithOption) (obiiter.IBioSequence, error) {
|
||||
|
||||
|
||||
opt := MakeOptions(options)
|
||||
flags := os.O_WRONLY | os.O_CREATE
|
||||
|
||||
@@ -164,7 +163,6 @@ func WriteFastaToFile(iterator obiiter.IBioSequence,
|
||||
flags |= os.O_APPEND
|
||||
}
|
||||
file, err := os.OpenFile(filename, flags, 0660)
|
||||
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("open file error: %v", err)
|
||||
@@ -173,5 +171,18 @@ func WriteFastaToFile(iterator obiiter.IBioSequence,
|
||||
|
||||
options = append(options, OptionCloseFile())
|
||||
|
||||
return WriteFasta(iterator, file, options...)
|
||||
iterator, err = WriteFasta(iterator, file, options...)
|
||||
|
||||
if opt.HaveToSavePaired() {
|
||||
var revfile *os.File
|
||||
|
||||
revfile, err = os.OpenFile(opt.PairedFileName(), flags, 0660)
|
||||
if err != nil {
|
||||
log.Fatalf("open file error: %v", err)
|
||||
return obiiter.NilIBioSequence, err
|
||||
}
|
||||
iterator, err = WriteFasta(iterator.PairedWith(), revfile, options...)
|
||||
}
|
||||
|
||||
return iterator, err
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func WriteFastq(iterator obiiter.IBioSequence,
|
||||
options ...WithOption) (obiiter.IBioSequence, error) {
|
||||
opt := MakeOptions(options)
|
||||
|
||||
file,_ = goutils.CompressStream(file,opt.CompressedFile(),opt.CloseFile())
|
||||
file, _ = goutils.CompressStream(file, opt.CompressedFile(), opt.CloseFile())
|
||||
|
||||
buffsize := iterator.BufferSize()
|
||||
newIter := obiiter.MakeIBioSequence(buffsize)
|
||||
@@ -152,7 +152,7 @@ func WriteFastqToFile(iterator obiiter.IBioSequence,
|
||||
flags |= os.O_APPEND
|
||||
}
|
||||
file, err := os.OpenFile(filename, flags, 0660)
|
||||
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("open file error: %v", err)
|
||||
return obiiter.NilIBioSequence, err
|
||||
@@ -160,5 +160,18 @@ func WriteFastqToFile(iterator obiiter.IBioSequence,
|
||||
|
||||
options = append(options, OptionCloseFile())
|
||||
|
||||
return WriteFastq(iterator, file, options...)
|
||||
iterator, err = WriteFastq(iterator, file, options...)
|
||||
|
||||
if opt.HaveToSavePaired() {
|
||||
var revfile *os.File
|
||||
|
||||
revfile, err = os.OpenFile(opt.PairedFileName(), flags, 0660)
|
||||
if err != nil {
|
||||
log.Fatalf("open file error: %v", err)
|
||||
return obiiter.NilIBioSequence, err
|
||||
}
|
||||
iterator, err = WriteFastq(iterator.PairedWith(), revfile, options...)
|
||||
}
|
||||
|
||||
return iterator, err
|
||||
}
|
||||
|
||||
@@ -15,6 +15,11 @@ type __options__ struct {
|
||||
closefile bool
|
||||
appendfile bool
|
||||
compressed bool
|
||||
csv_ids bool
|
||||
cvs_sequence bool
|
||||
csv_definition bool
|
||||
csv_separator string
|
||||
paired_filename string
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
@@ -35,6 +40,11 @@ func MakeOptions(setters []WithOption) Options {
|
||||
closefile: false,
|
||||
appendfile: false,
|
||||
compressed: false,
|
||||
csv_ids: true,
|
||||
csv_definition: false,
|
||||
cvs_sequence: true,
|
||||
csv_separator: ",",
|
||||
paired_filename: "",
|
||||
}
|
||||
|
||||
opt := Options{&o}
|
||||
@@ -86,6 +96,18 @@ func (opt Options) CompressedFile() bool {
|
||||
return opt.pointer.compressed
|
||||
}
|
||||
|
||||
func (opt Options) CSVIds() bool {
|
||||
return opt.pointer.csv_ids
|
||||
}
|
||||
|
||||
func (opt Options) HaveToSavePaired() bool {
|
||||
return opt.pointer.paired_filename != ""
|
||||
}
|
||||
|
||||
func (opt Options) PairedFileName() string {
|
||||
return opt.pointer.paired_filename
|
||||
}
|
||||
|
||||
func OptionsBufferSize(size int) WithOption {
|
||||
f := WithOption(func(opt Options) {
|
||||
opt.pointer.buffer_size = size
|
||||
@@ -216,3 +238,12 @@ func OptionsWithoutProgressBar() WithOption {
|
||||
|
||||
return f
|
||||
}
|
||||
|
||||
func WritePairedReadsTo(filename string) WithOption {
|
||||
f := WithOption(func(opt Options) {
|
||||
opt.pointer.paired_filename = filename
|
||||
})
|
||||
|
||||
return f
|
||||
}
|
||||
|
||||
|
||||
@@ -69,5 +69,19 @@ func WriteSequencesToFile(iterator obiiter.IBioSequence,
|
||||
}
|
||||
|
||||
options = append(options, OptionCloseFile())
|
||||
return WriteSequence(iterator, file, options...)
|
||||
|
||||
iterator, err = WriteSequence(iterator, file, options...)
|
||||
|
||||
if opt.HaveToSavePaired() {
|
||||
var revfile *os.File
|
||||
|
||||
revfile, err = os.OpenFile(opt.PairedFileName(), flags, 0660)
|
||||
if err != nil {
|
||||
log.Fatalf("open file error: %v", err)
|
||||
return obiiter.NilIBioSequence, err
|
||||
}
|
||||
iterator, err = WriteSequence(iterator.PairedWith(), revfile, options...)
|
||||
}
|
||||
|
||||
return iterator, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user