/*****************************************************************************/ // Copyright (c) Illumina 2008 // Author: Richard Shaw // // This software is covered by the "Illumina Genome Analyzer Software // License Agreement" and the "Illumina Source Code License Agreement", // and certain third party copyright/licenses, and any user of this // source file is bound by the terms therein (see accompanying files // Illumina_Genome_Analyzer_Software_License_Agreement.pdf and // Illumina_Source_Code_License_Agreement.pdf and third party // copyright/license notices). /*****************************************************************************/ #include #include #include #include #include "common/Tile_List.h" #include "statistics/Tile_Mgr.h" /*****************************************************************************/ Tile_Mgr::Tile_Mgr(const std::string& tile_list_file_path_str) : my_tile_list_file_path_str(tile_list_file_path_str), my_list_loaded_flag(false), my_lane_num(0) { //if (!my_list_loaded_flag) { Tile_List tile_list(my_tile_list_file_path_str); Tile_List::Tile_Name_List tile_name_list = tile_list.get_tile_name_list(); if (!tile_name_list.empty()) { const std::string first_tile = tile_name_list.front(); const char lane_num = first_tile[2]; my_lane_num = lane_num - '0'; } //std::stringstream search_prefix_strm; //search_prefix_strm << "s_" << my_lane_num; //if (!tile_list.find_tiles(search_prefix_strm.str(), // tile_name_list)) { //return false; //} for (Tile_List::Tile_Name_List_CIter tile_name_citer(tile_name_list.begin()); tile_name_citer != tile_name_list.end(); ++tile_name_citer) { const unsigned int tile_num = atoi(tile_name_citer->substr(tile_name_citer-> find_last_of('_') + 1).c_str()); my_tiles_found_map[tile_num] = false; } my_list_loaded_flag = true; //my_lane_num = lane_num; //} } /*****************************************************************************/ Tile_Mgr::~Tile_Mgr() { ; } /*****************************************************************************/ void Tile_Mgr::report_tile(const unsigned int /* lane_num */, const unsigned int tile_num) { my_tiles_found_map[tile_num] = true; } /*****************************************************************************/ bool Tile_Mgr::get_missing_tile_num_list(unsigned int& lane_num, Tile_Num_List& missing_tile_num_list) const { lane_num = my_lane_num; missing_tile_num_list.clear(); for (Tiles_Found_Map_CIter tile_found_citer(my_tiles_found_map.begin()); tile_found_citer != my_tiles_found_map.end(); ++tile_found_citer) { if (!tile_found_citer->second) { missing_tile_num_list.push_back(tile_found_citer->first); } } return (!missing_tile_num_list.empty()); } /*****************************************************************************/