| 137 | } |
| 138 | |
| 139 | static void |
| 140 | loadReads(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 | } |
no test coverage detected