25 #include "ReferenceSequence.h"
37 bool getFastaStats(
const char *fastaData,
size_t fastaDataSize, uint32_t &chromosomeCount, uint64_t &baseCount)
41 bool atLineStart =
true;
47 for (
size_t fastaIndex = 0; fastaIndex < fastaDataSize; fastaIndex++)
49 switch (fastaData[fastaIndex])
57 if (!atLineStart)
break;
62 while (fastaIndex < fastaDataSize && fastaData[fastaIndex]!=
'\n' && fastaData[fastaIndex]!=
'\r')
80 int GenomeSequence::debugPrintReadValidation(
84 genomeIndex_t readLocation,
91 int validateMismatchCount = 0;
93 std::string genomeData;
95 for (uint32_t i=0; i<read.size(); i++)
97 if (tolower(read[i]) != tolower((*
this)[readLocation + i]))
99 validateSumQ += quality[i] -
'!';
101 if (direction==
'F' ? i<24 : (i >= (read.size() - 24))) validateMismatchCount++;
102 genomeData.push_back(tolower((*
this)[readLocation + i]));
106 genomeData.push_back(toupper((*
this)[readLocation + i]));
109 assert(validateSumQ>=0);
110 if (validateSumQ != sumQuality && validateMismatchCount == mismatchCount)
112 printf(
"SUMQ: Original Genome: %s test read: %s : actual sumQ = %d, test sumQ = %d\n",
120 else if (validateSumQ == sumQuality && validateMismatchCount != mismatchCount)
122 printf(
"MISM: Original Genome: %s test read: %s : actual mismatch %d test mismatches %d\n",
125 validateMismatchCount,
130 else if (validateSumQ != sumQuality && validateMismatchCount != mismatchCount)
132 printf(
"BOTH: Original Genome: %s test read: %s : actual sumQ = %d, test sumQ = %d, actual mismatch %d test mismatches %d\n",
137 validateMismatchCount,
143 if (recurse && abs(validateMismatchCount - mismatchCount) > (
int) read.size()/2)
145 printf(
"large mismatch difference, trying reverse strand: ");
146 std::string reverseRead = read;
147 std::string reverseQuality = quality;
148 getReverseRead(reverseRead);
149 reverse(reverseQuality.begin(), reverseQuality.end());
150 rc = debugPrintReadValidation(reverseRead, reverseQuality, readLocation, sumQuality, mismatchCount,
false);