MCPcopy Create free account
hub / github.com/BirolLab/abyss / loadReads

Function loadReads

RResolver/BloomFilters.cpp:139–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137}
138
139static void
140loadReads(const std::vector<std::string>& readFilepaths, int r)
141{
142 ReadSize::readsSampleSize = 0;
143 ReadSize::current.sampleCount = 0;
144 int i = 0;
145 for (auto& b : ReadSize::readSizes) {
146 b.sampleCount = 0;
147 i++;
148 }
149
150 for (const auto& path : readFilepaths) {
151 uint64_t currentReadCount = 0;
152 uint64_t totalReadCount = 0;
153 size_t readSizesNum = ReadSize::readSizes.size();
154 uint64_t *readSizeCounts = new uint64_t[readSizesNum];
155 for (size_t i = 0; i < readSizesNum; i++) {
156 readSizeCounts[i] = 0;
157 }
158
159 assert(!path.empty());
160 if (opt::verbose) {
161 std::cerr << "Loading reads from `" << path << "'..." << std::endl;;
162 }
163
164 btllib::SeqReader reader(path, btllib::SeqReader::Flag::SHORT_MODE);
165#pragma omp parallel reduction(+:currentReadCount,totalReadCount,readSizeCounts[:readSizesNum])
166 for (btllib::SeqReader::Record record; (record = reader.read());) {
167 totalReadCount++;
168 int i = 0;
169 for (const auto& b : ReadSize::readSizes) {
170 if (b.sizeAndMergedSizes.find(int(record.seq.size())) != b.sizeAndMergedSizes.end()) {
171 readSizeCounts[i]++;
172 break;
173 }
174 i++;
175 }
176 if (ReadSize::current.sizeAndMergedSizes.find(int(record.seq.size())) == ReadSize::current.sizeAndMergedSizes.end()) {
177 continue;
178 }
179 currentReadCount++;
180
181 std::string seq = record.seq.substr(0, r + opt::extract - 1);
182 if (seq.size() >= g_vanillaBloom->get_k()) {
183 g_vanillaBloom->insert(seq);
184 if (opt::errorCorrection) {
185 g_spacedSeedsBloom->insert(seq);
186 }
187 }
188 }
189
190 ReadSize::readsSampleSize += totalReadCount;
191 ReadSize::current.sampleCount += currentReadCount;
192 int i = 0;
193 for (auto& b : ReadSize::readSizes) {
194 b.sampleCount += readSizeCounts[i];
195 i++;
196 }

Callers 1

buildFiltersFunction · 0.85

Calls 7

getFractionOfTotalMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
readMethod · 0.45
findMethod · 0.45
endMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected