19 #include "TestValidate.h" 20 #include "BamIndexTest.h" 26 #ifdef __ZLIB_AVAILABLE__ 44 assert(!chunkList.empty());
45 testChunk = chunkList.pop();
46 assert(chunkList.empty());
47 assert(testChunk.chunk_beg == 0x4e7);
48 assert(testChunk.chunk_end == 0x599);
52 assert(!chunkList.empty());
53 testChunk = chunkList.pop();
54 assert(chunkList.empty());
55 assert(testChunk.chunk_beg == 0x360);
56 assert(testChunk.chunk_end == 0x4e7);
61 assert(!chunkList.empty());
62 testChunk = chunkList.pop();
63 assert(chunkList.empty());
64 assert(testChunk.chunk_beg == 0x599);
65 assert(testChunk.chunk_end == 0x5ea);
71 assert(chunkList.empty());
75 assert(inFile.OpenForRead(
"testFiles/sortedBam.bam"));
77 assert(inFile.ReadBamIndex(
"testFiles/sortedBam.bam.bai"));
79 assert(inFile.ReadHeader(samHeader));
83 assert(inFile.getNumMappedReadsFromIndex(1) == 2);
84 assert(inFile.getNumUnMappedReadsFromIndex(1) == 0);
85 assert(inFile.getNumMappedReadsFromIndex(0) == 4);
86 assert(inFile.getNumUnMappedReadsFromIndex(0) == 1);
87 assert(inFile.getNumMappedReadsFromIndex(23) == -1);
88 assert(inFile.getNumUnMappedReadsFromIndex(23) == -1);
89 assert(inFile.getNumMappedReadsFromIndex(-1) == 0);
90 assert(inFile.getNumUnMappedReadsFromIndex(-1) == 2);
91 assert(inFile.getNumMappedReadsFromIndex(-2) == -1);
92 assert(inFile.getNumUnMappedReadsFromIndex(-2) == -1);
93 assert(inFile.getNumMappedReadsFromIndex(22) == 0);
94 assert(inFile.getNumUnMappedReadsFromIndex(22) == 0);
96 assert(inFile.getNumMappedReadsFromIndex(
"2", samHeader) == 2);
97 assert(inFile.getNumUnMappedReadsFromIndex(
"2", samHeader) == 0);
98 assert(inFile.getNumMappedReadsFromIndex(
"1", samHeader) == 4);
99 assert(inFile.getNumUnMappedReadsFromIndex(
"1", samHeader) == 1);
100 assert(inFile.getNumMappedReadsFromIndex(
"22", samHeader) == 0);
101 assert(inFile.getNumUnMappedReadsFromIndex(
"22", samHeader) == 0);
102 assert(inFile.getNumMappedReadsFromIndex(
"", samHeader) == 0);
103 assert(inFile.getNumUnMappedReadsFromIndex(
"*", samHeader) == 2);
104 assert(inFile.getNumMappedReadsFromIndex(
"unknown", samHeader) == -1);
105 assert(inFile.getNumUnMappedReadsFromIndex(
"unknown", samHeader) == -1);
106 assert(inFile.getNumMappedReadsFromIndex(
"X", samHeader) == 0);
107 assert(inFile.getNumUnMappedReadsFromIndex(
"X", samHeader) == 0);
110 assert(inFile.SetReadSection(
"1", 1010, 1011,
false));
111 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
113 assert(inFile.SetReadSection(
"1", 1011, 1012,
false));
114 assert(inFile.ReadRecord(samHeader, samRecord));
115 validateRead2(samRecord);
116 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
120 assert(inFile.SetReadSection(-1));
121 assert(inFile.ReadRecord(samHeader, samRecord));
122 validateRead8(samRecord);
123 assert(inFile.ReadRecord(samHeader, samRecord));
124 validateRead10(samRecord);
125 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
129 assert(inFile.SetReadSection(2));
130 assert(inFile.ReadRecord(samHeader, samRecord));
131 validateRead9(samRecord);
132 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
136 assert(inFile.SetReadSection(0));
137 assert(inFile.ReadRecord(samHeader, samRecord));
138 validateRead3(samRecord);
139 assert(inFile.ReadRecord(samHeader, samRecord));
140 validateRead4(samRecord);
141 assert(inFile.ReadRecord(samHeader, samRecord));
142 validateRead1(samRecord);
143 assert(inFile.ReadRecord(samHeader, samRecord));
144 validateRead2(samRecord);
145 assert(inFile.ReadRecord(samHeader, samRecord));
146 validateRead6(samRecord);
147 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
151 assert(inFile.SetReadSection(1));
152 assert(inFile.ReadRecord(samHeader, samRecord));
153 validateRead5(samRecord);
154 assert(inFile.ReadRecord(samHeader, samRecord));
155 validateRead7(samRecord);
156 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
159 for(
int i = 3; i < 23; i++)
161 assert(inFile.SetReadSection(i));
162 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
167 assert(inFile.SetReadSection(
"1", 1010, 1012));
168 assert(inFile.ReadRecord(samHeader, samRecord));
169 validateRead1(samRecord);
170 assert(inFile.GetNumOverlaps(samRecord) == 2);
171 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
172 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
173 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
174 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
175 assert(inFile.ReadRecord(samHeader, samRecord));
176 validateRead2(samRecord);
177 assert(inFile.GetNumOverlaps(samRecord) == 0);
178 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
179 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
180 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
181 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
182 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
184 assert(inFile.SetReadSection(
"1", 1010, 1020));
185 assert(inFile.ReadRecord(samHeader, samRecord));
186 validateRead1(samRecord);
187 assert(inFile.GetNumOverlaps(samRecord) == 5);
188 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
189 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
190 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
191 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
192 assert(inFile.ReadRecord(samHeader, samRecord));
193 validateRead2(samRecord);
194 assert(inFile.GetNumOverlaps(samRecord) == 0);
195 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
196 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
197 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
198 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
199 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
201 assert(inFile.SetReadSection(
"1", 1010, 1011));
202 assert(inFile.ReadRecord(samHeader, samRecord));
203 validateRead1(samRecord);
204 assert(inFile.GetNumOverlaps(samRecord) == 1);
205 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
206 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
207 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
208 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
209 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
211 assert(inFile.SetReadSection(
"1", 1011, 1012));
212 assert(inFile.ReadRecord(samHeader, samRecord));
213 validateRead1(samRecord);
214 assert(inFile.GetNumOverlaps(samRecord) == 1);
215 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
216 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
217 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
218 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
219 assert(inFile.ReadRecord(samHeader, samRecord));
220 validateRead2(samRecord);
221 assert(inFile.GetNumOverlaps(samRecord) == 0);
222 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
223 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
224 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
225 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
226 assert(inFile.ReadRecord(samHeader, samRecord) ==
false);
234 #ifdef __ZLIB_AVAILABLE__ 237 bamIndex.
readIndex(
"testFiles/sortedBam.bam.bai");
241 bool caughtException =
false;
248 catch (std::exception& e)
250 caughtException =
true;
251 assert(strcmp(e.what(),
"FAIL_ORDER: Failed to read the bam Index file - the BAM file needs to be read first in order to determine the index filename.") == 0);
254 assert(caughtException);
257 assert(test1.
ReadBamIndex(
"testFiles/sortedBam.bam.bai"));
258 BamIndex* index = test1.getBamIndex();
259 assert(index != NULL);
263 assert(test1.
OpenForRead(
"testFiles/sortedBam.bam"));
267 index = test1.getBamIndex();
268 assert(index != NULL);
273 assert(test1.
OpenForRead(
"testFiles/sortedBam2.bam"));
277 index = test1.getBamIndex();
278 assert(index != NULL);
int32_t getNumUnMappedReads(int32_t refID)
Get the number of unmapped reads for this reference id.
SamStatus::Status readIndex(const char *filename)
int32_t getNumMappedReads(int32_t refID)
Get the number of mapped reads for this reference id.
void setSortedValidation(SortedType sortType)
Set the flag to validate that the file is sorted as it is read/written.
file is sorted by coordinate.
Allows the user to easily read/write a SAM/BAM file.
bool getChunksForRegion(int32_t refID, int32_t start, int32_t end, SortedChunkList &chunkList)
Get the list of chunks associated with this region.
Class providing an easy to use interface to get/set/operate on the fields in a SAM/BAM record...
bool OpenForRead(const char *filename, SamFileHeader *header=NULL)
Open a sam/bam file for reading with the specified filename, determing the type of file and SAM/BAM b...
bool ReadBamIndex(const char *filename)
Read the specified bam index file.