github.com/biogo/biogo@v1.0.4/io/seqio/fasta/fasta_example_test.go (about) 1 // Copyright ©2020 The bíogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package fasta_test 6 7 import ( 8 "fmt" 9 "log" 10 "strings" 11 12 "github.com/biogo/biogo/alphabet" 13 "github.com/biogo/biogo/io/seqio" 14 "github.com/biogo/biogo/io/seqio/fasta" 15 "github.com/biogo/biogo/seq/linear" 16 ) 17 18 func ExampleReader() { 19 const multiFasta = ` 20 >SequenceA dam methylation site 21 GATC 22 >SequenceB ori motif 23 CTAG 24 >SequenceC CTCF binding motif 25 CCGCGNGGNGGCAG` 26 27 data := strings.NewReader(multiFasta) 28 29 // fasta.Reader requires a known type template to fill 30 // with FASTA data. Here we use *linear.Seq. 31 template := linear.NewSeq("", nil, alphabet.DNAredundant) 32 r := fasta.NewReader(data, template) 33 34 // Make a seqio.Scanner to simplify iterating over a 35 // stream of data. 36 sc := seqio.NewScanner(r) 37 38 // Iterate through each sequence in a multifasta and examine the 39 // ID, description and sequence data. 40 for sc.Next() { 41 // Get the current sequence and type assert to *linear.Seq. 42 // While this is unnecessary here, it can be useful to have 43 // the concrete type. 44 s := sc.Seq().(*linear.Seq) 45 46 // Print the sequence ID, description and sequence data. 47 fmt.Printf("%q %q %s\n", s.ID, s.Desc, s.Seq) 48 } 49 if err := sc.Error(); err != nil { 50 log.Fatal(err) 51 } 52 53 // Output: 54 // "SequenceA" "dam methylation site" GATC 55 // "SequenceB" "ori motif" CTAG 56 // "SequenceC" "CTCF binding motif" CCGCGNGGNGGCAG 57 }