#include #include #include "index_trie.h" #include "index_trie_scan.h" #include "litestream.h" //a paired down version of scan in which the node //is merely printed out... bool verbose = false; //int nth_line = 2<<15; int nth_line = 1; bool print_bytes = true; int num_padding_bytes = 12; int node_header_print_width = 50; const int MAX_PREFIX_LENGTH = 1000; using std::cout; void printline(node_info const& disk_node, litestream & trie_file, string const& sprefix, int prefix_index, int counter) { if (counter % nth_line == 0) { int pos_before = cout.tellp(); if (prefix_index > 0) cout< dloc = dnac.FromIndex(r); cis::dna_t const* dna = dloc.first; dna->source().seekg(dna->seek_start_pos+dloc.second, litestream::POS_BEGIN); dna->source().read(raw_dna_chars, prefix_index_actual); cis::TranslateSeq(raw_dna_nucs, raw_dna_chars, prefix_index_actual); if (! strnsame(raw_dna_nucs, prefix.c_str()+1, prefix_index_actual)) { cout<species() //<<":"<name<<":"< maxdepth) { trie_file.seekg(disk_node_child.subtree_size - disk_node_child.size, litestream::POS_CURRENT); continue; } printscan(trie_file, loci_file, dnac, disk_node_child, pi+1, maxprint, maxdepth); } } //convert a stream of binary data into 01 representation //usage char2bin int main(int argc, char **argv) { char const* data_directory = argv[1]; int64_t buffer_size = 1000; std::ifstream trie_base; std::ifstream loci_base; litestream trie_file(trie_base, buffer_size); trie_file.open(argv[2]); litestream loci_file(loci_base, buffer_size); loci_file.open(argv[3]); std::ifstream dfile(argv[4]); ::print_bytes = argc >= 6 ? (strcmp(argv[5], "bytes") == 0) : false; int maxprint = argc == 7 ? atoi(argv[6]) : -1; int maxdepth = argc == 8 ? atoi(argv[7]) : 100; if (! data_directory) { cerr<<"Please provide a pathname to the data files."<