package fastautils
import (
//<<Imports>>
)
//<<Functions>>
func Clean(s *fasta.Sequence) {
d := s.Data()
i := 0
for _, c := range d {
if c == 'A' || c == 'C' ||
c == 'G' || c == 'T' ||
c == 'a' || c == 'c' ||
c == 'g' || c == 't' {
d[i] = c
i++
}
}
d = d[:i]
*s = *fasta.NewSequence(s.Header(), d)
}
"github.com/evolbioinf/fasta"
func DataToUpper(s *fasta.Sequence) {
d := s.Data()
d = bytes.ToUpper(d)
*s = *fasta.NewSequence(s.Header(), d)
}
func ReadAll(f *os.File) []*fasta.Sequence {
sc := fasta.NewScanner(f)
var s []*fasta.Sequence
for sc.ScanSequence() {
s = append(s, sc.Sequence())
}
f.Close()
return s
}
func Concatenate(seqSlice []*fasta.Sequence,
sentinel byte) (*fasta.Sequence, error) {
var err error
l := len(seqSlice)
switch {
case l > 1:
//<<Perform the concatenation>>
case l == 1:
return seqSlice[0], err
default:
err = fmt.Errorf("fastautils.Concatenate: " +
"the input slice is empty\n")
return nil, err
}
}
h := []byte(seqSlice[0].Header())
d := seqSlice[0].Data()
for i := 1; i < l; i++ {
if sentinel != 0 {
h = append(h, sentinel)
d = append(d, sentinel)
}
h = append(h, []byte(seqSlice[i].Header())...)
d = append(d, seqSlice[i].Data()...)
}
cSeq := fasta.NewSequence(string(h), d)
return cSeq, err
func AddReverseComplement(s *fasta.Sequence) {
d := s.Data()
var newD []byte
rev := fasta.NewSequence("reverse", d)
rev.ReverseComplement()
newD = append(d, '#')
newD = append(newD, rev.Data()...)
*s = *fasta.NewSequence(s.Header(), newD)
}