Skip to content

Latest commit

 

History

History
153 lines (152 loc) · 4.19 KB

fastautils.org

File metadata and controls

153 lines (152 loc) · 4.19 KB
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)
}
"bytes"
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
}
"os"
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
	  }
}
"fmt"
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)
}