github.com/biogo/biogo@v1.0.4/seq/alignment/qalignment_example_test.go (about) 1 // Copyright ©2011-2012 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 alignment 6 7 import ( 8 "fmt" 9 10 "github.com/biogo/biogo/alphabet" 11 "github.com/biogo/biogo/seq" 12 "github.com/biogo/biogo/seq/linear" 13 "github.com/biogo/biogo/seq/sequtils" 14 ) 15 16 var qm, qn *QSeq 17 18 func init() { 19 var err error 20 qm, err = NewQSeq("example alignment", 21 []string{"seq 1", "seq 2", "seq 3"}, 22 [][]alphabet.QLetter{ 23 {{'A', 40}, {'A', 40}, {'A', 40}}, 24 {{'C', 40}, {'C', 40}, {'C', 40}}, 25 {{'G', 40}, {'G', 40}, {'G', 40}}, 26 {{'C', 40}, {'G', 40}, {'A', 40}}, 27 {{'T', 40}, {'T', 40}, {'T', 40}}, 28 {{'G', 40}, {'G', 40}, {'G', 40}}, 29 {{'A', 40}, {'A', 40}, {'A', 40}}, 30 {{'C', 40}, {'C', 40}, {'C', 40}}, 31 {{'T', 40}, {'C', 40}, {'G', 40}}, 32 {{'T', 40}, {'T', 40}, {'T', 40}}, 33 {{'G', 40}, {'G', 40}, {'G', 40}}, 34 {{'G', 40}, {'G', 40}, {'G', 40}}, 35 {{'T', 40}, {'C', 40}, {'C', 40}}, 36 {{'G', 40}, {'G', 40}, {'G', 40}}, 37 {{'C', 40}, {'C', 40}, {'C', 40}}, 38 {{'A', 40}, {'G', 40}, {'T', 40}}, 39 {{'C', 40}, {'C', 40}, {'C', 40}}, 40 {{'G', 40}, {'A', 40}, {'A', 40}}, 41 {{'T', 40}, {'T', 40}, {'T', 40}}, 42 }, 43 alphabet.DNA, 44 alphabet.Sanger, 45 seq.DefaultQConsensus) 46 47 if err != nil { 48 panic(err) 49 } 50 } 51 52 func ExampleNewQSeq() { 53 qm, err := NewQSeq("example alignment", 54 []string{"seq 1", "seq 2", "seq 3"}, 55 [][]alphabet.QLetter{ 56 {{'A', 40}, {'A', 40}, {'A', 40}}, 57 {{'C', 40}, {'C', 40}, {'C', 40}}, 58 {{'G', 40}, {'G', 40}, {'G', 40}}, 59 {{'C', 40}, {'G', 40}, {'A', 40}}, 60 {{'T', 40}, {'T', 40}, {'T', 40}}, 61 {{'G', 40}, {'G', 40}, {'G', 40}}, 62 {{'A', 40}, {'A', 40}, {'A', 40}}, 63 {{'C', 40}, {'C', 40}, {'C', 40}}, 64 {{'T', 40}, {'C', 40}, {'G', 40}}, 65 {{'T', 40}, {'T', 40}, {'T', 40}}, 66 {{'G', 40}, {'G', 40}, {'G', 40}}, 67 {{'G', 40}, {'G', 40}, {'G', 40}}, 68 {{'T', 40}, {'C', 40}, {'C', 40}}, 69 {{'G', 40}, {'G', 40}, {'G', 40}}, 70 {{'C', 40}, {'C', 40}, {'C', 40}}, 71 {{'A', 40}, {'G', 40}, {'T', 40}}, 72 {{'C', 40}, {'C', 40}, {'C', 40}}, 73 {{'G', 40}, {'A', 40}, {'A', 40}}, 74 {{'T', 40}, {'T', 40}, {'T', 40}}, 75 }, 76 alphabet.DNA, 77 alphabet.Sanger, 78 seq.DefaultQConsensus) 79 if err == nil { 80 fmt.Printf("%-s\n\n%-s\n", qm, qm.Consensus(false)) 81 } 82 83 // Output: 84 // ACGCTGACTTGGTGCACGT 85 // ACGGTGACCTGGCGCGCAT 86 // ACGATGACGTGGCGCTCAT 87 // 88 // acgntgacntggcgcncat 89 } 90 91 func ExampleQSeq_Add() { 92 fmt.Printf("%v %-s\n", qm.Rows(), qm.Consensus(false)) 93 qm.Add(linear.NewQSeq("example DNA", 94 []alphabet.QLetter{{'a', 40}, {'c', 39}, {'g', 40}, {'C', 38}, {'t', 35}, {'g', 20}}, 95 alphabet.DNA, alphabet.Sanger)) 96 fmt.Printf("%v %-s\n", qm.Rows(), qm.Consensus(false)) 97 // Output: 98 // 3 acgntgacntggcgcncat 99 // 4 acgctgacntggcgcncat 100 } 101 102 func ExampleQSeq_Clone() { 103 qn = qm.Clone().(*QSeq) 104 qn.Row(2).Set(3, alphabet.QLetter{L: 't', Q: 40}) 105 fmt.Printf("%-s\n\n%-s\n\n", qm, qm.Consensus(false)) 106 fmt.Printf("%-s\n\n%-s\n", qn, qn.Consensus(false)) 107 // Output: 108 // ACGCTGACTTGGTGCACGT 109 // ACGGTGACCTGGCGCGCAT 110 // ACGATGACGTGGCGCTCAT 111 // acgCtg------------- 112 // 113 // acgctgacntggcgcncat 114 // 115 // ACGCTGACTTGGTGCACGT 116 // ACGGTGACCTGGCGCGCAT 117 // ACGtTGACGTGGCGCTCAT 118 // acgCtg------------- 119 // 120 // acgctgacntggcgcncat 121 } 122 123 func ExampleQSeq_Rows() { 124 fmt.Println(qm.Rows()) 125 // Output: 126 // 4 127 } 128 129 func ExampleQSeq_join() { 130 fmt.Printf("%-s\n\n%-s\n", qn, qn.Consensus(false)) 131 err := sequtils.Join(qn, qm, seq.End) 132 if err == nil { 133 fmt.Printf("\n%-s\n\n%-s\n", qn, qn.Consensus(false)) 134 } 135 // Output: 136 // ACGCTGACTTGGTGCACGT 137 // ACGGTGACCTGGCGCGCAT 138 // ACGtTGACGTGGCGCTCAT 139 // acgCtg------------- 140 // 141 // acgctgacntggcgcncat 142 // 143 // ACGCTGACTTGGTGCACGTACGCTGACTTGGTGCACGT 144 // ACGGTGACCTGGCGCGCATACGGTGACCTGGCGCGCAT 145 // ACGtTGACGTGGCGCTCATACGATGACGTGGCGCTCAT 146 // acgCtg-------------acgCtg------------- 147 // 148 // acgctgacntggcgcncatacgctgacntggcgcncat 149 } 150 151 func ExampleQSeq_Len() { 152 fmt.Println(qm.Len()) 153 // Output: 154 // 19 155 } 156 157 func ExampleQSeq_RevComp() { 158 fmt.Printf("%-s\n\n%-s\n\n", qm, qm.Consensus(false)) 159 qm.RevComp() 160 fmt.Printf("%-s\n\n%-s\n", qm, qm.Consensus(false)) 161 // Output: 162 // ACGCTGACTTGGTGCACGT 163 // ACGGTGACCTGGCGCGCAT 164 // ACGATGACGTGGCGCTCAT 165 // acgCtg------------- 166 // 167 // acgctgacntggcgcncat 168 // 169 // ACGTGCACCAAGTCAGCGT 170 // ATGCGCGCCAGGTCACCGT 171 // ATGAGCGCCACGTCATCGT 172 // -------------caGcgt 173 // 174 // atgngcgccangtcagcgt 175 } 176 177 func ExampleQSeq_stitch() { 178 f := fs{ 179 &fe{s: -1, e: 4}, 180 &fe{s: 30, e: 38}, 181 } 182 fmt.Printf("%-s\n\n%-s\n", qn, qn.Consensus(false)) 183 if err := sequtils.Stitch(qn, qn, f); err == nil { 184 fmt.Printf("\n%-s\n\n%-s\n", qn, qn.Consensus(false)) 185 } else { 186 fmt.Println(err) 187 } 188 // Output: 189 // ACGCTGACTTGGTGCACGTACGTGCACCAAGTCAGCGT 190 // ACGGTGACCTGGCGCGCATATGCGCGCCAGGTCACCGT 191 // ACGtTGACGTGGCGCTCATATGAGCGCCACGTCATCGT 192 // acgCtg--------------------------caGcgt 193 // 194 // acgctgacntggcgcncatatgngcgccangtcagcgt 195 // 196 // ACGCGTCAGCGT 197 // ACGGGTCACCGT 198 // ACGtGTCATCGT 199 // acgC--caGcgt 200 // 201 // acgcgtcagcgt 202 } 203 204 func ExampleQSeq_truncate() { 205 fmt.Printf("%-s\n\n%-s\n", qm, qm.Consensus(false)) 206 err := sequtils.Truncate(qm, qm, 4, 12) 207 if err == nil { 208 fmt.Printf("\n%-s\n\n%-s\n", qm, qm.Consensus(false)) 209 } 210 // Output: 211 // ACGTGCACCAAGTCAGCGT 212 // ATGCGCGCCAGGTCACCGT 213 // ATGAGCGCCACGTCATCGT 214 // -------------caGcgt 215 // 216 // atgngcgccangtcagcgt 217 // 218 // GCACCAAG 219 // GCGCCAGG 220 // GCGCCACG 221 // -------- 222 // 223 // gcgccang 224 }