func (r *Reader) Read(p []byte) (n int, err error) { n = 0 buf := bytes.NewBuffer(nil) if r.overflow != nil { ln, _ := buf.Write(r.overflow) n += ln } for { seq, er := r.r.Read() if er != nil { if er == io.EOF { copy(p[0:n], buf.Bytes()[0:n]) } err = er break } ln, _ := fasta.Format(seq, buf) if n+ln > cap(p) { copy(p[0:n], buf.Bytes()[0:n]) r.overflow = buf.Bytes()[n:] break } else { n += ln } } return }
func (r *Reader) Format(s *seq.Seq, w io.Writer) (n int, err error) { switch { case r.format == "fasta": return fasta.Format(s, w) case r.format == "fastq": return fastq.Format(s, w) case r.format == "sam": return sam.Format(s, w) } return 0, errors.New("unknown sequence format") }