18 #include <gtest/gtest.h>
20 #include "GenomeSequence.h"
22 const char* RM_BS_REFERENCE =
"rm -f ./phiX-bs.umfa";
23 const char* RM_CS_REFERENCE =
"rm -f ./phiX-cs.umfa";
24 const char* REFERENCE_NAME =
"./phiX.fa";
26 TEST(GenomeSequenceTest, staticLookupTest)
30 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'A']],
'A');
31 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'a']],
'A');
32 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'T']],
'T');
33 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
't']],
'T');
34 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'C']],
'C');
35 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'c']],
'C');
36 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'G']],
'G');
37 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'g']],
'G');
38 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'N']],
'N');
39 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'n']],
'N');
40 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'M']],
'M');
41 EXPECT_EQ(GenomeSequence::int2base[GenomeSequence::base2int[(
int)
'm']],
'M');
43 EXPECT_EQ(GenomeSequence::base2int[(
int)
'N'], 4);
44 EXPECT_EQ(GenomeSequence::base2int[(
int)
'n'], 4);
45 EXPECT_EQ(GenomeSequence::base2int[(
int)
'A'], 0);
46 EXPECT_EQ(GenomeSequence::base2int[(
int)
'a'], 0);
47 EXPECT_EQ(GenomeSequence::base2int[(
int)
'T'], 3);
48 EXPECT_EQ(GenomeSequence::base2int[(
int)
't'], 3);
49 EXPECT_EQ(GenomeSequence::base2int[(
int)
'C'], 1);
50 EXPECT_EQ(GenomeSequence::base2int[(
int)
'c'], 1);
51 EXPECT_EQ(GenomeSequence::base2int[(
int)
'G'], 2);
52 EXPECT_EQ(GenomeSequence::base2int[(
int)
'g'], 2);
56 TEST(GenomeSequenceTest, testBaseSpaceReference)
59 int exitCode = system(RM_BS_REFERENCE);
60 EXPECT_EQ(exitCode, 0);
63 bool rc = s.create(
false);
76 TEST(GenomeSequenceTest, testColorSpaceReference)
79 int exitCode = system(RM_CS_REFERENCE);
80 EXPECT_EQ(exitCode, 0);
83 bool rc = s.create(
true);
102 void simplestExample(
void)
113 if (reference.
open()) {
114 perror(
"GenomeSequence::open");
129 std::cout <<
"base[" << index <<
"] = " << reference[index] << std::endl;
138 std::cout <<
"genome index " << index <<
" corresponds to chromosome " << chr <<
" position " << chrIndex << std::endl;
144 const char *chromosomeName =
"5";
150 std::cout <<
"Chromosome '" << chromosomeName <<
"' position " << chrIndex <<
" corresponds to genome index position " << index << std::endl;
155 void testGenomeSequence(
void)
160 std::string referenceName =
"someotherreference";
161 if (reference.setFastaName(referenceName)) {
162 std::cerr <<
"failed to open reference file "
169 std::cerr <<
"open and prefetch the reference genome: ";
172 if (reference.
open()) {
175 std::cerr <<
"done!" << std::endl;
180 genomeIndex_t genomeIndex;
181 unsigned int chromosomeIndex;
182 unsigned int chromosome;
183 std::string chromosomeName;
189 chromosomeName =
"2";
190 chromosomeIndex = 1234567;
192 genomeIndex = reference.
getGenomePosition(chromosomeName.c_str(), chromosomeIndex);
193 assert(genomeIndex!=INVALID_GENOME_INDEX);
194 std::cout <<
"Chromosome " << chromosomeName <<
", index ";
195 std::cout << chromosomeIndex <<
" contains base " << reference[genomeIndex];
196 std::cout <<
" at genome index position " << genomeIndex << std::endl;
205 unsigned int newChromosomeIndex;
207 newChromosomeIndex = genomeIndex - reference.getChromosomeStart(chromosome) + 1;
209 assert(chromosomeIndex == newChromosomeIndex);
215 pr.set(
"ATCGATCG", 0);
216 assert(pr.size()==8);
217 assert(pr[0]==GenomeSequence::base2int[(
int)
'A']);
218 assert(pr[1]==GenomeSequence::base2int[(
int)
'T']);
219 assert(pr[2]==GenomeSequence::base2int[(
int)
'C']);
220 assert(pr[3]==GenomeSequence::base2int[(
int)
'G']);
221 pr.set(
"ATCGATCG", 1);
222 assert(pr.size()==9);
224 assert(pr.size()==0);
226 assert(pr.size()==1);
228 assert(pr.size()==2);
230 assert(pr.size()==3);
231 assert(pr[0]==GenomeSequence::base2int[(
int)
'N']);
232 assert(pr[1]==GenomeSequence::base2int[(
int)
'N']);
233 assert(pr[2]==GenomeSequence::base2int[(
int)
'N']);
235 assert(pr.size()==2);
236 assert(pr[0]==GenomeSequence::base2int[(
int)
'N']);
237 assert(pr[1]==GenomeSequence::base2int[(
int)
'C']);