libStatGen Software 1
ReferenceSequenceTest Class Reference
Inheritance diagram for ReferenceSequenceTest:
Collaboration diagram for ReferenceSequenceTest:

Public Member Functions

 ReferenceSequenceTest (const char *title)
 
void test1 ()
 
void test2 ()
 
void test3 ()
 
void humanGenomeTest1 ()
 
void test ()
 
- Public Member Functions inherited from UnitTest
 UnitTest (const char *title)
 
void test ()
 
int getPassCount ()
 
int getFailureCount ()
 
const std::string getTitle () const
 
 UnitTest (const char *title)
 
void test ()
 
int getPassCount ()
 
int getFailureCount ()
 
const std::string getTitle () const
 

Additional Inherited Members

- Protected Attributes inherited from UnitTest
std::string m_title
 
int m_failures
 
int m_testNum
 

Detailed Description

Definition at line 28 of file ReferenceSequenceTest.cpp.

Constructor & Destructor Documentation

◆ ReferenceSequenceTest()

ReferenceSequenceTest::ReferenceSequenceTest ( const char *  title)
inline

Definition at line 31 of file ReferenceSequenceTest.cpp.

31: UnitTest(title) {;}

Member Function Documentation

◆ humanGenomeTest1()

void ReferenceSequenceTest::humanGenomeTest1 ( void  )

Definition at line 170 of file ReferenceSequenceTest.cpp.

171{
172 std::vector<PackedSequenceData> chromosomeSequence;
173 std::vector<std::string> chromosomeNames;
174
175#define HUMAN_GENOME "/data/local/ref/karma.ref/human.g1k.v37.fa"
176 bool result = loadFastaFile(HUMAN_GENOME, chromosomeSequence, chromosomeNames);
177
178 if(result) {
179 std::cout << HUMAN_GENOME << " not found - skipping these tests." << std::endl;
180 return;
181 }
182
183}

◆ test()

void ReferenceSequenceTest::test ( void  )
inline

Definition at line 37 of file ReferenceSequenceTest.cpp.

37 {
38 test1();
39 test2();
40 test3();
41 // This test is very slow:
42 // humanGenomeTest1();
43 }

◆ test1()

void ReferenceSequenceTest::test1 ( void  )

Definition at line 46 of file ReferenceSequenceTest.cpp.

47{
48 std::string sequence("ACTGACTGACTGACTGACTGACTGACTGACTGACTGACTG");
49 std::string word;
50
51 word="ACTG";
52 check(m_failures, ++m_testNum, "Test wordMatch with std::string", true,
53 Sequence::wordMatch(sequence, 4, word));
54
55 std::stringstream output;
56
57 Sequence::printNearbyWords(output, sequence, 8, word, 4);
58
59 std::string expect("\
60word 'ACTG' found -4 away from position 8.\n\
61word 'ACTG' found 0 away from position 8.\n\
62");
63
64 check(m_failures, ++m_testNum, "Test printNearbyWords with std::string", expect, output.str());
65
66
67 Sequence::getString(sequence, 4, 4, word);
68
69 check(m_failures, ++m_testNum, "Test getString with std::string", "ACTG", word);
70
71 Sequence::getHighLightedString(sequence, 0, 12, word, 4, 8);
72 check(m_failures, ++m_testNum, "Test getHighLightedStribng with std::string", "ACTGactgACTG",word);
73
74#if 0
75 // busted test - don't know why
76 output.clear();
77 output.str(std::string());
78// Sequence::printBaseContext(std::cout, sequence, 8, 4);
79 Sequence::printBaseContext(output, sequence, 8, 4);
80 expect="\
81index: 8\n\
82ACTGACTGA\n\
83 ^\n\
84";
85 check(m_failures, ++m_testNum, "Test printBaseContext with std::string", expect, output.str());
86#endif
87 std::string result;
88 std::string read("ACTGZZZZACTG");
89 expect = " ^^^^ ";
90 Sequence::getMismatchHatString(sequence, 4, result, read);
91 check(m_failures, ++m_testNum, "Test getMismatchHatString with std::string", expect, result);
92
93
94 read="ACTG";
95 std::string quality("");
96 size_t location = Sequence::simpleLocalAligner(sequence, 0, read, quality, 12);
97 check(m_failures, ++m_testNum, "Test simpleLocalAligner with std::string", (size_t) 0, location);
98
99 read="ACNG";
100 int misMatches = Sequence::getMismatchCount(sequence, 0, read);
101 check(m_failures, ++m_testNum, "Test getMismatchCount with std::string", 1, misMatches);
102
103 read="ACNG";
104 quality="$$$$";
105 int sumQ = Sequence::getSumQ(sequence, 0, read, quality);
106 check(m_failures, ++m_testNum, "Test getSumQ with std::string", 3, sumQ);
107}

◆ test2()

void ReferenceSequenceTest::test2 ( void  )

Definition at line 109 of file ReferenceSequenceTest.cpp.

110{
111 PackedSequenceData sequence;
112 std::string word;
113
114 sequence.push_back('A');
115 sequence.push_back('C');
116 sequence.push_back('T');
117 sequence.push_back('G');
118
119 sequence.push_back('A');
120 sequence.push_back('C');
121 sequence.push_back('T');
122 sequence.push_back('G');
123
124 sequence.push_back('A');
125 sequence.push_back('C');
126 sequence.push_back('T');
127 sequence.push_back('G');
128
129 sequence.push_back('A');
130 sequence.push_back('C');
131 sequence.push_back('T');
132 sequence.push_back('G');
133
134 Sequence::getString(sequence, 4, 4, word);
135
136 check(m_failures, ++m_testNum, "Test getString with PackedSequenceData", "ACTG", word);
137
138 std::cout << "test2 sequence utilization is " << sequence.getUtilization() * 100 << "% - expect around 6.25%" << std::endl;
139
140}

◆ test3()

void ReferenceSequenceTest::test3 ( void  )

Definition at line 142 of file ReferenceSequenceTest.cpp.

143{
144 std::vector<PackedSequenceData> chromosomeSequence;
145 std::vector<std::string> chromosomeNames;
146
147 bool result = loadFastaFile("../phiX.fa", chromosomeSequence, chromosomeNames);
148
149 if(result) {
150 std::cout << "../phiX.fa not found - skipping these tests." << std::endl;
151 return;
152 }
153
154 std::cout << "phiX reference utilization is " << chromosomeSequence[0].getUtilization() * 100 << "% - expect around 96.8%" << std::endl;
155
156
157
158 check(m_failures, ++m_testNum, "Test loadFastaFile with PackedSequenceData", (size_t) 1, chromosomeNames.size());
159 check(m_failures, ++m_testNum, "Test loadFastaFile with PackedSequenceData", (size_t) 1, chromosomeSequence.size());
160 check(m_failures, ++m_testNum, "Test loadFastaFile with PackedSequenceData", "1", chromosomeNames[0]);
161
162 std::string word;
163
164 Sequence::getString(chromosomeSequence[0], 60, 10, word);
165
166 check(m_failures, ++m_testNum, "Test loadFastaFile with PackedSequenceData", "AAATTATCTT", word);
167
168}

The documentation for this class was generated from the following file: