NCBI C++ ToolKit
Trna_ext.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: Trna_ext.cpp 74562 2016-09-13 13:46:29Z ivanov $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: .......
27  *
28  * File Description:
29  * .......
30  *
31  * Remark:
32  * This code was originally generated by application DATATOOL
33  * using the following specifications:
34  * 'seqfeat.asn'.
35  */
36 
37 // standard includes
38 #include <ncbi_pch.hpp>
39 
40 // generated includes
42 
43 // generated classes
44 
46 
47 BEGIN_objects_SCOPE // namespace ncbi::objects::
48 
49 // destructor
51 {
52 }
53 
54 
55 static const char *codonLetterExpand[] =
56 {
57  "?", "A", "C", "AC",
58  "G", "AG", "CG", "ACG",
59  "T", "AT", "CT", "ACT",
60  "GT", "AGT", "CGT", "ACGT",
61  NULL
62 };
63 
64 
65 bool CTrna_ext::ParseDegenerateCodon(CTrna_ext & tRNA, const string & codon)
66 {
67  const static string intToChr = "?ACMGRSVTWYHKDBN";
68 
69  if (codon.length() < 3) {
70  return false;
71  }
72 
73  // the first two have to be real nucleotides
74  const string::size_type first_bad_char = codon.find_first_not_of("ACGT");
75  if (first_bad_char != string::npos && first_bad_char < 2) {
76  return false;
77  }
78 
79  size_t idx = intToChr.find(codon[2]);
80  if (idx == string::npos) return false;
81 
82  const char *expanded_codon_letter = codonLetterExpand[idx];
83  const char *iter = expanded_codon_letter;
84  char ch = *iter;
85  int tRNA_codon_idx = 0;
86  string codon_copy = codon;
87  codon_copy.erase(3);
88  tRNA.SetCodon().clear();
89  while (*iter != '\0' && tRNA_codon_idx < 6) {
90  codon_copy[2] = ch;
91  tRNA.SetCodon().push_back(CGen_code_table::CodonToIndex(codon_copy)); // TODO: make sure Seq_code_iupacna
92 
93  // prepare for next iteration
94  iter++;
95  ch = *iter;
96  tRNA_codon_idx++;
97  }
98 
99  return true;
100 }
101 
102 
103 END_objects_SCOPE // namespace ncbi::objects::
104 
106 
107 /* Original file checksum: lines: 57, chars: 1721, CRC32: d561a0b8 */
static const char * codonLetterExpand[]
Definition: Trna_ext.cpp:55
User-defined methods of the data storage class.
static int CodonToIndex(char base1, char base2, char base3)
static bool ParseDegenerateCodon(CTrna_ext &tRNA, const string &codon)
Definition: Trna_ext.cpp:65
~CTrna_ext(void)
Definition: Trna_ext.cpp:50
#define NULL
Definition: ncbistd.hpp:225
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
TCodon & SetCodon(void)
Assign a value to Codon data member.
Definition: Trna_ext_.hpp:630
Modified on Tue May 21 10:54:22 2024 by modify_doxy.py rev. 669887