void construct(matching_index<t_wt, t_bv>& idx, const std::string& file, sdsl::cache_config& config, uint8_t num_bytes) { sdsl::int_vector<0> text; { //auto event = memory_monitor::event("text"); load_vector_from_file(text, file, num_bytes); } sdsl::csa_wt<sdsl::wt_int<>> csa; { //auto event = memory_monitor::event("csa"); construct(csa, file, config, num_bytes); } t_wt wts; { //auto event = memory_monitor::event("wt"); construct(wts, cache_file_name(sdsl::conf::KEY_SA, config)); } sdsl::util::delete_all_files(config.file_map); { //auto event = memory_monitor::event("compose"); // contains rank support initialization idx = std::move(matching_index<t_wt, t_bv>(text, wts)); } }
int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc!=2) { cout << "Usage: " << argv[0] << " test_file" << endl; cout << " (1) Reverses test_file; stores it in test_file_rev." << endl; cout << " (2) Performs tests." << endl; cout << " (3) Deletes test_file_reverse." << endl; return 1; } test_file = argv[1]; test_file_rev = test_file + "_rev"; { //reverse input int_vector<8> text; load_vector_from_file(text, test_file, 1); size_type n = text.size(); int_vector<8> text_rev(n); for (size_type i=0; i<n; i++) { text_rev[n-1-i] = text[i]; } char* text2 = (char*)text_rev.data(); ofstream of(test_file_rev, ofstream::binary); of.write(text2, n); of.close(); } int result = RUN_ALL_TESTS(); sdsl::remove(test_file_rev); return result; }
void construct(t_index& idx, const std::string& file, cache_config& config, uint8_t num_bytes, lcp_tag) { auto event = memory_monitor::event("construct compressed LCP"); const char* KEY_TEXT = key_text_trait<t_width>::KEY_TEXT; typedef int_vector<t_width> text_type; { // (2) check, if the longest common prefix array is cached auto event = memory_monitor::event("LCP"); if (!cache_file_exists(conf::KEY_LCP, config)) { { auto event = memory_monitor::event("parse input text"); // (1) check, if the text is cached if (!cache_file_exists(KEY_TEXT, config)) { text_type text; load_vector_from_file(text, file, num_bytes); if (contains_no_zero_symbol(text, file)) { append_zero_symbol(text); store_to_cache(text,KEY_TEXT, config); } } register_cache_file(KEY_TEXT, config); } { // (2) check, if the suffix array is cached auto event = memory_monitor::event("SA"); if (!cache_file_exists(conf::KEY_SA, config)) { construct_sa<t_width>(config); } register_cache_file(conf::KEY_SA, config); } if (t_width==8) { construct_lcp_semi_extern_PHI(config); } else { construct_lcp_PHI<t_width>(config); } } register_cache_file(conf::KEY_LCP, config); } { auto event = memory_monitor::event("compressed LCP"); t_index tmp(config); tmp.swap(idx); } if (config.delete_files) { auto event = memory_monitor::event("delete temporary files"); util::delete_all_files(config.file_map); } }
void construct(t_index& idx, const std::string& file, cache_config& config, uint8_t num_bytes, wt_tag) { auto event = memory_monitor::event("construct wavelet tree"); int_vector<t_index::alphabet_category::WIDTH> text; load_vector_from_file(text, file, num_bytes); std::string tmp_key = util::to_string(util::pid())+"_"+util::to_string(util::id()); std::string tmp_file_name = cache_file_name(tmp_key, config); store_to_file(text, tmp_file_name); util::clear(text); { int_vector_buffer<t_index::alphabet_category::WIDTH> text_buf(tmp_file_name); t_index tmp(text_buf, text_buf.size()); idx.swap(tmp); } sdsl::remove(tmp_file_name); }
void construct(t_index& idx, const std::string& file, cache_config& config, uint8_t num_bytes, csa_tag) { auto event = memory_monitor::event("construct CSA"); const char* KEY_TEXT = key_text_trait<t_index::alphabet_category::WIDTH>::KEY_TEXT; const char* KEY_BWT = key_bwt_trait<t_index::alphabet_category::WIDTH>::KEY_BWT; typedef int_vector<t_index::alphabet_category::WIDTH> text_type; { auto event = memory_monitor::event("parse input text"); // (1) check, if the text is cached if (!cache_file_exists(KEY_TEXT, config)) { text_type text; load_vector_from_file(text, file, num_bytes); if (contains_no_zero_symbol(text, file)) { append_zero_symbol(text); store_to_cache(text,KEY_TEXT, config); } } register_cache_file(KEY_TEXT, config); } { // (2) check, if the suffix array is cached auto event = memory_monitor::event("SA"); if (!cache_file_exists(conf::KEY_SA, config)) { construct_sa<t_index::alphabet_category::WIDTH>(config); } register_cache_file(conf::KEY_SA, config); } { // (3) construct BWT auto event = memory_monitor::event("BWT"); if (!cache_file_exists(KEY_BWT, config)) { construct_bwt<t_index::alphabet_category::WIDTH>(config); } register_cache_file(KEY_BWT, config); } { // (4) use BWT to construct the CSA auto event = memory_monitor::event("construct CSA"); t_index tmp(config); idx.swap(tmp); } if (config.delete_files) { auto event = memory_monitor::event("delete temporary files"); util::delete_all_files(config.file_map); } }
int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 4) { // LCOV_EXCL_START cout << "Usage: " << argv[0] << " test_file num_bytes temp_file tmp_dir" << endl; cout << " (1) Generates a CSA out of test_file; stores it in temp_file." << endl; cout << " Temporary files (SA/BWT/TEXT) are stored in tmp_dir." << endl; cout << " num_bytes specifies who many bytes make a symbol in the"<< endl; cout << " input sequence" << endl; cout << " If `in-memory` is specified, the in-memory construction is tested." << endl; cout << " (2) Performs tests." << endl; cout << " (3) Deletes temp_file." << endl; return 1; // LCOV_EXCL_STOP } test_file = argv[1]; num_bytes = atoi(argv[2]); temp_file = argv[3]; temp_dir = argv[4]; in_memory = argc > 5; if (in_memory) { temp_dir = "@"; int_vector<> data; load_vector_from_file(data, test_file, num_bytes); test_file = ram_file_name(test_file); switch (num_bytes) { case 0: store_to_file(data, test_file); break; case 1: store_to_plain_array<uint8_t>(data, test_file); break; case 2: store_to_plain_array<uint16_t>(data, test_file); break; case 3: store_to_plain_array<uint32_t>(data, test_file); break; case 4: store_to_plain_array<uint64_t>(data, test_file); break; } temp_file = ram_file_name(temp_file); } return RUN_ALL_TESTS(); }
//! @brief Read path from file. void XC::PathSeries::readFromFile(const std::string &fileName) { // determine the number of data points .. open file and count num entries int numDataPoints= getNumDataPointsOnFile(fileName); // create a vector and read in the data if(numDataPoints) { // first open the file std::ifstream theFile1; theFile1.open(fileName.c_str(), std::ios::in); if(theFile1.bad() || !theFile1.is_open()) { std::cerr << getClassName() << "::" << __FUNCTION__ << "; could not open file: " << fileName << std::endl; } else { // now create the vector thePath.resize(numDataPoints); load_vector_from_file(thePath,theFile1); theFile1.close(); // finally close the file } } }