inline unsigned getLaneNumber(const flowcell::TileMetadataList& tiles) { ISAAC_ASSERT_MSG( tiles.end() == std::find_if( tiles.begin(), tiles.end(), boost::bind(&flowcell::TileMetadata::getLane, _1) != tiles.front().getLane()), "Expected all tiles to belong to the same lane"); return tiles.front().getLane(); }
const std::vector<std::vector<unsigned > > SeedMemoryManager<KmerT>::getNotFoundMatchesCount( const flowcell::TileMetadataList &unprocessedTiles, const flowcell::BarcodeMetadataList &barcodeMetadataList, const ReadMetadataList &readMetadataList, const matchFinder::TileClusterInfo &foundMatches) const { ISAAC_ASSERT_MSG(unprocessedTiles.front().getIndex() <= unprocessedTiles.back().getIndex(), "Expected tiles ordered by index"); std::vector<std::vector<unsigned > > ret(readMetadataList.size(), std::vector<unsigned>( unprocessedTiles.back().getIndex() + 1)); BOOST_FOREACH(const flowcell::ReadMetadata &readMetadata, readMetadataList_) { const unsigned readIndex = readMetadata.getIndex(); BOOST_FOREACH(const flowcell::TileMetadata &tileMetadata, unprocessedTiles) { const unsigned tileIndex = tileMetadata.getIndex(); const std::vector<matchFinder::ClusterInfo> &oneTileInfo = foundMatches.at(tileIndex); // match only clusters where no matches were found so far ISAAC_ASSERT_MSG(oneTileInfo.size() == tileMetadata.getClusterCount(), "allTiles and foundMatches geometries must match"); ret.at(readIndex).at(tileIndex) = std::count_if(oneTileInfo.begin(), oneTileInfo.end(), boost::bind(&willLoadSeeds, boost::ref(barcodeMetadataList), _1, readIndex)); } } return ret; }