From 7dd39dc882ad8d23fdb3085991e43c12213269c2 Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Wed, 24 May 2023 14:18:06 +0200 Subject: [PATCH 01/11] updated docs --- docs/custom_databases.md | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/docs/custom_databases.md b/docs/custom_databases.md index 6d8aad94..f4ee06d6 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -200,23 +200,34 @@ The example below extracts sequences and information from a BLAST db to build a # Define BLAST db db="16S_ribosomal_RNA" -# Download BLAST db -wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/${db}*.tar.gz" -# Using 12 threads: curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "${db}.*.tar.gz$" | xargs -P 12 -I{} wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" +# Download BLAST db using 12 threads +curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "${db}.*.tar.gz$" | xargs -P 12 -I{} wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" + +# OPTIONAL Download and check MD5 +wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/${db}*.tar.gz.md5" +diff -qs <(md5sum "${db}"*.tar.gz | sort) <(cat ${db}*.tar.gz.md5 | sort) # Should print "Files /dev/fd/xx and /dev/fd/xx are identical" # Merge and extract BLAST db files -cat "${db}"*.tar.gz | tar xvfz - > ex_files.txt -ex_file=$(head -n 1 ex_files.txt) +cat "${db}"*.tar.gz | tar xvfz - > "${db}_extracted_files.txt" + +# Extract prefix from database +ex_file=$(head -n 1 "${db}_extracted_files.txt") dbprefix="${ex_file%.*}" +# Create folder to write sequence files +mkdir "${dbprefix}" -# Generate sequences from BLAST db -blastdbcmd -entry all -db "${dbprefix}" -out "${db}.fna" - -# Generate ganon input file -blastdbcmd -entry all -db "${dbprefix}" -outfmt "%a %X" | awk -v file="${db}.fna" '{print file"\t"$1"\t"$2 }' > "${db}_ganon_input_file.tsv" +# This command extracts the sequences from the blast dabase and save them into taxid specific files +# It also generates the --input-file for ganon (change %T to %X for leaf-node taxids) +blastdbcmd -entry all -db "${dbprefix}" -outfmt "%a %T %s" | \ +awk -v dbprefix="${dbprefix}" '{file=dbprefix"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ +sort | uniq > "${db}_ganon_input_file.tsv" # Build ganon database -ganon build-custom --input-file "${db}_ganon_input_file.tsv" --db-prefix "${db}" --input-target sequence --level leaves --threads 32 +ganon build-custom --input-file "${db}_ganon_input_file.tsv" --db-prefix "${db}" --level leaves --threads 12 + +# Delete extracted files and sequences +cat "${db}_extracted_files.txt" | xargs rm +rm -rf "${db}_extracted_files.txt" "${dbprefix}" ``` !!! note From 68cd5b747d27fa8644474d1a1f3b2f6f2c6ad689 Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Wed, 24 May 2023 14:37:09 +0200 Subject: [PATCH 02/11] updated docs --- docs/custom_databases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/custom_databases.md b/docs/custom_databases.md index f4ee06d6..3a6ad8ac 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -209,14 +209,14 @@ diff -qs <(md5sum "${db}"*.tar.gz | sort) <(cat ${db}*.tar.gz.md5 | sort) # Sho # Merge and extract BLAST db files cat "${db}"*.tar.gz | tar xvfz - > "${db}_extracted_files.txt" - # Extract prefix from database ex_file=$(head -n 1 "${db}_extracted_files.txt") dbprefix="${ex_file%.*}" + # Create folder to write sequence files mkdir "${dbprefix}" -# This command extracts the sequences from the blast dabase and save them into taxid specific files +# This command extracts sequences from the blastdb and writes them into taxid specific files # It also generates the --input-file for ganon (change %T to %X for leaf-node taxids) blastdbcmd -entry all -db "${dbprefix}" -outfmt "%a %T %s" | \ awk -v dbprefix="${dbprefix}" '{file=dbprefix"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ From 31d08a7c160911dd1941ee85a190dcebdc5907f4 Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Wed, 24 May 2023 16:58:53 +0200 Subject: [PATCH 03/11] updated docs --- docs/custom_databases.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/custom_databases.md b/docs/custom_databases.md index 3a6ad8ac..a1835974 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -200,12 +200,14 @@ The example below extracts sequences and information from a BLAST db to build a # Define BLAST db db="16S_ribosomal_RNA" -# Download BLAST db using 12 threads -curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "${db}.*.tar.gz$" | xargs -P 12 -I{} wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" +# Download BLAST db using 12 threads - they fail very often, re-run this command many times until all finish (no output) +curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "^${db}\..*tar.gz$" | xargs -P 12 -I{} wget --continue -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" # OPTIONAL Download and check MD5 -wget -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/${db}*.tar.gz.md5" -diff -qs <(md5sum "${db}"*.tar.gz | sort) <(cat ${db}*.tar.gz.md5 | sort) # Should print "Files /dev/fd/xx and /dev/fd/xx are identical" +wget -O - -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/${db}\.*tar.gz.md5" > "${db}.md5" +md5sum "${db}".*tar.gz > "${db}_downloaded.md5" +diff -s <(sort -k 2,2 "${db}.md5") <(sort -k 2,2 "${db}_downloaded.md5") # Should print "Files /dev/fd/xx and /dev/fd/xx are identical" +rm "${db}.md5" "${db}_downloaded.md5" # Merge and extract BLAST db files cat "${db}"*.tar.gz | tar xvfz - > "${db}_extracted_files.txt" From d512f1b19ff8c88f6a593cba7ecd76cfd77d797f Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Fri, 26 May 2023 16:53:49 +0200 Subject: [PATCH 04/11] updated docs --- docs/custom_databases.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/custom_databases.md b/docs/custom_databases.md index a1835974..9033b625 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -199,37 +199,35 @@ The example below extracts sequences and information from a BLAST db to build a ```bash # Define BLAST db db="16S_ribosomal_RNA" +threads=8 -# Download BLAST db using 12 threads - they fail very often, re-run this command many times until all finish (no output) -curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "^${db}\..*tar.gz$" | xargs -P 12 -I{} wget --continue -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" +# Download BLAST db - re-run this command many times until all finish (no more output) +curl --silent --list-only ftp://ftp.ncbi.nlm.nih.gov/blast/db/ | grep "^${db}\..*tar.gz$" | xargs -P ${threads:-1} -I{} wget --continue -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/{}" # OPTIONAL Download and check MD5 wget -O - -nd --quiet --show-progress "ftp://ftp.ncbi.nlm.nih.gov/blast/db/${db}\.*tar.gz.md5" > "${db}.md5" md5sum "${db}".*tar.gz > "${db}_downloaded.md5" diff -s <(sort -k 2,2 "${db}.md5") <(sort -k 2,2 "${db}_downloaded.md5") # Should print "Files /dev/fd/xx and /dev/fd/xx are identical" -rm "${db}.md5" "${db}_downloaded.md5" -# Merge and extract BLAST db files -cat "${db}"*.tar.gz | tar xvfz - > "${db}_extracted_files.txt" -# Extract prefix from database -ex_file=$(head -n 1 "${db}_extracted_files.txt") -dbprefix="${ex_file%.*}" +# Extract BLAST db files, if successful, remove .tar.gz +ls "${db}"*.tar.gz | xargs -P ${threads} -I{} sh -c 'gzip -dc {} | tar --overwrite -vxf - && rm {}' > "${db}_extracted_files.txt" -# Create folder to write sequence files -mkdir "${dbprefix}" +# Create folder to write sequence files (split into 10 sub-folders) +seq 0 9 | xargs -i mkdir -p "${db}"/{} # This command extracts sequences from the blastdb and writes them into taxid specific files -# It also generates the --input-file for ganon (change %T to %X for leaf-node taxids) -blastdbcmd -entry all -db "${dbprefix}" -outfmt "%a %T %s" | \ -awk -v dbprefix="${dbprefix}" '{file=dbprefix"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ +# It also generates the --input-file for ganon +blastdbcmd -entry all -db "${db}" -outfmt "%a %T %s" | \ +awk -v db="${db}" '{file=db"/"substr($2,1,1)"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ sort | uniq > "${db}_ganon_input_file.tsv" # Build ganon database -ganon build-custom --input-file "${db}_ganon_input_file.tsv" --db-prefix "${db}" --level leaves --threads 12 +ganon build-custom --input-file "${db}_ganon_input_file.tsv" --db-prefix "${db}" --level species --threads 12 # Delete extracted files and sequences cat "${db}_extracted_files.txt" | xargs rm -rm -rf "${db}_extracted_files.txt" "${dbprefix}" +rm "${db}_extracted_files.txt" "${db}_ganon_input_file.tsv" "${db}.md5" "${db}_downloaded.md5" +rm -rf "${db}" ``` !!! note From c06f1883b86036a57897c0869f9783a22f62b668 Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Mon, 29 May 2023 16:36:05 +0200 Subject: [PATCH 05/11] updated docs --- docs/custom_databases.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/custom_databases.md b/docs/custom_databases.md index 9033b625..5ddd030d 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -218,16 +218,17 @@ seq 0 9 | xargs -i mkdir -p "${db}"/{} # This command extracts sequences from the blastdb and writes them into taxid specific files # It also generates the --input-file for ganon blastdbcmd -entry all -db "${db}" -outfmt "%a %T %s" | \ -awk -v db="${db}" '{file=db"/"substr($2,1,1)"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ +awk -v db="$(realpath ${db})" '{file=db"/"substr($2,1,1)"/"$2".fna"; print ">"$1"\n"$3 >> file; print file"\t"$2"\t"$2}' | \ sort | uniq > "${db}_ganon_input_file.tsv" # Build ganon database ganon build-custom --input-file "${db}_ganon_input_file.tsv" --db-prefix "${db}" --level species --threads 12 -# Delete extracted files and sequences +# Delete extracted files and auxiliary files cat "${db}_extracted_files.txt" | xargs rm -rm "${db}_extracted_files.txt" "${db}_ganon_input_file.tsv" "${db}.md5" "${db}_downloaded.md5" -rm -rf "${db}" +rm "${db}_extracted_files.txt" "${db}.md5" "${db}_downloaded.md5" +# Delete sequences +rm -rf "${db}" "${db}_ganon_input_file.tsv" ``` !!! note From ecf85a931d733c0ed2668abc67e348ac388fd3aa Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Tue, 4 Jul 2023 17:06:21 +0200 Subject: [PATCH 06/11] updated docs --- docs/default_databases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/default_databases.md b/docs/default_databases.md index b2ec6518..4b7f7e41 100644 --- a/docs/default_databases.md +++ b/docs/default_databases.md @@ -31,7 +31,7 @@ NCBI RefSeq and GenBank repositories are common resources to obtain reference se | RefSeq | # assemblies | Size (GB) * | | |---|---|---|---| -| Complete | 295219 | 350 - 500 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --db-prefix abfv_rs`
| +| Complete | 295219 | 160 - 500 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --db-prefix abfv_rs`
| | One assembly per species | 52779 | 40 - 98 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --genome-updater "-A 'species:1'" --db-prefix abfv_rs_t1s`
| | Complete genomes (higher quality) | 44121 | 19 - 64 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes --db-prefix abfv_rs_cg`
| | One assembly per species of complete genomes | 19713 | 8 - 27 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes "-A 'species:1'" --db-prefix abfv_rs_cg_t1s`
| @@ -39,7 +39,7 @@ NCBI RefSeq and GenBank repositories are common resources to obtain reference se | GenBank | # assemblies | Size (GB) * | | |---|---|---|---| -| Complete | 1595845 | |
cmd`ganon build --source genbank --organism-group archaea bacteria fungi viral --threads 48 --db-prefix abfv_gb`
| +| Complete | 1595845 | - |
cmd`ganon build --source genbank --organism-group archaea bacteria fungi viral --threads 48 --db-prefix abfv_gb`
| | One assembly per species | 99505 | 91 - 420 |
cmd`ganon build --source genbank --organism-group archaea bacteria fungi viral --threads 48 --genome-updater "-A 'species:1'" --db-prefix abfv_gb_t1s`
| | Complete genomes (higher quality) | 92917 | 24 - 132 |
cmd`ganon build --source genbank --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes --db-prefix abfv_gb_cg`
| | One assembly per species of complete genomes | 34497 | 10 - 34 |
cmd`ganon build --source genbank --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes "-A 'species:1'" --db-prefix abfv_gb_cg_t1s`
| From f87e11ab72cf0c4e702b29438197f5629d8051d0 Mon Sep 17 00:00:00 2001 From: pirovc <4673375+pirovc@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:45:11 +0200 Subject: [PATCH 07/11] Feature/fpr query (#253) * working version * fix reassign * fix bug too many hashes count * fix hibf and reassign * remove debug print, skip if 1 * fix reassign, tests --- src/ganon-classify/CommandLineParser.cpp | 3 + src/ganon-classify/GanonClassify.cpp | 218 +++++++++++++----- .../include/ganon-classify/Config.hpp | 29 +++ src/ganon/classify.py | 1 + src/ganon/config.py | 1 + src/ganon/reassign.py | 3 +- tests/ganon-classify/GanonClassify.test.cpp | 72 ++++++ 7 files changed, 266 insertions(+), 61 deletions(-) diff --git a/src/ganon-classify/CommandLineParser.cpp b/src/ganon-classify/CommandLineParser.cpp index 2b0bb3c9..344c23ca 100644 --- a/src/ganon-classify/CommandLineParser.cpp +++ b/src/ganon-classify/CommandLineParser.cpp @@ -23,6 +23,7 @@ std::optional< Config > CommandLineParser::parse( int argc, char** argv ) ( "c,rel-cutoff", "Relative cutoff (i.e. percentage of minimizers). 0 for no cutoff. One or one per filter (comma-separated). Default: 0.2", cxxopts::value< std::vector< double > >() ) ( "d,rel-filter", "Relative filter. Additional percentage of matches allowed (relative to the best match). 1 for no filtering. one or one per hierarchy label (comma-separated). Default: 0.0", cxxopts::value< std::vector< double > >() ) + ( "f,fpr-query", "Min. False positive for a query. 1 for no filtering. one or one per hierarchy label (comma-separated). Default: 1.0", cxxopts::value< std::vector< double > >() ) ( "o,output-prefix", "Output prefix (prefix.rep, [prefix.lca, prefix.all, prefix.unc]). If multi-level --hierarchy-labels is provided, files are generated accordingly (prefix.hierarchy.lca and prefix.hierarchy.all). Omit to output to STDOUT (only .rep will be printed)", cxxopts::value< std::string >() ) ( "l,output-lca", "Runs and outputs file with lca classification (prefix.lca)", cxxopts::value< bool >() ) @@ -80,6 +81,8 @@ std::optional< Config > CommandLineParser::parse( int argc, char** argv ) config.rel_cutoff = args["rel-cutoff"].as< std::vector< double > >(); if ( args.count( "rel-filter" ) ) config.rel_filter = args["rel-filter"].as< std::vector< double > >(); + if ( args.count( "fpr-query" ) ) + config.fpr_query = args["fpr-query"].as< std::vector< double > >(); if ( args.count( "output-prefix" ) ) config.output_prefix = args["output-prefix"].as< std::string >(); diff --git a/src/ganon-classify/GanonClassify.cpp b/src/ganon-classify/GanonClassify.cpp index 3132f295..8a304693 100644 --- a/src/ganon-classify/GanonClassify.cpp +++ b/src/ganon-classify/GanonClassify.cpp @@ -48,9 +48,10 @@ typedef uint16_t TIntCount; typedef raptor::hierarchical_interleaved_bloom_filter< seqan3::data_layout::uncompressed > THIBF; typedef seqan3::interleaved_bloom_filter< seqan3::data_layout::uncompressed > TIBF; -typedef robin_hood::unordered_map< std::string, size_t > TMatches; +typedef robin_hood::unordered_map< std::string, std::tuple< size_t, double > > TMatches; typedef std::vector< std::tuple< size_t, std::string > > TBinMap; typedef robin_hood::unordered_map< std::string, std::vector< size_t > > TMap; +typedef robin_hood::unordered_map< std::string, double > TTargetFpr; struct Node { @@ -98,6 +99,16 @@ struct ReadBatches struct ReadMatch { + ReadMatch() + { + } + + ReadMatch( std::string _target, size_t _kmer_count ) + { + target = _target; + kmer_count = _kmer_count; + } + std::string target; size_t kmer_count; }; @@ -188,6 +199,7 @@ struct FilterConfig std::string tax_file = ""; double rel_cutoff; IBFConfig ibf_config; + TTargetFpr target_fpr; }; struct HierarchyConfig @@ -196,6 +208,7 @@ struct HierarchyConfig uint8_t kmer_size; uint32_t window_size; double rel_filter; + double fpr_query; std::string output_file_lca; std::string output_file_all; }; @@ -247,8 +260,13 @@ std::map< std::string, HierarchyConfig > parse_hierarchy( Config& config ) output_file_all = config.output_prefix + ".all"; } - parsed_hierarchy[config.hierarchy_labels[h]] = - HierarchyConfig{ fc, 0, 0, config.rel_filter[hierarchy_count], output_file_lca, output_file_all }; + parsed_hierarchy[config.hierarchy_labels[h]] = HierarchyConfig{ fc, + 0, + 0, + config.rel_filter[hierarchy_count], + config.fpr_query[hierarchy_count], + output_file_lca, + output_file_all }; ++hierarchy_count; } else @@ -268,6 +286,7 @@ void print_hierarchy( Config const& config, auto const& parsed_hierarchy ) { std::cerr << hierarchy_config.first << newl; std::cerr << "--rel-filter " << hierarchy_config.second.rel_filter << newl; + std::cerr << "--fpr-query " << hierarchy_config.second.fpr_query << newl; for ( auto const& filter_config : hierarchy_config.second.filters ) { std::cerr << " " << filter_config.ibf_file; @@ -311,31 +330,42 @@ inline size_t threshold_rel( size_t n_hashes, double p ) return std::ceil( n_hashes * p ); } +// https://stackoverflow.com/questions/44718971/calculate-binomial-coffeficient-very-reliably +inline double binom( double n, double k ) noexcept +{ + return std::exp( std::lgamma( n + 1 ) - std::lgamma( n - k + 1 ) - std::lgamma( k + 1 ) ); +} + + void select_matches( Filter< TIBF >& filter, TMatches& matches, std::vector< size_t >& hashes, auto& agent, size_t threshold_cutoff, - size_t& max_kmer_count_read ) + size_t& max_kmer_count_read, + size_t n_hashes ) { - // Count every occurance on IBF + // Count every occurrence on IBF seqan3::counting_vector< detail::TIntCount > counts = agent.bulk_count( hashes ); for ( auto const& [target, bins] : filter.map ) { - // Sum counts among bins (split target (user bins) into several tecnical bins) + // Sum counts among bins (split target (user bins) into several technical bins) size_t summed_count = 0; for ( auto const& binno : bins ) { summed_count += counts[binno]; } + // summed_count can be higher than n_hashes for matches in several technical bins + if ( summed_count > n_hashes ) + summed_count = n_hashes; if ( summed_count >= threshold_cutoff ) { // ensure that count was not already found for target with higher count // can happen in case of ambiguos targets in multiple filters - if ( summed_count > matches[target] ) + if ( summed_count > std::get< 0 >( matches[target] ) ) { - matches[target] = summed_count; + matches[target] = std::make_tuple( summed_count, filter.filter_config.target_fpr[target] ); if ( summed_count > max_kmer_count_read ) max_kmer_count_read = summed_count; } @@ -348,39 +378,59 @@ void select_matches( Filter< THIBF >& filter, std::vector< size_t >& hashes, auto& agent, size_t threshold_cutoff, - size_t& max_kmer_count_read ) + size_t& max_kmer_count_read, + size_t n_hashes ) { // Count only matches above threhsold seqan3::counting_vector< detail::TIntCount > counts = agent.bulk_count( hashes, threshold_cutoff ); - // Only one bin per target for ( auto const& [target, bins] : filter.map ) { if ( counts[bins[0]] > 0 ) { - const size_t count = counts[bins[0]]; + // Sum counts among bins (split target (user bins) into several technical bins) + size_t summed_count = counts[bins[0]]; + // summed_count can be higher than n_hashes for matches in several technical bins + if ( summed_count > n_hashes ) + summed_count = n_hashes; // ensure that count was not already found for target with higher count - // can happen in case of ambiguos targets in multiple filters - if ( count > matches[target] ) + // can happen in case of ambiguous targets in multiple filters + if ( summed_count > std::get< 0 >( matches[target] ) ) { - matches[target] = count; - if ( count > max_kmer_count_read ) - max_kmer_count_read = count; + matches[target] = std::make_tuple( summed_count, filter.filter_config.target_fpr[target] ); + if ( summed_count > max_kmer_count_read ) + max_kmer_count_read = summed_count; } } } } -size_t filter_matches( ReadOut& read_out, TMatches& matches, TRep& rep, size_t threshold_filter ) +size_t filter_matches( + ReadOut& read_out, TMatches& matches, TRep& rep, size_t threshold_filter, size_t n_hashes, double min_fpr_query ) { - for ( auto const& [target, kmer_count] : matches ) + for ( auto const& [target, count_fpr] : matches ) { - if ( kmer_count >= threshold_filter ) + if ( std::get< 0 >( count_fpr ) >= threshold_filter ) { + // Filter by fpr-query + if ( min_fpr_query < 1.0 ) + { + double q = 1; + for ( size_t i = 0; i <= std::get< 0 >( count_fpr ); i++ ) + { + q -= binom( n_hashes, i ) * pow( std::get< 1 >( count_fpr ), i ) + * pow( 1 - std::get< 1 >( count_fpr ), n_hashes - i ); + } + if ( q > min_fpr_query ) + { + continue; + } + } + rep[target].matches++; - read_out.matches.push_back( ReadMatch{ target, kmer_count } ); + read_out.matches.push_back( ReadMatch{ target, std::get< 0 >( count_fpr ) } ); } } @@ -459,7 +509,7 @@ void classify( std::vector< Filter< TFilter > >& filters, // Best scoring kmer count size_t max_kmer_count_read = 0; - + size_t n_hashes = 0; // if length is smaller than window, skip read if ( read1_len >= hierarchy_config.window_size ) { @@ -473,7 +523,7 @@ void classify( std::vector< Filter< TFilter > >& filters, hashes.insert( hashes.end(), h2.begin(), h2.end() ); } - const size_t n_hashes = hashes.size(); + n_hashes = hashes.size(); // if n_hashes are bigger than int limit, skip read if ( n_hashes <= hashes_limit ) { @@ -495,7 +545,8 @@ void classify( std::vector< Filter< TFilter > >& filters, threshold_cutoff = 1; // count and select matches - select_matches( filters[i], matches, hashes, agents[i], threshold_cutoff, max_kmer_count_read ); + select_matches( + filters[i], matches, hashes, agents[i], threshold_cutoff, max_kmer_count_read, n_hashes ); } } } @@ -506,52 +557,58 @@ void classify( std::vector< Filter< TFilter > >& filters, // if read got valid matches (above cutoff) if ( max_kmer_count_read > 0 ) { - total.reads_classified++; // Calculate threshold for filtering (keep matches above) const size_t threshold_filter = max_kmer_count_read - threshold_rel( max_kmer_count_read, hierarchy_config.rel_filter ); // Filter matches - const size_t count_filtered_matches = filter_matches( read_out, matches, rep, threshold_filter ); + const size_t count_filtered_matches = + filter_matches( read_out, matches, rep, threshold_filter, n_hashes, hierarchy_config.fpr_query ); - if ( !config.skip_lca ) + if ( count_filtered_matches > 0 ) { - ReadOut read_out_lca( rb.ids[readID] ); - if ( count_filtered_matches == 1 ) - { - // just one match, copy read read_out and set as unique - read_out_lca = read_out; - rep[read_out.matches[0].target].unique_reads++; - } - else - { - lca_matches( read_out, read_out_lca, max_kmer_count_read, lca, rep ); - } - if ( config.output_lca ) - classified_lca_queue.push( read_out_lca ); - } - else - { - // Not running lca and has unique match - if ( count_filtered_matches == 1 ) + total.reads_classified++; + + if ( !config.skip_lca ) { - rep[read_out.matches[0].target].unique_reads++; + ReadOut read_out_lca( rb.ids[readID] ); + if ( count_filtered_matches == 1 ) + { + // just one match, copy read read_out and set as unique + read_out_lca = read_out; + rep[read_out.matches[0].target].unique_reads++; + } + else + { + lca_matches( read_out, read_out_lca, max_kmer_count_read, lca, rep ); + } + + if ( config.output_lca ) + classified_lca_queue.push( read_out_lca ); } else { - // without tax, no lca, count multi-matches to a root node - // to keep consistency among reports (no. of classified reads) - rep[config.tax_root_node].unique_reads++; + // Not running lca and has unique match + if ( count_filtered_matches == 1 ) + { + rep[read_out.matches[0].target].unique_reads++; + } + else + { + // without tax, no lca, count multi-matches to a root node + // to keep consistency among reports (no. of classified reads) + rep[config.tax_root_node].unique_reads++; + } } - } - if ( config.output_all ) - classified_all_queue.push( read_out ); + if ( config.output_all ) + classified_all_queue.push( read_out ); - // read classified, continue to the next - continue; + // read classified, continue to the next + continue; + } } // not classified @@ -597,7 +654,11 @@ void write_report( TRep& rep, TTax& tax, std::ofstream& out_rep, std::string hie } } -size_t load_filter( THIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std::string const& input_filter_file ) +size_t load_filter( THIBF& filter, + IBFConfig& ibf_config, + TBinMap& bin_map, + std::string const& input_filter_file, + TTargetFpr& target_fpr ) { std::ifstream is( input_filter_file, std::ios::binary ); cereal::BinaryInputArchive archive( is ); @@ -624,6 +685,7 @@ size_t load_filter( THIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std: // load ibf_config from raptor params ibf_config.window_size = window_size; ibf_config.kmer_size = shape.count(); + ibf_config.max_fp = fpr; // Create map from paths size_t binno{}; @@ -645,6 +707,8 @@ size_t load_filter( THIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std: } bin_map.push_back( std::make_tuple( binno, f ) ); + // same fpr for all + target_fpr[f] = fpr; } ++binno; } @@ -652,7 +716,20 @@ size_t load_filter( THIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std: return filter.user_bins.num_user_bins(); } -size_t load_filter( TIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std::string const& input_filter_file ) +inline double false_positive( uint64_t bin_size_bits, uint8_t hash_functions, uint64_t n_hashes ) +{ + /* + * calculates the theoretical false positive of a bin (bf) based on parameters + */ + return std::pow( 1 - std::exp( -hash_functions / ( bin_size_bits / static_cast< double >( n_hashes ) ) ), + hash_functions ); +} + +size_t load_filter( TIBF& filter, + IBFConfig& ibf_config, + TBinMap& bin_map, + std::string const& input_filter_file, + TTargetFpr& target_fpr ) { std::ifstream is( input_filter_file, std::ios::binary ); cereal::BinaryInputArchive archive( is ); @@ -665,6 +742,25 @@ size_t load_filter( TIBF& filter, IBFConfig& ibf_config, TBinMap& bin_map, std:: archive( hashes_count_std ); archive( bin_map ); archive( filter ); + + + // generate fpr for each bin + for ( auto const& [target, count] : hashes_count_std ) + { + // Use average number of hashes for each bin to calculate fp + uint64_t n_bins_target = std::ceil( count / static_cast< double >( ibf_config.max_hashes_bin ) ); + // this can be off by a very small number (rounding ceil on multiple bins) + uint64_t n_hashes_bin = std::ceil( count / static_cast< double >( n_bins_target ) ); + + // false positive for the current target, considering split bins + target_fpr[target] = + 1.0 + - std::pow( 1.0 - false_positive( ibf_config.bin_size_bits, ibf_config.hash_functions, n_hashes_bin ), + n_bins_target ); + ; + } + + return filter.bin_count(); } @@ -693,11 +789,12 @@ bool load_files( std::vector< Filter< TFilter > >& filters, std::vector< FilterC size_t filter_cnt = 0; for ( auto& filter_config : fconf ) { - TTax tax; - IBFConfig ibf_config; - TBinMap bin_map; - TFilter filter; - auto bin_count = load_filter( filter, ibf_config, bin_map, filter_config.ibf_file ); + TTax tax; + IBFConfig ibf_config; + TBinMap bin_map; + TFilter filter; + TTargetFpr target_fpr; + auto bin_count = load_filter( filter, ibf_config, bin_map, filter_config.ibf_file, target_fpr ); // Parse vector with bin_map to the old map TMap map; @@ -707,6 +804,7 @@ bool load_files( std::vector< Filter< TFilter > >& filters, std::vector< FilterC } filter_config.ibf_config = ibf_config; + filter_config.target_fpr = target_fpr; if ( filter_config.tax_file != "" ) tax = load_tax( filter_config.tax_file ); diff --git a/src/ganon-classify/include/ganon-classify/Config.hpp b/src/ganon-classify/include/ganon-classify/Config.hpp index a4ab2087..8ca33738 100644 --- a/src/ganon-classify/include/ganon-classify/Config.hpp +++ b/src/ganon-classify/include/ganon-classify/Config.hpp @@ -29,6 +29,7 @@ struct Config std::vector< double > rel_cutoff{ 0.2 }; std::vector< double > rel_filter{ 0.0 }; + std::vector< double > fpr_query{ 1.0 }; std::string output_prefix = ""; bool output_lca = false; @@ -118,6 +119,21 @@ struct Config return false; } + valid_val = true; + for ( uint16_t i = 0; i < fpr_query.size(); ++i ) + { + if ( fpr_query[i] < 0 || fpr_query[i] > 1 ) + { + valid_val = false; + break; + } + } + if ( !valid_val ) + { + std::cerr << "--fpr-query values should be set between 0 and 1 (1 to disable)" << std::endl; + return false; + } + if ( n_batches < 1 ) n_batches = 1; @@ -163,6 +179,19 @@ struct Config return false; } + if ( fpr_query.size() == 1 && unique_hierarchy > 1 ) + { + for ( uint16_t b = 1; b < unique_hierarchy; ++b ) + { + fpr_query.push_back( fpr_query[0] ); + } + } + else if ( fpr_query.size() != unique_hierarchy ) + { + std::cerr << "Please provide a single or one-per-hierarchy --fpr-query value[s]" << std::endl; + return false; + } + if ( tax.size() > 0 && ibf.size() != tax.size() ) { std::cerr << "The number of files provided with --ibf and --tax should match" << std::endl; diff --git a/src/ganon/classify.py b/src/ganon/classify.py index f6556694..0c59c9df 100644 --- a/src/ganon/classify.py +++ b/src/ganon/classify.py @@ -35,6 +35,7 @@ def classify(cfg): "--hierarchy-labels " + ",".join(cfg.hierarchy_labels) if cfg.hierarchy_labels else "", "--rel-cutoff " + ",".join([str(rc) for rc in cfg.rel_cutoff]) if cfg.rel_cutoff else "", "--rel-filter " + ",".join([str(rf) for rf in cfg.rel_filter]) if cfg.rel_filter else "", + "--fpr-query " + ",".join([str(fq) for fq in cfg.fpr_query]) if cfg.fpr_query else "", "--output-prefix " + cfg.output_prefix if cfg.output_prefix else "", "--skip-lca" if cfg.reassign and not cfg.output_lca else "", "--output-lca" if cfg.output_lca else "", diff --git a/src/ganon/config.py b/src/ganon/config.py index c0c974ab..c7300a5d 100644 --- a/src/ganon/config.py +++ b/src/ganon/config.py @@ -132,6 +132,7 @@ def __init__(self, which: str=None, **kwargs): classify_group_cutoff_filter = classify_parser.add_argument_group("cutoff/filter arguments") classify_group_cutoff_filter.add_argument("-c", "--rel-cutoff", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.75], help="Min. percentage of a read (set of minimizers) shared with the a reference necessary to consider a match. Generally used to cutoff low similarity matches. Single value or one per database (e.g. 0.7 1 0.25). 0 for no cutoff") classify_group_cutoff_filter.add_argument("-e", "--rel-filter", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.0], help="Additional relative percentage of minimizers (relative to the best match) to keep a match. Generally used to select best matches above cutoff. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") + classify_group_cutoff_filter.add_argument("-f", "--fpr-query", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[1.0], help="FPR. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") classify_group_output = classify_parser.add_argument_group("output arguments") classify_group_output.add_argument("-o", "--output-prefix", type=str, metavar="", help="Output prefix for output (.rep) and report (.tre). Empty to output to STDOUT (only .rep)") diff --git a/src/ganon/reassign.py b/src/ganon/reassign.py index ba52a1ec..f65aa974 100644 --- a/src/ganon/reassign.py +++ b/src/ganon/reassign.py @@ -21,7 +21,7 @@ def reassign(cfg): if check_file(rep_file): print_log(".rep file found: " + rep_file, cfg.quiet) - # look for hiearchies + # look for hierarchies with open(rep_file) as rep: for line in rep: if line[0] != "#": @@ -179,6 +179,7 @@ def get_top_match(matches, prob): # set first match as target (also the case for no unique matches) target = matches[0][0] kcount = matches[0][1] + max_p = 0 for m, k in matches: if prob[m] > max_p: diff --git a/tests/ganon-classify/GanonClassify.test.cpp b/tests/ganon-classify/GanonClassify.test.cpp index 3ea94373..7624e4a6 100644 --- a/tests/ganon-classify/GanonClassify.test.cpp +++ b/tests/ganon-classify/GanonClassify.test.cpp @@ -782,6 +782,42 @@ SCENARIO( "classifying reads with errors", "[ganon-classify][with-errors]" ) } } + SECTION( "--rel-cutoff 0.2 --rel-filter 0.5 --fpr-query 1e-10" ) + { + std::string prefix{ folder_prefix + "rel_cutoff_0.2_rel_filter_0.5_fpr_query_1e-10" }; + auto cfg = config_classify::defaultConfig( prefix ); + cfg.ibf = { base_prefix + ".ibf" }; + cfg.single_reads = { folder_prefix + "readF.fasta" }; + cfg.rel_cutoff = { 0.2 }; + cfg.rel_filter = { 0.5 }; + cfg.fpr_query = { 1e-10 }; + REQUIRE( GanonClassify::run( cfg ) ); + config_classify::Res res{ cfg }; + config_classify::sanity_check( cfg, res ); + + REQUIRE( res.all["readF"].size() == 2 ); + REQUIRE( res.all["readF"]["e0"] == 9 ); + REQUIRE( res.all["readF"]["e1F_e2R"] == 5 ); + + SECTION( "--paired-reads" ) + { + prefix = prefix + "_paired"; + cfg.output_prefix = prefix; + cfg.single_reads = {}; + cfg.paired_reads = { folder_prefix + "readF.fasta", folder_prefix + "readR.fasta" }; + + REQUIRE( GanonClassify::run( cfg ) ); + config_classify::Res res{ cfg }; + config_classify::sanity_check( cfg, res ); + + REQUIRE( res.all["readF"].size() == 3 ); + REQUIRE( res.all["readF"]["e0"] == 18 ); + REQUIRE( res.all["readF"]["e1F"] == 14 ); + REQUIRE( res.all["readF"]["e1F_e1R"] == 10 ); + } + } + + SECTION( "--rel-cutoff 0.6 --rel-filter 1 (OFF)" ) { std::string prefix{ folder_prefix + "rel_cutoff_0.6_rel_filter_1" }; @@ -889,6 +925,42 @@ SCENARIO( "classifying reads with errors", "[ganon-classify][with-errors]" ) } } + SECTION( "--rel-cutoff 0 (OFF) --rel-filter 1 (OFF) --fpr-query 1e-10" ) + { + std::string prefix{ folder_prefix + "rel_cutoff_1_rel_filter_1_fpr_query_1e-10" }; + auto cfg = config_classify::defaultConfig( prefix ); + cfg.ibf = { base_prefix + ".ibf" }; + cfg.single_reads = { folder_prefix + "readF.fasta" }; + cfg.rel_cutoff = { 0 }; + cfg.rel_filter = { 1 }; + cfg.fpr_query = { 1e-10 }; + + REQUIRE( GanonClassify::run( cfg ) ); + config_classify::Res res{ cfg }; + config_classify::sanity_check( cfg, res ); + + REQUIRE( res.all["readF"].size() == 2 ); + REQUIRE( res.all["readF"]["e0"] == 9 ); + REQUIRE( res.all["readF"]["e1F_e2R"] == 5 ); + + SECTION( "--paired-reads" ) + { + prefix = prefix + "_paired"; + cfg.output_prefix = prefix; + cfg.single_reads = {}; + cfg.paired_reads = { folder_prefix + "readF.fasta", folder_prefix + "readR.fasta" }; + + REQUIRE( GanonClassify::run( cfg ) ); + config_classify::Res res{ cfg }; + config_classify::sanity_check( cfg, res ); + + REQUIRE( res.all["readF"].size() == 3 ); + REQUIRE( res.all["readF"]["e0"] == 18 ); + REQUIRE( res.all["readF"]["e1F"] == 14 ); + REQUIRE( res.all["readF"]["e1F_e1R"] == 10 ); + } + } + SECTION( "--window-size" ) { // build with --window-size From 4ad69f4ba016156bd7bb4c1e00878a8701329edf Mon Sep 17 00:00:00 2001 From: pirovc <4673375+pirovc@users.noreply.github.com> Date: Mon, 31 Jul 2023 17:08:02 +0200 Subject: [PATCH 08/11] Feature/skip genome size (#254) * generate genome size 1 for all with skip option * fix gtdb test online --- src/ganon/config.py | 5 +- src/ganon/report.py | 10 +- src/ganon/tax_util.py | 93 ++++++++++--------- tests/ganon/integration_online/test_report.py | 32 +++++++ 4 files changed, 95 insertions(+), 45 deletions(-) diff --git a/src/ganon/config.py b/src/ganon/config.py index c7300a5d..81609b4a 100644 --- a/src/ganon/config.py +++ b/src/ganon/config.py @@ -52,7 +52,7 @@ def __init__(self, which: str=None, **kwargs): build_default_advanced_args.add_argument("-s", "--hash-functions", type=unsigned_int(minval=0, maxval=5), metavar="", default=4, help="The number of hash functions for the interleaved bloom filter [0-5]. 0 to detect optimal value.", choices=range(6)) build_default_advanced_args.add_argument("-j", "--mode", type=str, metavar="", default="avg", help="Create smaller or faster filters at the cost of classification speed or database size, respectively [" + ", ".join(self.choices_mode) + "]. If --filter-size is used, smaller/smallest refers to the false positive rate. By default, an average value is calculated to balance classification speed and database size.", choices=self.choices_mode) build_default_advanced_args.add_argument("-y", "--min-length", type=unsigned_int(minval=0), metavar="", default=0, help="Skip sequences smaller then value defined. 0 to not skip any sequence.") - build_default_advanced_args.add_argument("--hibf", action="store_true", help="Builds an HIBF with raptor/chopper (v3). --mode, --filter-size and --min-length will be ignored.") + build_default_advanced_args.add_argument("--hibf", action="store_true", help="Builds an HIBF with raptor/chopper (v3). --mode, --filter-size and --min-length will be ignored.") #################################################################################################### @@ -69,6 +69,7 @@ def __init__(self, which: str=None, **kwargs): build_download_args.add_argument("-u", "--genome-updater", type=str, metavar="", help="Additional genome_updater parameters (https://github.com/pirovc/genome_updater)") build_download_args.add_argument("-m", "--taxonomy-files", type=file_exists, nargs="*", metavar="", help="Specific files for taxonomy - otherwise files will be downloaded") build_download_args.add_argument("-z", "--genome-size-files", type=file_exists, nargs="*", metavar="", help="Specific files for genome size estimation - otherwise files will be downloaded") + build_download_args.add_argument("--skip-genome-size", action="store_true", help="Do not attempt to get genome sizes. Activate this option when using sequences not representing full genomes.") #################################################################################################### @@ -85,6 +86,7 @@ def __init__(self, which: str=None, **kwargs): build_custom_args.add_argument("-l", "--level", type=str, metavar="", help="Use a specialized target to build the database. By default, --level is the --input-target. Options: any available taxonomic rank [species, genus, ...] or 'leaves' (requires --taxonomy). Further specialization options [" + ", ".join(self.choices_level) + "]. assembly will retrieve and use the assembly accession and name. custom requires and uses the specialization field in the --input-file.") build_custom_args.add_argument("-m", "--taxonomy-files", type=file_exists, nargs="*", metavar="", help="Specific files for taxonomy - otherwise files will be downloaded") build_custom_args.add_argument("-z", "--genome-size-files", type=file_exists, nargs="*", metavar="", help="Specific files for genome size estimation - otherwise files will be downloaded") + build_custom_args.add_argument("--skip-genome-size", action="store_true", help="Do not attempt to get genome sizes. Activate this option when using sequences not representing full genomes.") ncbi_args = build_custom_parser.add_argument_group("ncbi arguments") ncbi_args.add_argument("-r", "--ncbi-sequence-info", type=str, nargs="*", default=[], metavar="", help="Uses NCBI e-utils webservices or downloads accession2taxid files to extract target information. [" + ", ".join(self.choices_ncbi_sequence_info) + " or one or more accession2taxid files from https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/]. By default uses e-utils up-to 50000 sequences or downloads nucl_gb nucl_wgs otherwise.") @@ -185,6 +187,7 @@ def __init__(self, which: str=None, **kwargs): report_group_dbtax.add_argument("-x", "--taxonomy", type=str, metavar="", default="ncbi", help="Taxonomy database to use [" + ", ".join(self.choices_taxonomy) + "]. Mutually exclusive with --db-prefix.", choices=self.choices_taxonomy) report_group_dbtax.add_argument("-m", "--taxonomy-files", type=file_exists, nargs="*", metavar="", help="Specific files for taxonomy - otherwise files will be downloaded") report_group_dbtax.add_argument("-z", "--genome-size-files", type=file_exists, nargs="*", metavar="", help="Specific files for genome size estimation - otherwise files will be downloaded") + report_group_dbtax.add_argument("--skip-genome-size", action="store_true", help="Do not attempt to get genome sizes. Valid only without --db-prefix. Activate this option when using sequences not representing full genomes.") report_group_output = report_parser.add_argument_group("output arguments") report_group_output.add_argument("-f", "--output-format", type=str, metavar="", default="tsv", help="Output format [" + ", ".join(self.choices_report_output) + "]. text outputs a tabulated formatted text file for better visualization. bioboxes is the the CAMI challenge profiling format (only percentage/abundances are reported).", choices=self.choices_report_output) diff --git a/src/ganon/report.py b/src/ganon/report.py index 51cac422..c93d4686 100644 --- a/src/ganon/report.py +++ b/src/ganon/report.py @@ -344,7 +344,7 @@ def build_report(reports, counts, full_tax, genome_sizes, output_file, fixed_ran tre_file.close() if orphan_nodes and not cfg.no_orphan: - print_log(" - " + str(len(orphan_nodes)) + " not found in the taxonomy (orphan nodes). " + + print_log(" - WARNING: " + str(len(orphan_nodes)) + " not found in the taxonomy (orphan nodes). " + "\n Orphan nodes are reported with 'na' rank with root as a direct parent node. " + "\n Too show them, use 'na' in --ranks or set --ranks all" "\n Too ommit them, use --no-orphan", cfg.quiet) @@ -450,6 +450,7 @@ def correct_genome_size(target_counts, genome_sizes, tax, default_ranks): """ ranked_counts = {} lost_targets = {} + no_genome_size_cnt = 0 total_rank_ratio = {r: 0 for r in default_ranks} total_rank_count = {r: 0 for r in default_ranks} for target, count in target_counts.items(): @@ -466,10 +467,17 @@ def correct_genome_size(target_counts, genome_sizes, tax, default_ranks): # Sum total counts for each default rank gs = genome_sizes[closest_parent] if closest_parent in genome_sizes else genome_sizes[tax.root_node] + # Keep track of genome sizes = 1 (no genome size available) + if gs==1: + no_genome_size_cnt+=1 closest_rank = tax.rank(closest_parent) total_rank_ratio[closest_rank] += count/gs total_rank_count[closest_rank] += count + # Warning, some genomes have no proper size + if no_genome_size_cnt > 0 and len(target_counts) != no_genome_size_cnt: + print_log(" - WARNING: " + str(no_genome_size_cnt) + " genomes without proper genome size, abundance estimation may be biased. Use a --report-type without genome size correction or omit --db-prefix on ganon report to re-generate genome sizes.") + # Correct counts by the genome sizes (only default ranks) corr_counts = {t: 0 for t in ranked_counts.keys()} for node in ranked_counts.keys(): diff --git a/src/ganon/tax_util.py b/src/ganon/tax_util.py index 622f338d..81707e2b 100644 --- a/src/ganon/tax_util.py +++ b/src/ganon/tax_util.py @@ -118,54 +118,61 @@ def get_genome_size(cfg, nodes, tax, build_output_folder): Only used nodes and lineage are calculated, based on the full set of values provided If information of a certain node is not provided, uses the closest estimate of parent nodes """ + genome_sizes = {} + if cfg.skip_genome_size: + # Skipping genome sizes, all set to 1 + for node in nodes: + for t in tax.lineage(node): + genome_sizes[t] = 1 + else: + # Download and parse auxiliary files containing genome sizes + leaves_sizes = parse_genome_size_files(cfg, build_output_folder) - # Download and parse auxiliary files containing genome sizes - leaves_sizes = parse_genome_size_files(cfg, build_output_folder) - - tx = time.time() - print_log("Estimating genome sizes", cfg.quiet) - - # Check if entries are on tax and distribute values to available tax. leaves - for t in list(leaves_sizes.keys()): - if not tax.latest(t): - del leaves_sizes[t] - else: - # Store genome size estimation for all leaf nodes available in the taxonomy - for leaf in tax.leaves(t): - leaves_sizes[leaf] = leaves_sizes[t] + tx = time.time() + print_log("Estimating genome sizes", cfg.quiet) - # Calculate genome size estimates for used nodes (and their lineage) - # using the complete content of leaves_sizes (keeping approx. the same estimates between different dbs) - genome_sizes = {} - for node in nodes: - # For the lineage of each target node - for t in tax.lineage(node): - # Skip if already calculated - if t not in genome_sizes: - cnt = 0 - avg = 0 - # Make average of available genome sizes in children leaves + # Check if entries are on tax and distribute values to available tax. leaves + for t in list(leaves_sizes.keys()): + if not tax.latest(t): + del leaves_sizes[t] + else: + # Store genome size estimation for all leaf nodes available in the taxonomy for leaf in tax.leaves(t): - if leaf in leaves_sizes: - cnt += 1 - avg += leaves_sizes[leaf] - genome_sizes[t] = int(avg / cnt) if cnt else 0 - - # If there is no matching between taxonomy and leaves, average the whole and save to root to be redistributed in the next step - if sum(genome_sizes.values())==0: - if leaves_sizes: - genome_sizes[tax.root_node] = int(sum(leaves_sizes.values())/len(leaves_sizes)) - else: - genome_sizes[tax.root_node] = 1 - # Check nodes without genome size info (0) and use closest value from parent lineage - for node in nodes: - if genome_sizes[node] == 0: - # Fill lineage of zeros with latest genome size estimation + leaves_sizes[leaf] = leaves_sizes[t] + + # Calculate genome size estimates for used nodes (and their lineage) + # using the complete content of leaves_sizes (keeping approx. the same estimates between different dbs) + + for node in nodes: + # For the lineage of each target node for t in tax.lineage(node): - if genome_sizes[t] == 0: - genome_sizes[t] = genome_sizes[tax.parent(t)] + # Skip if already calculated + if t not in genome_sizes: + cnt = 0 + avg = 0 + # Make average of available genome sizes in children leaves + for leaf in tax.leaves(t): + if leaf in leaves_sizes: + cnt += 1 + avg += leaves_sizes[leaf] + genome_sizes[t] = int(avg / cnt) if cnt else 0 + + # If there is no matching between taxonomy and leaves, average the whole and save to root to be redistributed in the next step + if sum(genome_sizes.values())==0: + if leaves_sizes: + genome_sizes[tax.root_node] = int(sum(leaves_sizes.values())/len(leaves_sizes)) + else: + genome_sizes[tax.root_node] = 1 + # Check nodes without genome size info (0) and use closest value from parent lineage + for node in nodes: + if genome_sizes[node] == 0: + # Fill lineage of zeros with latest genome size estimation + for t in tax.lineage(node): + if genome_sizes[t] == 0: + genome_sizes[t] = genome_sizes[tax.parent(t)] + + print_log(" - done in " + str("%.2f" % (time.time() - tx)) + "s.\n", cfg.quiet) - print_log(" - done in " + str("%.2f" % (time.time() - tx)) + "s.\n", cfg.quiet) return genome_sizes diff --git a/tests/ganon/integration_online/test_report.py b/tests/ganon/integration_online/test_report.py index ea0796b1..e25ce229 100644 --- a/tests/ganon/integration_online/test_report.py +++ b/tests/ganon/integration_online/test_report.py @@ -87,6 +87,22 @@ def test_ncbi(self): res = report_sanity_check_and_parse(vars(cfg)) self.assertIsNotNone(res, "ganon report has inconsistent results") + + # No genome size + params = self.default_params.copy() + params["input"] = self.results_dir + "base_classify_ncbi.rep" + params["output_prefix"] = self.results_dir + "test_ncbi_skip_genome_size" + params["taxonomy"] = "ncbi" + params["taxonomy_files"] = data_dir + "build-custom/taxdump.tar.gz" + params["skip_genome_size"] = True + # Build config from params + cfg = Config("report", **params) + self.assertTrue( + run_ganon(cfg, params["output_prefix"]), "ganon report exited with an error") + # General sanity check of results + res = report_sanity_check_and_parse(vars(cfg)) + self.assertIsNotNone(res, "ganon report has inconsistent results") + def test_gtdb(self): """ Test run with --taxonomy gtdb, downloading .tax @@ -145,5 +161,21 @@ def test_gtdb(self): self.assertIsNotNone(res, "ganon report has inconsistent results") + # No genome size + params = self.default_params.copy() + params["input"] = self.results_dir + "base_classify_gtdb.rep" + params["output_prefix"] = self.results_dir + "test_gtdb_skip_genome_size" + params["taxonomy"] = "gtdb" + params["taxonomy_files"] = [data_dir + "build-custom/ar53_taxonomy.tsv.gz", + data_dir + "build-custom/bac120_taxonomy.tsv.gz"] + params["skip_genome_size"] = True + # Build config from params + cfg = Config("report", **params) + self.assertTrue( + run_ganon(cfg, params["output_prefix"]), "ganon report exited with an error") + # General sanity check of results + res = report_sanity_check_and_parse(vars(cfg)) + self.assertIsNotNone(res, "ganon report has inconsistent results") + if __name__ == '__main__': unittest.main() From ff68036c75505ae868b0db0f528ba12f8457e461 Mon Sep 17 00:00:00 2001 From: pirovc <4673375+pirovc@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:09:23 +0200 Subject: [PATCH 09/11] Feature/infra (#255) * infra fixes, up to 1.7.0 * default 1e-5 fpr query * docs and rep. genomes * raptor v3 update * test hibf --- CMakeLists.txt | 2 +- docs/classification.md | 42 ++- docs/custom_databases.md | 4 +- docs/default_databases.md | 33 +- docs/index.md | 72 ++-- docs/outputfiles.md | 4 +- docs/reports.md | 35 +- docs/start.md | 53 +++ docs/table.md | 39 ++ libs/genome_updater | 2 +- mkdocs.yml | 2 + setup.py | 2 +- ...E_hierarchical_interleaved_bloom_filter.md | 29 ++ .../hierarchical_interleaved_bloom_filter.hpp | 355 ++++++++++-------- src/ganon/build_update.py | 11 +- src/ganon/classify.py | 2 +- src/ganon/config.py | 7 +- ...47015.1_ASM14701v1_cds_from_genomic.fna.gz | Bin 57309 -> 0 bytes ...47015.1_ASM14701v1_rna_from_genomic.fna.gz | Bin 3192 -> 0 bytes ...4805.1_ASM225480v1_cds_from_genomic.fna.gz | Bin 85689 -> 0 bytes ...4805.1_ASM225480v1_rna_from_genomic.fna.gz | Bin 2592 -> 0 bytes ...2065.1_ASM413206v1_cds_from_genomic.fna.gz | Bin 458 -> 0 bytes tests/ganon/data/classify/test_db.hibf | Bin 0 -> 475930 bytes tests/ganon/data/classify/test_db.tax | 29 ++ tests/ganon/integration/test_classify.py | 16 + 25 files changed, 508 insertions(+), 231 deletions(-) create mode 100644 docs/start.md create mode 100644 docs/table.md create mode 100644 src/ganon-classify/include/ganon-classify/LICENSE_hierarchical_interleaved_bloom_filter.md delete mode 100644 tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_cds_from_genomic.fna.gz delete mode 100644 tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_rna_from_genomic.fna.gz delete mode 100644 tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_cds_from_genomic.fna.gz delete mode 100644 tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_rna_from_genomic.fna.gz delete mode 100644 tests/ganon/data/build/genomes/all/GCA/004/132/065/GCA_004132065.1_ASM413206v1/GCA_004132065.1_ASM413206v1_cds_from_genomic.fna.gz create mode 100644 tests/ganon/data/classify/test_db.hibf create mode 100644 tests/ganon/data/classify/test_db.tax diff --git a/CMakeLists.txt b/CMakeLists.txt index 939820d7..8af85050 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # ============================================================================= cmake_minimum_required( VERSION 3.10 FATAL_ERROR ) -project( ganon VERSION 1.6.0 LANGUAGES CXX ) +project( ganon VERSION 1.7.0 LANGUAGES CXX ) # ----------------------------------------------------------------------------- # build setup diff --git a/docs/classification.md b/docs/classification.md index 5946b5d8..67600467 100644 --- a/docs/classification.md +++ b/docs/classification.md @@ -1,33 +1,46 @@ # Classification -`ganon classify` will match single and/or paired-end reads against one or [more databases](#multiple-and-hierarchical-classification), for example: +`ganon classify` will match single and/or paired-end sets of reads against one or [more databases](#multiple-and-hierarchical-classification). +By default, parameters are optimized for **taxonomic profiling**. + +Example: ```bash ganon classify --db-prefix my_db --paired-reads reads.1.fq.gz reads.2.fq.gz --output-prefix results --threads 32 ``` -`ganon report` will be automatically executed after classification and a report will be created (`.tre`). +`ganon report` will be automatically executed after `ganon classify` and a [report will be created `.tre`](../outputfiles/#ganon-report). -ganon can generate both taxonomic profiling and binning results with `ganon classify` + `ganon report`. Please choose the parameters according to your application. +ganon can perform **taxonomic profiling** and/or **binning** (one tax. assignment for each read) at a taxonomic, strain or sequence level with `ganon classify` + `ganon report`. Some guidelines are listed below, please choose the parameters according to your application: ### Profiling `ganon classify` is set-up by default to perform taxonomic profiling. It uses: - - strict `--rel-cutoff` and `--rel-filter` values (`0.75` and `0`, respectively) - - `--min-count 0.0001` (0.01%) on `ganon report` to exclude low abundant groups - - `--report-type abundance` on `ganon report` to generate taxonomic abundances, re-distributing read counts and correcting for genome sizes + - strict thresholds: `--rel-cutoff 0.75` and `--rel-filter 0` + +`ganon report` will automatically run after classification with: + + - `--min-count 0.005` (0.5%) to exclude low abundant taxa + - `--report-type abundance` to generate taxonomic abundances, re-distributing read counts and correcting for genome sizes + +!!! Note + `ganon report` can be used independently from `ganon classify` with the output file `.rep` ### Binning -To achieve better results for binning reads to specific references, ganon can be configured with: +To achieve better results for taxonomic binning or sequence classification, ganon can be configured with: - `--output-all` and `--output-lca` to write `.all` `.lca` files for binning results - less strict `--rel-cutoff` and `--rel-filter` values (e.g. `0.25` and `0.1`, respectively) - - activate the `--reassign` on `ganon classify` (or use the `ganon reassign` procedure) to apply a EM algorithm, re-assigning reads with LCA matches to most probable target (`--level` the database was built) + - activate the `--reassign` to apply an EM algorithm, re-assigning reads with LCA matches to one most probable target (defined by `--level` in the build procedure). In this case, the `.all` file will be re-generated with one assignment per read. + +!!! Note + `ganon reassign` can be used independently from `ganon classify` with the output file `.rep` and `.all` !!! tip - Higher `--kmer-size` values on `ganon build` can also improve read binning sensitivity + Database parameters can also influence your results. Lower `--max-fp` (e.g. 0.1, 0.001) and higher `--kmer-size` (e.g. `23`, `27`) will improve sensitivity of your results at cost of a larger database and memory usage + ## Multiple and Hierarchical classification @@ -128,4 +141,13 @@ For databases built with `--window-size`, the relative values are not based on t A different `cutoff` can be set for every database in a multiple or hierarchical database classification. A different `filter` can be set for every level of a hierarchical database classification. -Note that reads that remain with only one reference match (after `cutoff` and `filter` are applied) are considered a unique match. \ No newline at end of file +Note that reads that remain with only one reference match (after `cutoff` and `filter` are applied) are considered a unique match. + +### False positive of a query (--fpr-query) + +ganon uses Bloom Filters, probabilistic data structures that may return false positive results. The base false positive of a ganon index is controlled by `--max-fp` when building the database. However, this value is the expected false positive for each k-mer. In practice, a sequence (several k-mers) will have a way smaller false positive. ganon calculates the false positive rate of a query as suggested by (Solomon and Kingsford, 2016). The `--fpr-query` will control the max. value accepted to consider a match between a sequence and a reference, avoiding false positives that may be introduce by the properties of the data structure. + +By default, `--fpr-query 1e-5` is used and it is applied after the `--rel-cutoff` and `--rel-filter`. Values between `1e-3` and `1e-10` are recommended. This threshold becomes more important when building smaller databases with higher `--max-fp`, assuring that the false positive is under control. In this case however, you may notice a in sensitivity of your results. + +!!! Note + The false positive of a query was first propose in: Solomon, Brad, and Carl Kingsford. “Fast Search of Thousands of Short-Read Sequencing Experiments.” Nature Biotechnology 34, no. 3 (2016): 1–6. https://doi.org/10.1038/nbt.3442. \ No newline at end of file diff --git a/docs/custom_databases.md b/docs/custom_databases.md index 5ddd030d..7795c4fe 100644 --- a/docs/custom_databases.md +++ b/docs/custom_databases.md @@ -182,7 +182,7 @@ ganon build-custom --input download/ --input-recursive --db-prefix fdaargos --nc !!! note The example above uses [genome_updater](https://github.com/pirovc/genome_updater) to download files -### BLAST databases (nt, env_nt, nt_prok, ...) +### BLAST databases (nt env_nt nt_prok ...) BLAST databases. [Website](https://blast.ncbi.nlm.nih.gov/Blast.cgi)/[FTP](https://ftp.ncbi.nlm.nih.gov/blast/db/). @@ -246,7 +246,7 @@ ganon build-custom --input output_folder_genome_updater/version/ --input-recursi ### False positive and size (--max-fp, --filter-size) -ganon indices are based on bloom filters and can have false positive matches. This can be controlled with `--max-fp` parameter. The lower the `--max-fp`, the less chances of false positives matches on classification, but the larger the database size will be. For example, with `--max-fp 0.01` the database will be build so any target (defined by `--level`) will have 1 in a 100 change of reporting a false k-mer match. The false positive of the query (all k-mers of the reads) is higher but directly affected. +ganon indices are based on bloom filters and can have false positive matches. This can be controlled with `--max-fp` parameter. The lower the `--max-fp`, the less chances of false positives matches on classification, but the larger the database size will be. For example, with `--max-fp 0.01` the database will be build so any target (defined by `--level`) will have 1 in a 100 change of reporting a false k-mer match. [The false positive of the query](../classification/#false-positive-of-a-query-fpr-query) (all k-mers of a read) will be way lower, but directly affected by this value. Alternatively, one can set a specific size for the final index with `--filter-size`. When using this option, please observe the theoretic false positive of the index reported at the end of the building process. diff --git a/docs/default_databases.md b/docs/default_databases.md index 4b7f7e41..6130c1a4 100644 --- a/docs/default_databases.md +++ b/docs/default_databases.md @@ -35,7 +35,7 @@ NCBI RefSeq and GenBank repositories are common resources to obtain reference se | One assembly per species | 52779 | 40 - 98 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --genome-updater "-A 'species:1'" --db-prefix abfv_rs_t1s`
| | Complete genomes (higher quality) | 44121 | 19 - 64 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes --db-prefix abfv_rs_cg`
| | One assembly per species of complete genomes | 19713 | 8 - 27 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --complete-genomes "-A 'species:1'" --db-prefix abfv_rs_cg_t1s`
| -| One representative assembly per species | 18073 | 21 - 35 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --genome-updater "-c 'representative genome'" --db-prefix abfv_rs_rg`
| +| One representative assembly per species | 18073 | 21 - 35 |
cmd`ganon build --source refseq --organism-group archaea bacteria fungi viral --threads 48 --representative-genomes --db-prefix abfv_rs_rg`
| | GenBank | # assemblies | Size (GB) * | | |---|---|---|---| @@ -124,15 +124,26 @@ genome_updater.sh -e assembly_summary.txt -f "genomic.fna.gz" -o recovered_files ## Reducing database size +### False positive + +A higher `--max-fp` value will generate a smaller database but with a higher number of false positive matches on classification. [More details](../custom_databases/#false-positive-and-size-max-fp-filter-size). Values between `0.001` (0.1%) and `0.3` (30%) are generally used. + +!!! hint + When using higher `--max-fp` values, more false positive results may be generated. This can be filtered with the `--fpr-query` parameter in `ganon classify` + +### Fixed size + +A fixed size for the database filter can be defined with `--filter-size`. The smaller the filter size, the higher the false positive chances on classification. When using a fixed filter size, ganon will report the max. and avg. false positive rate at the end of the build. [More details](../custom_databases/#false-positive-and-size-max-fp-filter-size). + ### HIBF -The Hierarchical Interleaved Bloom Filter (HIBF) is an improvement over the Interleaved Bloom Filter (IBF) and provides *smaller* databases with *faster* query times ([pre-print](https://www.biorxiv.org/content/10.1101/2022.08.01.502266v1)). However, the HIBF takes longer to build and has less flexibility regarding size control. The HIBF can be generated in `ganon build` and `ganon build-custom` with the `--hibf` parameter. +The Hierarchical Interleaved Bloom Filter (HIBF) is an improvement over the default Interleaved Bloom Filter (IBF) and generates *smaller* databases with *faster* query times ([article](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-023-02971-4)). However, the HIBF takes longer to build and has less flexibility regarding size and further options in ganon. The HIBF can be generated in `ganon build` and `ganon build-custom` with the `--hibf` parameter. -**This is the best method to reduce large database sizes and to achieve faster classification speed.** +Due to differences between the default IBF used in ganon and the HIBF, it is recommended to lower the false positive when using the HIBF. A recommended value for high sensitivity is 1% (`--hibf --max-fp 0.001`). !!! hint - - For larger reference sets, huge amount of reads to query or production level analysis -> HIBF - - For quick build and analysis with smaller data -> IBF (default) + - For larger reference sets, huge amount of reads to query -> HIBF + - For quick build and more flexibility -> IBF (default) !!! warning [raptor (v3.0.0)](https://github.com/seqan/raptor/releases/tag/raptor-v3.0.0) has to be installed to build databases with `--hibf` @@ -146,14 +157,6 @@ RefSeq and GenBank are highly biased toward some few organisms. This means that - `ganon build --genome-updater "-A 'species:1'"` will select one assembly for each species - `ganon build --genome-updater "-A 'genus:3'"` will select three assemblies for each genus -### False positive - -A higher `--max-fp` value will generate a smaller database but with a higher number of false positive matches on classification. [More details](../custom_databases/#false-positive-and-size-max-fp-filter-size). Values between `0.01` and `0.3` are generally used. - -### Fixed size - -A fixed size for the database filter can be defined with `--filter-size`. The smaller the filter size, the higher the false positive chances on classification. When using a fixed filter size, ganon will report the max. and avg. false positive rate at the end of the build. [More details](../custom_databases/#false-positive-and-size-max-fp-filter-size). - ### Mode `--mode` offers 5 different categories to build a database controlling the trade-off between size and classification speed. @@ -163,7 +166,7 @@ A fixed size for the database filter can be defined with `--filter-size`. The sm - `fast` or `fastest`: create bigger databases with faster classification speed !!! Warning - If `--filter-size` is used, `smaller` and `smallest` to the false positive and not to the database size which is fixed. + If `--filter-size` is used, `smaller` and `smallest` refers to the false positive and not to the database size (which is fixed). ### Split databases @@ -183,7 +186,7 @@ Define how much unique information is stored in the database. [More details](../ ### Example -Besides the huge benefits of using [HIBF](#hibf) and specific sub-sets of big repositories shown on the [default databases table](#commonly-used-sub-sets), examples of other reduction strategies (without `--hibf`) can be seen below: +Besides the benefits of using [HIBF](#hibf) and specific sub-sets of big repositories shown on the [default databases table](#commonly-used-sub-sets), examples of other reduction strategies (without `--hibf`) can be seen below: *RefSeq archaeal complete genomes from 20230505* diff --git a/docs/index.md b/docs/index.md index 0d542e38..81b0bbb3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -65,7 +65,7 @@ sudo make install # optional - to change install location (e.g. `/myprefix/bin/`), set the installation prefix in the cmake command with `-DCMAKE_INSTALL_PREFIX=/myprefix/ ` - use `-DINCLUDE_DIRS` to set alternative paths to cxxopts and Catch2 libs. -- to classify extremely large reads (>65000bp) use `-DLONGREADS=ÒN` +- to classify extremely large reads or contigs that would need more than 65000 k-mers, use `-DLONGREADS=ON` If everything was properly installed, the following commands should show the help pages without errors: @@ -81,22 +81,33 @@ python3 -m unittest discover -s tests/ganon/integration_online/ # optional - do cd build_cpp/ ctest -VV . ``` + +### Installing raptor (optional) + +If you want to use the Hierarchical Interleaved Bloom Filter `--hibf` in `ganon build` you will need to install [raptor](https://github.com/seqan/raptor) either via conda `conda install -c bioconda -c conda-forge raptor` (already included in the installation if you installed ganon via conda) or from source: + +#### Dependencies -## Important parameters + - CMake >= 3.18 + - GCC 11, 12 or 13 (most recent minor version) + - git -The most important parameters and trade-offs are: +#### Downloading and building raptor + submodules -- `ganon build` `--hibf`: build smaller databases that can be queried faster. Building will take longer. -- `ganon build` `--window-size --kmer-size`: the *window* value should always be the same or larger than the *kmer* value. The larger the difference between them, the smaller the database will be. However, some sensitivity/precision loss in classification is expected with small *kmer* and/or large *window*. Larger *kmer* values (e.g. `31`) will improve classification, specially read binning, at a cost of way bigger databases. ---- -- `ganon classify` `--rel-cutoff`: this value defines the threshold for matches between reads and database. Higher `--rel-cutoff` values will improve precision and decrease sensitivity with expected less unique matches but an increase in overall matches. For taxonomic profiling, a higher value between `0.4` and `0.8` may provide better results. For read binning, lower values between `0.2` and `0.4` are recommended. -- `ganon classify` `--rel-filter`: further filter top matches after cutoff is applied. Usually set between `0` and `0.2`. -- `ganon classify` `--reassign`: runs an EM-algorithm to reassign reads that received multiple matches. It provides a unique match for each read at the level the database was built (e.g. assembly or species). Mostly useful for read binning, with little overall impact on taxonomic profiling. Can be used independently with `ganon reassign`. ---- -- `ganon report` `--report-type`: reports either taxonomic, sequence or matches abundances. Use `corr` or `abundance` for taxonomic profiling, `reads` or `dist` for sequence profiling and `matches` to report a summary of all matches. -- `ganon report` `--min-count`: cutoff to discard underrepresented taxa. Useful to remove the common long tail of spurious matches and false positives when performing classification. Values between `0.0001` (0.01%) and `0.001` (0.1%) improved sensitivity and precision in our evaluations. The higher the value, the more precise the outcome, with a sensitivity loss. Alternatively `--top-percentile` can be used to keep a relative amount of taxa instead a hard cutoff. +```bash +git clone --branch raptor-v3.0.0 --recurse-submodules https://github.com/seqan/raptor +``` + +```bash +cd raptor +mkdir -p build +cd build +cmake .. +make +``` -The numeric values above are averages from several experiments with different sample types and database contents. They may not work as expected for your data. If you are not sure which values to use or see something unexpected, please open an [issue](https://github.com/pirovc/ganon/issues). +- binaries will be located in the `bin` directory +- you may have to inform `ganon build` where to find the binaries with `--raptor-path raptor/build/bin` ## Parameters @@ -107,7 +118,7 @@ usage: ganon [-h] [-v] - - - - - - - - - - _ _ _ _ _ (_|(_|| |(_)| | - _| v. 1.6.0 + _| v. 1.7.0 - - - - - - - - - - positional arguments: @@ -131,8 +142,9 @@ options: ganon build ``` -usage: ganon build [-h] [-g [...]] [-a [...]] [-b [...]] [-o] [-c] [-u] [-m [...]] [-z [...]] -d DB_PREFIX [-x] [-t] - [-p] [-f] [-k] [-w] [-s] [-j] [-y] [--hibf] [--restart] [--verbose] [--quiet] [--write-info-file] +usage: ganon build [-h] [-g [...]] [-a [...]] [-b [...]] [-o] [-c] [-r] [-u] [-m [...]] [-z [...]] [--skip-genome-size] + -d DB_PREFIX [-x] [-t] [-p] [-f] [-k] [-w] [-s] [-j] [-y] [--hibf] [--restart] [--verbose] [--quiet] + [--write-info-file] options: -h, --help show this help message and exit @@ -154,12 +166,16 @@ download arguments: -o , --top Download limited assemblies for each taxa. 0 for all. (default: 0) -c, --complete-genomes Download only sub-set of complete genomes (default: False) + -r, --representative-genomes + Download only sub-set of representative genomes (default: False) -u , --genome-updater Additional genome_updater parameters (https://github.com/pirovc/genome_updater) (default: None) -m [ ...], --taxonomy-files [ ...] Specific files for taxonomy - otherwise files will be downloaded (default: None) -z [ ...], --genome-size-files [ ...] Specific files for genome size estimation - otherwise files will be downloaded (default: None) + --skip-genome-size Do not attempt to get genome sizes. Activate this option when using sequences not representing + full genomes. (default: False) important arguments: -x , --taxonomy Set taxonomy to enable taxonomic classification, lca and reports [ncbi, gtdb, skip] (default: @@ -197,9 +213,9 @@ optional arguments: ganon build-custom ``` -usage: ganon build-custom [-h] [-i [...]] [-e] [-c] [-n] [-a] [-l] [-m [...]] [-z [...]] [-r [...]] [-q [...]] -d - DB_PREFIX [-x] [-t] [-p] [-f] [-k] [-w] [-s] [-j] [-y] [--hibf] [--restart] [--verbose] - [--quiet] [--write-info-file] +usage: ganon build-custom [-h] [-i [...]] [-e] [-c] [-n] [-a] [-l] [-m [...]] [-z [...]] [--skip-genome-size] [-r [...]] + [-q [...]] -d DB_PREFIX [-x] [-t] [-p] [-f] [-k] [-w] [-s] [-j] [-y] [--hibf] [--restart] + [--verbose] [--quiet] [--write-info-file] options: -h, --help show this help message and exit @@ -232,6 +248,8 @@ custom arguments: Specific files for taxonomy - otherwise files will be downloaded (default: None) -z [ ...], --genome-size-files [ ...] Specific files for genome size estimation - otherwise files will be downloaded (default: None) + --skip-genome-size Do not attempt to get genome sizes. Activate this option when using sequences not representing + full genomes. (default: False) ncbi arguments: -r [ ...], --ncbi-sequence-info [ ...] @@ -312,8 +330,8 @@ optional arguments: ``` usage: ganon classify [-h] -d [DB_PREFIX ...] [-s [reads.fq[.gz] ...]] [-p [reads.1.fq[.gz] reads.2.fq[.gz] ...]] - [-c [...]] [-e [...]] [-o] [--output-lca] [--output-all] [--output-unclassified] [--output-single] - [-t] [-l [...]] [-r [...]] [-a] [--verbose] [--quiet] + [-c [...]] [-e [...]] [-f [...]] [-o] [--output-lca] [--output-all] [--output-unclassified] + [--output-single] [-t] [-l [...]] [-r [...]] [-a] [--verbose] [--quiet] options: -h, --help show this help message and exit @@ -335,6 +353,10 @@ cutoff/filter arguments: Additional relative percentage of minimizers (relative to the best match) to keep a match. Generally used to select best matches above cutoff. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter (default: [0.0]) + -f [ ...], --fpr-query [ ...] + Max. false positive of a query to accept a match. Applied after --rel-cutoff and --rel-filter. + Generally used to remove false positives matches querying a database build with large --max-fp. + Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter (default: [1e-05]) output arguments: -o , --output-prefix @@ -398,9 +420,9 @@ other arguments: ganon report ``` -usage: ganon report [-h] -i [...] [-e INPUT_EXTENSION] -o OUTPUT_PREFIX [-d [...]] [-x] [-m [...]] [-z [...]] [-f] [-t] - [-r [...]] [-s] [-a] [-y] [-p [...]] [-k [...]] [-c] [--verbose] [--quiet] [--min-count] - [--max-count] [--names [...]] [--names-with [...]] [--taxids [...]] +usage: ganon report [-h] -i [...] [-e INPUT_EXTENSION] -o OUTPUT_PREFIX [-d [...]] [-x] [-m [...]] [-z [...]] + [--skip-genome-size] [-f] [-t] [-r [...]] [-s] [-a] [-y] [-p [...]] [-k [...]] [-c] [--verbose] + [--quiet] [--min-count] [--max-count] [--names [...]] [--names-with [...]] [--taxids [...]] options: -h, --help show this help message and exit @@ -426,6 +448,8 @@ db/tax arguments: Specific files for taxonomy - otherwise files will be downloaded (default: None) -z [ ...], --genome-size-files [ ...] Specific files for genome size estimation - otherwise files will be downloaded (default: None) + --skip-genome-size Do not attempt to get genome sizes. Valid only without --db-prefix. Activate this option when + using sequences not representing full genomes. (default: False) output arguments: -f , --output-format diff --git a/docs/outputfiles.md b/docs/outputfiles.md index 6b05b20a..045785d8 100644 --- a/docs/outputfiles.md +++ b/docs/outputfiles.md @@ -50,7 +50,7 @@ Each line in this report is a taxonomic entry (including the root node), with th - The first line of the report file will show the number of unclassified reads (not for `--report-type matches`) -- The CAMI challenge [bioboxes profiling format](https://github.com/bioboxes/rfc/blob/master/data-format/profiling.mkd) is supported using `--output-format bioboxes`. In this format, only values for the percentage/abundance (col. 9) are reported. The root node and unclassified entries are ommited. +- The CAMI challenge [bioboxes profiling format](https://github.com/bioboxes/rfc/blob/master/data-format/profiling.mkd) is supported using `--output-format bioboxes`. In this format, only values for the percentage/abundance (col. 9) are reported. The root node and unclassified entries are omitted. - The sum of cumulative assignments for the unclassified and root lines is 100%. The final cumulative sum of reads/matches may be under 100% if any filter is successfully applied and/or hierarchical selection is selected (keep/skip/split). @@ -60,6 +60,8 @@ Each line in this report is a taxonomic entry (including the root node), with th - {output_file}: a tab-separated file with counts/percentages of taxa for multiple samples +--- +
Examples of output files diff --git a/docs/reports.md b/docs/reports.md index 6229f634..9c03b8e4 100644 --- a/docs/reports.md +++ b/docs/reports.md @@ -1,11 +1,42 @@ # Reports +`ganon report` filters and generates several reports and summaries from the results obtained with `ganon classify`. It is possible to summarize the results in terms of taxonomic and sequence abundances as well as total number of matches. + +## Examples + +Given the output `.rep` from `ganon classify` and the database used (`--db-prefix`): + +### Taxonomic profile with abundance estimation (default) + +```bash +ganon report --db-prefix mydb --input results.rep --output-prefix tax_profile --report-type abundance +``` + +### Sequence profile + +```bash +ganon report --db-prefix mydb --input results.rep --output-prefix seq_profile --report-type reads +``` + +### Matches profile + +```bash +ganon report --db-prefix mydb --input results.rep --output-prefix matches --report-type matches +``` + +### Filtering results + +```bash +ganon report --db-prefix mydb --input results.rep --output-prefix filtered --min-count 0.0005 --top-percentile 0.8 +``` + +This will keep only results with a min. abundance of `0.05%` and only the top `80%` most abundant. ## Parameter details ### report type (--report-type) -Several reports are availble with `--report-type`: `reads`, `abundance`, `dist`, `corr`, `matches`: +Several reports are available with `--report-type`: `reads`, `abundance`, `dist`, `corr`, `matches`: `reads` reports **sequence abundances** which are the basic proportion of reads classified in the sample. @@ -15,4 +46,4 @@ Several reports are availble with `--report-type`: `reads`, `abundance`, `dist`, `corr` is the same of `reads` with correction by genome size -`matches` will report the total number of matches classified, either unique or shared. *This report will output the total number of matches instead the total number of reads reported in all other reports.* +`matches` will report the total number of matches classified, either unique or shared. *This option will output the total number of matches instead the total number of reads* diff --git a/docs/start.md b/docs/start.md new file mode 100644 index 00000000..d7643e75 --- /dev/null +++ b/docs/start.md @@ -0,0 +1,53 @@ +# Quick Start Guide + +## Install + +```sh +conda install -c bioconda -c conda-forge ganon +``` + +## Download and Build a database + +- Bacteria - NCBI RefSeq - representative genomes + +```bash +ganon build --db-prefix bac_rs_rg --source refseq --organism-group bacteria --representative-genomes --threads 24 +``` + +- If you want to test ganon functionalities with a smaller database, use `archaea` instead of `bacteria` in the example above. + +## Classify and generate a tax. profile + +- [Download test reads](https://github.com/pirovc/ganon_benchmark/raw/master/files/reads/cami/toy/H01_1M_0.1.fq.gz) + +```bash +ganon classify --db-prefix bac_rs_rg --output-prefix classify_results --single-reads H01_1M_0.1.fq.gz --threads 24 +``` + +- `classify_results.tre` -> taxonomic profile + +--- + + +## Important parameters + +The most important parameters and trade-offs to be aware of when using ganon: + +### ganon build + +- `--max-fp --filter-size`: controls the false positive of the bloom filters and the size of the filter (which is the same as the amount of memory needed). The higher the `--max-fp`, the smaller the databases at a cost of sensitivity in classification. `--filter-size` can be used instead of `--max-fp` to define a specific size for your database. In this case, the false positive will be reported at the end of the build. +- `--window-size --kmer-size`: the *window* value should always be the same or larger than the *k-mer* value. The larger the difference between them, the smaller the database will be. However, some sensitivity/precision loss in classification is expected with small *k-mer* and/or large *window*. Larger *k-mer* values (e.g. `31`) will improve classification, specially read binning, at a cost of larger databases. +- `--hibf`: build smaller databases that can be queried faster. Building will take longer. + +### ganon classify + +- `--rel-cutoff`: this value defines the threshold for matches between reads and database. Higher values will improve precision and decrease sensitivity with expected less unique matches but an increase in overall matches. For taxonomic profiling, a higher value between `0.4` and `0.8` may provide better results. For read binning, lower values between `0.2` and `0.4` are recommended. +- `--rel-filter`: further filter matches in relation to the best match after the cutoff is applied. Usually set between `0` and `0.2`. `0` means only matches with same score (# of *k-mers*) as the best match will be kept. +- `--reassign`: runs an EM-algorithm to reassign reads that received multiple matches. It provides a unique match for each read at the level the database was built (e.g. assembly or species). Mostly useful for read binning, with little overall impact on taxonomic profiling. Can be used independently with `ganon reassign`. + +### ganon report + +- `--report-type`: reports either taxonomic, sequence or matches abundances. Use `corr` or `abundance` for taxonomic profiling, `reads` or `dist` for sequence profiling and `matches` to report a summary of all matches. +- `--min-count`: cutoff to discard underrepresented taxa. Useful to remove the common long tail of spurious matches and false positives when performing classification. Values between `0.0001` (0.01%) and `0.001` (0.1%) improved sensitivity and precision in our evaluations. The higher the value, the more precise the outcome, with a sensitivity loss. Alternatively `--top-percentile` can be used to keep a relative amount of taxa instead a hard cutoff. + +The numeric values above are averages from several experiments with different sample types and database contents. They may not work as expected for your data. If you are not sure which values to use or see something unexpected, please open an [issue](https://github.com/pirovc/ganon/issues). \ No newline at end of file diff --git a/docs/table.md b/docs/table.md new file mode 100644 index 00000000..d0ef8eda --- /dev/null +++ b/docs/table.md @@ -0,0 +1,39 @@ +# Table + +`ganon table` filters and summarizes several reports obtained with `ganon report` into a table. Filters for each sample or for averages among all samples can also be applied. + +## Examples + +Given several `.tre` from `ganon report`: + +### Counts of species + +```bash +ganon table --input *.tre --output-file table.tsv --rank species +``` + +### Abundance of species + +```bash +ganon table --input *.tre --output-file table.tsv --output-value percentage --rank species +``` + +### Top 10 species (among all samples) + +```bash +ganon table --input *.tre --output-file table.tsv --output-value percentage --rank species --top-all 10 +``` + +### Top 10 species (from each samples) + +```bash +ganon table --input *.tre --output-file table.tsv --output-value percentage --rank species --top-sample 10 +``` + +### Filtering results + +```bash +ganon table --input *.tre --output-file table.tsv --output-value percentage --rank species --min-count 0.0005 +``` + +This will keep only results with a min. abundance of `0.05%`. diff --git a/libs/genome_updater b/libs/genome_updater index 56f610b3..5478e931 160000 --- a/libs/genome_updater +++ b/libs/genome_updater @@ -1 +1 @@ -Subproject commit 56f610b3b4d7a280e418809370212c605c8ff17f +Subproject commit 5478e931af0e3028fc32b46e20be379b9443fd68 diff --git a/mkdocs.yml b/mkdocs.yml index 043fd727..7b2cc012 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,10 +2,12 @@ site_name: ganon theme: readthedocs nav: - ganon: index.md + - Quick Start: start.md - Databases (ganon build): default_databases.md - Custom databases (ganon build-custom): custom_databases.md - Classification (ganon classify): classification.md - Reports (ganon report): reports.md + - Table (ganon table): table.md - Output files: outputfiles.md - Tutorials: tutorials.md markdown_extensions: diff --git a/setup.py b/setup.py index e2b63570..27138513 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(filename): setup( name="ganon", - version="1.6.0", + version="1.7.0", url="https://www.github.com/pirovc/ganon", license='MIT', author="Vitor C. Piro", diff --git a/src/ganon-classify/include/ganon-classify/LICENSE_hierarchical_interleaved_bloom_filter.md b/src/ganon-classify/include/ganon-classify/LICENSE_hierarchical_interleaved_bloom_filter.md new file mode 100644 index 00000000..4a3fcde7 --- /dev/null +++ b/src/ganon-classify/include/ganon-classify/LICENSE_hierarchical_interleaved_bloom_filter.md @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2023, Enrico Seiler +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp b/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp index 681ee993..6138b22c 100644 --- a/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp +++ b/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp @@ -1,13 +1,18 @@ -// ----------------------------------------------------------------------------------------------------- -// Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin -// Copyright (c) 2016-2022, Knut Reinert & MPI für molekulare Genetik +// -------------------------------------------------------------------------------------------------- +// Copyright (c) 2006-2023, Knut Reinert & Freie Universität Berlin +// Copyright (c) 2016-2023, Knut Reinert & MPI für molekulare Genetik // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License -// shipped with this file and also available at: https://github.com/seqan/raptor/blob/master/LICENSE.md -// ----------------------------------------------------------------------------------------------------- +// shipped with this file and also available at: https://github.com/seqan/raptor/blob/main/LICENSE.md +// -------------------------------------------------------------------------------------------------- + +/*!\file + * \brief Provides raptor::hierarchical_interleaved_bloom_filter. + * \author Enrico Seiler + */ #pragma once -#include +#include #include @@ -34,37 +39,42 @@ namespace raptor * * # Terminology * + * ## User Bin + * The user may impose a structure on his sequence data in the form of logical groups (e.g. species). When querying the + * (H)IBF, the user is interested in an answer that differentiates between these groups. + * * ## Technical Bin * A Technical Bin represents an actual bin in the binning directory. In the IBF, it stores its kmers in a single Bloom - * Filter (which is interleaved with all the other BFs). + * Filter (which is interleaved with all the other BFs). In the HIBF each of these bins could be merged or splitted, + * thus it differs to the original user bins. * - * ## User Bin - * The user may impose a structure on his sequence data in the form of logical groups (e.g. species). When querying the - * IBF, the user is interested in an answer that differentiates between these groups. + * ## Layout of the HIBF + * The relationship between user bins and technical bins in the HIBF, i.e. which are split or merged, how substructures + * of merged bins (lower-level IBFs) look like is called layout. * * # Hierarchical Interleaved Bloom Filter (HIBF) * - * In constrast to the [seqan3::interleaved_bloom_filter][1], the user bins may be split across multiple technical bins - * , or multiple user bins may be merged into one technical bin. When merging multiple user bins, the HIBF stores - * another IBF that is built over the user bins constituting the merged bin. This lower-level IBF can then be used - * to further distinguish between merged bins. + * In constrast to the [seqan3::interleaved_bloom_filter][1], the user bins may be split across multiple technical bins, + * or multiple user bins may be merged into one technical bin. When merging multiple user bins, the HIBF stores another + * IBF that is built over the user bins constituting the merged bin. This lower-level IBF can then be used to further + * distinguish between merged bins. * - * In this example, user bin 1 was split into two technical bins. Bins 3, 4, and 5 were merged into a single technical - * bin, and another IBF was added for the merged bin. - * \image html hibf.svg + * In this example layout, user bin 1 was split into two technical bins. Bins 3, 4, and 5 were merged into a single + * technical bin, and another IBF was added for the merged bin. + * \image html hibf.svg width=40% * * The individual IBFs may have a different number of technical bins and differ in their sizes, allowing an efficient * distribution of the user bins. * * ## Querying * To query the Hierarchical Interleaved Bloom Filter for values, call - * hibf::hierarchical_interleaved_bloom_filter::membership_agent() and use the returned - * hibf::hierarchical_interleaved_bloom_filter::membership_agent. + * raptor::hierarchical_interleaved_bloom_filter::membership_agent() and use the returned + * raptor::hierarchical_interleaved_bloom_filter::membership_agent. * In contrast to the [seqan3::interleaved_bloom_filter][1], the result will consist of indices of user bins. * * To count the occurrences in each user bin of a range of values in the Hierarchical Interleaved Bloom Filter, call - * hibf::hierarchical_interleaved_bloom_filter::counting_agent() and use - * the returned hibf::hierarchical_interleaved_bloom_filter::counting_agent_type. + * raptor::hierarchical_interleaved_bloom_filter::counting_agent() and use + * the returned raptor::hierarchical_interleaved_bloom_filter::counting_agent_type. * * ## Thread safety * @@ -74,7 +84,7 @@ namespace raptor * * [1]: https://docs.seqan.de/seqan/3.0.3/classseqan3_1_1interleaved__bloom__filter.html */ -template < seqan3::data_layout data_layout_mode_ = seqan3::data_layout::uncompressed > +template class hierarchical_interleaved_bloom_filter { public: @@ -86,7 +96,7 @@ class hierarchical_interleaved_bloom_filter #if RAPTOR_HIBF_HAS_COUNT // Forward declaration - template < std::integral value_t > + template class counting_agent_type; #endif @@ -94,24 +104,24 @@ class hierarchical_interleaved_bloom_filter static constexpr seqan3::data_layout data_layout_mode = data_layout_mode_; //!\brief The type of an individual Bloom filter. - using ibf_t = seqan3::interleaved_bloom_filter< data_layout_mode_ >; + using ibf_t = seqan3::interleaved_bloom_filter; /*!\name Constructors, destructor and assignment * \{ */ - hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter( hierarchical_interleaved_bloom_filter const& ) = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter& operator=( hierarchical_interleaved_bloom_filter const& ) = - default; //!< Defaulted. - hierarchical_interleaved_bloom_filter( hierarchical_interleaved_bloom_filter&& ) = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter& operator=( hierarchical_interleaved_bloom_filter&& ) = - default; //!< Defaulted. - ~hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter(hierarchical_interleaved_bloom_filter const &) = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter & + operator=(hierarchical_interleaved_bloom_filter const &) = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter(hierarchical_interleaved_bloom_filter &&) = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter & + operator=(hierarchical_interleaved_bloom_filter &&) = default; //!< Defaulted. + ~hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. //!\} //!\brief The individual interleaved Bloom filters. - std::vector< ibf_t > ibf_vector; + std::vector ibf_vector; /*!\brief Stores for each bin in each IBF of the HIBF the ID of the next IBF. * \details @@ -120,7 +130,7 @@ class hierarchical_interleaved_bloom_filter * If `j != i` is returned, there is a lower level IBF, bin `b` is a merged bin, and `j` is the ID of the lower * level IBF in ibf_vector. */ - std::vector< std::vector< int64_t > > next_ibf_id; + std::vector> next_ibf_id; //!\brief The underlying user bins. user_bins user_bins; @@ -128,17 +138,17 @@ class hierarchical_interleaved_bloom_filter //!\brief Returns a membership_agent to be used for counting. membership_agent membership_agent() const { - return typename hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agent{ *this }; + return typename hierarchical_interleaved_bloom_filter::membership_agent{*this}; } #if RAPTOR_HIBF_HAS_COUNT /*!\brief Returns a counting_agent_type to be used for counting. * \tparam value_t The type to use for the counters; must model std::integral. */ - template < std::integral value_t = uint16_t > - counting_agent_type< value_t > counting_agent() const + template + counting_agent_type counting_agent() const { - return counting_agent_type< value_t >{ *this }; + return counting_agent_type{*this}; } #endif @@ -147,26 +157,27 @@ class hierarchical_interleaved_bloom_filter * \tparam archive_t Type of `archive`; must satisfy seqan3::cereal_archive. * \param[in] archive The archive being serialised from/to. * - * \attention These functions are never called directly, see \ref serialisation for more details. + * \attention These functions are never called directly. + * \sa https://docs.seqan.de/seqan/3.2.0/group__io.html#serialisation */ - template < seqan3::cereal_archive archive_t > - void CEREAL_SERIALIZE_FUNCTION_NAME( archive_t& archive ) + template + void CEREAL_SERIALIZE_FUNCTION_NAME(archive_t & archive) { - archive( ibf_vector ); - archive( next_ibf_id ); - archive( user_bins ); + archive(ibf_vector); + archive(next_ibf_id); + archive(user_bins); } //!\endcond }; /*!\brief Bookkeeping for user and technical bins. */ -template < seqan3::data_layout data_layout_mode > -class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins +template +class hierarchical_interleaved_bloom_filter::user_bins { private: //!\brief Contains filenames of all user bins. - std::vector< std::string > user_bin_filenames; + std::vector user_bin_filenames; /*!\brief Stores for each bin in each IBF of the HIBF the ID of the filename. * \details @@ -174,7 +185,7 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins * If `-1` is returned, bin `b` is a merged bin, and there is no filename, we need to look into the lower level IBF. * Otherwise, the returned value `j` can be used to access the corresponding filename `user_bin_filenames[j]`. */ - std::vector< std::vector< int64_t > > ibf_bin_to_filename_position{}; + std::vector> ibf_bin_to_filename_position{}; public: //!\brief Returns the number of managed user bins. @@ -184,31 +195,47 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins } //!\brief Changes the number of managed IBFs. - void set_ibf_count( size_t const size ) + void set_ibf_count(size_t const size) { - ibf_bin_to_filename_position.resize( size ); + ibf_bin_to_filename_position.resize(size); } //!\brief Changes the number of managed user bins. - void set_user_bin_count( size_t const size ) + void set_user_bin_count(size_t const size) { - user_bin_filenames.resize( size ); + user_bin_filenames.resize(size); } - //!\brief Returns a vector containing user bin indices for each bin in the `idx`th IBF. - std::vector< int64_t >& bin_indices_of_ibf( size_t const idx ) + /*!\brief Returns a vector containing user bin indices for each bin in the `idx`th IBF. + * \param idx The id of the x-th IBF. + * + * \details + * + * ### Example + * + * \include test/snippet/hibf/bin_indices_of_ibf.cpp + */ + std::vector & bin_indices_of_ibf(size_t const idx) { return ibf_bin_to_filename_position[idx]; } - //!\brief Returns the filename of the `idx`th user bin. - std::string& filename_of_user_bin( size_t const idx ) + /*!\brief Returns the filename of the `idx`th user bin. + * \param idx The id of the x-th user bin. + * + * \details + * + * ### Example + * + * \include test/snippet/hibf/filename_of_user_bin.cpp + */ + std::string & filename_of_user_bin(size_t const idx) { return user_bin_filenames[idx]; } //!\brief For a pair `(a,b)`, returns a const reference to the filename of the user bin at IBF `a`, bin `b`. - std::string const& operator[]( std::pair< size_t, size_t > const& index_pair ) const + std::string const & operator[](std::pair const & index_pair) const { return user_bin_filenames[ibf_bin_to_filename_position[index_pair.first][index_pair.second]]; } @@ -216,18 +243,21 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins /*!\brief Returns a view over the user bin filenames for the `ibf_idx`th IBF. * An empty string is returned for merged bins. */ - auto operator[]( size_t const ibf_idx ) const + auto operator[](size_t const ibf_idx) const { - return ibf_bin_to_filename_position[ibf_idx] | std::views::transform( [this]( int64_t i ) { - if ( i == -1 ) - return std::string{}; - else - return user_bin_filenames[i]; - } ); + return ibf_bin_to_filename_position[ibf_idx] + | std::views::transform( + [this](int64_t i) + { + if (i == -1) + return std::string{}; + else + return user_bin_filenames[i]; + }); } //!\brief Returns the filename index of the `ibf_idx`th IBF for bin `bin_idx`. - int64_t filename_index( size_t const ibf_idx, size_t const bin_idx ) const + int64_t filename_index(size_t const ibf_idx, size_t const bin_idx) const { return ibf_bin_to_filename_position[ibf_idx][bin_idx]; } @@ -237,16 +267,16 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins * 0 \ * 1 \ */ - template < typename stream_t > - void write_filenames( stream_t& out_stream ) const + template + void write_filenames(stream_t & out_stream) const { - size_t position{}; + size_t position{}; std::string line{}; - for ( auto const& filename : user_bin_filenames ) + for (auto const & filename : user_bin_filenames) { line.clear(); line = '#'; - line += std::to_string( position ); + line += std::to_string(position); line += '\t'; line += filename; line += '\n'; @@ -260,59 +290,59 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins * \tparam archive_t Type of `archive`; must satisfy seqan3::cereal_archive. * \param[in] archive The archive being serialised from/to. * - * \attention These functions are never called directly, see \ref serialisation for more details. + * \attention These functions are never called directly. + * \sa https://docs.seqan.de/seqan/3.2.0/group__io.html#serialisation */ - template < typename archive_t > - void serialize( archive_t& archive ) + template + void serialize(archive_t & archive) { - archive( user_bin_filenames ); - archive( ibf_bin_to_filename_position ); + archive(user_bin_filenames); + archive(ibf_bin_to_filename_position); } //!\endcond }; -/*!\brief Manages membership queries for the hibf::hierarchical_interleaved_bloom_filter. - * \see hibf::hierarchical_interleaved_bloom_filter::user_bins::filename_of_user_bin +/*!\brief Manages membership queries for the raptor::hierarchical_interleaved_bloom_filter. + * \see raptor::hierarchical_interleaved_bloom_filter::user_bins::filename_of_user_bin * \details * In contrast to the [seqan3::interleaved_bloom_filter][1], the result will consist of indices of user bins. */ -template < seqan3::data_layout data_layout_mode > // TODO: value_t as template? -class hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agent +template // TODO: value_t as template? +class hierarchical_interleaved_bloom_filter::membership_agent { private: //!\brief The type of the augmented hierarchical_interleaved_bloom_filter. - using hibf_t = hierarchical_interleaved_bloom_filter< data_layout_mode >; + using hibf_t = hierarchical_interleaved_bloom_filter; //!\brief A pointer to the augmented hierarchical_interleaved_bloom_filter. - hibf_t const* const hibf_ptr{ nullptr }; + hibf_t const * const hibf_ptr{nullptr}; //!\brief Helper for recursive membership querying. - template < std::ranges::forward_range value_range_t > - void bulk_contains_impl( value_range_t&& values, int64_t const ibf_idx, size_t const threshold ) + template + void bulk_contains_impl(value_range_t && values, int64_t const ibf_idx, size_t const threshold) { - auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent< uint16_t >(); - auto& result = agent.bulk_count( values ); + auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent(); + auto & result = agent.bulk_count(values); uint16_t sum{}; - for ( size_t bin{}; bin < result.size(); ++bin ) + for (size_t bin{}; bin < result.size(); ++bin) { sum += result[bin]; - auto const current_filename_index = hibf_ptr->user_bins.filename_index( ibf_idx, bin ); + auto const current_filename_index = hibf_ptr->user_bins.filename_index(ibf_idx, bin); - if ( current_filename_index < 0 ) // merged bin + if (current_filename_index < 0) // merged bin { - if ( sum >= threshold ) - bulk_contains_impl( values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold ); + if (sum >= threshold) + bulk_contains_impl(values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold); sum = 0u; } - else if ( bin + 1u == result.size() || // last bin - current_filename_index - != hibf_ptr->user_bins.filename_index( ibf_idx, bin + 1 ) ) // end of split bin + else if (bin + 1u == result.size() || // last bin + current_filename_index != hibf_ptr->user_bins.filename_index(ibf_idx, bin + 1)) // end of split bin { - if ( sum >= threshold ) - result_buffer.emplace_back( current_filename_index ); + if (sum >= threshold) + result_buffer.emplace_back(current_filename_index); sum = 0u; } } @@ -322,25 +352,23 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agen /*!\name Constructors, destructor and assignment * \{ */ - membership_agent() = default; //!< Defaulted. - membership_agent( membership_agent const& ) = default; //!< Defaulted. - membership_agent& operator=( membership_agent const& ) = default; //!< Defaulted. - membership_agent( membership_agent&& ) = default; //!< Defaulted. - membership_agent& operator=( membership_agent&& ) = default; //!< Defaulted. - ~membership_agent() = default; //!< Defaulted. + membership_agent() = default; //!< Defaulted. + membership_agent(membership_agent const &) = default; //!< Defaulted. + membership_agent & operator=(membership_agent const &) = default; //!< Defaulted. + membership_agent(membership_agent &&) = default; //!< Defaulted. + membership_agent & operator=(membership_agent &&) = default; //!< Defaulted. + ~membership_agent() = default; //!< Defaulted. /*!\brief Construct a membership_agent for an existing hierarchical_interleaved_bloom_filter. * \private * \param hibf The hierarchical_interleaved_bloom_filter. */ - explicit membership_agent( hibf_t const& hibf ) - : hibf_ptr( std::addressof( hibf ) ) - { - } + explicit membership_agent(hibf_t const & hibf) : hibf_ptr(std::addressof(hibf)) + {} //!\} //!\brief Stores the result of bulk_contains(). - std::vector< int64_t > result_buffer; + std::vector result_buffer; /*!\name Lookup * \{ @@ -357,74 +385,72 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agen * ### Thread safety * * Concurrent invocations of this function are not thread safe, please create a - * hibf::hierarchical_interleaved_bloom_filter::membership_agent for each thread. + * raptor::hierarchical_interleaved_bloom_filter::membership_agent for each thread. */ - template < std::ranges::forward_range value_range_t > - [[nodiscard]] std::vector< int64_t > const& bulk_contains( value_range_t&& values, - size_t const threshold ) & noexcept + template + [[nodiscard]] std::vector const & bulk_contains(value_range_t && values, size_t const threshold) & noexcept { - assert( hibf_ptr != nullptr ); + assert(hibf_ptr != nullptr); - static_assert( std::ranges::forward_range< value_range_t >, "The values must model forward_range." ); - static_assert( std::unsigned_integral< std::ranges::range_value_t< value_range_t > >, - "An individual value must be an unsigned integral." ); + static_assert(std::ranges::forward_range, "The values must model forward_range."); + static_assert(std::unsigned_integral>, + "An individual value must be an unsigned integral."); result_buffer.clear(); - bulk_contains_impl( values, 0, threshold ); + bulk_contains_impl(values, 0, threshold); - std::ranges::sort( result_buffer ); // TODO: necessary? + std::ranges::sort(result_buffer); // TODO: necessary? return result_buffer; } // `bulk_contains` cannot be called on a temporary, since the object the returned reference points to // is immediately destroyed. - template < std::ranges::range value_range_t > - [[nodiscard]] std::vector< int64_t > const& bulk_contains( value_range_t&& values, - size_t const threshold ) && noexcept = delete; + template + [[nodiscard]] std::vector const & bulk_contains(value_range_t && values, + size_t const threshold) && noexcept = delete; //!\} }; #if RAPTOR_HIBF_HAS_COUNT -/*!\brief Manages counting ranges of values for the hibf::hierarchical_interleaved_bloom_filter. +/*!\brief Manages counting ranges of values for the raptor::hierarchical_interleaved_bloom_filter. */ -template < seqan3::data_layout data_layout_mode > -template < std::integral value_t > -class hierarchical_interleaved_bloom_filter< data_layout_mode >::counting_agent_type +template +template +class hierarchical_interleaved_bloom_filter::counting_agent_type { private: //!\brief The type of the augmented hierarchical_interleaved_bloom_filter. - using hibf_t = hierarchical_interleaved_bloom_filter< data_layout_mode >; + using hibf_t = hierarchical_interleaved_bloom_filter; //!\brief A pointer to the augmented hierarchical_interleaved_bloom_filter. - hibf_t const* const hibf_ptr{ nullptr }; + hibf_t const * const hibf_ptr{nullptr}; //!\brief Helper for recursive bulk counting. - template < std::ranges::forward_range value_range_t > - void bulk_count_impl( value_range_t&& values, int64_t const ibf_idx, size_t const threshold ) + template + void bulk_count_impl(value_range_t && values, int64_t const ibf_idx, size_t const threshold) { - auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent< value_t >(); - auto& result = agent.bulk_count( values ); + auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent(); + auto & result = agent.bulk_count(values); value_t sum{}; - for ( size_t bin{}; bin < result.size(); ++bin ) + for (size_t bin{}; bin < result.size(); ++bin) { sum += result[bin]; - auto const current_filename_index = hibf_ptr->user_bins.filename_index( ibf_idx, bin ); + auto const current_filename_index = hibf_ptr->user_bins.filename_index(ibf_idx, bin); - if ( current_filename_index < 0 ) // merged bin + if (current_filename_index < 0) // merged bin { - if ( sum >= threshold ) - bulk_count_impl( values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold ); + if (sum >= threshold) + bulk_count_impl(values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold); sum = 0u; } - else if ( bin + 1u == result.size() || // last bin - current_filename_index - != hibf_ptr->user_bins.filename_index( ibf_idx, bin + 1 ) ) // end of split bin + else if (bin + 1u == result.size() || // last bin + current_filename_index != hibf_ptr->user_bins.filename_index(ibf_idx, bin + 1)) // end of split bin { - if ( sum >= threshold ) + if (sum >= threshold) result_buffer[current_filename_index] = sum; sum = 0u; } @@ -435,26 +461,25 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::counting_agent_ /*!\name Constructors, destructor and assignment * \{ */ - counting_agent_type() = default; //!< Defaulted. - counting_agent_type( counting_agent_type const& ) = default; //!< Defaulted. - counting_agent_type& operator=( counting_agent_type const& ) = default; //!< Defaulted. - counting_agent_type( counting_agent_type&& ) = default; //!< Defaulted. - counting_agent_type& operator=( counting_agent_type&& ) = default; //!< Defaulted. - ~counting_agent_type() = default; //!< Defaulted. + counting_agent_type() = default; //!< Defaulted. + counting_agent_type(counting_agent_type const &) = default; //!< Defaulted. + counting_agent_type & operator=(counting_agent_type const &) = default; //!< Defaulted. + counting_agent_type(counting_agent_type &&) = default; //!< Defaulted. + counting_agent_type & operator=(counting_agent_type &&) = default; //!< Defaulted. + ~counting_agent_type() = default; //!< Defaulted. /*!\brief Construct a counting_agent_type for an existing hierarchical_interleaved_bloom_filter. * \private * \param hibf The hierarchical_interleaved_bloom_filter. */ - explicit counting_agent_type( hibf_t const& hibf ) - : hibf_ptr( std::addressof( hibf ) ) - , result_buffer( hibf_ptr->user_bins.num_user_bins() ) - { - } + explicit counting_agent_type(hibf_t const & hibf) : + hibf_ptr(std::addressof(hibf)), + result_buffer(hibf_ptr->user_bins.num_user_bins()) + {} //!\} //!\brief Stores the result of bulk_count(). - seqan3::counting_vector< value_t > result_buffer; + seqan3::counting_vector result_buffer; /*!\name Counting * \{ @@ -473,32 +498,32 @@ class hierarchical_interleaved_bloom_filter< data_layout_mode >::counting_agent_ * ### Thread safety * * Concurrent invocations of this function are not thread safe, please create a - * hibf::hierarchical_interleaved_bloom_filter::counting_agent_type for each thread. + * raptor::hierarchical_interleaved_bloom_filter::counting_agent_type for each thread. */ - template < std::ranges::forward_range value_range_t > - [[nodiscard]] seqan3::counting_vector< value_t > const& bulk_count( value_range_t&& values, - size_t const threshold = 1u ) & noexcept + template + [[nodiscard]] seqan3::counting_vector const & bulk_count(value_range_t && values, + size_t const threshold = 1u) & noexcept { - assert( hibf_ptr != nullptr ); - assert( threshold > 0u ); - assert( result_buffer.size() == hibf_ptr->user_bins.num_user_bins() ); + assert(hibf_ptr != nullptr); + assert(threshold > 0u); + assert(result_buffer.size() == hibf_ptr->user_bins.num_user_bins()); - static_assert( std::ranges::forward_range< value_range_t >, "The values must model forward_range." ); - static_assert( std::unsigned_integral< std::ranges::range_value_t< value_range_t > >, - "An individual value must be an unsigned integral." ); + static_assert(std::ranges::forward_range, "The values must model forward_range."); + static_assert(std::unsigned_integral>, + "An individual value must be an unsigned integral."); - std::ranges::fill( result_buffer, static_cast< value_t >( 0u ) ); + std::ranges::fill(result_buffer, static_cast(0u)); - bulk_count_impl( values, 0, threshold ); + bulk_count_impl(values, 0, threshold); return result_buffer; } // `bulk_count` cannot be called on a temporary, since the object the returned reference points to // is immediately destroyed. - template < std::ranges::range value_range_t > - [[nodiscard]] seqan3::counting_vector< value_t > const& bulk_count( - value_range_t&& values, size_t const threshold = 1u ) && noexcept = delete; + template + [[nodiscard]] seqan3::counting_vector const & bulk_count(value_range_t && values, + size_t const threshold = 1u) && noexcept = delete; //!\} }; #endif // RAPTOR_HIBF_HAS_COUNT diff --git a/src/ganon/build_update.py b/src/ganon/build_update.py index b292a7a1..f940e6ef 100644 --- a/src/ganon/build_update.py +++ b/src/ganon/build_update.py @@ -55,6 +55,7 @@ def build(cfg): "-T '" + ",".join(cfg.taxid) + "'" if cfg.taxid else "", "-A " + str(cfg.top) if cfg.top else "", "-l 'complete genome'" if cfg.complete_genomes else "", + "-c 'representative genome'" if cfg.representative_genomes else "", "-f 'genomic.fna.gz'", "-t " + str(cfg.threads), "-o " + files_output_folder, @@ -325,9 +326,7 @@ def build_custom(cfg, which_call: str="build_custom"): "--num-hash-functions " + str(cfg.hash_functions), "--false-positive-rate " + str(cfg.max_fp), "--output-filename '" + files_output_folder + "raptor_layout.binning.out'", - "--threads " + str(cfg.threads), - "--estimate-union", - "--rearrange-user-bins"]) + "--threads " + str(cfg.threads)]) run(run_raptor_layout_cmd, quiet=cfg.quiet) print_log(" - done in " + str("%.2f" % (time.time() - tx)) + "s.\n", cfg.quiet) @@ -341,7 +340,7 @@ def build_custom(cfg, which_call: str="build_custom"): "--output '" + cfg.db_prefix + ".hibf" + "'", "--threads " + str(cfg.threads), "--verbose" if cfg.verbose else "", - "'" + files_output_folder + "raptor_layout.binning.out'"]) + "--input '" + files_output_folder + "raptor_layout.binning.out'"]) run(run_raptor_build_cmd, quiet=cfg.quiet) print_log(" - done in " + str("%.2f" % (time.time() - tx)) + "s.\n", cfg.quiet) @@ -656,4 +655,6 @@ def load_config(config_file): """ load configuration """ - return pickle.load(open(config_file, "rb")) + with open(config_file, "rb") as file: + cfg = pickle.load(file) + return cfg diff --git a/src/ganon/classify.py b/src/ganon/classify.py index 0c59c9df..88f7d360 100644 --- a/src/ganon/classify.py +++ b/src/ganon/classify.py @@ -68,7 +68,7 @@ def classify(cfg): report_params = {"db_prefix": cfg.db_prefix, "input": cfg.output_prefix + ".rep", "output_prefix": cfg.output_prefix, - "min_count": 0.0001, + "min_count": 0.005, "ranks": cfg.ranks, "output_format": "tsv", "verbose": cfg.verbose, diff --git a/src/ganon/config.py b/src/ganon/config.py index 81609b4a..e1d734ad 100644 --- a/src/ganon/config.py +++ b/src/ganon/config.py @@ -8,7 +8,7 @@ class Config: - version = "1.6.0" + version = "1.7.0" path_exec = {"build": "", "classify": "", "get_seq_info": "", "genome_updater": ""} empty = False @@ -65,7 +65,8 @@ def __init__(self, which: str=None, **kwargs): build_download_args = build_parser.add_argument_group("download arguments") build_download_args.add_argument("-b", "--source", type=str, nargs="*", default=["refseq"], metavar="", help="Source to download [" + ", ".join(self.choices_db_source) + "]", choices=self.choices_db_source) build_download_args.add_argument("-o", "--top", type=unsigned_int(minval=0), default=0, metavar="", help="Download limited assemblies for each taxa. 0 for all.") - build_download_args.add_argument("-c", "--complete-genomes", action="store_true", help="Download only sub-set of complete genomes") + build_download_args.add_argument("-c", "--complete-genomes", action="store_true", help="Download only sub-set of complete genomes") + build_download_args.add_argument("-r", "--representative-genomes", action="store_true", help="Download only sub-set of representative genomes") build_download_args.add_argument("-u", "--genome-updater", type=str, metavar="", help="Additional genome_updater parameters (https://github.com/pirovc/genome_updater)") build_download_args.add_argument("-m", "--taxonomy-files", type=file_exists, nargs="*", metavar="", help="Specific files for taxonomy - otherwise files will be downloaded") build_download_args.add_argument("-z", "--genome-size-files", type=file_exists, nargs="*", metavar="", help="Specific files for genome size estimation - otherwise files will be downloaded") @@ -134,7 +135,7 @@ def __init__(self, which: str=None, **kwargs): classify_group_cutoff_filter = classify_parser.add_argument_group("cutoff/filter arguments") classify_group_cutoff_filter.add_argument("-c", "--rel-cutoff", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.75], help="Min. percentage of a read (set of minimizers) shared with the a reference necessary to consider a match. Generally used to cutoff low similarity matches. Single value or one per database (e.g. 0.7 1 0.25). 0 for no cutoff") classify_group_cutoff_filter.add_argument("-e", "--rel-filter", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.0], help="Additional relative percentage of minimizers (relative to the best match) to keep a match. Generally used to select best matches above cutoff. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") - classify_group_cutoff_filter.add_argument("-f", "--fpr-query", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[1.0], help="FPR. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") + classify_group_cutoff_filter.add_argument("-f", "--fpr-query", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[1e-5], help="Max. false positive of a query to accept a match. Applied after --rel-cutoff and --rel-filter. Generally used to remove false positives matches querying a database build with large --max-fp. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") classify_group_output = classify_parser.add_argument_group("output arguments") classify_group_output.add_argument("-o", "--output-prefix", type=str, metavar="", help="Output prefix for output (.rep) and report (.tre). Empty to output to STDOUT (only .rep)") diff --git a/tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_cds_from_genomic.fna.gz b/tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_cds_from_genomic.fna.gz deleted file mode 100644 index ab4ba6bd862e3d1ad62c930eb094d2ff4d0a1d42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57309 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� 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

VW)zp*=JbMcYmV?*cu<&itf|PcU~h%<56pc|hV< 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 diff --git a/tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_rna_from_genomic.fna.gz b/tests/ganon/data/build/genomes/all/GCA/000/147/015/GCA_000147015.1_ASM14701v1/GCA_000147015.1_ASM14701v1_rna_from_genomic.fna.gz deleted file mode 100644 index 675cd9f343dc87f9d778e3d3851ae14ea612fa6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3192 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 diff --git a/tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_cds_from_genomic.fna.gz b/tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_cds_from_genomic.fna.gz deleted file mode 100644 index a40f18e37681e7b657d122167b6fb405540b5920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85689 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 xJ5n>sPQ?|f)fT<8X}-&WRV)X_W=;ihe61n5 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 z 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 diff --git a/tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_rna_from_genomic.fna.gz b/tests/ganon/data/build/genomes/all/GCA/002/254/805/GCA_002254805.1_ASM225480v1/GCA_002254805.1_ASM225480v1_rna_from_genomic.fna.gz deleted file mode 100644 index 85c814ef5d92d3bb7d823b630ee4723a5c415d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 zcmV+*3g7h~iwFP!000001B6*!ZyVPYeBWQ8#{_7J{oqn$00lU?MJ`aZL1CY^4}l@b z4DG6=DT9)M2I!CPJu`Ec47rL8Srm7dyXSLe&f)j_?f!p1{rOM-Y`eDn>xM;l|8hJ$ z+;=xW@1M3`p6_2CKHmMX`un=SZ`<|IzPtJP^YQ7IFWZ;9mp4DzAOG>Ne}_vSULKzg zciX2=pZB{@yTi*jeLJofi@qD$Z_5=Q-~VU#D?akB@tjlgTwXl6Wh<|41DAis5JGr|>hwkxTRYu9`p0ncrVW|1Y~Q=jIRN&@C3j zs#{)~9FHuIFZRW2iszfb5C$~jUkpQ_Gcu6jMz|DCluIo#;gPbGnm9ab{xQs7mZ$Fy zySwA@!@F5eR^iDn@9+P6+f9Sp3d76e(mOhTBnt5v1~GWVpQZCIS-4Oo%4J zSO`ZjOunrq-_Dslc3;D+^=jEK7VF#Vt|7{t1vyomVv{8Fe3TV&Dy)XdtSY!N zhf_maOg?PG=CxYo!-wbDR$1MSGp*9C$J;Zno*zFRN|PLS+oz9*$8hTA^TYAwal7B$ zJhOEU+wyw9-9J1(-@SeFxBJ%{YQ5^m5{~ue47c%V283u`E64$Lks6?PNvTI!nZfmf zeTK`>Gf|M1`BRFroN5q7ltZ)=t_OYw{zqrwJn|nmLyQ6c@n=T00Lci*M7J_ZswY*ov^%X=e%jhb8ouU z?_hPeEHzwwDXcVHAha7gC198RgQ~L1R4IH!ZooT{Rp2r5O45QC+hX(9%0=qH&<)S96$~Y}L$63cKs|;YkH$jc8+KEy5)^Q}8uqqc$`I$5QzXKvI6psFvdl!e^N)h zYa9TLpgKAnEx|xXY+*5}1<_*dG2)~kY6$gVZW6q7oJa&jf~oOAKnZ7>4fO1kSBX(e znXQb_cq9dkEE_|`H~=HwBT?}zXSyiF&?A}1U8yH2p*e1tl!y?e?j|fpVK6f)Ck9hD z=W&;!W2FL?awWS=EaZs*5|mvOvliV<{5s&a}J0>rZlf)*L` zlq>ef-I&{y)YQ&)N3Q?~A_-ZFK~2*3<+WkULd65MSUQO^7S^Rx3+ON!G|9*Nrd{da?b{PcHckLg_@1AeQ%~uAqbT*i|CNq>m z(#(mPtE!lQFh7``v0*>&$T=JK!|$=-YKR%F+w|S)nhmpLrinFx84NV=7O4{cB(XsK z0FRnYsMkQ1W^pFe6a zBNOi-zW{Gi{0wwft2H^Pt{80zbGn5Rr=%gV08pK3yV@t%a>7h%DvW0-e}2@7bm|7l zG|CszVy@X{UYvr-gRj+NgawsOWQ>#-*@mwi4(gB~#N-?c)}@e%u|XUo8ReL0g+i#K z+JDd!72i!@K3QZ`hRuGVysPn}uW!4v#>Vqr^MN)*W#WV#B8(DlzA&@fptX$MkBQbEGIoy)H$fleOr?YjQ5-(TH%OYUw3GZYL->a{L0o-?3 z*1)JGm4Zq!sB#MO;w1tgZ5d1zqtp{kF~>r)rFxEfR3(TSX&7f|{>uMS0qP)jhO(UM zk|whUx%7ZQMRpsG8b*e4V2tE1vg9WcLn6V=#-ZCyQ?V2w0HUdsr;c^aL$rzTq>i9p zR>_g3Y9nJBI?B-N6|Xq_Oi(U0AzY$>R72H@c8Vuc-xER`NDGj4PTa%p}Qk#Usih#-H_(r^y%xVjvP^0#&iE0NG601esVB z5GoL1rUF?x!%#LDUnG^CkXM(9gdw1{oJ(+pb6u*vq^%_(sSy)tA`zyi$%$!Rpjm7i z?pksc;QS#wlo)Ct!&oK8bLw}FIHvkVPNiB*F?CJbuBIML2-DakVJX3VDcq@mX}NxF zqfvtkL)L9REfI{0m9)`R1!o%Ltf~qYriLr4=wV5Ye z|2U4eckzYFX1KJU>nFmZPv0Vmn6uDYq%x_B>05`oF^aX?rTx?QcHKB@ z|Mk}nuYd2@4Z~v5x8rNm;q^A(H6Cl0;<7BAmZg&<)HeVB00030{{sMZreg#(9RL8^ C8ty>= diff --git a/tests/ganon/data/build/genomes/all/GCA/004/132/065/GCA_004132065.1_ASM413206v1/GCA_004132065.1_ASM413206v1_cds_from_genomic.fna.gz b/tests/ganon/data/build/genomes/all/GCA/004/132/065/GCA_004132065.1_ASM413206v1/GCA_004132065.1_ASM413206v1_cds_from_genomic.fna.gz deleted file mode 100644 index 37eeea8651f63874b9c49b5632d279a55a526117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmV;*0X6;~iwFP!0000014L5GY63wJyw6wo1;VNcdN9y*$eeOY69PfR7zs0KVX(fjcYQGg0TvWXTSWXNU0OprV~^tm`GmSo2MVi4Gx656vOpb_%?GMS-TQ4R`A zQZ1@6t45(tgTkDO;%SEd8HK@3CkblkM1=ryz!j=<83lP+Q81yS@UjlM50y&{<}ZiW`$FNtHqp z8e_AyA#kOkhqH|2wP@c?|1qNW(dNSVE++zRi3x&TOS)u2!^I7-wiaAQ*TtYVcpp`_ zfOoW-8bjPp#L7j}(bBGAgtq3gy3M4!YcA;uDk^|Hm45&L0RR630E_Ik%)_5XaBS z@>>h%$D8rYtjTP}&RTD+S?`ZGwHD}C)xGEJv-h{Z{q2351NaF2xBqJY*%$otKeznL zcMRg^zhOWBddJVdK6?M>9{t?4pPKv3XFqf8!rY^C*Uo?b!G{*EKKA*~J^I;CU;Ds= z58eN{Yi}JL|CMZZWcbD#MsB?RnxS9G-Ff@Ze)zSaU-{JipZV;kA3S!=1D~0@=2O4< z|L^KKy87_&^&>~JKfn6Ve)#WR{r3N%weMd&J2djq?9k7z{x9GEcQ5`wZkQWy82adq zAN~2ofA+)w=jzWtxBq(i7udgA$ozZ{|N8aU{`1d%k^TAa|Mh+U&AByy!Tv8d{>z_Z z3qsN#>a3u^j0D3{49vSLqLxJtNtlbv*W*HIax7aL07i_8{0Y>D)t$F5+6>@ip6H;< zFqXLWP=R&nPL}tW^!q-j&dm&H&6TqbK49xU&$(A)zy+cuUPVQ6ccK{S;UBDU4HV5> z{Cme-ZM~TJTx%IPX(bFWzGsz}-BkI^b@r7z>?wxO!na0iEx-6$T6}0zh;X14`Nue~ zMZPAG-V*It5|-J$CAGh@wknVNR*fA|yDpPF!V+}hlT0t-Ex4?tp`a4NZWO?a7s}Wz ztUiE+9OLm@Vim8Iqb7VP>qzbR4iPMRs; ztA1Pzp63qMFkWk~cnUge*1IbP-5TXT5~tyF`TcL;xWQ?WJyy*^HsmwU7e~DyQgJ(! z1biqS+2zv5l&x9KHX)J5g?ms+D{h`*h>p5%LCPaTZ9Y?_VurN~Un6Bl-kWi?9;=wM zl1VijU!*k-n@~1CY$6X)KRPz}FwBxzXpY6f5t#0+{!c=f7Pg8^9SsW=O+`M?HkquA zO2?_ZcW(y|7Wwq`DTh6$3_5L}FIdxNCQ>@I8YBMFab=bHF_NshUbTP5nXo+RXOPsq zqIm10HTF@c(IWxJ~W;EM0k!K5pEE|eU)d@kvs?nJ(pIP^qrve%6o7dDd{y@`7F>!}J z&75PG@^2hc#aoLW8_A!5D8nhz5#$OQf?M}_x||$*yD1`BBzT%>Il7$Fh_k8`$#MVX z0<$osbQPnQWE71_W2DP+XkunanpF8lRWB9D z!F9B#QfR|v*kSw)>!x{M=K{0_UL4A>;nB*-UOESo9nPE;Ye!bZu+17Q9Z zE}eZPKjQ#y)v!`g?f53iXPMY5z41uYc~teHPbVYnijs&kThOgG8@ra`rW@&}i^3=$ z7t(u9LRH-IEknkNM#0b_K#JoQr&*B0fxVrMvVmE>o9wT^X-h5bRsLjJ5HbaaIDa@) zETkX49$AmMa*6%U_S>r1;IL-vv;c>aGm-76h{%qwIM&o_we|}+W2X)OUNzDTSrWf> z$;h1*BP+tOFy)0~!ge^X=S|!QC2(Y2c_`&&3Ioq^D zx)2|`B&zC_v)l%GGC^LYyvQ$hH*ltRQW!Wn znC9~g<#@Mw9FFK29xKHV!Ne*!MMxOpOwKfFNOtWu?e+SIz+)4!$jalR;y|& zF7wRM-Oa69rN#reVC9Z8Xpt{pt41}f7~>I@>`xYt#>VvFip0pFbTm=~>mtLBXBbPp z{LvFSsR~)2Wsnk?W=14MX!|U|u7`VDfmgbbFkxIeA%=iRh&C5*ayp(#3;4{Y8Tf&>bNBUZz zGg`i8a~73{jgM6|Tx>Dm&gx0j=V8^-vGnUb*Wn?mHKe{kV+=y3fZ+@AV%dNzV;MU6oVFVSyP zecMn!8a?d5N^8PK&QBR&<~IioYE}3zm*?n?xjlJQgy#>adGYVFWVLXd#mQ|RoUAj0 zV&0;p*fT)_op>wfl{1!~P$w~ncfwc)j_N{F-Ia0$c2~7u5@_gXT%{8bVCEIZm|@|m z+w>>_5#o6nAn;N)Cf!|_irsydp=bwmRu4)P*F;ZI*i@=iILLDol-fB)Mzu|x?p1l- zl(M^?sXB``(79<(^_6E)S1K8$x7naSpkp96Sfslg=_*u`bl14R>i2524ofMBq8=q< zJ!v8(n1|eZ_5Mcxi1xj$w5$%KHQc!EbW@>`+77?T_gJ#5)1XsFylhNMEBOs7CV!sb zBg^AlM^0s6<{aS3N zsT+Ov9i!{9z*bieKwSHA?>S{pkVoSM@Y9Y1#<^&HA@>$4Gm`b{Y$Aw=I-R{F)?q}8 znd1GP(Es)6UoFHb%XeC9iB#l9HodxHZ=%Y$@Je2}igmQBsdM#y+P|o)a3hJFWr%Uw zmJ-&3;A-YZPckR|F%H{%lzyENx`oh_ljSm>SFhv|{btn93#G$NGFe2|C@~2y=E7^} zYMBX{$-e<;MLh8MkeXvKCR$A+Rj(?f>7v@G^n80%Cn$}7gzRjzXd6s>KE)2+PKkm@ z+N2z7mP*XKWi>DF26*qPn^sxa$x}Lo-Wl6xRMIq7iO$exG8w$TlLyxp@dx3M?PX`* z%*>TqG-dRq%q)4r-&&xz#d7qx>y%1$42xA`nEIgfEc`W#TbY$Ag81eeyNaCXFsr^$ zjfIC%=oPp+0EPwx`NLlB>(`4?2w|t;_Y4*a=fx>aW`X(pgFG_r@bUB$u zHGlCYup(uN@@t*^rn*e>6~T4;JYYLqa&kKtdc>2rO966F|7d_}3=S`@+h?{hYX6f(lgi-cfC!a zLas92;DFS4Mk()rC-S_KWa($gg=)YpsOYX#4*8?EXYwWpZ4DcX_l?Ijds*En!WuDV zOsnL4^T5$)4=j}tQa(My=z4<36!V|`uFjWND#|oDJ9>q;YL;Bav&J84ppxrtACueC zIb5N1QZ#nFCPu3pbUuf!_}`-J?rF?@KPISL z^g9l+T!n6ZqaIOLA)5Tvr%`NNLPP1q)eD!2;;SnUvW7us$l&HOj!%lZDqts)he@`|5L#E>7X{1PJ$DOUQ#9XI@x&}Zk2-ZW+)L7)S9 zpP{!VFVWTGs#6yy!3-{CDw!BG`;`k+zQx&v)m5Z(w6|}Jt74jP$-A&3>8L}SuO#-D zi7T}ns#|$stynYBS(#`P4VgqLy-nG9%5Yx`3So(-?{N3GB}BEwLnDbFp0;+@K80~# zM($x+sO75f6DsYn8|Y+6#ZHs?WX+7bovEELs~ALFi5F)&?%UaN~I%6Q~b3uTrQsLh?Lw+ z-0%Q>z}MtlN#?)&iyWp20lx8~0 zhF{l+#sl0PTb4XWT(UJ0wKbh@i!_WttLfTDHycGNC`wi+jMpB5lR<%XHoa47wun2x zA+Vv@M2)`Fa)EP0_{DF7M~+bsU?Yd6+Df<*iM*A`dY=r|DCUXmRP>7Q_BwJUzTL3i z6x#;_qyxE}70-l)V$Y`1kRyT1#ImlbCCEbcc{aaG?n8t=@pnMaa&+XhIL^Ye43E!D%O>ZWVQ1_e6mL1>MmmIhtbINueRz8hd;@PZT48GjXjoQ+|@ifXl>7 z6)K0@&6ystsISt}p(+gf;Zz7f{Btk*UoSruL86l03#Ar`=8hDpOfwDM8gm8Z19QZd z2nQe0HVk}WSS=<*0*!L-+4JU7fti^99XcmL_wtxl z(=RfLfg$3__qQq)xzHSb@&TUATr<%-U1gmN-F#_xXXU9rrx`Ng_$YW`1Z-x&e98;;Pwxi?#-JbGf zO={gJ=zp3f{PiArfI!6Zb4g!mHu%=?w43WU53{!}<*0D9*Ck!g4%A)<=duWn@{HGr z`{-mmqdC;>I>L-wecWr}$!!xOe-bVIO82GZ?Pj^;V>53L4OD!iInNSSjD^MWTQ5tK zV2Q@ryf3Qs0sC6Co=7+H4VD5l&)A2);DKywj$xU28iMKusZ)Bx9D1OleA$&{i{myb zbo)1cqsk3*?$B-@80#UsMkGr^w-_c*+8Nx|l7`4fSnbTlA?tFqML3l-)@|K*gJdW6{nhX8k?b^UsFbBwrLb@cn7%J%?&J)?OkUNBO$W-_RFhZr0YIiZkhTsV$Hrc9 zFpUEnMY#rM=(Kw&?(8A$<+**tt*2wT?W1^y?}-BUBu0zu#u~rU7=uA2UtqO|+eqX-zOD$QC5Iy0aiJ2*IB`0LOr>d?X!HL=3eN#|Tjn&1?pN^kepH zEx|=R<&8&kKoRxY(cB>jjuq|V^vPr~hs{{hpwcdiN(BC?8gXCRpQ`V9Cd}LctsTk(3MIc)*>ehe z4QG^$(b8=BwaRPbww$zzlCaHb9Hhha;ZlL}hJ_Dii&*cn6^K_`LoqYAvlbtXXuX!W z)a)ULbsrqzr*Rgw7ck|qTFpQE9NMaB9jnX_2~b#ZjUD2))%;Arz&BBPT!56S2q@Jc zDUrRtYtdXj8)GeRsK`KXr z8m396E^}toANnbwg-I+wetEJfe!#oPy7=UrlO>h#3}l53+2YB{?0qR2vw?n9lk_a{ z-DDVn9$S;=^5mtoLYso{!}CwXXX8ZUxW#W3$h`DAP6~-l89Y4*l_Nq`e3hY#3aIqF zD3x7(Ri=zDD{$LO%GatuWW zBzB&66AI4<)i!kW%^}~p!02rjk1BFT$<+9l^#Eyz_&;8yHyiW4uja@&JMd!J_Jyh} zW7D4I{I(hnbbT+Js&f$?ne=Ryu2AFzfF;Gy83EE z6Bw~kg5I(>;fx#Ie4Nj`LrYgYl>K$>+!x6kWWjD0*=^Q^+nDS#LBurnp?RcR>1?}{ zmNMQ~h9!=OX3%L_e}SK$dCYp~rF)DwOS*i>R;Dz%1gJo!T)9|3{){c?alwqwa#7oS ztBAu=Py!aZL|ml9k{1?ChKnivcc$gQ9Nc;1l$ayrUHRJrO%_J3N-dO@yMiBgjd{R% z196sE-7|gZ9o3)QNQuUa)F0?jiNnlRPb&Sw8Nv;o+%&7?+T`B9`K(UtB-j9Yjfd3s z^@+v_f;g5smFDLR;e<&^-MwNVu2V3?AiR*uYF5lHi-v{q+nD)br32=q3~=9mffsK+ zi{m09+9JmA-IUr*G?OQ&c|t0>8*9=X0a@Nv*VI(5!^T)Iqf;V}a4&1dTj3kr!@Lr; zDyDjj8Lyrh=1Yr!*?13wulvl`n^q*b8Hb)1KdF%*O5`$UOi@?R`%~Gj8*wGo;F6Kp z`{B7_C*4aqmC=wl6i(jPM9i%UXJxBG>|6haIA@eC)F^7=^9_SSoemf97Za0d`nr)% z?R#~eQWFX8cEe76-y>9^LbK~sa9pz5ztj6j0Ul}=kr`@U6V zBCs1qn^@uMUo>(qm|3n_r;lP+M{v{z9Hk@g#fxL$zBj)iTsn&@4DOM5oz^ z;mOv++_z8{nrri8)bM+ly-V>JGDE3A8qd%3yzG9BP5gct+S|6PpPm&%it^7Puwx1z z6h;cfP1W=~@&l(?v_b`eWJX}e6QspJvrf@?6*~fgdv2L!uL~RRh>jGg`)DAookt@9yMBf_&E*+7Tj+7EZE)Zprxg28tGCU&A&w|sPd-aqv@FrX zE0>IC&PJ&LVY#~H<^>sfmzFFOrftPR|BN)kEOEa&ZlVveAgQ<%WA)&f%cx3#poSIY zw|9aVBF+~`RmXwr@VmcwU7s`fqb% zlMvVU5Y-iw3fsnW=tr6e!D(*uPs=;GkU8+{yu%SiRV034f?0-FRWR`oIgZq)%MBKH z9De8F&+;7Ks@;&LC|yCJYSdB%yfXNBhX2hfaP@zXYBi)1&VB`7kPS81A^Iug?))Oj zdsrjKt_?>mS@zzy|2iy_2Snd!11Li;#OW{uKP8BnZo!Xt@&hQpQ{jm^M>E)cB^{O3 znOp*sUF2}0@h91wIV5(3vF8|?itT+GoLSw8;2}qmUHa-78x&ymN92f#3vWGkMKor( zR>yv?QtmQ&inKHX{w~Rbku(n5^99?Z8Zu@GWgN%}GOECt?()nTKl*6wDr)gtLzlpfH4#W$}KWhwau@*$@zHlJ-0?~CnItYQpl zH9x5O>9{Pak6|_OdL%kl97sX08CxQwOr$4#9!4kCIt~k=qXLN=%PUp(LyoJ{EzyW# zEi>sd7m+PII*T}%+)CfQcIUW;$((JW-s6=0$u}2LOI7{ScGyM`L$V&xH>p8|Q=a?- z#hZ$-JloEzMTS|9JyFr$qU|W$h58_QBJoOpOB@#z!~Z8jmVc{ed}ldh!y-44}ippxz{O_~%MRjP*4 z-xgy7U8z_Kr9|NY@h&+)+7Y-lpba05dq&FOr<1?SD#2-a zN9N**myl_Q%jVy<gAHIBk~DNsIOd4VyK9F38MVYr z&O9tne;jQR2pYf zdoqxzGR!Q*%GY^q`#I=F!oj6ugs(L`$g@JIGqJNCIXn}T>rqI1cR-h@SKd`G@Zq6L z>LbhT>B(T?Y{3N`>w{h5zU?|Y`ZY~anCFxUpE=rA5KOnSY(kjzYWy@S50GkLTUa^h zGL`0-zIHzovS+62ZOGUUD6K@+c@gCpA9N?mLg#X6Ivzzyh2zw5b|FQ2w6G1q)FX*s1;nMlzS1Jfto22VNcSIGp%PPV5osbQ6k52*j0^Yvccn77KjS*wvT%Q z4U^hnw?LqVSfr>TQ9}jk_=veXZRI^hFP`1F6>in!OcdyRjA9w`#UW}v8!)T{&v8vR zZokxdYX5e27k^BDc=J3M1h~Kbn8(jQfA3ujH znVk|xS;4CbswlWV0z5DH(MV~kGJsMFRf;we$s;xMa%1jK`>K_K=!@Q;AEqm18oR_A zS9$mVEsn=l7S!Tpr17$)qCDP!c|T3$p>i}U)>2~D^nrxzALKL>&6Sc|GGcMH&9)6& z6ZC;R2-g>($-_x5 zQcvp3yL6!>ISyrw*43;Xv}MawLif%ViUEN<8AQ_AtNXRbF?scFJ=<(UA6rW@i8*hq zzVdwa^K{&Di(;o10^iG+sMSWD`;vg+HsK_5nxxiT{&l1*VtfBvg=!j9XajC`#i=ac zTa3C{0<`N15#Gfs%Fs|!&eB8yRYlJY1oDTw=MBEgy=I=e@vqZ`FHMt^Y5CCTME9J? zWe(p{4DO>H`WGEb5MqiW+}<;dcdhma1Pt@ljU}%?iPacI&bU zikiuIw)_#KTaQsJML8Yw+0OeN12JN&HA(ijwp6GD&lCqFou&+uBGNWVxd^He)F?PW z1>85aRNDKKD}CY!u=C<_F?*e^d_dkRz%&cEkr}D{^iK-(cF~;HV+Co;`GPe#t8KRW zSYDwT>eO|h`LXc!lPVpsx-9f;D5CMqU0`ulbGTK{R%pEvPg!Y*t!HavKO}oIeIPNX z7BQsjofIG%CYOERu=u8Zw^pk8xD@^7@J>9HLMWpm`yp2{S)9tBr~M54;xSS z6KowJ<4767H8n4$$-!tU?5GK5@cSs%;-Ye-e_Duowj|6OH&?qE9!{ENL3rUW(u51r zEERzm&+cjY_ls8K3q0SpOIYF$^;7bq{7|ty&GRC?b%w{KI>Q1(uF+r(IEC9O3vEZB zi;ajRVRWtUK@KeF27fp{$&=>f(*csBti;4YnvvMEY&mt7J&-iD`s|O4^m*zJ;@^&e zofOygeIE|u@guG%sXwR7n^Q64kF(&^f@)w>EH^D81U)ss;(>!bL?twDQUIW@$D5@D zNgQOAcj_9yTTvnw=Vh!CH_-P^)t77Ks~D{v^$g=J3R!lhvrRP^ zmm%mw^I7+EqbL+93^R6$RCJn<$007UFcCZ$R6cd?!p+LuMf$3`Xhm@LgSc=v9maFU zz#XIQ?jzqv$X7@_6#tuWu=)#*9Zbo;K6pWVh z!o=&*Pi8u-ukXdgjotg>P{tu&(0DJMk9g!ryZDacv@j{D&q9-CiuD>{31%>3Ky*Rc z^-43vnXISu$$9~Im#K!KHYAWga;Kc6-jw_2UJ1m;sx;o}H@S}9(?fK&FwOONir9wy zqhie-va71+ZhSY0R7J$J@%8bRIOV`d^$@d3A97Aa4e|Cu)&^swqM8uQ1L4TJo23^2EYDnjf(lhD^VbC&$U9KH&p_7@OG< zteS85lI`cEUIHdwB9E(RGMZUBsx-e6X~>ViU*Q_;18+ER=Odh@HWnXMhFNhyJ}i1l zMn487tJ{=RG_qrG6VYVC@+Fh$TxuavU7!2myip`n=9U(Qkd_*$H{V5(ZR)#Y1uCU9 z3MZi2)-tiHZ5-)%rH49O@5Qt%nl*9$C_fo&jM9Q))E9Q@GLlh!(q^Kw*+f+RAXLr5 zY7b$eq?4|*iPrcU1Du(MSd(5qrAt(;e4`7X-m>3II7IP7neC&_>%9#dO>&`=lXYFQULACrUP zQ;uvjBdt~#h;s3C<~X^>hH!C;pzx$5NiWoDP7%mxig_bw)Qxh_?_Re|R$C7+Ci=i8 zhHmqXpi+_B4yMkKql;`^eP}RKe}!;GR~r>;h2@rARy{+GZDXI6LbDv3Y#f~iu0qd2 zCeXB*koGL%%D=sJxhy}ll+y0fdEV6sxLnJ#5FFgj{{^`Z7vd+b zLt$u(d9MN5=C?6qngu7kOf?#j0+A~@PVP&>j!X7Po`$@V-Ue2GpO4X}o?061Q94*J z%R>W-WD>(-lGAl@%21GLKi&NLUZnoXW+oOR=SC>l)N(4vFseFj?4$^+XbdSoRTx!X z(Z-d^%AMg{qDC|;av`3F1NB6uPUw{IhKyr!D0!Lm5$lPt+MS|iA+as@A5K}KMIOvF z5eBgN57Sp@L=F_h5j{0D1U{kRh9t#j$XLWGQxDLm2pT^Mb|k+1_RK}XrZp~|L<^xo z#8gCy=8%~+)H4z^NP@ziI2ZY4ypovcg|PJos~fGM0DgIIEkfLhcHpU-cABvhN-kRgAvoGgGF1 zNwLWt%9>LG@5OOvC7Gj~s*b*$+Ukv^pD6g|3kOMuGd-L;vD>w7;omiGJ~7_lPyVvl zg)qrqm->3K07~tV7|Cvy#V?eSsKb6ZNxgf+QH%f+l&?XO-M$Abmrbdq+DIL)TG}SW z!NDr_>ht;{jUQ3=D?YMMcn1pd%TL1;bduj|n}q8GhMe9nE^FPyP*E)C>#3|gLS4CC zE}keNeb*ywhIVU2onK#Vv{K9P`5RE15{gdiPD%G|83dRu+;n=C)1g=Y9lbj?i)1ca%@-E=t^AtTY}^WW%kO7uGDzUV5^} zM#@`0(xQzn5A#LI)&*P5EHU4h{P)Pr?n+R_CT}jP|=0rUrKgfXJ7a7XSvB6Bu@Dec|%^+r_MNK z%nbI236A-Y-p?tU$nkKW8(8SM#buNvI*}f9g{U)49LnbMDHI-auwd5JG?-zcTo~_! z>lFXML@7Hqpia(%(L6;a_leH3_%cXGf;0`!=ohtE>EylUM0J+45Zp5<=obQg!)4kP zj3V!oDm6kLwDX2~O$vxyM-K|QhP62|kI~^!?mQhs_#7PEc{igSl^feqYi+?_5;x0Q?$n-} z3OR%6@-5X2&G%~uZ|fYwyCLSAnoh;ai)@}gUBBSgK%+wD&~0Z3gVZ(kNeoe5h{#_$ zpWu8#Vk#vkg^e*H#8?m&toK)0!T`N&RX#;^Io00uul;U?x#fD7<(f@ z=Ch(n6%+B9<%e{Q)`Y86sZeI_P=Y2)8Z@HNYKgsZ!n2Z4>2Oy}XRcIEo+6x5bP=Y} za^}$rG`sj!UiH7EGu9LyE?&Sx{Lmc~x%;o_Q5PfHRER*x?w9e}GS6dOqW%@e*N9c9 zsr9@@(pX_>*f5O9Snk!yhbjG2wga~p?HSP4mWK)nR`$v3UefX+sy6$lL;G|lJU8$Y zzm>LO{9CDQBV*#H{k(*PJ(SPMRDNx?UMh(!16$}45oGj((9t0#iE9q($oHC;V(8$` zJn@qlpB=SSweU6yZ|ufZxm2nglSV!Bcci|vyc2PGpQb2)v=bz~)mf$y9|2bd(rz52*!z{TL5s2j&`qvsdMCSJNDlExC|lr)1C~4X z>^AG%Di{hMW~A5jtf|&I*S43KA>^y?(xOSmpyAoE@`dWz(fO;b7Zv60Z`?``)TBgt zn%>s+&hTQB?4^5Y0LyF>JYxO(NbBdQjZADJ=CJ^~`HW%(IdU+Nb>`#+Jf5pZL|I;Wxr^Ix zActY*C^7#_cbpqXzE_;@ndhhljo4306_q?&wkpQr(d)lakNint(=7>lj7U>jK=UrQ zjhDNiif^NZ=bQ3gz7Vc*X9n#&4fAgD2J(025g<`c(^QX+-9RMy%0!c>bI!2Vk@gO& zsBO4WqS>jF#6U(ep75%p@`_~XDM@~jXmMh;RlaoInj~=m>aex!=d-*sNkJ&6kfiGq zoFs4sWG0#8$1{Q@pkIz>NDdmW(`hmt z1Phd+5O>O1l)q&27%E92r1eoUbRScGZ1iG-nB{_i1--=Tl!0RB1gMEfSFtrCtg<;A z(Ff`}MUKAT*Au{pJDJ8M%b-^}&HhI-n{J+-OdUQ+e-o1$?RhthxM90`kC8{^;}-&F z>U^a|=4k05%DMQw2&oAnoD7GlV|l&WX6|H}+Jl;`K)5`%bgxbow8sA&rDZ^_{8le@ z@~PN>C3(zn(7<1bCdgdZ%POMB_4@D4X60b^AlPeT8`}CpN5YCcUvikW+#0oB)p(8^ zXp^kx(kMjGN<*nlNkkWVg1~y&Y5JpKtoDW`m_-Q`Asd?J^BTB{2KhI|U)5+8slfJ| zuosc(DZD0nIyxvf5w|g2f813Yp>@iMmODCRHN&BCA}`1mCSs)bR(XQ~e1lprcCNst-%TS$SK53tZ-Of6`L!0>6YQ-Sup%6)z)lC`MR=MC3g(#u7i7XA z^MVE{@YczaSa4EqDJO3X%HojtV{Us(p~*%`-f<2RyjAV@nzTxC`R&!LBr}?}e}I6B zU&#L_U|aGNS5dVRl$v#!cG9*uLuB!^rucDNi}^GeOq&kg#$c#ko-6hnO}vPL3QB)6 zBZIyoasK^Tr$Iodt9|$O%LXyA45pN71(AgPC^_#%H;sL>k+=GX;K)G2*r%BvMn;# zYPFaa$GELv8Ek-YH5B(+OT+Yr^Q!?dr zSCynl+#k3khY_#OZ6YoYW#*m7>c{V=CyOhRs#k^~SjDXf0PzQ1(HM%lH9%nZiCxy4B~HkhfZ^nJ~{ zscGh>AF+b&Y`JtvRM*WNdWfUJbwQ4qF|)4-*XAnJI(hN%7a1dG@`+O9>2mkG8#f6j z=7E5qi0z{kSwH5tJfkmF{(K;QM!5|nw2`t6S!9W7SL4H0}lLn_Q zRB4VpTE8tVcvD=aKAR_|m>Xb|h6Q5ofSjZSM|@7%nd~>|^pN$%)B2?cMWbY8<6*{~ zCm4!v((do$9iwRZapI78T{QQzmB>GS2QOzFLz4lYptKieiEEFZ-;}d_sPHt0t`Dn_ zhP0~%w{^9RqK=vS={l-GMCer1(rMQtf8+8J1kDt2%XI+!qD#3f6RX|3Xr`4&RaW%_qH#FV|W+hj;`9wqigg;x=R^(A^Ja zPh;3b#K&d%EX=p_hyFeXK_z}~LQHNo~PJZw^!Gz6}p;SO2MaV(h^m35@1X`Kz|SCYLnW%UV3Pw&+# z7zUUj0+LYP2l+ih3~RF4RSG@UF=DA2$yUnrkm~-ue>K@M2hM6;zm9Z+cWHkwMMBMK zTd!CbTf(2^@qknru5^TQqCF#SHVOk?&vi#!FNOH(o%0LY+5oT076e8WJXcV%wet4N zP>j+;#%vPHPI!%Q3VB1v^?Pp^D`IP`WJo)*+wo-0I#!2pQjT+^pkaR8ou+`pJysp0 zx7)KcQ&$^4U?xUoJ7-}kaF{WS z|CC>DRK!YogeVV&?}2U5zmK8n)!?l;Y^eNhb%t8zH7YFVNehir@(VQjB-{`Uq7mZ# zSaBXLTg@_Gq)Hz~OxXIslAuIY+9J3ir6WyCnap#e{)S^Hk4m<0kMllRw(W*a(Z==g z4$_tyqxURi>O`PJxm+PHor}u&mhPh3@boM<2+kx;qQ+tn+qH|gcA>Hj9a!`j%=`xX zn%Jt*jMkykg1qFvTuG_C;U&d)_P3{6)4S3xA}qQakTe}&qpBh>RNbpLGtfuGWx z22qDcNG*kWc=^9PgDh2tohjbbUbei~iYm9lTo{V4dI1*I9iXQ+^p{Q6iFCa3RwTBh z8>=mkYoxjHbwXRFo1KxYM0u(pg&`(9X6f+^EYuMjq_libGq-=T#9T|PdO7`zD{byJ zMF?+9@nj4x=i{SQkGymGCY*ZzdPza;JH9T^N5}F?lym^?KKjtdI zJS|jW>Bxu^=5;fBFT0V>ygqk}tI8d8|6wiOj>?tXriS4`h2KVO6N23S1}qw8L@jRG zUPCf9bMJmP$Q_H1>m&bD(VwjiUt?q$rbN0JjTOkj)a&4jm`nZ90+WrEYU>XIjmaE( z>%boMC0C4FCtMg>Xl+Sdk*^;5`!RYbiRW-so?28?n%uWGZ9(z?-Mm8FBrOI2gUYOM z9luy!>tkJsFwSKIzd`dHs3dk;sAN)mVTpigrTQc;X=y94{N7Nmqt?)PIOG1tJ zIXY68gutb?AmZWNU8N&Y5;87zi+1yvOi75gz>g8cPDpNMW>68q&b70A*DZ+#H<)+{?0DKvZdQXm8Su*Fg4g7(+^o#K_fuF4=$5L^WAFd*{onuC z@eSG!)~J4Rh49%JzD6qe!w}68tFTPX09eS;d|qq-FI{5MuUM2ehG8DGJcG_zWc@_V z&w06<;KEXC36=H0gbW~qZz#~}mF0reegvxvSQgO{jbRpwi(6DP>SG+{Y-{Mxf}}`! zH4~p-9t)4!_znYK76OV!OwY=xG78@oQ56mnK%`Y|cPI@RBMV0xwb{!~-WuMR#a;ul ze2z}d0dI0cgFGn#VP>^|J?`CBSnniTN!Q-kf?}ZjF&w+vRL7WDbzoT8C||d@;ux(B z>sc17jJntGy8LR;pc4lLUTu*1c`HR5k0X+w0JyZt(m!h7%o|otSg?Ae6R0c~N80XX zm!ZchODH5sq*4Y`Ax6W5nKpItAV4!$>h{-GG?=P%hqhkbKF6=$vXfSV`km3uA>Wu2FP$sh+_z}9uOy+$*!uCS4sYvao>p9v3 zL;Bd1VRV@<`+1^+@wqk8BWx)PcZvl)5edOQP$f4kccAe`*q%*SgJ=8A|YBPFUs8{%|oz zn>CO9PNElA?8fK}6fR80)YpkR%8a}Eq{A~Oa>ITg=;acf(M>+`#hg8aKFnl1uG{KV zr+6*1d?stTlEFH%`5s4dvOxW92-(anBjr6metWh-2#4+7hXa$$$)d6Mr)Xl%6YiD$n)q&>CsgsBmoC!t znkgA+GMmC@uY*u%il?cRKLUOmG0HjoYwf`cA0pW_zi1x5no5L3-uCJ9wAc7b8^Y8i zIT|j~!2Mu<`8I9T$m_o^0e6iBG=z9qlq{VzG)y+^eI(uqXJ|L)$CO>Krp0~GgOKRI zj?POb+n4#qTp~a&5~zjDC;yXb7bZe$K5;|x3<0ffvC7)1D24rcF}h(R!V%uRH3s9C zuBWH$B}JOF%J+fhFOt3ttGrLAZMLnV>lVJ~0JRt_ejiwk5qEzTVyeq%`}f0nihn`X&nl}>-eae#jv4s_7?@I}Cqud#zU9X4Fx|A# zY~qK{Nlwir+ZT~%A)90^i^W43qHVP#vgMU{!`?I#HdW!5a%YX;C`fo#wRl2@h<}pG zOxLazg+dkCYOcFkp#Vf!`GUZ+N2wyx5t~=zL3ilUAQ4k1QxRG6iguP8Sfp+`Qg-P8 zK3aREWOa+8QNyQIVE#DEpP^2Qs_&I_3id$smvh~Q)9WV_q&(b!lKjflLEGo7z*Q+1 z9ZWXE@@ySfJWBC!k8Hjs2U5Gn5H%=L)5E9x6N# zuhhDDCM|WHn;lFoYn_TrgUuXXEy>80KR6Kv6Fop>9UDS4NHd zVPKBKI1&(WSdw1g4y{LZU9OTuO+RaeLdO3?h>=kF4&57FR32$a>mxN>OVuDAD+zc4I9j$_X-emHfA;Ic<}Bh03GW8K-;o>sZDr1r)l^o4 zkgG#Oot zC1~OBkYj4g%;6Ag{-$ zSS{NkUd{26ScF}s5!Q=*=<1meT^P$eeup*wGq&arAY`kTDtAa#&yK;2Zj!2$5}MD{ zQt!9WxGJi9FF7M=Jxxbwe+)t{XLy_dt8X)&;#bacQ zU}(He`lQo2W5^19;}KMO(Db#x{kX<+(KouVxa4Q;qkI{EI02d%Wm~FJ$z;>DD^xxG zpUX>JxzfB?CI{kc!o2Fkwg#M8)H|B?eVGcX=yR_p4FpT6&;*+%e&va{4Lb|PAn_iy zR)m>ORwh~$6E5T&a>5+qhV(~V9Z0T^5tW#5a`?ptuzJZTw+6{ILMy8o$8#378B+xk zHGffw|NvqAH zag#SCBTx*Esz$PT|GjJu>oEYm;@}E?Qf~gk^O?L_!P5YcNm@nxm1pqawL^YW?mN8o z3E1fBe4L&J&YJjJl)Ju=`cZZ#XVhkOWOSbux&=mpY@*W?kIjSg)TrH1D)zQwc@K>w z<@FfVzZdrEvXB`Oe@rj)8UBV)_X&Kyv7lfUz$d=kG(#+L;+f;eKZq!zwVsp({Fun6 zqo!2l7eCU7vyJ{$a)SQ!kutVcVZKX8iV`ojeh~pEvF-s!EfT5wy%I5#e69Z2NkaC+ zZv0kSO>+oVdO1z{AcDb*V*m}zOTn!`GULRaS(b&*z{Smm@3Z-G&cIXrJp z7Kg7RGUWxcGsvi%@8ygJo`z+UpR7ahfzxR<=G9G6hwF#Ac86c55Ai1PS-P#rVM||_ z-Uu5wjsSemP{*ww+Eu9@!zb#q)t!oMFWybONSXzYiTeYh`jMFR+sU?p`X{4mCjSF= zL@03b**4H;Is4O@6P+q3?T;&k#rs+}wYNT?;_1izN zv5{mW2l~#Y7{BHZ+FtCXQMqbGuB15&mJQ&3O7}*`sDTU2^R863tE9RBX&Y;csWeid zN_8S=V`5oY)N#1zXIlO_f*MkKTIB`aw%si}oe~o_Ny|5x~J5)Uw16jXEgQ08I zYoT5(ke@wEJ6zdDHD*DvQ6-&FUu)JF*N}#- z+A>NB^Eki0r4?xWHY2Lgl=rTHmcgK~Y|FS?Kr>4lo(|8!*k>Aw3L#2MrolQfXMtAx)wYgi&SS`Gz1Z8vM(L)_w~{llx>E%P#ex#_SFE|CSW^LTkMRg{L{hlyaPNiZOy$E}z zvYnG9wX@C;eP?LertkP7ea12T=<%k$d{S9%(vIW z5D;*?OnylD>A8+HMf4b%saytfW1U|D|1>kv2`s}Zn`jwezP0s&mbzpSe~d463uRs8 zChGYCs`E3_*g7YB9X*DK#Q5w|0^R-mOj+CAdNY;p84Cw2IvRRX;2~vTD%fKoXGQeEZG_bVn>=4+*wPu z!s2CeAEGWkPz_giMvbg;gBKRomQ8`+J&e0=!5?jq=RTXYMwnifJD!dTloW{bTh)+a zYAa`h`{3)WB|g59W!Xh*SYncT_cg>lFS{|hl-YM_zEI)}__0vSn(u{P?G5+GyHVC_ z*Gi(6IFq3VKv?Y=e~cyyu`-ru%@aQ9M_w5N*>O;0&N1CFTN~@j&{Pu&vhJYkw&+BZ z{5-QL-LC29WFk6@P@az9mAO{t+kGMt%9+|1+`~Ag2Hv}ZymLCa&G3#1Q=;lfLNtWA zkSzuoYNu@^W#94)T~DwF7FTIFz)eN&!Mvh}o>gD}9Nd%Tp^5vwiwYX~27s>kvHP?C zsW_daWAzT;(6z0aa}W9=WzF-F@n)07qHq$MtTJ^nPpuZIT=&HcqhtK|-8J(X@Q+-=kO6=hYN4W%RluV;zX4jGU}l8&t6X7&n@~vTbEfO39;2BiA(6gGca?et( zRZAH9LRaJ1OXN{T7qe4*;$L%#L31Vp<{h~^RIY5@O+8!*>R-c@PJ@BW7o~QwQpM}Z z6vLBb>0S?aGNlSJqjXn{;=VD%I=`*OicZl@=f5rIDZABKR(ch$TwM`{NYghf$B^kH zTA~^%owHr~`xXv~q>?LptRUpysQ5?$>sk1G2^3Exwl~D+dQiJ;5PiIccEd{oBaJy` zB%DV6b)i@d**eM~{BOZBA&hx~%23T{QQa3kCq9J?;4nFB=YfFL`(I~Rrb;aJdt`l% zf56XAvvX~W!Z55(5+U#@^EGYO!8lNPe)Mq=!ciQjH|L6xhQ@~@#r_%l3yxY zee?5!B|LZM)@zA}(v&fdQs*;La988qw4Kc+!EM3aWyw45B8BM%?4q{!!Uu{;paQ;m zlH!tb^aMF1N*9@%GbY5=b!QxzliWsn?A@C(n?1z#xpj3IEuuEHjtqh}y=X$m#_j%* zgP7E#+o1F;W5~S3bM;CrFj>s94W((h>>rk)pvD*f3ERl-$Fh`@=@{UvI69&$30BB) zm<}Wm!AdGN7)~I3^{YZ-22C3X*prTh1Ic}>GrrJoRq3Dkm*fG+C+`}{Fiz$#&NyVP zP`_RdbNVUss563Hd&&E3z_UUT2#|y<8memZCH&kemoAZQ*!z#n5Vx{s>et#qNnfc_ z#{u>8iL7298pX@;NGKbWY*13w|6YN#lqq*LrVzoRryR`%u;1WJ^nb}6R$G53$5c?T z%XKRmp>D0*v!Qr8`Demo*GA_1*6q)fs#;aZ!QP`_=9U!lsipwrTruT_MRDDAfG;W> z5ZvhU?2}zrauuPuAu8uV32@G~^#h%Sg5B&z3mYoK&Y%ile-#M&s+0{OuT~ zXF3?k+@swj7!LzisXo%V#?@yRVN{Hy=I>$sp67r2MoGKr3pc^~2_sV`elQZ(X@)P* z_9QGz{rYqU=Bjwa~o z5U~(J7$Hu{+s~elhorXJM+wMoSuqlwmhIfzozD@B_G{1kg(afV<-PJzNT#4{_0BX} z=*rCi;4gt{x-CuC>oirWnlX~ajuP!>voH75&EfXIXkSZgedSt{Ph~4DQumCzj79BC zx~q((sx^rJcf3@@=_=!#08%evCTJe-*`D2-W}w;9_1cRxiXw~bV+W$tNs{uMip6#c z)x>hR9gow!9J+L9pZ?aa0ViLoZTpGinfEZEW}!zc{c$+U zzD?ZBV393v{_f*Ta-ZA8&b!^R1Ny7(G^5Bp3+WR$Io-6i10RqOl}`?k=+hP(3M zLF1KI#FCc?{whIRIjDc&zkr>v02|(N}QXe z!ab=VbWWQ(_Q}0ucmw%_Q~-k%L45qs$yd^pEj?u^tWrh0Ukw;R5?-!opgdc6l!}W9 zIz~41++8|PlJ(kP02(stmiOjDyZlSN9|EQ=vc?+ds-hL-_8BWMD6xomQdWkF&Nbqk zr1qs}sp3h%?tKpyhVN@mxxh5E7qNx#RDH1IC2`>+@BBKa z_#dfCk86H7zDdEmT`4>s#{W1X?8(=3u^WG_#Cab}Z;ANXvE*G#mhw~!Y>1f08*_tB z+1l*6;W&}EMX^;l?*-p*`2Z*dR5)GI;VfW}nD`~h+pEa*T-t(MTJQC_8@+l@pBH^C zr0g%^%#bsJeQF#j+k|*WQjqdt7wW{z`1DwvPDh2c_h-3EbAuY#%$$#oO0 ze5NFO%2cg38~Y{}D+9i}I5^G-uX>&yWoJjz|vQ1oHYM|>;SJvd`9+?leYE`CZn zRS@t;p{KUs}k0IjNe z@<<-Qj8`c=j}wugh}52pTW!cFv`?0ik$W*>VMvSkiMxsVy@=Nkn}kn{115k5im!~h zyQ0v#U@?paxpM&jmiHI)W;ts5f&ZC`eT{j zE#e3?eSTJ`N0Y$KBQac=aZ$T0a}fDPLf2yBbu!z#7Dfc~pCt^BYAqJta4~C2JeTI~ zFYjTmb>Q3xxb=?(i}bOF^RkC+^dkALH2vGc9K<}s|7J}H15bMoqDxYBGhw<3e~5g@ zj@_$}pgNw-aT^WMkB=gKQhIahgB}G;4*MYWRKYV-&E_5srlPO&(65-`;8$*Uy9fcr z9_MAl5eN>Gctq&6%$HN&oX;4w*1o8%D9OjEDZDpkY;29^4006f9TdYnlf7gGthk17 zE~Te#BULxJdxW>RnMt zBIE!=FSw@t$G=I$UzaEXm}0uZG`}N$g5!c?bM=R?kjbseAqzQ0qqtmlf#)$9;n+J2 zSNgQqASTjJeAl@*6lt+Ha!5IB=dn-)56;fvRT2NQJnn`4rSR-{Q>DroO{Z@^Y@k_H zLX_q;t;OuXafDfVKRN>HEvNMFkgZUckVX?n>A-~m-Ja>9^`Wj_*-(y6!3R1mG0vj_ z-dm!zXAky)q3Hy;jQQOhFO)4uD|q0BvQzUQWneXOUlL-HpC3Ni>I>o0IJv|wy+J40 zV@*w<-FbOfBZ?~o6)Y)Dpr-VlC;v4OG0Y3p#XP;>L_#t0Pkj`Z!+|8940sIdaAj<)Kp2=rkVqBBEf6wkF1gL+unB8uiE` zx69RfO2v|A&95MZ)JN?NEHcF+uNO{ChNbu@&vNvpUnPjP1ZYWr=K2wUcrK2g1+MCf zgp?L_Va=6FSy7^C&ijLF6AX8B?qx>~c1G*;v1d$uph-t=btubbN4s|dI_N9g)-@xN zxg@`UCkjz_Y5g-w#EKl#f6^{J$l znlf}XmOa_6PkRY&GF8r9AIF_sL8SI@mJpOk`bJiJ3YWa<8GOGS{q0Yph&mI{e!;42 zP{6G2Le>Hi*A3nqX27`2U_cHG031WYi7OKhuG|52K$Ok9+GpV02sOh+o~aG zXH>;lE(?{*kJmA`qIT{bynrOEQ2839HT=?MPavbQ`LzE)F+ySbO7`s`BkSu+wK>~% zBnRn4>d9FXL%|I- zy&K_lX&yfC_9C7nzcA0sOO9QaZ&*u~Si{g`*r1Vt*YMO8_e`d+eQqq0Ao1i$65R3n zYRIusajurahMXnZjk}ylAYKuD{R-?Wdl}1u@nfP(t<^L0qT>!1n!tAaVkOYkt&JId zic}+#Y@*XOLwPmuHtEKsDhy1=xB**Yxe<_iFFbS`J4yvij#6n5Pw{~hELj8qd6|0g zn1Y1B?|0n$0*l8my;C~O%0i>8{5I|;(84N3J3X% zbFk7PyeU5th}H~s_s>X>5rxXy9c17=oNIp2E5k`n z1@53~%p6{WZ(;SUKB@h$MP-FPhBJhnpVrs26s^iHx?tCPl4>QUjYE`~pe+5)m^LYEVg#S1g;Cle*9bbPjexXvV>*7{I{pda9;`fDtT zC&iqLFq5NOlb#f3Zk+Tf)TS6R0z+>S`DH599(7?(6w+YfFuojBz&p=k$?JFvba8W-PEEr`Dw2zF$1b(QHAn`dfX zJ9Gl;3i|#(^%@t3gg^XQZjBU%!r~%Y9Vfop2q3Q&c}sGcxKp$6d2Y{v&~MMgbp=fN zj~fa4H~`yau87W(7fSY*j2_dZkHF}iAfzZwe4fDs%}!v^&e7L~i02orKFW3%6i`~| z_E^cBhwXV?;22SA92Nk(1Q}$OwNjX#Nt3K$=f^XKz)+$FZE5Qy(*5<2uN_FqcSrX`I#lDI_*xj*sVb}4tqb785UYR(izxycw$%esVBDUcdVW9_GaK0bx|(VEOBg67=)oMID` za+ta!r7|&CUeaTfj+98P`tZiw#ul~Km@u6hOj2x%xVIG%degutA-GX+XkU&kN01lG z`^)nN&u8|?H%rZobj65SzNw zD3}tOY?rfmLH>(qT*hsLR_Es=SyNX4E4C-w_-mCTgYubU{1u86D=fV)vIZ;Ja{dQE zQ>bWPsi{OJqOsW_8ZQp2y6oz_lO?zNGKT~;inZ?LU$!^~lMd=#G_E_Ijd=kedFNmk zi4PV1bE>YLnGo*}xq!h1;>M(TbwoYDcwAHY#CVaXvJ^4A2-PaU0KzT`W>a@;<{&BI zj@3mBR(i7%?5FPSAx*{MpJ3cm26`InLKLdX_Yfn9i@ciP#VyfiZRXF|9&CjhQMNml zpDa#b<3P`ZyC0v0?>(*8DqsEVE-f<`WF?M2g z7rbs!+vjI=OGTgFg_Rfva(>vAN17v{$5Z96l><2bIN$Yvj)u!9nEoiT^y%B^d%#cn z7q~*jeJr$p-YiK$Eyd}{HkWuc8MKv+Lnt$Jc-H%&z>2qgg`shb@hBpbpaZ| z5Dn-mJ|C&#wWohGB_L)%!@yI)%MfAT3cQ+N|>p^ zgbwqxs>DPc=(nUIDrsr`Jv~Y_jd>^D1I<`H#5Yx_7v>}uG043^b~xEQl1$JQnedm0 z&Vh6e7X;;>Y*6PwADOlcXCEnUs2ENC+F4c_PDfK^la^`+pVMbhH%fjcYop|bFO0WQ zI^4!fyO)NOjci!FpiS&%6&ujDfiM`a7>_3itqx7dge|5tNFC0dTcvYHCqlP){!)Cs zUf{Fu)jw+t-M>rMDuYgBY(!MR4xOkDRT%L9+sVXaqU5#7T%xPOw|bTb_thsvCXqHA z;-LnX=8Huv;%i_oVP{~>&4}Yg61fT=XDIjp+`DFSA8sbFvY0DE=IBnkjY_I65~C=s zLuf5ejoMg1>=5as78)d?SNynqiCFlU)t{Es_=Wv%i`f@MT(fF*nl~(hU{Wy}V&$3U=oGgG|;Q#M_ zNEIuo_V;)?qfn+1H86Zw$uFub!lwf5wE5QH34TUEYZTC{SMMoExz=&$oBY}gJ?ZCQ zfOsi_SC2B0n)}>+G`S{nTCv5!cuY(Ry-N>i`yw_sL)ix2kpP%GMH@fL^uxL%FxJ#6 z*p#A;)Q=ZxIBNnSsM>z@gh(P#j5kfF(t|XfLIMQls}q%vPT5v&a z_dP-d6U&DUlfwbp-=8g)vIVY+b^YIzE=V(cr|MT0tqeI~SjiRfggG>e1{X!eh_4fp zqn@0x-W|l3e)^0gXPXLnq8)`JkSpfq{n7HEsF}NGI$3Xpm=Bwoc*(p%q5)$_>SrKE zv|B9xDu`iW_UL{vo&}P@ZGMBcKoX=9`_vb3dP$Uis*TK6MsDyNGL7ZCR*b@qh5B*Y zMVpSy!r0|cp^&e@8bsg&64#*g$f53)Hgc?9pHp5wgP(W)G*OY0581mAi;jYj= zIWGO95SR%4iUN)rU0a+Bc-(x|ZfArH3V4vebe2Fbux5T(GI4VY`zE&07QxnpI;~JN z3wFVs*Bi%fiSt9~`ay06DN@Qjc3vS_HjDNqgk~&U8I8LLpHpJWcgpNMDxB%@MD}i7 zXGfz&Rh~BwRzr=FjAFn?IH8r0C$IYS7VXb?`iHr5L`kVeGLd)UWyT zdaiLcRZ)#0iMK&<9j;;?s3e{$S^A5t9!>H|EvS*JtSbHDX|t6!g2-b2Gp&DS{4)t= z-dECPI=apHQD5u9^KoOzQ$z3n78OU+NWnbK+O8Ek|0<>tRW)Npheb4)#S?8Xur*>| z-li`shqI+|jpTim1%KWcB;%W|Yu^eR@xH~;;{&5qB$@bWFKMF1ryUUa2sakW@8gtQ zYVV!0BzavUdHuU@%w>3THb(i9>lt8u81u+SgOE0mL%^O$8gbPCJ4QBUo3AbMLXyc) z=~9U(PrvyG7{x|i(9Mf;s92-*G2~Qe_x*`%Oo5Z_1v$>F>!3Jm%PE!LX2}a-umOt=g`> zc3V@RJgMZ7`^ep>;9qnz&O-{GO_h-MZ!LFxnjzS@0OaP@ zPMaFpJN_-wrXIMwe~QMaF~;vN>m>_C+;2j7D30h(3t4($VfR)bDLhgFVGCWNMkCd& zAgr}T1DQzMllEP;yv=dy1!m~wlwu}aYbB$L8{?|s`4{F=v?>e!FXHsa0%|gx)jMumY z2F>C);Byd9RPKwyB-+#rD^l7^CJ!58G)HD33rM@$;TBxWhS!gN3Ku@V!M% zjNkeH7>jDy)`xmcxJ#89SCU7_MFDS8{yusbVwQKK?o0!MWZ&Y4uK7ck#T($kfdL^5 zsdM>?c@Y6px`dsG*;#o73<1{;Uvk~RpNc^(E#?EJbO6uUB*b!Jrd+aV|YOLA&^N6FZ*C^KZPCkK+ zoA5^3_y%0Pqp913W0gfo;l^xEe0K62iF6CJAXRR?kxq1%aI-Z5>gt24PdoE*S<*iG z8*SV-$>&@7bJbX{vhWvCSm0Qhnf5_EruH*=2nIL&_PU#+`8>aW$7C`h>s{rS$MDqU z){@TxMv0YaEA4Rs2+1#P*D|bWS0b2@EVI+k`*B9k#D>aVl)#XrGD(}G=Yu(N4AFBE z*B9qXZE@0DfHZ}>DUDACQsn&uygS$ z#u8+337ChM6!?#&U8`jxyiIbm=OHxKuPIF~lg?A3ggb@yBB8u>fB^rqB|b{l?Y|np zoab*SCzVQ$>15(P1>UlGrgSJ{?8FW%D~rBGIa^?vN3+uO==J!h+z5K+K<`vrR*Ju} zF~5XNK10w+WU%5g0}Nc>1a^%LcB5)S8_G664)O3eF_R;r|HR~rFGu-5Sv8ux3DH2- zq0UD#wnvPR`3!foDgjf>7Ab%7R_wuHqBu5RRO@D5CP(N;Y#o}3XyrA}_@u4IE;T;b zsZpraNpt|BiP)8Dpig?Ar@}c>BSoILaamTG$wA{_Zc^?WT{nXkT3NbFCF>Jn>DF@ndwl(07uEH~qVX7Opcn zfvqhx@G^hi4f!ik(DY_c#)egY(~vei`+eQozJc*5c2V`A@I6BEMoiC6-)C;(V5=$q z&iZJsq*$#=%gJ0A3^7aK@#66#bg~pXn7$1-0^Q{-+8><}uM5aQO1hzD=?v2Nt!j?J z!%yDG%SiaBN1w+1Wn3~WvSQi7x8RjCRu`{-HY-CkoL8@0Ma{R$#t22TsZ~xJ2YFV) zezcpBIuE-PvEi90gfVgj=9#d*8y%Cnh0G^5NE9Nn!S|CR+I2)=s`wZuAjdc+^M!op zDTo^^@aLc-F(18x-KGa3dg@ZIT(MKol8(6sCIDiB%J|NNi@CJusl8W9snWQB*Si-7;30&C4e_!lT*30o6RT zN(6Ox9Ln3nZ+XxO(XQ5-XPFB(er4Uw;R59>;3#GdYP&tukh(ihrg!_K5Cl_3kYxAZE&N~(busQ`dECj(vNhqSjhFzyF<*s9z_nDsFW|BqTH zVYDpE!;qY`lxCk+l?@*N{O=^HJAuPilV{$c*Cd&<2xn8=7;Up=ATS)DxJ{Du68<-n z>Rf}|PAUhi`h+3CU^Dt!tA~2T!%Fv>8;4E4lgXdom_m?}GAsfFT?5}>%J-MvB!`5) zT)}^M(t7ntfiJ~e{?C4@wnlocb}}!BYivw zxIoqzSAH)3U*3WSgHpINZ0mLFP+bRxseFsTbc_humOVu;4$ztGk*A?*SMmIR-Bz-8 zC~p);nxFKQ#wL!-)XAgR;&qhB+@UJ0zG_f=3GpcpA@jRS9$5YtV&z}+nxJCwT8hpj z%`C1#eW)TxhBuiZGXtegT_jV=H`_=(V7u1^WWdni9yF$CKY-s4u^Kj-+RjDjw%oZ8 z(F(>--B0d-Rm;i0Z%P$V(N3c}se~)ly0uyB>!bnJ(~olw zLHN65V6emVl^P5YpIU)yG3KWk(atK+{|WwoAlRF`!o%U;i%4sGvqL}W0_8#2EZp=2 zxHcWO)}^R9MX5V`QJuIt z#LHq@7v}N}{D8!eg8~B>E(8CdazL8LdANx-JnvJ&fJ}Rh!lhXuvFL@!R!z>o!WI|a znrF6{dJ;*TOG*vUrkN7>)cGtk* zRO2|JXKZdxxMH6-Q@jx7(c$a>4v=m%GR239tw@aLqBJ$AWBn6?A&$1}_4;u6Njf9= zF?Gato=XgOzf_duQz=;$DV^Nc!?iMJ-ctH>KLkNEVu*-LR(`S@3!5td3n!t#9T8{? z#6a9&T&O!e_`ZKcp()&_ zrV#H{I-z?gZlPd{>}(#x456k~c#;;{f_~fNkj}ZErMd^=dqXEH)*RzbI4OPtcD&ikqjTINM2+L^0FGq2!HZ z5$Ryxq(bx$>?$(YM|u$=3QH$Kc#gx&eqcp_fbaE>MoG55L9q)VPh=@6)Z5%=EEzwE z6=|=|x!*6~%P-e9fC5l{rmGaI!7$Vggcw}9^<^F1&;7n8X+G|Qtki^!R5TeG&#?UY zNH>XK;#x4{WWrbdDT5o%G-kg z;~ap68^n#Ykwm)joDHBmdw*)}6`L^V7km;MhvrEiWi+_wSHb$?Ic7@PDZHPZ_+D7I z2uWZ8Q-Kclsh(?DqK{M1(zgwXi8UXcS zuouVpvmlgvAZMqYHl3Ku(%)>_N!4L8;Rd1bQ-zJjj5_e521FU?f5>4+oYd31P5ek@!%a?zx9P#z&c42Os{{I zcD5Y{taO{elh)}yD$H#L^Bb&KqFGCd7Ll9(dljnH%JTFKJrW~McQl87 z$KW{m>kV!X*OL4GGA;4im0erVWbrdEGZb1R#uxP>MF-D!A)v=Uu}mB`Qj_WJ=oAq> zULioS&=PZI11+Qm*qIy(m!B9$rARI4rUe z*Nu>^4D^<=vduo+5kC4w8&4DeR#S}28OS*Q4GUEyaWm1W1Q*%ZzCw)?rcMz;*79GPS5^~fBN z5>&G&t2wzRx`jm#^YkK;*^O|$B(7+GGkgTET=fcu72p@RCw8xXvFfA?bRD*rRRWrI zID#~pd=WulS%+!KgPy9y=1d|H3J^RszIIIOx6lfa(SU~7z>d=-%wLFzx&TUtWETBh z7<+s?{SwcoJS%?Fv{uCF5Qn+pGn8~KRU*hf zMi*im|H!#cTwFdm5vCKxCvrdDVW9<9XXSRIa{(p4b$f%;8{_~U%0tYanPrDK?&{B( zbQtTKpIIlCMsg+orb<9`H4TYT$hTh=9yet4SDt%5z*2;&E-`FCgXd62#0yHj;UIp; zBFrzx#Gt0sXw2FGD*7L};~NuRV0{?3!6w`wNtXZ#lYe`&#=xn{Gm&1ZRzfn>L}vvQ zEox=6fv7hP#XYcZujJID6r6je}~JCYC`3Bf-HQ7in9~K73u0#Ht{|z2Yt^ zg0X!NEH(mj4(CD}nemj&7mw%+D!D{hb<&O5FYzAQxaoP)R6m10nyRLj`sOC^ek2#W zb`WvY?NE3G4^+7P;x}&m5WSXL6)QrRV}=}PmE*z_=A0{%$pSdWJgmqn=#uFc;8o3A z%kYn&zgX<{l#=;JZE;0whiHj>5@ei~?-+x?usSfL@nTr{O(Fx|fx=LPq=%IejU$vP z%zGKV`!rcl;kHhZF!iVzc_ME@;-88C{~WywbY#_eF8J?#b{*|1mBg-6Nt8s>-c>ph zrAFN@iKg9PZnCRX5+xyUwP>)w*eNxFG#EPqKZZCfcXl0>M5z(DBm@>1`<7&Z1tz`% zKSG@3-XmFHK`;@R_~OJ_(_oSzb91vuCNq*6Y+h|Nfuf{{rNwYi8j9 zX`mPZ`_K`xkK=OioR?1AU&cQV6YEz#Hz6&x!_%LqoioIAmH2TcuE0}UdGL@CjL~xC zX+FjcGQb>V3rIyHs^um{8GeUF^?jB=u;OM8aU?}jhwcS|u17qdqkIL!Eee(aDG~vh zX&GR^NfeC9)d$4bV5gqqy%a*`12u4356bmxTSbNF^x$6-Od8aqq8eZ5cVBPK)PaqJ8X?~3m zH9lgr5D$B4Zq9v_5ePuJ^&Y-U7ioYE7L|6tj)* ze1+bII+8luysMMr(~qYGRIMF@okk}c4Rn3MNxuH5xMI1CIw)EF)TR3 zFGOb$bI8IgpDuLDSY#t;X6ST$COR90Zpx10l7>P`mJ*@ZDAOgF9rsm9-V)z3x|H_NaS^Wo>M(M;Vh4_P$^F=EfbfMHwR}nAY6fg~%>5TGhq9L(1Md&-s zUGl0-h+3h?A3oNm>J)5n$40C9liu?!Ert??ZfAL;y@6C=QiqSNS^nTUU6iqI@`hk1 zL5YnBEgdED`D6RMsw?c3u{t46rgy`ZXiKhreg7dMkBuG~fj5^h-m)*lt0e=@5CHdW zu5=fNE<=hHY4?!1r-OnT7W*!puoV zAa1`0bt(_L1yXs5k5POSUdxC~msPL?&9IU9U(V%kOSsAQaM^mtqjyM{5a;m?%Ox4W>zwDD3^Owi2LA@5Q6)d%@0Of71uM(VE zNV5G*p!5V-^HIz$d6;HfTLTf`2PU~~={tQK3hF!1nX10;khX8M%UfHWnZm;Amq)Ti z5LVqkQA(^>V5w

UgVVEUInBLw~D*YD*??gN|91qPM-`usWQf8{^=5x8I4vC1~6 zHzTRtq&bDWTOQ%y<{3s?RgIV&{j5kbFk7_YY<}`sK8!j*%5TQ^cZ?!+u0kFf^%UoL05WCX-L!0ispl55bPAXpiXlD58W9qNNW zFl{SrhQ2(rVDJLOjP(WGpbejAdA2F(>XxKEXF>Vodh!n~VV-$gWrFNdZ}6yXwEOV* zIVM~%Zk)JxssYa^7Pq-`lT~ioYweF`Y%ZPSb;K|>Cb~8}joKg`tqS6GZhwlW!sLqw z{;5V}4|%qdz52Mack|Q*hcM!RID|tC4|lv=DqENVr9+L9MVs&Olm-XO*X@e2%aO=n zX|r2ck%5xIbld_aUW0D9@*P)_-9SBjy@}5qnM9+x?o~Y@H*p!Lb0>8)L`Mx^oU8z4b8;Qm(hNgfAiJsnnlKJEj0IF0b zXoNPLZ4Q7CKOHU;qF67iQ_{qO+cK=M<;XlE1{&ycM|kFJ9Yr(IcLGFflRRf?+Iz%K zW%*GTtH{a=a+^vOJCKPuM(RZ3(sWgAOGAb5`8jy-(Q@lB@EsPt1f{5ib4KAuMn4z1 zc_c@)S)rgn#eXc!Yked21kM%8yxahSjAq{bRI!&)fudaKgj4R-kH~x?HRI1VVb+Fys>S=HH8zKIao|5- zfA3lq1eRx-wJrhk=m-BBYzgA-d>74GtU5TakL9pD&thKAeEAj{R=T0kNn2{HhQ?}OHbs)ku#XhwK{^sB;;ff zXN)FlFB!xTW@*b#0HfN+n7J*V$m$GB0bF%B5619yx}nnl2bNjI>|anSB)Mj3%}+=k zwMid?XyLz@-+N&6P^KH~DZT0ovZ65@TClR(GxuF#RLa?KUno}i<#uGc0CQC|Wg5sU zD8SrjoW49AG3dQ+D{{CF{2u;JBVMUr-(YlRMWs`uY<08Wg~^($rtxAaC~ei%S>F#= zp<3wVaTzEqkMpNIT_e-_K#-#P!^wrHL4{3DL|X6odbdISXwBDE}c{ zPQh=k{tomI$p`u_mH~|0>$iJGIhenTIW@ss%pR)qu1}IOxVq}St>SUKaGVd*3EI;beUmmR0xfCn~s71unc>r*W_c>gGJ% z@<0EANB2#R{tR>F&1l2c=?sxR!LJYSnPkM~?N;eJ>}S4>u~X#I0@3*p6ZI_IN!ev; zsUOikYS3CF=_3`R`hHQxHVfk4+HSOuuhd-1JR1_({^H9C4W*;SsbjqNy^Gv?V*W|6 zSWuQxxvrbt2#MoB&sY|h#PBS$J>X=mJ+${qzm7{lsK`o z`DN!HL=nmcZBxT|YwYbZErqJl!G^GDi|%BHTk|2Qc)Z3%2QWvJPom!=0 z;n7V;r)&Y%h6Wp?56(FhQGn>(REh|7lkAcLZId;srxU?0#u79KNl+=4&4lqFJ%1ir zzC``TaIu0pa<+$re6FQZ1V&m0`&DwRkH9wS38%wW)iUboG7!$1d^bFg@G$Z|#&NA) z1jW|(C9)XGx!OysQUiJ8unh^lXMX}Xqdz5}-~hkXAzA}Ho*#*h*F*k|7$!oMp$6}Y zjsTCG!Y~P_t}N1x%y4xiD`@e7$umM*84e7XMN$!ca-p2ctP3-C6W-s=!thOnqZhfl zW}b>9G-t75N?u8M9)BowH;dIdpLadc3&_il7%7LF{E@7POdO?0DyBol8m5#1&3O|Y zH+jH)0m8B=e~X@dduu?`c2J#9PrVCxV(fXmBuq$TLZP*7igIO4*wbrA!g&1(~u~SN6W|%DX*bcgR1hh18Et|o8o(QGGLKkzTgDydn zCFLE>ts)6F+jwRoEa^1BM-6|fiSFFzQUNO4!q*zCV{3*2l4c!QU0<3P@a# zS0ay-2xiXN9343v2L{UIc>$Hwg_I)lBI*W zU$a`e^6L@>t4)1~?zad1C+&9=lD&l5-R8|lB$ia8?ri%2Ztl{n9M~v)&6`8)TtyQ? ze=>M}`EAM@x;_)YY0_eA6J_l3(v`VR2jCyCy9w$8Bzsg!RvTlXC5W zL`|NYSU@^wr9>*#(1USJFrwa8S2PO5N1HqEu*BAeM`1VMS?4r&D% zYhOxkuy=S29`-}1&`4FXUxyqMJupif(Wivqz%rQ`tX%g84+%prvdqdNCdtuk{&v$W z`lhZcP9lL4QWj;cX*`(Z-3OwEGV+V3IKDYc;jw}|n+QnEvg{Eu;nwe51UOIhA3ohk z(pvnUY`TiC>d^SMTCe34pGqlNvFg9AER>Bfm$$z`o-$tc#}_7H;i&3mc#&-(C*|YX z`mydkIGYM-gnM0Z_h{BU`I4h;&ayu}cJwN$$7b13C{14S*lyl&{N##XyY}Xmi+Pft zjcSjuUge8=S1`0WE`wW@b!xAmaMwVKilKsAT|=fMkW(F&FwWI<(2ACmyoDMfLzLzA zzm_3LR}`T|ByweRQw@aeEFqq|VMwMnojvQnj{?B-xCQ@zuHy<&2f6RVhwHLW(AM~4 z>pqp1F0Q<8=sCvzMl6PFCaD%@{?MOAMDzB^0wzwUswYz+8>U|O$a{DjVzw*iP;jJ^ zZY=vWy~lPFsjC*~t-SqqQoap=J^Nn}o#8;(0O6fp6CM*$C?PTfuLZcCgTw46;JmOD zLgCO^vH3hBc>fWq=i6R;^a!N`le}^5Vj>Y|S@e9E43+D@N?QOPqQ7$!kCCiaU!AAC z)zomvF4BB0F{obz$BCU}XvCeW$Maf;wF5P;7C1o&yfK@gIs%VyMCv4XFcSuw=xzDS zK+Z`|-;s$?jw}*A{cy~Ao_vF0%R1Z51id>NiXMWU+tce14UVL|RD}${-KWaVlgTk;){8 z1(ZdVeq*!pEXeW9=PRYz)s!6jROR$?L!(E`MNgm@OuwRZT4O&je9$nHXVRAy@|7Oc zQX#Dt$Vyd48s zO*%J3eV~5Ym!^|X+}i`P&R04I0IW#f9WfoE8nw$&X?fMs@J^K~^dWIn2{Mg1JO!~S z7Z2oNk3c`$=mwA3I)dLvx!{e^S|#u=j~EpxY=X-zPi55=Ql$%M+835WRb6i>Zs6vH z9=58cMHLvvlW|-Q7I|^MGO4m5)61!D}M1LD5y9WY^{aeIslfOB7JFKFZ{* zbv&Rv*T4EQssD)t+gKV3%p^((a)&Eee^v^8_<5~Y+QM=ckO*7~2lD3nx z0;zc!fli?+vjCZ^`61FacHJlVpvE`BskQT&u#T%nfoD;k#mDpIdN~^Epj)+-4pGRY zYx36Z>gl~LYP3_r@|R;slqHAyW6}?Z(~Nc-QImYyNIua)eq@OXa8x6|gye)uq|ejZ zNf^$lezZm(Vl;m&cQiD9Pz`ljk|WF>;n#$Gs2_;5X!a7;J1!hCW#1DiU2rWVxV6@L zR@LyAsLb%iMP3D*ps|VlCCY(mNSyvIg1XcQ={sc(3INWa(fF4oqqmfV)v7z|R5T3N zCGimLz~#MrPh-maEVU1k1g9V0W(sdf;V-YpjdF#`8g6QU0{S1p7+bO{kHhIsQ0B=L zTc9nQcY4kJ?AV)h=7r@8+j|9}m$m{YdezCq4H9n+o;Zc1NQjqZvNe^qMwrXq$G4@` zFY*o-p93dyggr|+{VhLC8Q7<{e$5#;s zyR@FA55)2JCHb0&EB$*vi0}~!PCOr{Orc9R(f9!8+2aEXBQ~RdFTR@FSG0nabscy2^D*} zxVC?+0RE%OdrH1I{*?dV8tAySOFfd0(Sq>a+RbV7MO(UA6Bv;q@th;VbBlv5jU}I~ z2_IpBfedXd8Cqjk+1=Gp9M`gWQ+}9s8P68exQRKJ+~DVfFOk>5NgO??GO&G2KWf=v7G}45JSnm^=IDWhPcCB^?ZgE(?`S^~ z3g6dMxI}LXJXn)?8p%?bC=K!vk*HuPNUaK!AnC#j;@BP?DVAR^^4KUG5P0KY5ms0O zmQNmBfC^kD(o;#AFt3@&vBpYJX+xKSahXLgQ5KF!j_gwx;2vm2^gY~h3bj}2y+IAh zG|@fi9UVqZb*u(SVBrb;TG2)x8O6&X&U~V^8*ObReNHIhD?)nYJMuxd5nJtyA{1`gjgjj$LjMT41?3iG@Fx+Qg6wmmLD@`j* z!nJ@wT~?-^ZSspr-JUgII-NgzWGwrHgT1zkuQinNpbL*w}cOZCn~?Z*+D!G&Pf83~OMS&(ni?)y~9sHw{7ygVZ2VTMfbO>!!|T9Drz zqD_2|^AYxOlHBfv$r;Jfzp7QyV1W8MIHLt<<)OH2c*3fy7mfgtb9`hea>%rU$_glazM>Z~*E-`CcVu zTe^GghTILphP-|0>q^1Q8{yTk{f!zq-Y|8#EIvT_bDSKR6S)|yztzNAB*33(gE>eF zdHKPThj97;oj2cNWGyVrk1-}5J_+UEOJLbR?8K{}mc~2#=rF5Mp?e+oJzfpq3UbJU za~Et-IZp#3KP=<$E{o00P%68ZD}r9cf-#~L(LS=H@LrPul+LuW2r4^D@oo2qS$QspR(Hh9`?O zo{PjerG7eGzyN*jYcHM^DjlkcHYg*!@}3pkP`a#zihP05nqvyI`1WBoAPrH=R|SK| z>Jjv$nWXQ-yY?)4@`G#3ix{h!V9S3%=Ud?p9shy{H;(K{UyromUOsQK>5MHjeubhh z3KvaUzyN@(+b`}yZ9xx*S@;Gi0KlP#o)^FMAfXPm%BVWs44S~_kB92D42g|bx;h9s zc2o0tag54Kc|H|DLK5YCMpjx*#_2V2AiQ`#`rHK5bi9MTST~0>n+iQAN6Xh94vNqb zZXbSdv={KX!F;ClY%&PZynvcxYECj%c>gXzS$LtUBW1>H_Zm2_(q_E6xbIBxsZI{IUyMvu;-{=P&o9x@)?&7nNeaBV zc`(P<$SiDO4JCd~cMhs;Ls5G#iG1_-JATOJY2g+hsOjw)C%ZP*>B(q2H(q-s%vc#D z*d;HPQcPG-N4B@}kYQBZ`|L$+nsJl7^#uJs9@Lf}?m@K(wSu4C*Jjcj#D$PNm@mgn z!Vb$-L#KWPPCklBVM$d{5kq-fn5U4tWUir_8?^^9wb36S)PKMYt<~BVF3V|GQ!Uw} zLIC8RA&<0`h#u6Vc}($2=(fU=jGJkgA25A<@Ap%QijkKsFgIMlj97mTz_6(Kf70n1 z(<}!Dy|jZ_Ja6KqoEZI;98w17o;n9u6Ylqe5mmFK`An}Grk!GoGsCv1guryh5{uejx}E!@Ix2Sz z1lJ1mY;`G_H*43ns7ageZdHY-+*Rqp3|JLUQ z4OVP%(zGz^Qf+;KgnU5>^A;{93EayxRnEAf(+j;{D{p2vfltf>^}A|Bg4p&v&5}^L zSEvHTNw04JEuz?=+Kdhoy-by$Ng<3~@%pM{nK~JU+j1t$IB&0)F9c4a%hIAU*d7Lne3_M^80`u=EBMM1#a2OHB(^>SwCIiPo0u@l@B~JpAsUUeYWo6QX>wx~C{Yq(qv*G=RG>baH9<=&TG_6vr+ z8*#|V!{2xdO%oxKaU_F?DtZ&1%U~2QnnYY5u4d%W9?>vdo+>qnznD8%FT$||kf9gI zVj{r5WO9mqkaB^x%MY}ZxpIG>$V#`+V09Xtm6wdB$smY+JCpF1Ve?Tdp%SC0zoJo1 z&_|>3UYUqgX)BzJac<4^$BJ)r{Dpt7u)FNU=1Wn;8&!>>PBjpzs4V^NsH|wd_YVf@ zb`cTO-NyPyEzi%57sfSS!Rd-EY|`;>7=Ywc|`*o~6T%oF%*e+=6y_~zippgTrE_RYwjhJWvgnC?hO~32dObkL#l6!kB z!+A`iQ_q%bdAeBO&Byid)8K02RC|GY3Gyfwnn%`zO2?LXIbZYWx>_rc2k=tfQ(awF zUUOX$WoQrb@b_|MH&csXO&4b?uyleD>&ddSVzo7NES}pW3$vAKs7#T#3vZX@C}ERx zL-K8dAD}&7W6)ts?1cZ9#7s@negOm;A1d(LhE?sdlI?m*H!iE*%sjX?ypSzs;BmJR z;J@)YAMM}+7~xNSPvLBuh~zyKb6w!odM;j#BdQrCQ7~5K z^CnN>G#zt5_52nhF$qUP-JZx=LTrebEtzTU)cD1yF;8Hd0hEOxTi6n&!7{Y-M4d$2 zmT6eUF)!d^nu*1H?P~g3MYx$<3uYjRmfV#kfjNIOrpmepgBZ2Ip%OPmz3`Tlj#2^m z{?3H=>Ox!q(9HgGO>1R79qp|O=;!q}@fPKFa}f-x)|pqnomaOhRl4pk5nYQoJteeg zT%H=6T!31~X1z5&4b|1UFkr@ ztL)JoL~&DblWUbx1CRY#Xa|jq-HQM0X*O(p)~->;-lteOVK@a`E|HT&(OuLcm-QtPBu<(05w_`dZ+ z1o0$eBkwv#Qf#OWKOFSde*DuSy>Ug1md9p6KB_Er%hI3T69yDlT)zJdXmeyCI`{zq z3b4G^1^H*?G;NplzClLXbCg=B*z2 zGUeDUe;poe;90%yqwu=m;k^E$J5(}U#nc`%1TM;6NO6;~-L&-TGFYWjg1S^O|Ku?y z$r5E$AJ3tnn|)N^NmJE%e=Xbm{$|LRu&ce82#(XhFf_jz>1<;~hje|LRTb`!A*Tk= zfPDL_4uHz2@c^YG_)VUGQ{t5n&z(21vF4koGVm6fr+@o)M1&YJE$(syNY#kA3{KPh z%JbrAj`FLWUMA6f;6jesb8kFL-l)dFHOFyS~(j8&g z!@CUiHL5%Kv$?r}3-_;cl81g8ZCRVr3t0_Ri$099^?l?SRxMK)B}4 z(Qv5$R%ZpV0}+6gGj6;IUF2M5iW#L(GNcX9`Hx1B87b9wh6XZCV6~pSCn}wVl z&XAvuBCMn@mmu;Lsupc*D6g|Quvp7u(t|rDyIv42R%}^!OypD{Ixx?m<^GMrquEFq zhz^?*Vw>4^N0CM1}gM$rhW z7LA6i1k_d%tj-XeN&?1*K zfC9v?qkfyP^t((;18-@L_AH~C5j%5?TFh9p&qbl83k0}5AFj#2fD9<8uEe3`=I|GB z{U<+2tBovB^I)U?!l)WPsFzmh7k6`)){~W?JHyoS;fAVF)o569afmx$$=c_L1=Mfp z{Q@FRTTNtL4U2toy{2t8C(M^9-y-SnVk9^#={XS@FP4M-Px1P(geIi=e= z=-bOg+e_KlbmV>B%A+5zD;LUUV_gUiT4DGCXDr9*PHwv*np>r#sd_H~_t zxPj^ujmJRN9d4&$b;?2l_$75>B*!~;mr^Z|wQI%z*+upFACf}3%;{}h80b~*4a+nN zSSy#s0?t`ROd*PZ|FPx9CZXL-@EhmMinm9dr)Z1aetJVad4xvSsWX!xASNm9aK!u> zOoGlXwcuEYWHz*;nfCsvIGih{4s4XcOg1@kh;gn^{UWLiktHC$mFI;iK+9WJwj`)IOcd zK=K@Z<%NW>y{Hu$DXO75%Ss{42!*mO%rv0iK5N>@sqlEN58G!GiQdeU ze4{akX{37`R>jDZk7JD&`(4_OTHt3S&F!WkDtTG~{z~@W(GPaDBM->^SZ9bJ*_1XF z*nmu;6xlmY=^Xa)Y{ge5 z(`v}+PX#W}7niPx&<*MuHyEWN4~*`Ps2dzhS8a>aUxXq2|6)yYFWW*Pm#AeOnxAEv z96ddKQ>#ZjI9lWBE>TF>+?!EVWhucf8QL*{FKAW3xKh6-ZW)J<)90}BSJOrhxgzR3 zMsJ7sqnFHWXJUZt8w}bt102iYPlc^C)z-|?fTb?G79*?jUSXOV>n?9oV{M3WSp1GR z)LE3!2cHF~5G#oHCRMQ4Gz2l7!a}DhQ^YZHB@qvRrSK?O>>P&!48K=qi~lB^Z>K1T zu!-txy4j6(>{9+pjJC|YmoB&m?W%Ti`GG$kl2_IGzSwmF+NG6-e z7}Q&7p|c0NObU$aPe&Bo0sl0x5}B}?Z@0l40dvunaOR!rr!b?UjwVss{7Nl#9(>&3 zb3##z@tCzN9`^$qLk5m|Ap0ya7th4cdNkIc2{) zI@?lom=NWuZ&q@;Z}_cYr=)Bfm3B7tS8OuVNF46S6ESbfzX{%HUp_?BalT}g#Nju- z%+8VR-sf$JiYBgZDnXcJq>yFZY%z#wC{Llymr!imO5RP&C!kalEcbuW{2ap8_`=r`t1{y>Z~IsS28?(2c$_-h5WMZKje8pg}Q(qjSi11&hCeP-vFX3KPH z&f0`W3I8}0+JnGVfG$=;4VgoXJCXKw+`Iu>lioE9;kWhSZgVJfsn@OoXS3fvk~k0+ zBV~*Vr^*5%dY(H4RTyuCf6^ROq;{*+iZkQ{MjILv-#rio3`$V*b%;SSmF=l18v8O{ zoAcU{Gv*+Vc2an8R5;QXCKR*(Arq&n2zOC}e693IEcQYl@~3GecfMG31YOpe;?ic^ z!FRYI=2a2FYu4{bRGT4?;)QpMN29b@HNPwpkvp$pJFFnu$`me%&ZH>DE*D|}0{Qd% zx*b!C(_;;F+tL_Oz05zyBbMxKp#ObZ)Z3Q{nl2Ly@XNBgeyu>wOJq(^PzY+jN$1=P zUGhnu$4?c`F+?ljXtU*JKa&W>VQAs69c!>?u1FP~r2PgS3bR8SW8WA$)vWJU`U9N< zS;|yaIA;+ac7fSKwWPap*Fo{q)tLaV8?SpWKq=XC03%<`uA}W|v1~{utI_$2?B;x0 zW163YgA4)0POKSnFOV^NwWv71uWY%lLaELo<*C5yMOTBBtzJBb&olI`)EU-BKdY&X zAKql`>y{PoB+*-~o~^f%>OWooNO;ClVfs}SatNaTjCVV;MBg|vphP0V;!cVjRtx=8 zn~R=c6mdS>e7}B?lTQ-N1^y?Sp3|T38g@Bp5&jM8T>TU)q-xeji33%z#uiYEpM#DQ z@>}M?l%hcOG3Qe#mZjPrhW?qVkozZZ3XxNdCyzLSS2D!*ZsE%fDWU4>pkBEkYVIc- zMPhxg($gKUW~;LAEmN>YH*IG5AbDfwz0sIUb?A0;AA1Ac{aw^Z85@Y&c8MyTlY|Jr z&4|O<=J}~E_tSM9&1=0RTvJ;SZLtdBPoIzKbUL*sB}CZ$6Kq68)kLNktdVRTw>f9Ze6^5tW&KGFZMM*wt*7% zyiW`XhKDd;h3p1HRZnv#5M3x%9kjY%l7jlP;3C-%)D3fxv+xXA_#BV#;a?JgmJ6_! zdXD9C->VHief7cUd)d8SO5c3OK#t_ZW>BM3Ugd9I>jPyh1yF7BbaChwG{?Yob$0ab zA-+urv4ZfZqz0vR)bypH9`G^(8>I;-#&qcaq4wxv*2Qw4Tay(PSIFX(aMR%`g5dXH z3DJ*pF@14mK&u&88xneCZB^(kh>77ZGCA~Kp6sg`qmfk>OIc~Jy?KDDRm*21)l&nM z@=XS2y(^13b#Tq|3348yxAp)i1}z1v8=Bg0*xqR3qhhR*yZeVHOGDy`CMt`tR6r1G zO0JHP20`w&rP){miQ)SIW1Kbq|EgcW%K--1()J18VMwuVQaJ0v>Yf?}bU0pZkWd`Q|)lqQEq3xh$9f-XA+Br1>%xCIf zkGn^>p**5qe!6KvpGU`GmSi@b1_o2kKkMHQkSNRMUxZ4pGfR;{PD2P&@)cC7C|b60 zS;3RT?)t@}RxL>)o zLW_;RGB`avWxR&1hEOC<8?$u7Srma; zcVM7I>-Mjb;g`5C@Mo# znL7S&3bs1BuRi*(q&-rvA30f$c;Kw(ddYGG4((;x@Mqx?;x!x8BJVmiRY73Wbp|0R_Rl?~254|B0>;LnEh>h`8xmcK7z*Qg3jTQO8- zG#BnlcLgd@h!-%jz-5oyF*A(6i8NN`ZyJx~sG)xaBeY=L>GCOx_V?2^4KQfdHpSDPTMLjZx98XkB@*7I3R2!V}x_|E9 zXSPu!-D)cXLZ)#v=e|l5bGOawx?yeY;a($Aeg}@K8&p}4$glc7RoNTiGd~w$aC3UT zTZxa5x{3<94u@m;qo0Iezv;}zd_yq#LHfc_mD^&n?efN#$l8mU%I{QBthOj_n?jhG zQg5#wx2SlFKr8M$2g&z{=in{g)u0trr^6E1sX|%pxoCxoSOY{R-*C++Jza+(X9gwJ zC|jI`UrVRnNmu5;8dMq=)mkafUo8&aqnj0?^*1*%*S(@|RJDY1%^#V7^ks(LJ(`J?J!D3<>1vyMh2ilQ;lxXM>J<^%<(nQs3UE8Ol zmonLU=mp8Hzt(0Gde4$=XkG>XCLc@3OI%H_qk{O1rRvs1BZ~Q8hDp+w!4&I{0ce9G zO8rwg8n=7&aBG4Y=8A8jv35meGU5Mx7ocTB@fs^t z{53Z63a;H(RuMNc{|O_!M-a=k_wz)oUszg?R=|wbQ3u59mlo@BZg=O4iP6OhoiSQ2 zRjFJG(^Pv$?YMqFvf2aBopa#!odWbBb`tN_BuMV**RG^jsm^ke*PxJKmN_aX@|R7= z6k_G%NXgiz_x)Iu28g^Z-%mSrO2_EkK-v4@)KF`?et89wj%m*pqd1l^EDVhJdLc#U z!Ds9kHcsc+3An;2I#Ox6P$eDEDj#r*v<*CkNbjIlUUcYDMUd9`is7$>kowUMO_i|c zC1~mtrt)h9e*0V2_XHVrdXVKiiPkg}{*D`;4w{wrl?FM+x_pcp|2=|NOm%M?r1t#jgDSGo|g|4F{P6Yj2$?N^+q9{*v3zZ8~qJgWnSFU2yN3AOs zXbLJYKwf8x7zOFz1#mGCnco2{A*=8RP-Tmod&u^O;SeV}cbR7CdgcDVzrGKzS&3-N zo-%(|HhHH2uAh9!K3fvH%iMpGkuPJ68;P^hH^Vnk1uBSgb})ItqR(&vW(*H*YpYVO z&!X^_Q@C70X&T}J&Dixr9OS|Lm=Rsa8>AL!zlUBaoZ${B6Z?+J-HP7i?Ku4zuNyeb zcJILJ-#nSlujx>Ty6+C#E#;V}>H?h+59laG&4SuP*npzBFh$Z#CtwdV6e9b7J_i5< zro|F#aG@%3McN<+TU#!N!;feUF>U^5%iM;sR5>{jIXAs5D~*WzM@jhDEUKkG4VBJC z&!-!Vw#8e+l+0U7OqpFwBhraTC=UDpxNF)HJ+X7s17$F)%ge3ggc2wH0RwSF1HYF{PGw6TnGaQQ;d5@!&GgCPqQ}g$hR6EH#bP~e4TJe>u+O3X7a{o+BRdt3 z{)~ALKe*KFS;%6wz@9;L$f;7yJZwk~6w^R&hDLxF#B)tJa-s|P!UCl)9L*qrOeK%p zqUi{Bp+NB*x~M|XRL5nWW8@%{0S3m49@I_g4 zSRaMhPn+6QSJ@MdSp7SUG}TUOb}gY5tnND7j>(f)z}8UwVZM^KGw?@-r|$3 zD?a-L=3N8Vhztsg{I>McYZY$=lQeWL!;Zw{5frm>;4wYVmx6kpuf7T$LNFXGdE z6^ky#jV7yJN^=Bn)y)^b8Vf;R^3CtP4OoDnm+~)1=rm@s;VB8)(t5(+gNc7J9xB?? zA5l2F>-N!}eSrib?}A;)#RZ0vFaLM?It9ut@B5-HVYf;nK_nxMRi=L}<}=L|1*44HI1 znIbTLc-+RriNdVvlh31xRui3WVN*sMH`q5MY|$p?XQ+%T-vK@F9k>(VNb)H1g=X2s zg>);=rnx`6L^t393;W`HHHU+xgtkbtSYnZLdZnBs%t>OoQ6#1+qmw?3mGTQv3;T-h zy(7DRMZyGCrn3Dgndu)nmR~n{`|kqW0KBsPrZ?7~qnG}Zm;xUk6iUvoh(Y5Gyfnyn zq8Vfq2!3&{X+1E`YGsYFT9(cd&puvLwJiH;5#RzVHl9MfA+Kx;SS%K8Fi$c|g*c1T zkZ#ep5YeSaHum`Ei8m$JnDA7{0U`HQWF)rrdL&wHXuZjj~i7Ve$W1uE-jkDU#1kSUaFHN-xaND$}+fh&DC*AzSPbYm1^TZ2rGaIKJx$^tjF$hiiN z7FGyRpLRh&3lIYMy()S=_9T%JWiu+>3K4dq6P`~Un|Yx_<<#SaIfF05kllMKBFjz! zRfAkQu?|X{!Pvsv<)aqOQHr4ko5xw7fVUir_Og5mpHYX3c5F?XI;)F_sp#zA;(UW;^oXo&rEb3cu%GkWj^ zfn+{dhl3hS6`qQgXw3qi1{RSJ6wiF%;+o0+#ki_K#~$}6zFA&OhW$y%gEig43?o*e`vR^*&y}4I z1z--$#l&L_l_96p-%Gt`I;ihf%GT-Iv%BT7mt%8ocTK<|hy=q`-CtEF10L;oEv`#j z-r_EC!B^npTe7TdaQ_;1j~0T0NS%wN#;IOt(9;oE`|#rI-+|0LRK9xz#`698S{c*t z2%0qdBUs6BJLSF)xDWi<%o&EsQQoYQ7mS*Cq8bu&0EgNlm*rZ~*u)lH3}PzP{lDG{ z#nxRhQcBH~p+L^!cnI9`avxnWGY^S^#`td<^CCpN+@JAzWVA+P+NVPk=v~rztcfFu z-e3NI*#bS0qw2q$*j7IFpbZyPQT^|;;_6U+DJ6{(ttW-XRhJ@uY(Pd_v89I}K0Yr{bo;#+0ih1FNzvt|; zXWDiIB^n~%%R8}%wj4=_zY$!~TK?ove?{|MZr(*f0^d4<0y0Yr1x?du%d}Z0=`I}` zfrYU9jS9np>>2S#TWRCfa#uJ=G~{EA-Th!yy5hz;7+>i&?*~3g^rSj=$TC4R4=la| zRetG}N!SaTW|XH5O;d^9=t>v}z!DP%QqQOz5RU`!K!5W#KCCsPzg6PA<~Y*@dJua| z1UmVH+KZ0cUDfHtFa+`d#M3<^pEihJ8U`iMCDPoJ+-6Q=-8%77myQJtWwI^WSmMt` zYTLN>4HThk{3}0sYLp^(NqWx;xqj)jJ9xIY z^2JMqy>p)Qc&Z01@WbeAIs>)imL5){)P>9pZe4a;us07=v<1w*W2=hkSUtpboi1T- zGzTyg%3Vm1$}DxzBtv&<7OGYJHvA*$m68a>Ll_h~!DuEU=b!rDs*@(21C`G zj=Uvbj(JTaj7tfNMSMI zT|wbj1#oe(7pKNly^ zA4t4?hy)%tT^gl)yCw97_pXZ?E13HP3&o#6t+;7^ggh}J(9e-WJb5M)s+mzV*Iyi~ zMtIRj@31~Sa_4lBqPC>Ztd)<6ZK!ZCi|_u2e9@v%#Ys#v_E9gjKgv>~ET4Xf0t$yMVHAxOArulR z;9K_X?J%M$T!@8FIjMCULH`yX@ij%JpvxIT9F017%rB~f&lz_n7>jS)8M5DxL7OpK zsNcLpp0M=&9IR>!N)keL-#SSgYD|B*emOzBg~+ov&5g)RTbhb{vzEx1fy*B=+uB@oZoD$X(0VyNjw@G(^seY)DPQp0-wxoX*tOg; z)k^DuH}SPzJyD36NSO_naCDs~bFo&E;T=d@S?E$Wg%eME*VK(7K>n`ui32@b#xPMw zL``d*Pl{Be__jPH<{3M!5=Y@>5vxqAlx|JJIfs}={F7|QH5@1A#v*co85qjAaGdyI z;j_%Ai|qWln4ijhg_}ch4aDlzANCosMJ0V^i|NAf=xmLzszvn=G%1Mzc^GC_BqBVqEFAJOipfnjX9 z)TAPaNXAdHS}fEyo*n1@ekumlY zn6Sjjd#Ae95-lM(EsekeW9QDGAu={TV~2Hc;+NAB0?P#Z3>arg@^)8X;*gxYeK?!E zlRan8+5KsKY|o7T+^$>o)$jYh-}f)d>5Se~L1T>}Lo%|1|L5Lhn6a?>BaW8?VUJgS zoT?&Fl{Nna>dVJ+vm0MVOJ$vvVWVx{i>KKKn-Rk>*}%nIY?Dh$XBT6x>cuV?1{I#w zy>A#$mXkJ_!Ro1i{~2TS*R7u588To|)}+XSC8PFKn1-|>AcayVWF+&J5_Yu`!K(aZ zTs)y*k?86~6#9<+DyKKMjxF}O<`MqH6~Kx(Z{h09kjC~9dZN&Z1Yq(NKZX*60EvPy zwgl-H^^!1Xc+`rsL}QUOF0lr7(X<+Mwh-0b+@&{NPaR(#%4FtgWVQtYfBX|+*a@o{ z{rD0@jI{U-DYw(stju#T9*HqG)PVNj(Tu<|MT-8InsIjK&F$y0t;Jp4j&90BG7-Gd z^S5=BNZFXf-{Fy=ceSUvP>-8quk!%87|*&qPuydc}{w4>2o{f9?fT6e5lo z8^Crj)q7~3BWLYO`c(FAO4Y)2Cow&}Oy=V*!RAsB8Y|-BbauO11Vs{IRGwrS#MEeq zA_E1Kqge?D^#;5>4upE$8oQ$jRUs8|iL_Vfq!*wZDtEkM!~lf$ORLl zZ9+2#jTuGQ;FAya?b&h&HNy4I#EMOu_n+np9U6q$;1$gbt>`mRQNAn*DhLTo9}H(R zCP`DO_!(TY8_4`Mia1?CqC)5CcIL{f9c^7}uO5k>HVXXX^Mu;L0owWWU>NYv*4WNG zdyY;~^`5Wd{H^srf0rmbd#vx&;ucz9Kukoz*0|celWkG$h`s!56J?$L-+n)6KNhSY zyK^$DiBBxqHD|1e(_j27gB>jo-v{6nDQ$k#ohu<>KFS@`)OKW2)mH>6hSK3_)l+~! zjsD`nevFudTR5SaXUoZ3Ji$LSU850PaV`o?4#bjND=JoMC0bItQFA(*!BjoVLUi*h zgXV(O&;V$r6fW`1nLO$yOa&NMa2Nt|Mh;oN8&EwwKZq?ulsA#^u%dUdbOch~Nizfp zlr^`nOJkg%eC9k5ovM{k1TA$8O82@J%XkR=xQi&8ROO5AR)(L9r``xUD30p}zJAkY z0hAPfyuv)GPZd-a<#|r-l(4CT%A=HlpZyHkyYtUi{i>X#acC==y5+x97`Mobn}^H9 zP#aPV$FAU_M?%+{f-wl8L*KMfSETS?8!}d2PF9r$^OCzpGM8o2x6YojOuS_H1+Yx? zVKQ986bBzkckv$?Qh#Fh6c2C9HEJ6Lvklx|SSVPV(BpB zqUGPr(sTt3#)wo})$c2N1!$)^crUC40 z+JmzeL;^rBHz0@?0#0I&xQ!}Ws9@PpaUZ1TbEs5e5H4D$`H7?W0WZkxH6k=axv-{7 zl*$w0_;!ODlT>qdnq(CBu3mfsQFWd2hdN!H=oLC6f0izsO$cKgiH&tw+kVyim0`&2v+6pY*T5Q}7oHZL>l(V+L{;&jd zq;BKeR6sNc=D~v&_T-81R6>);jD1G6@($D^mRr3ARc%y;st&vZGxjXhH;wYH$ZSkH+0;N%Wy%1Q zN)^&w&N#gWEIiDfCL4zxq3G~WILRl-rtM-alh4ZUrk4QvMgHMkWtNPm?MQpCQl?JE z;#|K;Wg(UZD1%?F#$F=h>1I4SO!J4H9Qz2zDo*Mi&d7+jaPLhq`eyJ?I=UAp&DRb# zRU<;*(-f-dwEV4@OhUhk8J~N>K%P39+#)x$8b%K}rpZaY%VJc5J9}5Zsu{8`@3It4 zlemD&q)#!myspVb8nId~+#=(sI6)8$1z)O%Z$T$Q5Dx#53lEK?n8GHPmH1oeGGr1e zy6#h&;gbCA+U~sIcmaxNE$ccO%)7w7L;QTrW8rd$)7Q^ zM+5On#xzW^kwlr=qj3?%&;4m6{yAj$oG!9^;y!spR~3rcbjH?$|62n%JSg?QkDxxV zT(gGXrhr>&Ggv|tPut@@rjU=11D}zdi?=@&@?x=gb_IwOp9$5NX?nKir%H0SUeird z1>VT7RHDRPHj@4;DS{s->)EKu9Gk$kY*B+rVD*6cBGQ!u)+R&2@{%T#-#MDCgjL-d z(FNbd-pVohmL6g@m~r(h$Le~vS`!D*DOokEg-IS(?i8)?B*o`a1Hprot^Mb#Il)d3 zJ5^S=wYqRg@`gw&pOw~>bS<;?RL{p9|wj8|KaYii=ZNCYz-Iw3A7Cw6PAt1Rje@) zL#rx0q#OBvwS}rh`YKY}g=y%_b`a5xB9+OmE#oKj^L5mx^x>?!B48P&qABji3Bg1f=cyS zzWyZ~6lIJMjUS-lpYwfq1s07kuouk6?|ds$S=RlwFLk}ejV^>P9dCz+`UI|1SWkU8 zsXUXh!+QnbyWXGJ>1))4u`~HQGY#95{KN;E2Ik4EZr~7v)Sus?oW%>jy3Naku1$bQ zJjt@={YcTm58dw6xnmzQjJZpFmeMCsvBku&O@8gmIbB;H{AD^&ZrTr53xM{jt52iD zv|on289K0*%=(Y#s*y8cK*t66b0u@PtXBam4^(_c$56Ty{ym8~>Lk2f8Y#mxFGN$s zdf8q;?QLw9YXRiqrOpUMzui3uRdyt70!=qGhzv(%IdSe?Fp&>y#cGu7Xf#`}`AS6I zz(NLdSHANXuVUI{2b1=BF>fPKhA!X1B}#$|(e~XX@f>V1LnF^*bi}d((U=n~s8jf! zSG0~IxE)>=T*gwJbMD|ixo`W3@}scBd<2WTm)XiOZkcS54wp;$5?yv^X+nRFx{-Nz z76+G@=xEic`&n`w-jX#*KHpP=9UDC6(D{4ek7nL^Lz=+#zK}YIdziyBN+Ped&_|@P z{$wpT(q!{Mfs=Rbi@EisMcIX8ZA+?8wc%-+{h#~qhypmA)JkaFS`!OCB;*Ytx$-F< zGUY0l(K(hjh?KP?NE53bBilg|H&23(4}&-OAM-4t!^th;UqM>2Iq~|rtoW@{Qvdo9 z>lA{Unj-xg?7VPF_l3!!bbZ3HaxT`}0j=es*D47sb|^i3Ee@0FL;u{ujxV+wC&s(G zn=tml($gRprXB%bYthoErJg=mw#*xfzSV3*^sT~Gbz{%YRXcd&j5PFF8%d@0N3jmq z@q^>d|LN9SfQH_brv5rhM_ziH+}=y9_+uU6S*pL_Szl%lnStuWn-ieq3iN%x>{Bgd z@PTwnB>6t2SUNU6E0mL>uj3y?{uhyPtZPya+&+1mt&rnyI7y{ldO?oy9P=hJ(X&QR zJsodFGnXS@bhgG_;+d`q(sv613o5n%{4OuOzciczf7WY9oBn$V7DtOW}}&?Z9L zkgL(QAVZ9-iB=KYmiw*+`+_b=37c*&rpb9kCG{!XC?EacFXHF!Ek@&kf!)0B^MFG# z!N>c?r1Nwzn-x@KvrfT6{&={^hL5)^kPXUeitLcL7$?em198FNeRS5^f!c7uszUQg z9lGasrYoH8i#@G9t|6P>k9tE9$^`cc6bXq8wcZ=w*W{xMuK``d|91x;ejKc-%E+Cd zp3Y#mI9$!QtU>n$(%K2j%$sQZYwHjkR6E8Lnb6%4`dhIoQf~DtBAHbyR;Bu*aSdLP zzN<}iiVl!5nG7IQe}1-%<`2Mm=QcxzsB{GZ#EJH+qLsMu(Da>CCZ49T5LeO$-*4n??i z8r3{$WRJ(#rsA|`$bIUo!XjQj#l4X7sd9JJaSCwh|1vvDd1U(TQge<|m5CCpKo+af zCwBqFBf6B1V3=j?rcLCe3YIWBT5)_Gp5zC9jV5Kuwu zU?m`t&PGSgdp@_w`lofAvZCl5%4h=k7hdf;qjcf>EZzc-=Vxfhsmx=r#2Z{z@=cA< zvvBYOL0=a?2}ll{?^Q>f=asim+sDW1;hzcj@~VuB$}Ee+8ZQQsf1&TcZdtz~|2`nD z?zIZXOsDoSpyrCf7s9nx{m{G1r*HYQ5cG>*r~jj3@NJpCbIn5j6iRmD4&zQ+0olev zAW@_O!32Om2X90mnCQB&U10NFST*k{S__Q7_A5kp)p4HFf;xU-x=01bqYE+u1C5G7^ulPM^YsB*q zOi^JDoNEh68#)nt5?020^t~X!InHP=j6285M$Gw>Wj&H%wdbYD@*e&EGmMwE%~l^&lr0$?Qe?brGpucK3`upQ*~U8G6Svvn$O5a@c`%iH392e2ztgm z6}{X`bTy)`b5M*bL%5%`zLZgz)uqnA@r7_^Ul?UmdJG(5srq!s=$huH(vqiIg%%Up z7HgQ!^n6NJVJ+CRgV17xK`NQ9k!Pw@YC9-F`ZP=gTzpwvkz1l+KeVFWPg50qiPQ@f z#ZOe1HBn8iiLI8}G4;gEWml>>RuX4J3Q>OgGNcp;VaE3U|9tQA4}QEV+~k*JDSDbA z8_bAJV6BnISu_B65OQ6rFgcashCYS1W+*_c?MFI+WTlfQ6eFYlbJPsK!t!-bQ+P}h zE7_{MJOdr>x(9zi##TqxTJ|Eoq~2gNDcxCZMBZ-jrGKgdukuD2cf4ja>2RDEq+g&< z>zHWI5Aojx)|*r^HTXEx2}-Zma`8ojEwHO$g5673-iGp!kSO9T3heol{IA|9$Wt+y zZ9a=^Nm7|pZz2~c$uFDXz>UY)=c=!saUyjyu$1Y|q#=HziK-%(9+^TG>;V3qN}P>o z*3Zp86_&3@oIH3EcCS+HG2ZCh0s~j{96hqtb|$eU;{1NP#*y`;RS%ae1$tTf#Y%*O zsB%~TIlfs4HB{X|#1%_pKD`JBpNZ!HT7)UcYA8I2nz_nbXP2vcX&-}D5?stsw0HC| zbdC#7CD&2vV4=EHv`9(U&umrlm*=b}DmP#*b85703cJLy*{MLCG-zhqe`6i@KR+E5 z2?PhN#w)v2goC-iCzp)hq6YJN6&I$X!m=}DT+xTNmhj_lk8Qf?YXj{T^M5l%&SW@n zN*fs}V^&N}senFxIl_98*Eur|BM8{?<9w;$-c3_07i!OyQ!0BxSSldn!>{M923Pb- z6yk##vl#!o?sR%2qdP^t?eMab} z%;;kT3l;CN1v_p}1Lh12v@%~Wif&|)E{kI#Jbv*X2kIdz(}_Dp*cusr4c*_NH{^Bg zy-#iA8!rDkgScqaX>ckR4(W(E&bheZA#zcKKSZzN+Z2-zGJ$L{@*h!69YuUY@50JN z;MR#I$f2K1HDjhN%U_>l$Ha`a^!PO)h-pjdn$q?K$kkmYY1kGLkl!Rz0CN&4BBl%l zC-@Yq&+B4ucMB6h%cONmTOLcdTv_0V!yl@R`1N&>Fg&I8!gATiL$COm6L+wuEEeOkL~uBU)kmhkDH7N7ArnPl{EV z?UvI0SfOrFMj0Qo^+Zb%8M-^kT8Oit8ZN(Ekwk_rebHhY;$zuow5^8L=+u=t(I~-` z@RPg>{#7?W;9J}UTK<}@SL6Xo?Mws~GQ}>ySwqYd{W86zRCIG1Y8tlVKn_fF3cGzO zRPkY9zW(z`cl$r4=skyQ$t%{YvC9-ogjzOhCQ13^yq78Aq`CTjWRX(- zAxuY*Sv7Mic^M5u?fDvUYAvCafl+&Oo#mrSV8Jjx?wM!t5${CXC3rgl4wZDZ*m z^xo#WVDxL=uxBnSK9-UJSdM$XTbQO&w-J|pj9SegyZ-JNzzHg;Q!b^lu@|3Qgg%X1 zVlyFKp;FV|*K83lpjuCK|C}OpbHvJb#@RXgA^{OH*W!bYFi5oyb0sir4M z%~9n$yNJ;uyYz(q7L=f0irf$%WV4Cq)ssx>ga|hY;^tK|()~p=hE!i#$iVA2m~ugP zpY!~pu5?`}yk!t?jkm9s#dLIdIt5v%6P*#63@oNRvw5=L6J-A{&`v&4>F2z*soYgVRf6!h(09=ff3(b0jK6?TuA2hN2H#jt*0g!ClmKAdmt2nrO>@EV4Ww z@P{J>6yOrQNQK%Y&Mi4;_S2DKk(sJvVedwq%XNAn)>jaD9nB(zHBb6H4q!?cX*nSyrOSL&;G=gc$M>cTieZ&?I2tj=YUKMh1r zSC}U(FA?W)7-H(C(ETB%VP9K>7FVwt)`38GokBiuwwI&J2FxZv?1Q64AD3nUL&kiJMob2~{PA z8fD}v*HC((4M`g@q`yJBD#dd{n9*ZV2RDXjTZA5;jOJW9SmD-Km5 zG9Y&#Kcf991|i6cbmBF%O=7~T#E`INE6c%h(GI&6Ci$XZZv%#)rYqaGOhP}Q61Fyt zhA5Fn9lDngf*`Yo&CBRXp6m&H z1wX}%tcfg5hmn0ijekd{x0kE(XMEQGs^k-Y_(!n-fT(0kSX+c*9@h|OqnFP5Ag<+8 zQznw6INVh7Tm#@0?Qw&9>cRozlb0x49KAWqMsO{-M)E(gLPEiZ6B)B2NayibC8CWK zT%uf1hxeUS{$~(}zbY+aS4B{z+eFXDv$<0grj?TMbfrcn$8#hy#mD9`nam-ZJ!TiN zF`LThyQq2Dfv25@-W%aP%4F^BUbTqbFww2k_osf;lEwAa zXC;)T6;Is@02COAwXuBFIE1t77N&{t-+}fqK@lG5=Ps99Zp%2^5)~EQXze?$0)mYd z)&PO?p`)1@= z6gRfXj*^i+ZMSus-+0=-?r0+Wop#Y-dq7C5<`UO7F2_e<8`K2@J%W|nR604?fE*rw z;UWwrB|3E6)Zq{wu<%l$yW4hssdpg42?hpLA(=_ucB&Tsa)w!6D59ZJc5NHhHg@pw z?TVrXg<~qyV9+hkyyJe(wxKugSxdS`V(n>dcCdB3br}YPSO+6?8!>j`1|#Y0#oETX zDXvwDC~}mefQT(}MBr6rW6Fpjm~+&qlM#(87>pir?QXUHrn>Yd+D|>U8wrq6l09Kh zEQosCUhBLlb11%%yMZCZArTm0#7hjTJoHhY5liZ{4m7w!V-*cqIx$rL`DIccI>@|S zPj@)A^BzX=nsL<)!(=b=Z7Bk>=9B>_+^vxESOB$U;xc(vi)z@#mg1IOAm*eou_@YS zvN}T%i`CK_Cwxq76(W%ZSjpAJLS9(~qh~Xq2+`5vse6GalkUh)H=`r|ZXvCfMXXAr zl2sXAkye+|QDWqdp6eiCySL*lxYfiHn9>^Lc_E){(Nu!PS^aXAiS-q_US~8R|J1Jt zu*TuNj$PWdw5onc98Zfd{)-zzVg({`SH!_{JpUB2{1$uBJY&PIrRLdFnyv})+KU#~ zj@kN^p_O%1gm$-oj~-^1iAEA$O* zzoE(rW_p^jL2`8JnugAcf@t_e205`lGvjdoQ=JLiu1Kg{_E~ws7czYi%K}-dT|Kat z>v=Pg)#fzWkNr#!dPo_ykn`7O%9pvS0o4=_DYUFJPhbX^hZ>8BM^}V_>C%fAGN%?6 z{2_zwg(`G_)=z4LfHQ}VTY*5iceU{d@_KB3B9Aa;MrRM0g(k%w8xRZW#l)ZW@|53z z{e&+9B1U^k03|*UVV_B|hHf$NFGy!tgqjUPZnmsGXehIx7F>(wog|P(g}X#&s;QuM5NFfX^Du^JmS3i(llKCu*c& zY*}iJx=PHODpm8j*ey-(`UX4Vdi|)Ls`ex=O<&6`oyCzg^Yi>vg33hUM=3@tcU+i=Q#tLs<{I*ES`i_= z5l1d=r9W;X%l3PhlKh?Pn|Z-3Q2SJ-79w*2L6F?Muc;4D<7E>|{t_LRiP!(64}q&e z5JNXNAdpRJHG^!Gic>Q*703*ZfPE~i;kmiMM5t5({66-Z0{2zqpI0kUq6bH>cqxKX zV{dp8`;Xd6#J&Z$&4zDCphD)6=I|ojP8C_&s*Ve89?SrDP;A)gqWMW!#WgyeLCtBz zSVs1Nrw5(thiUGGw}VQ@m3l55A;k0JNPD`Gg*bJwBC?K!p3@&|mVZ*Iw~?D$Iu4kj zvG>KuAub%S=ZJCHL(3bhXr7Ax*yqkWJ}gwVvq%Lx9e31$D|B~F4z!gMDEi)xu>wi9gtNk*b2hrf!chj;IcQ_01a* z+X>s*M5_&`PhvE-;YT9E`bvm*b6);XSZxpJ(Y-fXvR#_~lLphk!qb14j#C3kh~=FQ zv~5YcXsKaM?Me9gEfq4e=B}ZPw41s*#9)kvs82uZUhsH*9h9hn`J~=N@yRk7`eHFe zqYoI}aiwfP1<-Hn7N@1@q{wXd;5`s~Y+~6I`?~mhf_v4NtZ(Kx7^v64pB)bYo|=lf zvEqfSlo`a^`&hWaLB}U8HD2&1%Hs6)4!l5I_@%0i9vW`tNlqJ#F)qX*jFgq)UJXuf zPKWqQF+4GM1lSkpB|0i2e%v*dT~%xa(M~`8U7P9#xCv@It``Zoza%PodU)XG9w*W> zO1hEO7+YiS9C%mBdcxkQ+~RIB!oNtVhJjk>9=6P~~ns#Vw)#(v_gkgYY!I*WC+w`F&4BG{R@ikxhP!Bq?&Nlxs8X|lfn;~(SY^%q@xoWSgrS5Jd zePCJo0z!3EA-pSA*q0qa(@zo z-_{9z0bHOnXQC~-kg^YD{POXq*Meh5DY`vU^G&p?h6e<^PV(&Y0j0Y z_Y9q_G#aQj(n4R+8cG996oZ{prN(vCm*%sB{OM2(Q~=c=m3BxZ;x|PiM2mDHP4M4@ z*m_>^2~87_Isfs3E!c>HQpeX7;HoOEoQD|8#(#OSWBSgc%872N^tr3@D-ilaeHm9h`IF;&T4 zm=ga{FddPi&T@udjvstnr!EcQ%ukijGtV@=$&sw$pKs7~@bc${Xv;H55MPgp5{#pU zT^;PXyO1&D$Z1Wvb&AEvWsR}1I<=UPi{jnQf^TB_PE~ulMhpq*S(0>)d3)P+ZL~s@ zSZ>Cp^nVzKyh4*c`HPEC@FN`8(IWq*LKu{3S-JNbT0;F-E?T=3hu9S;q5I7$3ZA;F z32o`4K0i-HZ}IfQr!hST*CjIzoiH-*d;#ev^4n!Ew#_4*6QRO2fjEt9GWl=djE_b4 zcdy2Jh`A4@uEM8Z%5;9Ev2>`_2KJLQJ+(=p2Q=4>&vpGzl=elDCyzedSOhVt6`Cbb zr{3EBN}3qAxxcdAsgJnj+C^VN$z}r+NAF4|+n1Va$Ve&o*|C+)>c4SEECPZ z#3eW+WA#?lU2$HCojZqQwYW`Qec+&9ea5sHD2t#fJQ5{i=4mW!3RWopr)|}V!uqGp zd1{}x@ayat@NcaE-)-qB6a<Koih}uAi542#hh_MeRf`4bV5rtr@fyE+@i?OB8NG zepkB+X8Z-)iS4mu7JS1S=|Mu2gL*HQV*CItry&#*uh}@uJXnGXFn+eAb(n_&;RU$& za~Pv!N#1(FIybGJTfeWH7vh&7NVIM`a4?M)a!Nh1PU55z!%+HAKo87^Eh9ybj>mFT zX+R(2Y-lebQe3W_&@`CN#DdC06bqnNh32O(4iR}Tq<8mz2bz^EYrA+AjpRfZ`DliE z>LOCSuu3EOQ)fEWGO2%MKSc(~IHQXA#HN0jSa8arK^FEchGJ>39~-cPq%D6^b>be; zbfen$uJCEjwAmsYqTbJ|9nRZREEMN@UenUEJ0$E2fp}zB_;KYGYy-xWurRHJuGMj6 zQU&6cP$&^b5TfC-`7`CEElxMWJEk%BJXT!bVTp#r!$6`+w};2OZH&yKWe$}0B1 zk}8AlQ6Cma-+a&^M?Pd>Bpy=I8$vX-k}LSts9{WBVjwKir$zh-N!~h{?*#}^nP(iG zNT4fv26-qk15Y2DMGOyglkF+hE39DUb{r!-7?gRX{B(Sb73VBdV)X*mtMYseIf|7q zfBeN7dcz4CiLj89Q{qb5YSD2$wJtzo;r@f1VeNtMUgjNrg9r<)n1!%mqS8je#}O=IXIN7ByYt&(N(&AIzBFe~=R`*Vz=f*i$;X~O*= znf+Q3xnKlSiOepop?V~m)G(|KvR^=BR9NtLr#j55)6VF9Yvd!INj*fcCI4|uSZ-K< z^qgl7sj<5^y1_nd{gTVFCV;>b^HRw55&8nP;yxGEB!7REnD&#x(2?mx;CF?vz&j#8 ziUJ(@1%XsWrJEYlB1TwCD(k1y_yPS$yti!~A~_B(835;vQNF~y1O67yM`XLkZ&YDH z3%j;M#>=2Lf1S)V%u#;5O+O0M&~&Oe*rv5L)InF6x~1$FvY{g~&{1CF0*=|sJ~nt! zdgPXvMKw<$|JdyNGO~lZCsX2=5mKmK5Mbs`%VG8MUI4NY$EIpHu6-*hkN5I8mqC;FW zmBT_9>q=}~*0sCt8&N)GV*MQS)7nUo`inB{1n9BTkKLdG(KbKQrAcEJm=^1BI7lQ4 zBbfUx=#qxse7Qhn8W<(HK92NthFIXzt2p>qDBYL*y-kGosELmu)KXodTVx&H(@!g3 z6mwn=?Y)2KaV?`wp=d=LHJ55<59Gsq8v36uDN}$e5SWWGp?CiPLnB;8XhKRx_C`@T$*hez5`= zFO(^_YvG=)>Z@LYV#(#@sU(ufDn(R)M&lP!i0Nus%fy*EyMzvHSV1l~04C5jp6Gp` zbS>Z?rT-)kJ2KMu5TznieKHf&3uKSe0!f5^o#t2~=e=;m6{OoaeFTl=Qqa&B&Zoa+w~ut@&xylUVCo>K+MwjqCAbuUcn!F)vx zoV_%ZPdlHTWwh(Z*o6gHN8~@ua`IjgYrDpGs!5BMyzu1p1IFm%sFmHyuI&8)z?0nx z;BnQN|K&R;;D3^(&)~F0jk@1(siLUfch^4Y&|z&NBFXA|l6z;b80VM6c-pzfJRcOC zLtaRJvN@#?H8dNcdiiv&lO&DO|AH)@wZB?j&o5}hpd}KTU3$&!t(4RS)FAso4UpAz zXFBl~9wyGl(GyNDrt^b$n(U?LdF!=-heH{@z#(2)>rcdvP`ImNx11OJ*s&NkbPuQP zQCW0J=ZWrr;viJiQho<6ktNkw%UK2GSDy2LIjzefWX$kVP%QZr5*z_v#rqr)w7yf zQR(f`tVUd^-FG`|;%$4M5%mUr^2Q!6Y(Jd_#2Th|?y>d~hI#O=p~#xL ztRg4`@E9f`?Y}6eeBz<2ccO7?m`C?uo*g=woc!w)O+{cVs5y{?Kyb zH==m9_3s5K{C5wt~Ms&K+@&G zqzpsNPzP%nPFeKxjU2lmhzO$*9FG;nR*F}*NRE2miw5=C?%Bj;5{Qh>jOaUXqP5hc zP>|723zxTQb>Y}zMl4;C<i!~7~T%$kn06slpZFwkHF^4PaAWns{EeB=M)kXFQ7^6$2dST%TeM}aVYa6LN zUjTl@bFcV{xAGUiSMD^KegC?KQ2TW^U;7HT!id4=wYuyihm|d6=J4^+S5Ac9Ro0V- zWB5Fn7hm}&Hn>yNJ5A|-gg~5$+}@&I4I{2GT`Q}Qq{i7p4ymv%XYP~HMRXEIYk+Z@ zm*Um~!@IsjD|@jXTwE&Sj)cnU^n=G$N0#awiF~LA&CWmBS45(|!7Lu=Ns#3p#W-h*2j8HVE((LM{K8kNq`+azP zTF2BA_$DI6Rb2_Hx+rr~F((98Rky=D6tz^#>yZHC%=1@6b03HPfBOG~he%XU%ahls zvm)c#4__FsJJC>zk|q#|?g89|VtAgmb5?`hr*j&;S%g55G2{suN)ysiwC{i;{3VLG z%*$*fbPb8T{LA78`(b#|@_mz_;j|@rKvoqzK6ot8d1BUm;5{uGflyz;Hix(0fwhg0 z>tA$hL9DvUO*Rt|+=xX6Yp!!>Ndxqv!jUQQrbOG?v7o7qmt1w?M^|7qZxFk_dr2pU z2A6ZlR?GEvFz=T(O#hhX?=uLel0SR4$D$a)^r0;}f4x9%3{q3MPc3}ktUR3e<79|& zKC8&bWpRe(7h888!Zv0Zrim*c@_%t~mFmirAJ3>7uER@8n*s*%QKd0jGI+UI`MfA8 z8i|YXYE0nTAOIk*m#VOS@Ym7+gK-Se@CM!Wz{O=y5T_#h6C*Mu2a7bD#z zDN??8GagBalm|PC!nAz_Jcx>rjR1ZmS|m{a&Bg%EO%=-y2@vtQ=*?81c1HOYUg6DstOv zGthu&Gaxwwlf`Rh7^&@APAcye5s7MR&&xz}L^xrsPC%|uk(l}V`#jvc zK*~rd12|; zogY9gdWq|YLidN0!f6n+8K4;{1m;}I2!7>JX_LRrbrvW{W((Sw>EsI1q9*|t8jY9G zJsUh{i%y(cA!@+!%#0oaRPWq8Ri;PGh;uuk6Yi;8vt>t%^a|;QTPjRJ$2_IL0;mLtwLKN*xc!(lBj3O2!&7v9o_^nt#uM3^ z=m=}{SLVN}o!ZWsT(;^Rm!{osPDKg@4k|)AI#;DA^HrCcAz_VhHh35o)6+81z*cxe z87FRW!k$sk$%3v*g!2Ffy_P-zAD4IySdRTnsDG^$h#{k^sakm1HPJFX3(>5R`So}$ zM?66nM@Uqa?CcOC>Br2Q9sa?n!6j&^moSni-rCh`qP`bl*Q0N~H8Bdtc}Td@fejX> z%TOiP8KyD$GgJhgK2aKHvG6yKdoBeB9h!L~EbZb@11rMAl|!+fGB@CMQ$rYr98qNMQG6^ zL0UO_2?#X+V>Rk^ljV;ki&Tfe-k&l)AejuO%Z)z-R)fU|H9{~5!>^jxj_otjMsKt8 zK}lc>H}7jtXmm5^lwh#Kzh`@!K#$f2ZFj1dZHn4*|1zF$i2kI292HV>WQ+BX?V-=? z^l7`s5AEg{?bMA{?6ZYogW}BIkV~r+`E?4comS+nz>mRy_*krq3Q{~zg0(37IID^V zMwzM~trk5KF7M9JF47~GfZhMK(ymbM#khm=#VyBhy z@Jtp^xF(XO*dvX8;9sP3tV`V$pECl5tp#>vhuP18{1SLap{w^a$as=Bu~Xnc>RUXQVLPUt zSYo+6VaB~omnGzeYObL&<7aDF+63M{a)0HIV4$4-u>CB$=OcY9crI;NUYGi*w~3A8 zLMbC?`fZ-fn@W9|i~1hKlvIlYxbgWD_jgwort8?3OW~SwwI$Z-KrW$EWGY-nnw)J# z@7w8yNvxPK6ZUei#j!!+99XZrfQoVl{^{A~o|_5H(!{@lBT5tlu(7b>UXpS@XaAJ& z*nGZ8FZ}{YhL&l`^X?K;3#T%od28$vvrJCT?UCEkzmc$)E0A(AqMVH0 z!$(93_6`!Z-jiN6t+F?5can%n^xT;C4L3zINo5I_B~dFNJfZ#H;R818p)uGnepjV~ z-c7=3DY~m!h*Gs2v;XeSW>I$4{;6kGjQXXDw9q+WI#ZuThyj&0chbvTF`e=2{jG#v zH?_TzaznV_AzHQ6VzXWY@m5e~Dv@x~?X=fd7+{xTD2zc9(XbdsI`*+XL)=m{HDs1| zx1?(5SDHtVUdw?_olKgFVc_Z1l!!DGEt=1a@hl*fdJR^*j*>BcR{;jqL#IfynLG|e zTqdLjT;Tmx;HzG^IT|SDHFm1_aUk}OXm$}l*?F3B$Z!CG!)L8YNtK}`a#MUNol zk@{pye%lC-;;IGGHd?YtvdyOn!CqnGDbBE-dhymHi9clf3nO+Mf!n~-B?Xy8hy?p6|}qaFVOyp%^O@Y&66 zh0+o$CS&V$=mk+%xfY+f|w>|sKfKXao!Iud+a4>Sus+jVV&^?H&*@Y8 zG;!!EO2!zHS526rm-B0LEL*(hwaC)#5}W?yqW~i~$tM282n`y3%q;WO zQ9%()6uyhC3wZQ(o3G*;sqjBTUuqgRYsfzM6QdH*g*K#IMBmUlN8`3sP$pwFJP;Gt zjP~w)ZBNLgA=4F`JfcP|`cxeAyu#}gdT)t{banDx36+&#wG$>mmxLy^K?xOz4a*%g*t(kGM@ zHYRYXlHa9IIV*#qd?sDiVPIR*z7oZyuS)Y_6M91ANQ@+a9sEbi;TGtkpe8i6`1eDw zBjvJbl=7tYjVOaZ{dSg2K9(_U*hN&0AHJ{gmtr}Ty>8i~>^&!0;aSUc{~)r81+L7J z7iuQUDrRQPUPVy3uV8EE`xAGRTFW{eP|OrD7LC{(x^Rmqm4FPrg_)1`J_#-+;spBl z%?gYj>*m^e5xAq#QkON23=4}hZ`PME|4QKXQ{{%87$VNIuu;2`rTl(8Dh1P;31i`k z(II(SBLzu3vH+}mmv>xF{WuhOvBiAujlV{>Xmo-5$+Kvji9Kb{6h5(WJ*iRr_{YP+&q9KdMZvc?QBXXQLsoy74|-n>A!?_ zH4^w0J)Owc5wy#Fsx0+-u4BXwQKu+bh^YaBRB`yCyJ1CfmI+*|C3U=O^8EDKL?|-3 z0uG|)!=R%~t_x4K_4ns|4Uo3F0T9eKG|iq*D;_I_v&W{UE-zXlK~@3S?kU`=5J*$vUF9SvCzi_y_9 z(%tyvGa$%Co|E~glWm5c0(Mp)-|%;;!HgJ*X8JtpqLbEyVY$)=s!zRE*U+Ra)&KQD zb8qPL1`~%Ph7*=u6IcmdybwpbPLhA4LI!74tF!3@1u1kqiSDtzX#&OO;yNQPBfvfk zl3t)rmV@K-8#EcoC6AUaKzh#w(s(vxtc+^2%=dTlaEd&rXTE(|Z^BRKwaG=mM9#m* zZPK78g!DpSeq4Nto;2n?p#AA}8aCR<+Q8^<<31kGWFNnG z)1eflZu(>42+%N^3BfFR*O(OcH>(g!<&F68+#TjYhv>2!sTX&mrXVIKr?iH;?MvBa z42v8ddZ6kx@NX|;btO(p;XWV@yZit-xcOXMbOqul?=}Ss1!R-^&a+594MRl~4nVoL zg^N%8EE4gJAo2cZDQWFw5z}sF=>H?>eV`kw&U?{sZ*3iK$+Fqf$R3R`Wb62Nkc}a- zF~rbm?mn_?WRIcpj3Fk0EZGdykfb$~yhXaY-rbUABM*ki#!L;Nxw0|TaA`UuB#-uW z<()ADHH5T7lBT3L?_R^2=0RWXTBNu4uC%M~zV}n#WWfYmfA-n?+u!&5e&4?}+Pvi} z#rpwtp1+bb@-=Lf*vl-vVCCII&D2L5K-@X8;>Q~>LRC>rJj9CMtqFB=!gfNgu-T{0 zEcK|b7ld8TmesY4{M?7NpTPU(BMbEtVT?4Et~6BUzmzNHd7I zl=Y68>xmP6`b>0w*<`)HdZ52dcfiR`x``wO@xQqR?-tO4S#bf9slx5Lf5tGY?NSzo z*3Kw#FY;>Hi@IqSOGLXw|As*N1mRm^i22Fn_eh=LI2Vh%5JuwmD52F;9!EBb5y{a^ zkvf`#P~hH$#1jYUGIrSid<~Z`8Cl}}*T0eKr*H{)82ENqJLt!2Ai(^;f}c{c8~BTX z_HPaf#E_IdsNCQs$DgG5IC0A`3<5DtVR&y~WWx>o!8}|SypqSBP7}ln|HmB3U7Lw5 z11)K|YvJ<+jC~axbI@tW=Koky$pkJ|R@lSko*4vBVz8rz8W>WjQDnB|&3PcL3fCy7 zQDY2+|NS-U&6cpIh`3V_`J}|Fx!#qxC!Qu7!?HjB+apZr;Q2oVHRDBy?h6ZPAeamv zx?4hM1MifJ$B!eV=+JBSmqwFIi8! zXuuzpGfoFWIJ7t8ogBrzWb*w~h_{ovG&4?+LXA*smVDwfR=IU)(cpBQr9Gd0@mp75 zH|j;K9sr!OEmxhYW?@q=pMZ^4d+k2Kz(`7-HE3@dXo=$#yac%MEx-aJMdv>8>`ZaZ z`?kz%T50ci2gln}bRRE?ZHbKcpi5X>d%e`dJsu8|vBG8K=V+U_OJJK?O0XKFy8~VINxAr(FCQ1`$D&W3XR>RRc%ywl6o_% zHa-fu6{~+hq(#MksBDS<%>lh@a>SZ|;r=w5wWLKY&(dWB3NDsjpyY|H)#J?LcJ0ZT zQ>;NY{SvYyHeZ|POSf3U|LQG&aJPzTAzrsSr1>eo2(ydeOBEj(yM+7JQ|k{~wZjX` zFO@aU6jzCM+8u>Vd^Hy|0`%h-C|#%+;1CBcAj z*|1nmdg|0cC!NZr=(hh@P@x1&@ht0$>&7qQ{iUNO1$UE)8WfnxT8z$c&Mj6y1c{F5`=<)FKx?N`9X19FdVf80|pT?BJ~b&K(_93@ugMj6kR(G^(SK$|NOf zAIOM{V^cD6W+japufnruJd)?a5vPR*YSyd{-TJ04XuwAu3DaC<3fu zPM{_(u93Iub;3N*O!2iN$m7w7nDG{SB(2Q&U#VOS2u;adD)ds~7CsgvV$5yoV@SDl zchT4-X&Ca`$pi4cat*}=c|=q$EmBKfsq-5lvN~$i4T7TNE$2EZOY0VO)s=z}^==)8 zxdp_Kw3KS9v9kRF} zB4KZ*3t$pO$*{X zN_Lt~LTyy?=Vm@jOB6}pou9b7h(0?*l~6g|@7}x|5UeDNPI4T`Wts{hmjn-Z0Eed` zSI>Tpb`k`vUl~u5tx^Tw*i~h5bOB{?lTqGeq6+yJaz6@~WKbs~dojs{C~DG3-;A|j z^q$QHoh598>~=(Z>{)0IM-@N0S8t@%`S3t2PG!-jo;Ld{+9>wKou+i)t)js3T&9Rd zJsmy0e%?y4Fy{+{6MHNw4Iw-nOZelmAR(=^E-a_NX4+t$Gr5XIGO!VY_i{~iX9Yd+ z7_K5s>J=zpO3bR2JYc^Pm|Y~W!;crJ1bdpg?dhURUIZ-b^SG8Ud84F(^Z8aLTy8$u z#W^eR3+O$ECvWqXIck;h1(~3q?&}%%IXZ30*TxXg5I(hh7xwUu% z{*}KVo$f28fXJxGjRKbcbSR|$PuCOmpNYm~LIJjwChL05LPZ zi)9JY(zj{UR~AIp&|!>iU5>|XTcb1Q;{K^BYgEPax^6gnP|{RXl?rS4FfWgTi-4#q zg#tWVGu zr{7r%IRP4reR_Q5*cs2NO5{?Kb7rU%t?n@#Y?>r0Whk_fIbpqsh%~2c@bqT9Ov|-g zNL)Z)37o%6UjpQ2tTK&ilnhS-VY5}l-@knBy*p#Rf%?BM*E-|*z>t39Aaf(o2 zQ^VdI+T!^_NjIM}XRqTGF_w8k#hl9yOCwmnUfDe)R!+BN-~orfadqw=t`m8*tlxv- z)KPY=Hg3K6cuVJ*bd7Sf@I5m+CZjReGqr|MIBh0$E*t6mdJgep0MiRA>^{w8?j$-W zvbwHd;vuO!+7W@oIZmacJ!!1pc{r@G$@9oaea)h%yGS07Zs#?50h(MH`W!q{r=jAP zHtV->^#KGdR7%36zW_>KxHLOV%ltU*2gnc(ugc6_Vgf%f-t95fbAbRZ z!_a?J8ane<;@KstvA1i@TmxZ~>5*g9sKhw@owV*l&&4f7bq%^~Cry5r$^$NwnIAL% z>>1~nb7VJl;tL$@q!*p3Qev8T%m7URD zLZ$Z_zQ|~#v5062o$|^(NEd?!w*bT88V!}(>e(m7X*57tg@zC#x?Nl1j~*EHuBMvi zCabiewND)$MUx3b0}EP~5QY5_q&~{@kWm}E1PNsC-oycY&0H+hE6lDk7^&LeT7BzL zo^sJcuLesAYiXe~`wnpKwR^zBY_I}hhjf}^Tc2do2mo;YyPlSTlf;C}1ek?3eJZy| zwj@}1og$3f92r)%wMvkAxT6x?Oq_>aQ+vhnBamUz*^38xWb&#Px!<5IqFjqR`2*`2 z⁣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≫3OE=i2x?&qZo(eiE@~wnMXr+n&?t1eONLq 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

Qm)3!JJ;HQK^X>t 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 a?+?B5Yb5&LUY%?I|HtbWg!sRr!+!&RfRDfc literal 0 HcmV?d00001 diff --git a/tests/ganon/data/classify/test_db.tax b/tests/ganon/data/classify/test_db.tax new file mode 100644 index 00000000..a6712a27 --- /dev/null +++ b/tests/ganon/data/classify/test_db.tax @@ -0,0 +1,29 @@ +1 0 no rank root 4222504 +1971485 204619 species Candidatus Nardonella dryophthoridicola 7882008 +1972133 1971485 forma specialis endosymbiont of Rhynchophorus ferrugineus 7882008 +2012515 1801617 species Candidatus Pacearchaeota archaeon ex4484_31 1970502 +2565781 2856051 species Candidatus Nanohalobium constans 6896757 +871271 884215 strain Candidatus Zinderia insecticola CARI 985251 +118884 1236 no rank Gammaproteobacteria incertae sedis 7882008 +1224 2 phylum Proteobacteria 3941004 +1236 1224 class Gammaproteobacteria 5418880 +131567 1 no rank cellular organisms 4222504 +1462430 1783276 phylum Candidatus Nanohaloarchaeota 6896757 +1783276 2157 clade DPANN group 4433629 +1801617 1783276 clade Candidatus Pacearchaeota 1970502 +2 131567 superkingdom Bacteria 3941004 +204619 118884 genus Candidatus Nardonella 7882008 +2157 131567 superkingdom Archaea 4433629 +28216 1224 class Betaproteobacteria 985251 +2856051 2856054 genus Candidatus Nanohalobium 6896757 +2856052 1462430 class Candidatus Nanohalobia 6896757 +2856053 2856052 order Candidatus Nanohalobiales 6896757 +2856054 2856053 family Candidatus Nanohalobiaceae 6896757 +75682 80840 family Oxalobacteraceae 985251 +80840 28216 order Burkholderiales 985251 +884214 75682 genus Candidatus Zinderia 985251 +884215 884214 species Candidatus Zinderia insecticola 985251 +GCF_004296495.1 1972133 assembly endosymbiont of Rhynchophorus ferrugineus 7882008 +GCA_000147015.1 871271 assembly Candidatus Zinderia insecticola CARI 985251 +GCF_009617975.1 2565781 assembly Candidatus Nanohalobium constans LC1Nh 6896757 +GCA_002254805.1 2012515 assembly Candidatus Pacearchaeota archaeon ex4484_31 1970502 diff --git a/tests/ganon/integration/test_classify.py b/tests/ganon/integration/test_classify.py index aa755a10..02ad0cf0 100644 --- a/tests/ganon/integration/test_classify.py +++ b/tests/ganon/integration/test_classify.py @@ -146,5 +146,21 @@ def test_reassign(self): # There are only single matches on output self.assertEqual(len(res["all_pd"].readid), len(res["all_pd"].readid.unique()), "ganon reassign has multiple matches") + def test_hibf(self): + """ + Test ganon classify with HIBF + """ + params = self.default_params.copy() + params["db_prefix"] = data_dir + "classify/test_db" + params["output_prefix"] = self.results_dir + "hibf" + params["verbose"] = True + # Build config from params + cfg = Config("classify", **params) + # Run + self.assertTrue(run_ganon(cfg, params["output_prefix"]), "ganon classify exited with an error") + # General sanity check of results + res = classify_sanity_check_and_parse(vars(cfg)) + self.assertIsNotNone(res, "ganon table has inconsistent results") + if __name__ == '__main__': unittest.main() From 1f920f7605617175cd337aa2f53a83662ea7ad22 Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Tue, 1 Aug 2023 16:02:25 +0200 Subject: [PATCH 10/11] feature/binning-argument and fix-bug report unique matches --- docs/default_databases.md | 4 +- docs/index.md | 8 +- src/ganon-classify/GanonClassify.cpp | 2 +- .../include/ganon-classify/Config.hpp | 1 + .../hierarchical_interleaved_bloom_filter.hpp | 267 +++++++++--------- src/ganon/classify.py | 3 +- src/ganon/config.py | 10 +- 7 files changed, 152 insertions(+), 143 deletions(-) diff --git a/docs/default_databases.md b/docs/default_databases.md index 6130c1a4..da241df3 100644 --- a/docs/default_databases.md +++ b/docs/default_databases.md @@ -142,11 +142,9 @@ The Hierarchical Interleaved Bloom Filter (HIBF) is an improvement over the defa Due to differences between the default IBF used in ganon and the HIBF, it is recommended to lower the false positive when using the HIBF. A recommended value for high sensitivity is 1% (`--hibf --max-fp 0.001`). !!! hint - - For larger reference sets, huge amount of reads to query -> HIBF + - For large unbalanced reference sets, lots of reads to query -> HIBF - For quick build and more flexibility -> IBF (default) -!!! warning - [raptor (v3.0.0)](https://github.com/seqan/raptor/releases/tag/raptor-v3.0.0) has to be installed to build databases with `--hibf` ### Top assemblies diff --git a/docs/index.md b/docs/index.md index 81b0bbb3..76b5e07d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -331,7 +331,7 @@ optional arguments: ``` usage: ganon classify [-h] -d [DB_PREFIX ...] [-s [reads.fq[.gz] ...]] [-p [reads.1.fq[.gz] reads.2.fq[.gz] ...]] [-c [...]] [-e [...]] [-f [...]] [-o] [--output-lca] [--output-all] [--output-unclassified] - [--output-single] [-t] [-l [...]] [-r [...]] [-a] [--verbose] [--quiet] + [--output-single] [-t] [-b] [-a] [-l [...]] [-r [...]] [--verbose] [--quiet] options: -h, --help show this help message and exit @@ -371,6 +371,10 @@ output arguments: other arguments: -t , --threads Number of sub-processes/threads to use (default: 1) + -b, --binning Optimized parameters for binning (--rel-cutoff 0.25 --reassign). Will report (.tre) sequence + abundances. This file can be re-generated with 'ganon report'. (default: False) + -a, --reassign Reassign reads with multiple matches with an EM algorithm. Will enforce --output-all. This file + can be re-generated with 'ganon reassign'. (default: False) -l [ ...], --hierarchy-labels [ ...] Hierarchy definition of --db-prefix files to be classified. Can also be a string, but input will be sorted to define order (e.g. 1 1 2 3). The default value reported without hierarchy is 'H1' @@ -380,8 +384,6 @@ other arguments: phylum, class, order, family, genus, species, assembly]. This file can be re-generated with the 'ganon report' command for other types of abundances (reads, matches) with further filtration and output options (default: []) - -a, --reassign Reassign reads with multiple matches with an EM algorithm. Will enforce --output-all. This file - can be re-generated with the 'ganon reassign'. (default: False) --verbose Verbose output mode (default: False) --quiet Quiet output mode (default: False) ``` diff --git a/src/ganon-classify/GanonClassify.cpp b/src/ganon-classify/GanonClassify.cpp index 8a304693..a9bbeed3 100644 --- a/src/ganon-classify/GanonClassify.cpp +++ b/src/ganon-classify/GanonClassify.cpp @@ -599,7 +599,7 @@ void classify( std::vector< Filter< TFilter > >& filters, { // without tax, no lca, count multi-matches to a root node // to keep consistency among reports (no. of classified reads) - rep[config.tax_root_node].unique_reads++; + rep[config.tax_root_node].lca_reads++; } } diff --git a/src/ganon-classify/include/ganon-classify/Config.hpp b/src/ganon-classify/include/ganon-classify/Config.hpp index 8ca33738..c2896006 100644 --- a/src/ganon-classify/include/ganon-classify/Config.hpp +++ b/src/ganon-classify/include/ganon-classify/Config.hpp @@ -257,6 +257,7 @@ inline std::ostream& operator<<( std::ostream& stream, const Config& config ) stream << "--threads " << config.threads << newl; stream << "--n-batches " << config.n_batches << newl; stream << "--n-reads " << config.n_reads << newl; + stream << "--skip-lca " << config.skip_lca << newl; stream << "--verbose " << config.verbose << newl; stream << "--quiet " << config.quiet << newl; stream << separator << newl; diff --git a/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp b/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp index 6138b22c..d75b4380 100644 --- a/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp +++ b/src/ganon-classify/include/ganon-classify/hierarchical_interleaved_bloom_filter.hpp @@ -84,7 +84,7 @@ namespace raptor * * [1]: https://docs.seqan.de/seqan/3.0.3/classseqan3_1_1interleaved__bloom__filter.html */ -template +template < seqan3::data_layout data_layout_mode_ = seqan3::data_layout::uncompressed > class hierarchical_interleaved_bloom_filter { public: @@ -96,7 +96,7 @@ class hierarchical_interleaved_bloom_filter #if RAPTOR_HIBF_HAS_COUNT // Forward declaration - template + template < std::integral value_t > class counting_agent_type; #endif @@ -104,24 +104,24 @@ class hierarchical_interleaved_bloom_filter static constexpr seqan3::data_layout data_layout_mode = data_layout_mode_; //!\brief The type of an individual Bloom filter. - using ibf_t = seqan3::interleaved_bloom_filter; + using ibf_t = seqan3::interleaved_bloom_filter< data_layout_mode_ >; /*!\name Constructors, destructor and assignment * \{ */ - hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter(hierarchical_interleaved_bloom_filter const &) = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter & - operator=(hierarchical_interleaved_bloom_filter const &) = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter(hierarchical_interleaved_bloom_filter &&) = default; //!< Defaulted. - hierarchical_interleaved_bloom_filter & - operator=(hierarchical_interleaved_bloom_filter &&) = default; //!< Defaulted. - ~hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter( hierarchical_interleaved_bloom_filter const& ) = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter& operator=( hierarchical_interleaved_bloom_filter const& ) = + default; //!< Defaulted. + hierarchical_interleaved_bloom_filter( hierarchical_interleaved_bloom_filter&& ) = default; //!< Defaulted. + hierarchical_interleaved_bloom_filter& operator=( hierarchical_interleaved_bloom_filter&& ) = + default; //!< Defaulted. + ~hierarchical_interleaved_bloom_filter() = default; //!< Defaulted. //!\} //!\brief The individual interleaved Bloom filters. - std::vector ibf_vector; + std::vector< ibf_t > ibf_vector; /*!\brief Stores for each bin in each IBF of the HIBF the ID of the next IBF. * \details @@ -130,7 +130,7 @@ class hierarchical_interleaved_bloom_filter * If `j != i` is returned, there is a lower level IBF, bin `b` is a merged bin, and `j` is the ID of the lower * level IBF in ibf_vector. */ - std::vector> next_ibf_id; + std::vector< std::vector< int64_t > > next_ibf_id; //!\brief The underlying user bins. user_bins user_bins; @@ -138,17 +138,17 @@ class hierarchical_interleaved_bloom_filter //!\brief Returns a membership_agent to be used for counting. membership_agent membership_agent() const { - return typename hierarchical_interleaved_bloom_filter::membership_agent{*this}; + return typename hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agent{ *this }; } #if RAPTOR_HIBF_HAS_COUNT /*!\brief Returns a counting_agent_type to be used for counting. * \tparam value_t The type to use for the counters; must model std::integral. */ - template - counting_agent_type counting_agent() const + template < std::integral value_t = uint16_t > + counting_agent_type< value_t > counting_agent() const { - return counting_agent_type{*this}; + return counting_agent_type< value_t >{ *this }; } #endif @@ -160,24 +160,24 @@ class hierarchical_interleaved_bloom_filter * \attention These functions are never called directly. * \sa https://docs.seqan.de/seqan/3.2.0/group__io.html#serialisation */ - template - void CEREAL_SERIALIZE_FUNCTION_NAME(archive_t & archive) + template < seqan3::cereal_archive archive_t > + void CEREAL_SERIALIZE_FUNCTION_NAME( archive_t& archive ) { - archive(ibf_vector); - archive(next_ibf_id); - archive(user_bins); + archive( ibf_vector ); + archive( next_ibf_id ); + archive( user_bins ); } //!\endcond }; /*!\brief Bookkeeping for user and technical bins. */ -template -class hierarchical_interleaved_bloom_filter::user_bins +template < seqan3::data_layout data_layout_mode > +class hierarchical_interleaved_bloom_filter< data_layout_mode >::user_bins { private: //!\brief Contains filenames of all user bins. - std::vector user_bin_filenames; + std::vector< std::string > user_bin_filenames; /*!\brief Stores for each bin in each IBF of the HIBF the ID of the filename. * \details @@ -185,7 +185,7 @@ class hierarchical_interleaved_bloom_filter::user_bins * If `-1` is returned, bin `b` is a merged bin, and there is no filename, we need to look into the lower level IBF. * Otherwise, the returned value `j` can be used to access the corresponding filename `user_bin_filenames[j]`. */ - std::vector> ibf_bin_to_filename_position{}; + std::vector< std::vector< int64_t > > ibf_bin_to_filename_position{}; public: //!\brief Returns the number of managed user bins. @@ -195,15 +195,15 @@ class hierarchical_interleaved_bloom_filter::user_bins } //!\brief Changes the number of managed IBFs. - void set_ibf_count(size_t const size) + void set_ibf_count( size_t const size ) { - ibf_bin_to_filename_position.resize(size); + ibf_bin_to_filename_position.resize( size ); } //!\brief Changes the number of managed user bins. - void set_user_bin_count(size_t const size) + void set_user_bin_count( size_t const size ) { - user_bin_filenames.resize(size); + user_bin_filenames.resize( size ); } /*!\brief Returns a vector containing user bin indices for each bin in the `idx`th IBF. @@ -215,7 +215,7 @@ class hierarchical_interleaved_bloom_filter::user_bins * * \include test/snippet/hibf/bin_indices_of_ibf.cpp */ - std::vector & bin_indices_of_ibf(size_t const idx) + std::vector< int64_t >& bin_indices_of_ibf( size_t const idx ) { return ibf_bin_to_filename_position[idx]; } @@ -229,13 +229,13 @@ class hierarchical_interleaved_bloom_filter::user_bins * * \include test/snippet/hibf/filename_of_user_bin.cpp */ - std::string & filename_of_user_bin(size_t const idx) + std::string& filename_of_user_bin( size_t const idx ) { return user_bin_filenames[idx]; } //!\brief For a pair `(a,b)`, returns a const reference to the filename of the user bin at IBF `a`, bin `b`. - std::string const & operator[](std::pair const & index_pair) const + std::string const& operator[]( std::pair< size_t, size_t > const& index_pair ) const { return user_bin_filenames[ibf_bin_to_filename_position[index_pair.first][index_pair.second]]; } @@ -243,21 +243,18 @@ class hierarchical_interleaved_bloom_filter::user_bins /*!\brief Returns a view over the user bin filenames for the `ibf_idx`th IBF. * An empty string is returned for merged bins. */ - auto operator[](size_t const ibf_idx) const + auto operator[]( size_t const ibf_idx ) const { - return ibf_bin_to_filename_position[ibf_idx] - | std::views::transform( - [this](int64_t i) - { - if (i == -1) - return std::string{}; - else - return user_bin_filenames[i]; - }); + return ibf_bin_to_filename_position[ibf_idx] | std::views::transform( [this]( int64_t i ) { + if ( i == -1 ) + return std::string{}; + else + return user_bin_filenames[i]; + } ); } //!\brief Returns the filename index of the `ibf_idx`th IBF for bin `bin_idx`. - int64_t filename_index(size_t const ibf_idx, size_t const bin_idx) const + int64_t filename_index( size_t const ibf_idx, size_t const bin_idx ) const { return ibf_bin_to_filename_position[ibf_idx][bin_idx]; } @@ -267,16 +264,16 @@ class hierarchical_interleaved_bloom_filter::user_bins * 0 \ * 1 \ */ - template - void write_filenames(stream_t & out_stream) const + template < typename stream_t > + void write_filenames( stream_t& out_stream ) const { - size_t position{}; + size_t position{}; std::string line{}; - for (auto const & filename : user_bin_filenames) + for ( auto const& filename : user_bin_filenames ) { line.clear(); line = '#'; - line += std::to_string(position); + line += std::to_string( position ); line += '\t'; line += filename; line += '\n'; @@ -293,11 +290,11 @@ class hierarchical_interleaved_bloom_filter::user_bins * \attention These functions are never called directly. * \sa https://docs.seqan.de/seqan/3.2.0/group__io.html#serialisation */ - template - void serialize(archive_t & archive) + template < typename archive_t > + void serialize( archive_t& archive ) { - archive(user_bin_filenames); - archive(ibf_bin_to_filename_position); + archive( user_bin_filenames ); + archive( ibf_bin_to_filename_position ); } //!\endcond }; @@ -307,42 +304,43 @@ class hierarchical_interleaved_bloom_filter::user_bins * \details * In contrast to the [seqan3::interleaved_bloom_filter][1], the result will consist of indices of user bins. */ -template // TODO: value_t as template? -class hierarchical_interleaved_bloom_filter::membership_agent +template < seqan3::data_layout data_layout_mode > // TODO: value_t as template? +class hierarchical_interleaved_bloom_filter< data_layout_mode >::membership_agent { private: //!\brief The type of the augmented hierarchical_interleaved_bloom_filter. - using hibf_t = hierarchical_interleaved_bloom_filter; + using hibf_t = hierarchical_interleaved_bloom_filter< data_layout_mode >; //!\brief A pointer to the augmented hierarchical_interleaved_bloom_filter. - hibf_t const * const hibf_ptr{nullptr}; + hibf_t const* const hibf_ptr{ nullptr }; //!\brief Helper for recursive membership querying. - template - void bulk_contains_impl(value_range_t && values, int64_t const ibf_idx, size_t const threshold) + template < std::ranges::forward_range value_range_t > + void bulk_contains_impl( value_range_t&& values, int64_t const ibf_idx, size_t const threshold ) { - auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent(); - auto & result = agent.bulk_count(values); + auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent< uint16_t >(); + auto& result = agent.bulk_count( values ); uint16_t sum{}; - for (size_t bin{}; bin < result.size(); ++bin) + for ( size_t bin{}; bin < result.size(); ++bin ) { sum += result[bin]; - auto const current_filename_index = hibf_ptr->user_bins.filename_index(ibf_idx, bin); + auto const current_filename_index = hibf_ptr->user_bins.filename_index( ibf_idx, bin ); - if (current_filename_index < 0) // merged bin + if ( current_filename_index < 0 ) // merged bin { - if (sum >= threshold) - bulk_contains_impl(values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold); + if ( sum >= threshold ) + bulk_contains_impl( values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold ); sum = 0u; } - else if (bin + 1u == result.size() || // last bin - current_filename_index != hibf_ptr->user_bins.filename_index(ibf_idx, bin + 1)) // end of split bin + else if ( bin + 1u == result.size() || // last bin + current_filename_index + != hibf_ptr->user_bins.filename_index( ibf_idx, bin + 1 ) ) // end of split bin { - if (sum >= threshold) - result_buffer.emplace_back(current_filename_index); + if ( sum >= threshold ) + result_buffer.emplace_back( current_filename_index ); sum = 0u; } } @@ -352,23 +350,25 @@ class hierarchical_interleaved_bloom_filter::membership_agent /*!\name Constructors, destructor and assignment * \{ */ - membership_agent() = default; //!< Defaulted. - membership_agent(membership_agent const &) = default; //!< Defaulted. - membership_agent & operator=(membership_agent const &) = default; //!< Defaulted. - membership_agent(membership_agent &&) = default; //!< Defaulted. - membership_agent & operator=(membership_agent &&) = default; //!< Defaulted. - ~membership_agent() = default; //!< Defaulted. + membership_agent() = default; //!< Defaulted. + membership_agent( membership_agent const& ) = default; //!< Defaulted. + membership_agent& operator=( membership_agent const& ) = default; //!< Defaulted. + membership_agent( membership_agent&& ) = default; //!< Defaulted. + membership_agent& operator=( membership_agent&& ) = default; //!< Defaulted. + ~membership_agent() = default; //!< Defaulted. /*!\brief Construct a membership_agent for an existing hierarchical_interleaved_bloom_filter. * \private * \param hibf The hierarchical_interleaved_bloom_filter. */ - explicit membership_agent(hibf_t const & hibf) : hibf_ptr(std::addressof(hibf)) - {} + explicit membership_agent( hibf_t const& hibf ) + : hibf_ptr( std::addressof( hibf ) ) + { + } //!\} //!\brief Stores the result of bulk_contains(). - std::vector result_buffer; + std::vector< int64_t > result_buffer; /*!\name Lookup * \{ @@ -387,70 +387,72 @@ class hierarchical_interleaved_bloom_filter::membership_agent * Concurrent invocations of this function are not thread safe, please create a * raptor::hierarchical_interleaved_bloom_filter::membership_agent for each thread. */ - template - [[nodiscard]] std::vector const & bulk_contains(value_range_t && values, size_t const threshold) & noexcept + template < std::ranges::forward_range value_range_t > + [[nodiscard]] std::vector< int64_t > const& bulk_contains( value_range_t&& values, + size_t const threshold ) & noexcept { - assert(hibf_ptr != nullptr); + assert( hibf_ptr != nullptr ); - static_assert(std::ranges::forward_range, "The values must model forward_range."); - static_assert(std::unsigned_integral>, - "An individual value must be an unsigned integral."); + static_assert( std::ranges::forward_range< value_range_t >, "The values must model forward_range." ); + static_assert( std::unsigned_integral< std::ranges::range_value_t< value_range_t > >, + "An individual value must be an unsigned integral." ); result_buffer.clear(); - bulk_contains_impl(values, 0, threshold); + bulk_contains_impl( values, 0, threshold ); - std::ranges::sort(result_buffer); // TODO: necessary? + std::ranges::sort( result_buffer ); // TODO: necessary? return result_buffer; } // `bulk_contains` cannot be called on a temporary, since the object the returned reference points to // is immediately destroyed. - template - [[nodiscard]] std::vector const & bulk_contains(value_range_t && values, - size_t const threshold) && noexcept = delete; + template < std::ranges::range value_range_t > + [[nodiscard]] std::vector< int64_t > const& bulk_contains( value_range_t&& values, + size_t const threshold ) && noexcept = delete; //!\} }; #if RAPTOR_HIBF_HAS_COUNT /*!\brief Manages counting ranges of values for the raptor::hierarchical_interleaved_bloom_filter. */ -template -template -class hierarchical_interleaved_bloom_filter::counting_agent_type +template < seqan3::data_layout data_layout_mode > +template < std::integral value_t > +class hierarchical_interleaved_bloom_filter< data_layout_mode >::counting_agent_type { private: //!\brief The type of the augmented hierarchical_interleaved_bloom_filter. - using hibf_t = hierarchical_interleaved_bloom_filter; + using hibf_t = hierarchical_interleaved_bloom_filter< data_layout_mode >; //!\brief A pointer to the augmented hierarchical_interleaved_bloom_filter. - hibf_t const * const hibf_ptr{nullptr}; + hibf_t const* const hibf_ptr{ nullptr }; //!\brief Helper for recursive bulk counting. - template - void bulk_count_impl(value_range_t && values, int64_t const ibf_idx, size_t const threshold) + template < std::ranges::forward_range value_range_t > + void bulk_count_impl( value_range_t&& values, int64_t const ibf_idx, size_t const threshold ) { - auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent(); - auto & result = agent.bulk_count(values); + auto agent = hibf_ptr->ibf_vector[ibf_idx].template counting_agent< value_t >(); + auto& result = agent.bulk_count( values ); value_t sum{}; - for (size_t bin{}; bin < result.size(); ++bin) + for ( size_t bin{}; bin < result.size(); ++bin ) { sum += result[bin]; - auto const current_filename_index = hibf_ptr->user_bins.filename_index(ibf_idx, bin); + auto const current_filename_index = hibf_ptr->user_bins.filename_index( ibf_idx, bin ); - if (current_filename_index < 0) // merged bin + if ( current_filename_index < 0 ) // merged bin { - if (sum >= threshold) - bulk_count_impl(values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold); + if ( sum >= threshold ) + bulk_count_impl( values, hibf_ptr->next_ibf_id[ibf_idx][bin], threshold ); sum = 0u; } - else if (bin + 1u == result.size() || // last bin - current_filename_index != hibf_ptr->user_bins.filename_index(ibf_idx, bin + 1)) // end of split bin + else if ( bin + 1u == result.size() || // last bin + current_filename_index + != hibf_ptr->user_bins.filename_index( ibf_idx, bin + 1 ) ) // end of split bin { - if (sum >= threshold) + if ( sum >= threshold ) result_buffer[current_filename_index] = sum; sum = 0u; } @@ -461,25 +463,26 @@ class hierarchical_interleaved_bloom_filter::counting_agent_ty /*!\name Constructors, destructor and assignment * \{ */ - counting_agent_type() = default; //!< Defaulted. - counting_agent_type(counting_agent_type const &) = default; //!< Defaulted. - counting_agent_type & operator=(counting_agent_type const &) = default; //!< Defaulted. - counting_agent_type(counting_agent_type &&) = default; //!< Defaulted. - counting_agent_type & operator=(counting_agent_type &&) = default; //!< Defaulted. - ~counting_agent_type() = default; //!< Defaulted. + counting_agent_type() = default; //!< Defaulted. + counting_agent_type( counting_agent_type const& ) = default; //!< Defaulted. + counting_agent_type& operator=( counting_agent_type const& ) = default; //!< Defaulted. + counting_agent_type( counting_agent_type&& ) = default; //!< Defaulted. + counting_agent_type& operator=( counting_agent_type&& ) = default; //!< Defaulted. + ~counting_agent_type() = default; //!< Defaulted. /*!\brief Construct a counting_agent_type for an existing hierarchical_interleaved_bloom_filter. * \private * \param hibf The hierarchical_interleaved_bloom_filter. */ - explicit counting_agent_type(hibf_t const & hibf) : - hibf_ptr(std::addressof(hibf)), - result_buffer(hibf_ptr->user_bins.num_user_bins()) - {} + explicit counting_agent_type( hibf_t const& hibf ) + : hibf_ptr( std::addressof( hibf ) ) + , result_buffer( hibf_ptr->user_bins.num_user_bins() ) + { + } //!\} //!\brief Stores the result of bulk_count(). - seqan3::counting_vector result_buffer; + seqan3::counting_vector< value_t > result_buffer; /*!\name Counting * \{ @@ -500,30 +503,30 @@ class hierarchical_interleaved_bloom_filter::counting_agent_ty * Concurrent invocations of this function are not thread safe, please create a * raptor::hierarchical_interleaved_bloom_filter::counting_agent_type for each thread. */ - template - [[nodiscard]] seqan3::counting_vector const & bulk_count(value_range_t && values, - size_t const threshold = 1u) & noexcept + template < std::ranges::forward_range value_range_t > + [[nodiscard]] seqan3::counting_vector< value_t > const& bulk_count( value_range_t&& values, + size_t const threshold = 1u ) & noexcept { - assert(hibf_ptr != nullptr); - assert(threshold > 0u); - assert(result_buffer.size() == hibf_ptr->user_bins.num_user_bins()); + assert( hibf_ptr != nullptr ); + assert( threshold > 0u ); + assert( result_buffer.size() == hibf_ptr->user_bins.num_user_bins() ); - static_assert(std::ranges::forward_range, "The values must model forward_range."); - static_assert(std::unsigned_integral>, - "An individual value must be an unsigned integral."); + static_assert( std::ranges::forward_range< value_range_t >, "The values must model forward_range." ); + static_assert( std::unsigned_integral< std::ranges::range_value_t< value_range_t > >, + "An individual value must be an unsigned integral." ); - std::ranges::fill(result_buffer, static_cast(0u)); + std::ranges::fill( result_buffer, static_cast< value_t >( 0u ) ); - bulk_count_impl(values, 0, threshold); + bulk_count_impl( values, 0, threshold ); return result_buffer; } // `bulk_count` cannot be called on a temporary, since the object the returned reference points to // is immediately destroyed. - template - [[nodiscard]] seqan3::counting_vector const & bulk_count(value_range_t && values, - size_t const threshold = 1u) && noexcept = delete; + template < std::ranges::range value_range_t > + [[nodiscard]] seqan3::counting_vector< value_t > const& bulk_count( + value_range_t&& values, size_t const threshold = 1u ) && noexcept = delete; //!\} }; #endif // RAPTOR_HIBF_HAS_COUNT diff --git a/src/ganon/classify.py b/src/ganon/classify.py index 88f7d360..ee0bcb35 100644 --- a/src/ganon/classify.py +++ b/src/ganon/classify.py @@ -68,10 +68,11 @@ def classify(cfg): report_params = {"db_prefix": cfg.db_prefix, "input": cfg.output_prefix + ".rep", "output_prefix": cfg.output_prefix, - "min_count": 0.005, + "min_count": 0 if cfg.binning else 0.005, "ranks": cfg.ranks, "output_format": "tsv", "verbose": cfg.verbose, + "report_type": "reads" if cfg.binning else "abundance", "quiet": cfg.quiet} report_cfg = Config("report", **report_params) print_log("- - - - - - - - - -", cfg.quiet) diff --git a/src/ganon/config.py b/src/ganon/config.py index e1d734ad..04f62032 100644 --- a/src/ganon/config.py +++ b/src/ganon/config.py @@ -136,7 +136,7 @@ def __init__(self, which: str=None, **kwargs): classify_group_cutoff_filter.add_argument("-c", "--rel-cutoff", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.75], help="Min. percentage of a read (set of minimizers) shared with the a reference necessary to consider a match. Generally used to cutoff low similarity matches. Single value or one per database (e.g. 0.7 1 0.25). 0 for no cutoff") classify_group_cutoff_filter.add_argument("-e", "--rel-filter", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[0.0], help="Additional relative percentage of minimizers (relative to the best match) to keep a match. Generally used to select best matches above cutoff. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") classify_group_cutoff_filter.add_argument("-f", "--fpr-query", type=int_or_float(minval=0, maxval=1), nargs="*", metavar="", default=[1e-5], help="Max. false positive of a query to accept a match. Applied after --rel-cutoff and --rel-filter. Generally used to remove false positives matches querying a database build with large --max-fp. Single value or one per hierarchy (e.g. 0.1 0). 1 for no filter") - + classify_group_output = classify_parser.add_argument_group("output arguments") classify_group_output.add_argument("-o", "--output-prefix", type=str, metavar="", help="Output prefix for output (.rep) and report (.tre). Empty to output to STDOUT (only .rep)") classify_group_output.add_argument("--output-lca", action="store_true", help="Output an additional file with one lca match for each read (.lca)") @@ -146,10 +146,10 @@ def __init__(self, which: str=None, **kwargs): classify_group_other = classify_parser.add_argument_group("other arguments") classify_group_other.add_argument("-t", "--threads", type=unsigned_int(minval=1), metavar="", default=1, help="Number of sub-processes/threads to use") + classify_group_other.add_argument("-b", "--binning", action="store_true", help="Optimized parameters for binning (--rel-cutoff 0.25 --reassign). Will report (.tre) sequence abundances. This file can be re-generated with 'ganon report'.") + classify_group_other.add_argument("-a", "--reassign", action="store_true", help="Reassign reads with multiple matches with an EM algorithm. Will enforce --output-all. This file can be re-generated with 'ganon reassign'.") classify_group_other.add_argument("-l", "--hierarchy-labels", type=str, nargs="*", metavar="", help="Hierarchy definition of --db-prefix files to be classified. Can also be a string, but input will be sorted to define order (e.g. 1 1 2 3). The default value reported without hierarchy is 'H1'") classify_group_other.add_argument("-r", "--ranks", type=str, nargs="*", metavar="", default=[], help="Ranks to report taxonomic abundances (.tre). empty will report default ranks [" + ", ".join(self.choices_default_ranks) + "]. This file can be re-generated with the 'ganon report' command for other types of abundances (reads, matches) with further filtration and output options") - classify_group_other.add_argument("-a", "--reassign", action="store_true", help="Reassign reads with multiple matches with an EM algorithm. Will enforce --output-all. This file can be re-generated with the 'ganon reassign'.") - classify_group_other.add_argument("--verbose", action="store_true", help="Verbose output mode") classify_group_other.add_argument("--quiet", action="store_true", help="Quiet output mode") classify_group_other.add_argument("--hibf", action="store_true", help=argparse.SUPPRESS) @@ -449,6 +449,10 @@ def validate(self): print_log("--output-all / --output-lca / --output-unclassified / --reassign requires --output-prefix to be set") return False + if self.binning: + self.rel_cutoff = [0.25] + self.reassign = True + elif self.which == "report": if self.skip_hierarchy and self.keep_hierarchy: From ee24008263ccd744a82f245fa8758faaa096866b Mon Sep 17 00:00:00 2001 From: "Vitor C. Piro" Date: Tue, 1 Aug 2023 16:11:44 +0200 Subject: [PATCH 11/11] updated docs --- docs/index.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/index.md b/docs/index.md index 76b5e07d..02eb049e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,11 +33,8 @@ However, there are possible performance benefits compiling ganon from source in ## Installation from source -### Dependencies +### Dependencies Python -- gcc >=7 -- cmake >=3.10 -- zlib - python >=3.6 - pandas >=1.1.0 - [multitax](https://github.com/pirovc/multitax) >=1.3.1 @@ -46,6 +43,11 @@ However, there are possible performance benefits compiling ganon from source in python3 -V # >=3.6 python3 -m pip install "pandas>=1.1.0" "multitax>=1.3.1" ``` +### Dependencies C++ + +- GCC >=7 +- CMake >=3.10 +- zlib ### Downloading and building ganon + submodules @@ -54,12 +56,14 @@ git clone --recurse-submodules https://github.com/pirovc/ganon.git ``` ```bash +# Install Python side cd ganon python3 setup.py install --record files.txt # optional -mkdir build_cpp -cd build_cpp +# Compile and install C++ side +mkdir -p build +cd build cmake -DCMAKE_BUILD_TYPE=Release -DVERBOSE_CONFIG=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCONDA=OFF -DLONGREADS=OFF .. -make +make -j 4 sudo make install # optional ``` @@ -78,7 +82,7 @@ ganon -h ```bash python3 -m unittest discover -s tests/ganon/integration/ python3 -m unittest discover -s tests/ganon/integration_online/ # optional - downloads large files -cd build_cpp/ +cd build/ ctest -VV . ``` @@ -103,7 +107,7 @@ cd raptor mkdir -p build cd build cmake .. -make +make -j 4 ``` - binaries will be located in the `bin` directory

sb>takRK3-w1K3UgMDRSmUl%IdduQ~ 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