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  }