This is an automated email from the git hooks/post-receive script. misterc-guest pushed a commit to annotated tag upstream/2.3.2.001platform-issues10-6f85721+dfsg in repository seqan2.
commit 49551449f5f2fd10f41a70446d23aec9a6e84932 Author: Michael R. Crusoe <[email protected]> Date: Wed Jan 3 09:11:34 2018 -0800 New upstream version 2.3.2.001platform-issues10-6f85721+dfsg --- apps/alf/CMakeLists.txt | 2 +- apps/alf/alf.cpp | 2 +- apps/bs_tools/CMakeLists.txt | 2 +- apps/dfi/CMakeLists.txt | 2 +- apps/fiona/CMakeLists.txt | 2 +- apps/fiona/compute_gain.cpp | 6 +- apps/fx_tools/CMakeLists.txt | 2 +- apps/gustaf/CMakeLists.txt | 2 +- apps/insegt/CMakeLists.txt | 2 +- apps/mason2/CMakeLists.txt | 2 +- apps/mason2/mason_genome.cpp | 2 +- apps/mason2/mason_variator.cpp | 10 +- apps/micro_razers/CMakeLists.txt | 2 +- apps/ngs_roi/CMakeLists.txt | 4 +- apps/pair_align/CMakeLists.txt | 2 +- apps/param_chooser/CMakeLists.txt | 2 +- apps/rabema/CMakeLists.txt | 4 +- apps/rabema/rabema_build_gold_standard.cpp | 2 +- apps/rabema/rabema_evaluate.cpp | 4 +- apps/razers/CMakeLists.txt | 2 +- apps/razers3/CMakeLists.txt | 2 +- apps/rep_sep/CMakeLists.txt | 2 +- apps/sak/CMakeLists.txt | 4 +- apps/sam2matrix/CMakeLists.txt | 2 +- apps/samcat/CMakeLists.txt | 2 +- apps/searchjoin/CMakeLists.txt | 2 +- apps/searchjoin/db.h | 8 +- apps/seqan_tcoffee/CMakeLists.txt | 2 +- apps/seqcons2/CMakeLists.txt | 2 +- apps/sgip/CMakeLists.txt | 2 +- apps/snp_store/CMakeLists.txt | 2 +- apps/splazers/CMakeLists.txt | 2 +- apps/stellar/CMakeLists.txt | 2 +- apps/stellar/stellar.cpp | 2 +- apps/tree_recon/CMakeLists.txt | 2 +- apps/yara/CMakeLists.txt | 2 +- dox/CMakeLists.txt | 2 +- .../align/local_alignment_waterman_eggert_impl.h | 39 ++--- include/seqan/arg_parse/arg_parse_argument.h | 36 +---- include/seqan/arg_parse/tool_doc.h | 7 - include/seqan/bam_io/bam_alignment_record_util.h | 2 +- include/seqan/index/index_base.h | 2 +- include/seqan/index/index_fm_compressed_sa.h | 6 +- include/seqan/index/index_fm_lf_table.h | 2 +- .../seqan/index/index_fm_rank_dictionary_base.h | 2 +- .../seqan/index/index_fm_rank_dictionary_levels.h | 6 +- .../seqan/index/index_fm_rank_dictionary_naive.h | 2 +- include/seqan/index/index_qgram.h | 2 +- include/seqan/modifier/modifier_padding.h | 51 +----- include/seqan/platform.h | 4 +- include/seqan/seeds/seeds_global_chaining.h | 162 ++++++++----------- include/seqan/stream/iter_stream.h | 178 +++++++++------------ manual/source/Infrastructure/Use/Install.rst | 42 ++--- tests/align/test_alignment_algorithms_local.h | 47 ------ .../align/test_alignment_algorithms_local_banded.h | 32 ---- tests/arg_parse/test_arg_parse.cpp | 1 - tests/arg_parse/test_arg_parse_argument.h | 28 ---- tests/modifier/test_modifier.cpp | 3 +- tests/modifier/test_modifier_string_padding.h | 24 --- tests/seeds/test_seeds_global_chaining.cpp | 26 --- util/cmake/SeqAnBuildSystem.cmake | 25 +-- util/pkgconfig/seqan.pc.in | 4 +- util/skel/app_template/CMakeLists.txt | 2 +- 63 files changed, 257 insertions(+), 578 deletions(-) diff --git a/apps/alf/CMakeLists.txt b/apps/alf/CMakeLists.txt index 20b98cd..e198d89 100644 --- a/apps/alf/CMakeLists.txt +++ b/apps/alf/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install alf in ${PREFIX}/bin directory install (TARGETS alf - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/alf for SeqAn release builds. diff --git a/apps/alf/alf.cpp b/apps/alf/alf.cpp index b4b45d8..813a377 100644 --- a/apps/alf/alf.cpp +++ b/apps/alf/alf.cpp @@ -74,7 +74,7 @@ int main(int argc, const char * argv[]) // Options Section: Input / Output parameters. addSection(parser, "Input / Output"); addOption(parser, seqan::ArgParseOption("i", "input-file", "Name of the multi-FASTA input file.", seqan::ArgParseArgument::INPUT_FILE)); - setValidValues(parser, "input-file", seqan::SeqFileIn::getFileExtensions()); + setValidValues(parser, "input-file", "fa fasta"); setRequired(parser, "input-file"); addOption(parser, seqan::ArgParseOption("o", "output-file", "Name of the file to which the tab-delimtied matrix with pairwise scores will be written to. Default is to write to stdout.", seqan::ArgParseArgument::OUTPUT_FILE)); setValidValues(parser, "output-file", "alf.tsv"); diff --git a/apps/bs_tools/CMakeLists.txt b/apps/bs_tools/CMakeLists.txt index ebe3ab8..8732293 100644 --- a/apps/bs_tools/CMakeLists.txt +++ b/apps/bs_tools/CMakeLists.txt @@ -99,7 +99,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install bs_tools in ${PREFIX}/bin directory install (TARGETS bisar casbar four2three - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/bs_tools for SeqAn release builds. diff --git a/apps/dfi/CMakeLists.txt b/apps/dfi/CMakeLists.txt index 1b9274a..ee9e7c6 100644 --- a/apps/dfi/CMakeLists.txt +++ b/apps/dfi/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install dfi in ${PREFIX}/bin directory install (TARGETS dfi - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/dfi for SeqAn release builds. diff --git a/apps/fiona/CMakeLists.txt b/apps/fiona/CMakeLists.txt index 9e68130..babd267 100644 --- a/apps/fiona/CMakeLists.txt +++ b/apps/fiona/CMakeLists.txt @@ -83,7 +83,7 @@ if (NOT SEQAN_PREFIX_SHARE_DOC) endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install fiona in ${PREFIX}/bin directory -install (TARGETS fiona compute_gain DESTINATION ${CMAKE_INSTALL_BINDIR}) +install (TARGETS fiona compute_gain DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/fiona for SeqAn release builds. diff --git a/apps/fiona/compute_gain.cpp b/apps/fiona/compute_gain.cpp index 26876a8..523daa5 100644 --- a/apps/fiona/compute_gain.cpp +++ b/apps/fiona/compute_gain.cpp @@ -798,7 +798,7 @@ parseCommandLine(Options & options, int argc, char const ** argv) addOption(parser, seqan::ArgParseOption("g", "genome", "Genome file.", seqan::ArgParseOption::INPUT_FILE, "GENOME.fa")); setRequired(parser, "genome"); - setValidValues(parser, "genome", seqan::SeqFileIn::getFileExtensions()); + setValidValues(parser, "genome", "fa fasta"); addOption(parser, seqan::ArgParseOption("", "pre", "Pre-correction SAM file.", seqan::ArgParseOption::INPUT_FILE, "PRE.{sam,bam}")); @@ -1028,10 +1028,10 @@ int main(int argc, char const ** argv) stop = atEnd(inPostBam); else stop = atEnd(inPostFastq); - + if (stop) break; - + // Read next record into chunk. try { diff --git a/apps/fx_tools/CMakeLists.txt b/apps/fx_tools/CMakeLists.txt index 09a265d..b0e9d7e 100644 --- a/apps/fx_tools/CMakeLists.txt +++ b/apps/fx_tools/CMakeLists.txt @@ -55,7 +55,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install fx_tools in ${PREFIX}/bin directory install (TARGETS fx_bam_coverage - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/fx_tools for SeqAn release builds. diff --git a/apps/gustaf/CMakeLists.txt b/apps/gustaf/CMakeLists.txt index a1b28ca..d8ae684 100644 --- a/apps/gustaf/CMakeLists.txt +++ b/apps/gustaf/CMakeLists.txt @@ -77,7 +77,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install gustaf in ${PREFIX}/bin directory install (TARGETS gustaf gustaf_mate_joining - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/gustaf for SeqAn release builds. diff --git a/apps/insegt/CMakeLists.txt b/apps/insegt/CMakeLists.txt index d78484a..6adda64 100644 --- a/apps/insegt/CMakeLists.txt +++ b/apps/insegt/CMakeLists.txt @@ -61,7 +61,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install insegt in ${PREFIX}/bin directory install (TARGETS insegt - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/insegt for SeqAn release builds. diff --git a/apps/mason2/CMakeLists.txt b/apps/mason2/CMakeLists.txt index 57dc904..eaf4345 100644 --- a/apps/mason2/CMakeLists.txt +++ b/apps/mason2/CMakeLists.txt @@ -143,7 +143,7 @@ install (TARGETS mason_frag_sequencing mason_simulator mason_splicing mason_variator - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/mason2 for SeqAn release builds. diff --git a/apps/mason2/mason_genome.cpp b/apps/mason2/mason_genome.cpp index a41cf4d..76383cc 100644 --- a/apps/mason2/mason_genome.cpp +++ b/apps/mason2/mason_genome.cpp @@ -115,7 +115,7 @@ parseCommandLine(MasonGenomeOptions & options, int argc, char const ** argv) addSection(parser, "Output Options"); addOption(parser, seqan::ArgParseOption("o", "out-file", "Output file.", seqan::ArgParseOption::OUTPUT_FILE, "FILE")); - setValidValues(parser, "out-file", seqan::SeqFileOut::getFileExtensions()); + setValidValues(parser, "out-file", "fa fasta"); setRequired(parser, "out-file"); // Add Examples Section. diff --git a/apps/mason2/mason_variator.cpp b/apps/mason2/mason_variator.cpp index e75ffc2..cc27c96 100644 --- a/apps/mason2/mason_variator.cpp +++ b/apps/mason2/mason_variator.cpp @@ -710,7 +710,7 @@ public: { if (isNearN(seq, pos)) return false; // No SNP next to an N. - + // We simulate an alternative base for each haplotype. seqan::Dna5 from = seq[pos]; @@ -1575,7 +1575,7 @@ public: vcfRecord.rID = svRecord.rId; vcfRecord.beginPos = svRecord.pos - 1; - vcfRecord.id = variants.getVariantName(variants.posToIdx(Variants::SV, svIdx)); + vcfRecord.id = variants.getVariantName(variants.posToIdx(Variants::SV, svIdx)); appendValue(vcfRecord.ref, contig[vcfRecord.beginPos]); vcfRecord.alt = "<INV>"; vcfRecord.filter = "PASS"; @@ -1613,7 +1613,7 @@ public: seqan::VcfRecord vcfRecord; vcfRecord.rID = svRecord.rId; vcfRecord.beginPos = svRecord.pos - 1; - vcfRecord.id = variants.getVariantName(variants.posToIdx(Variants::SV, svIdx)); + vcfRecord.id = variants.getVariantName(variants.posToIdx(Variants::SV, svIdx)); vcfRecord.filter = "PASS"; std::stringstream ss; ss << "SVTYPE=DUP;SVLEN=" << svRecord.size << ";END=" << svRecord.pos + svRecord.size @@ -1814,12 +1814,12 @@ parseCommandLine(MasonVariatorOptions & options, int argc, char const ** argv) addOption(parser, seqan::ArgParseOption("", "meth-fasta-in", "Path to load original methylation levels from. " "Methylation levels are simulated if omitted.", seqan::ArgParseOption::INPUT_FILE, "FILE")); - setValidValues(parser, "meth-fasta-in", seqan::SeqFileIn::getFileExtensions()); + setValidValues(parser, "meth-fasta-in", "fa fasta"); addOption(parser, seqan::ArgParseOption("", "meth-fasta-out", "Path to write methylation levels to as FASTA. " "Only written if \\fB-of\\fP/\\fB--out-fasta\\fP is given.", seqan::ArgParseOption::OUTPUT_FILE, "FILE")); - setValidValues(parser, "meth-fasta-out", seqan::SeqFileOut::getFileExtensions()); + setValidValues(parser, "meth-fasta-out", "fa fasta"); // ---------------------------------------------------------------------- diff --git a/apps/micro_razers/CMakeLists.txt b/apps/micro_razers/CMakeLists.txt index 4449ac4..5e2dd4f 100644 --- a/apps/micro_razers/CMakeLists.txt +++ b/apps/micro_razers/CMakeLists.txt @@ -62,7 +62,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install micro_razers in ${PREFIX}/bin directory install (TARGETS micro_razers - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/micro_razers for SeqAn release builds. diff --git a/apps/ngs_roi/CMakeLists.txt b/apps/ngs_roi/CMakeLists.txt index 3633699..2ee38bd 100644 --- a/apps/ngs_roi/CMakeLists.txt +++ b/apps/ngs_roi/CMakeLists.txt @@ -77,7 +77,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) install (TARGETS bam2roi roi_feature_projection roi_plot_thumbnails - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install helper scripts into ${PREFIX}/bin directory. install (FILES # Scripts for sorting. @@ -88,7 +88,7 @@ install (FILES # Scripts for sorting. tool_shed/roi_plot_9.sh tool_shed/plot.awk tool_shed/ps2pswLinks.gawk - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/ngs_roi for SeqAn release builds. diff --git a/apps/pair_align/CMakeLists.txt b/apps/pair_align/CMakeLists.txt index 7f1009a..70f9e5c 100644 --- a/apps/pair_align/CMakeLists.txt +++ b/apps/pair_align/CMakeLists.txt @@ -60,7 +60,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install pair_align in ${PREFIX}/bin directory install (TARGETS pair_align - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/pair_align for SeqAn release builds. diff --git a/apps/param_chooser/CMakeLists.txt b/apps/param_chooser/CMakeLists.txt index 005ec4c..ef4cfeb 100644 --- a/apps/param_chooser/CMakeLists.txt +++ b/apps/param_chooser/CMakeLists.txt @@ -62,7 +62,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install param_chooser in ${PREFIX}/bin directory install (TARGETS param_chooser - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/param_chooser for SeqAn release builds. diff --git a/apps/rabema/CMakeLists.txt b/apps/rabema/CMakeLists.txt index 96d322a..723e225 100644 --- a/apps/rabema/CMakeLists.txt +++ b/apps/rabema/CMakeLists.txt @@ -91,11 +91,11 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) install (TARGETS rabema_prepare_sam rabema_build_gold_standard rabema_evaluate - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install rabema in /bin directory install (TARGETS rabema_prepare_sam rabema_build_gold_standard rabema_evaluate - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/pair_align for SeqAn release builds. diff --git a/apps/rabema/rabema_build_gold_standard.cpp b/apps/rabema/rabema_build_gold_standard.cpp index 1edbe30..08ac1fa 100644 --- a/apps/rabema/rabema_build_gold_standard.cpp +++ b/apps/rabema/rabema_build_gold_standard.cpp @@ -1003,7 +1003,7 @@ parseCommandLine(BuildGoldStandardOptions & options, int argc, char const ** arg addOption(parser, seqan::ArgParseOption("r", "reference", "Path to load reference FASTA from.", seqan::ArgParseArgument::INPUT_FILE, "FASTA")); setRequired(parser, "reference", true); - setValidValues(parser, "reference", seqan::SeqFileIn::getFileExtensions()); + setValidValues(parser, "reference", "fa fasta"); addOption(parser, seqan::ArgParseOption("b", "in-bam", "Path to load the \"perfect\" SAM/BAM file from.", seqan::ArgParseArgument::INPUT_FILE, "BAM")); setValidValues(parser, "in-bam", BamFileIn::getFileExtensions()); diff --git a/apps/rabema/rabema_evaluate.cpp b/apps/rabema/rabema_evaluate.cpp index 67b3bf9..89c2707 100644 --- a/apps/rabema/rabema_evaluate.cpp +++ b/apps/rabema/rabema_evaluate.cpp @@ -1064,7 +1064,7 @@ parseCommandLine(RabemaEvaluationOptions & options, int argc, char const ** argv // setRequired(parser, "out-gsi", true); addOption(parser, seqan::ArgParseOption("r", "reference", "Path to load reference FASTA from.", seqan::ArgParseArgument::INPUT_FILE, "FASTA")); - setValidValues(parser, "reference", seqan::SeqFileIn::getFileExtensions()); + setValidValues(parser, "reference", "fa fasta"); setRequired(parser, "reference", true); addOption(parser, seqan::ArgParseOption("g", "in-gsi", "Path to load gold standard intervals from. If compressed using gzip, " @@ -1229,7 +1229,7 @@ parseCommandLine(RabemaEvaluationOptions & options, int argc, char const ** argv getOptionValue(options.checkSorting, parser, "dont-check-sorting"); options.checkSorting = !options.checkSorting; - + options.showMissedIntervals = isSet(parser, "show-missed-intervals"); options.showSuperflousIntervals = isSet(parser, "show-invalid-hits"); options.showAdditionalIntervals = isSet(parser, "show-additional-hits"); diff --git a/apps/razers/CMakeLists.txt b/apps/razers/CMakeLists.txt index 8b49881..be52d54 100644 --- a/apps/razers/CMakeLists.txt +++ b/apps/razers/CMakeLists.txt @@ -66,7 +66,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install razers in ${PREFIX}/bin directory install (TARGETS razers - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/razers for SeqAn release builds. diff --git a/apps/razers3/CMakeLists.txt b/apps/razers3/CMakeLists.txt index 9ec8468..0eb5157 100644 --- a/apps/razers3/CMakeLists.txt +++ b/apps/razers3/CMakeLists.txt @@ -92,7 +92,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install razers3 in ${PREFIX}/bin directory install (TARGETS razers3 - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/razers3 for SeqAn release builds. diff --git a/apps/rep_sep/CMakeLists.txt b/apps/rep_sep/CMakeLists.txt index 2e11fe6..c8b6312 100644 --- a/apps/rep_sep/CMakeLists.txt +++ b/apps/rep_sep/CMakeLists.txt @@ -64,7 +64,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install rep_sep in ${PREFIX}/bin directory install (TARGETS rep_sep - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/rep_sep for SeqAn release builds. diff --git a/apps/sak/CMakeLists.txt b/apps/sak/CMakeLists.txt index c5e9f5b..3687181 100644 --- a/apps/sak/CMakeLists.txt +++ b/apps/sak/CMakeLists.txt @@ -68,7 +68,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install sak in ${PREFIX}/bin directory install (TARGETS sak - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/sak for SeqAn release builds. @@ -77,7 +77,7 @@ install (FILES LICENSE ${CMAKE_CURRENT_BINARY_DIR}/README.sak.txt DESTINATION ${SEQAN_PREFIX_SHARE_DOC}) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/sak.1 - DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + DESTINATION ${SEQAN_PREFIX_SHARE_DOC}/man) # ---------------------------------------------------------------------------- # App Test diff --git a/apps/sam2matrix/CMakeLists.txt b/apps/sam2matrix/CMakeLists.txt index 3ea10b4..e0d60ad 100644 --- a/apps/sam2matrix/CMakeLists.txt +++ b/apps/sam2matrix/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install sam2matrix in ${PREFIX}/bin directory install (TARGETS sam2matrix - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/sam2matrix for SeqAn release builds. diff --git a/apps/samcat/CMakeLists.txt b/apps/samcat/CMakeLists.txt index 7c1664a..1fada83 100644 --- a/apps/samcat/CMakeLists.txt +++ b/apps/samcat/CMakeLists.txt @@ -63,7 +63,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install samcat in ${PREFIX}/bin directory install (TARGETS samcat - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/samcat for SeqAn release builds. diff --git a/apps/searchjoin/CMakeLists.txt b/apps/searchjoin/CMakeLists.txt index ceeaab4..576df51 100644 --- a/apps/searchjoin/CMakeLists.txt +++ b/apps/searchjoin/CMakeLists.txt @@ -66,7 +66,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install searchjoin in ${PREFIX}/bin directory install (TARGETS s4_search s4_join - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/searchjoin for SeqAn release builds. diff --git a/apps/searchjoin/db.h b/apps/searchjoin/db.h index 8d5e503..bec0120 100644 --- a/apps/searchjoin/db.h +++ b/apps/searchjoin/db.h @@ -130,25 +130,25 @@ namespace seqan template <> struct Fibre<TDbDnaSaSmall, FibreSA> { - typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, DefaultIndexStringSpec<TDbDnaSaSmall>::Type> Type; + typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, StringSpec<TDbDnaSaSmall>::Type> Type; }; template <> struct Fibre<TDbGeoSaSmall, FibreSA> { - typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, DefaultIndexStringSpec<TDbGeoSaSmall>::Type> Type; + typedef String<Pair<unsigned int, unsigned char, BitPacked<24, 8> >, StringSpec<TDbGeoSaSmall>::Type> Type; }; template <> struct Fibre<TDbDnaSaHuge, FibreSA> { - typedef String<Pair<unsigned int, unsigned char, Pack>, DefaultIndexStringSpec<TDbDnaSaHuge>::Type> Type; + typedef String<Pair<unsigned int, unsigned char, Pack>, StringSpec<TDbDnaSaHuge>::Type> Type; }; template <> struct Fibre<TDbGeoSaHuge, FibreSA> { - typedef String<Pair<unsigned int, unsigned char, Pack>, DefaultIndexStringSpec<TDbDnaSaHuge>::Type> Type; + typedef String<Pair<unsigned int, unsigned char, Pack>, StringSpec<TDbDnaSaHuge>::Type> Type; }; } diff --git a/apps/seqan_tcoffee/CMakeLists.txt b/apps/seqan_tcoffee/CMakeLists.txt index c8df67c..66e85e2 100644 --- a/apps/seqan_tcoffee/CMakeLists.txt +++ b/apps/seqan_tcoffee/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install seqan_tcoffee in ${PREFIX}/bin directory install (TARGETS seqan_tcoffee - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/seqan_tcoffee for SeqAn release builds. diff --git a/apps/seqcons2/CMakeLists.txt b/apps/seqcons2/CMakeLists.txt index 8edf724..8b5fcc2 100644 --- a/apps/seqcons2/CMakeLists.txt +++ b/apps/seqcons2/CMakeLists.txt @@ -62,7 +62,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install seqcons2 in ${PREFIX}/bin directory install (TARGETS seqcons2 - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/seqcons2 for SeqAn release builds. diff --git a/apps/sgip/CMakeLists.txt b/apps/sgip/CMakeLists.txt index 6f692c4..71a28ac 100755 --- a/apps/sgip/CMakeLists.txt +++ b/apps/sgip/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install sgip in ${PREFIX}/bin directory install (TARGETS sgip - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/sgip for SeqAn release builds. diff --git a/apps/snp_store/CMakeLists.txt b/apps/snp_store/CMakeLists.txt index 797b248..e846ec3 100644 --- a/apps/snp_store/CMakeLists.txt +++ b/apps/snp_store/CMakeLists.txt @@ -71,7 +71,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install snp_store in ${PREFIX}/bin directory install (TARGETS snp_store - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/snp_store for SeqAn release builds. diff --git a/apps/splazers/CMakeLists.txt b/apps/splazers/CMakeLists.txt index 35c8386..bb85d5d 100644 --- a/apps/splazers/CMakeLists.txt +++ b/apps/splazers/CMakeLists.txt @@ -68,7 +68,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install splazers in ${PREFIX}/bin directory install (TARGETS splazers - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/splazers for SeqAn release builds. diff --git a/apps/stellar/CMakeLists.txt b/apps/stellar/CMakeLists.txt index f6e0499..a94d1bf 100644 --- a/apps/stellar/CMakeLists.txt +++ b/apps/stellar/CMakeLists.txt @@ -60,7 +60,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install stellar in ${PREFIX}/bin directory install (TARGETS stellar - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/stellar for SeqAn release builds. diff --git a/apps/stellar/stellar.cpp b/apps/stellar/stellar.cpp index f253d47..604cd43 100644 --- a/apps/stellar/stellar.cpp +++ b/apps/stellar/stellar.cpp @@ -569,7 +569,7 @@ void _setParser(ArgumentParser & parser) setDefaultValue(parser, "o", "stellar.gff"); addOption(parser, ArgParseOption("od", "outDisabled", "Name of output file for disabled query sequences.", ArgParseArgument::OUTPUT_FILE)); - setValidValues(parser, "outDisabled", seqan::SeqFileOut::getFileExtensions()); + setValidValues(parser, "outDisabled", "fa fasta"); setDefaultValue(parser, "od", "stellar.disabled.fasta"); addOption(parser, ArgParseOption("t", "no-rt", "Suppress printing running time.")); hideOption(parser, "t"); diff --git a/apps/tree_recon/CMakeLists.txt b/apps/tree_recon/CMakeLists.txt index 2b9a4fc..d39248f 100644 --- a/apps/tree_recon/CMakeLists.txt +++ b/apps/tree_recon/CMakeLists.txt @@ -56,7 +56,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install tree_recon in ${PREFIX}/bin directory install (TARGETS tree_recon - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/tree_recon for SeqAn release builds. diff --git a/apps/yara/CMakeLists.txt b/apps/yara/CMakeLists.txt index fd14881..73ec26a 100644 --- a/apps/yara/CMakeLists.txt +++ b/apps/yara/CMakeLists.txt @@ -136,7 +136,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install yara in ${PREFIX}/bin directory install (TARGETS yara_indexer yara_mapper - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/yara for SeqAn release builds. diff --git a/dox/CMakeLists.txt b/dox/CMakeLists.txt index e5e1189..74b4749 100644 --- a/dox/CMakeLists.txt +++ b/dox/CMakeLists.txt @@ -39,5 +39,5 @@ if (${SEQAN_BUILD_SYSTEM} MATCHES "SEQAN_RELEASE_LIBRARY") # includes SEQAN_RELE --out-dir ${CMAKE_BINARY_DIR}/dox/html) install (DIRECTORY ${CMAKE_BINARY_DIR}/dox/html - DESTINATION ${CMAKE_INSTALL_DOCDIR}) + DESTINATION share/doc/seqan) endif () diff --git a/include/seqan/align/local_alignment_waterman_eggert_impl.h b/include/seqan/align/local_alignment_waterman_eggert_impl.h index 741ca30..d80cfc3 100644 --- a/include/seqan/align/local_alignment_waterman_eggert_impl.h +++ b/include/seqan/align/local_alignment_waterman_eggert_impl.h @@ -188,12 +188,12 @@ TScoreValue getScore(LocalAlignmentFinder<TScoreValue> const & sw) // Function _smithWatermanGetMatrix() // ---------------------------------------------------------------------------- -template <typename TScoreValue, typename TScoreSpec, typename TStringH, typename TStringV> +template <typename TScoreValue, typename TStringH, typename TStringV> TScoreValue _smithWatermanGetMatrix(LocalAlignmentFinder<TScoreValue> & sw, TStringH const & strH, TStringV const & strV, - Score<TScoreValue, TScoreSpec> const & score_, + Score<TScoreValue, Simple> const & score_, TScoreValue cutoff) { // typedefs @@ -220,6 +220,8 @@ _smithWatermanGetMatrix(LocalAlignmentFinder<TScoreValue> & sw, TStringIteratorH x = x_end; TStringIteratorV y; + TScoreValue score_match = scoreMatch(score_); + TScoreValue score_mismatch = scoreMismatch(score_); TScoreValue score_gap = scoreGapExtend(score_); TScoreValue h = 0; @@ -261,15 +263,14 @@ _smithWatermanGetMatrix(LocalAlignmentFinder<TScoreValue> & sw, goPrevious(finger1, 0); goPrevious(finger2, 0); - TScoreValue currScore = score(score_, *x, cy); if (*x == cy) { - v = h + currScore; + v = h + score_match; h = *finger2; } else { - TScoreValue s1 = h + currScore; + TScoreValue s1 = h + score_mismatch; h = *finger2; TScoreValue s2 = score_gap + ((h > v) ? h : v); v = (s1 > s2) ? s1 : s2; @@ -302,15 +303,12 @@ _smithWatermanGetMatrix(LocalAlignmentFinder<TScoreValue> & sw, // ---------------------------------------------------------------------------- // declumping -template <typename TScoreValue, - typename TSequenceH, typename TGapsSpecH, - typename TSequenceV, typename TGapsSpecV, - typename TScoreSpec> +template <typename TScoreValue, typename TSequenceH, typename TGapsSpecH, typename TSequenceV, typename TGapsSpecV> void _smithWatermanDeclump(LocalAlignmentFinder<TScoreValue> & sw , Gaps<TSequenceH, TGapsSpecH> & gapsH, Gaps<TSequenceV, TGapsSpecV> & gapsV, - Score<TScoreValue, TScoreSpec> const & score_) + Score<TScoreValue, Simple> const & score_) { //------------------------------------------------------------------------- //typedefs @@ -366,6 +364,8 @@ _smithWatermanDeclump(LocalAlignmentFinder<TScoreValue> & sw , TSequenceHIter x_stop = x_end; + TScoreValue score_match = scoreMatch(score_); + TScoreValue score_mismatch = scoreMismatch(score_); TScoreValue score_gap = scoreGapExtend(score_); TScoreValue h,v; @@ -456,10 +456,9 @@ _smithWatermanDeclump(LocalAlignmentFinder<TScoreValue> & sw , { goPrevious(finger0, 0); goPrevious(finger1, 0); - TScoreValue currScore = score(score_, *x, cy); if (*x == cy && !(sw.forbidden[position(finger0)])) { - v = h + currScore; + v = h + score_match; h = *finger1; } else @@ -475,7 +474,7 @@ _smithWatermanDeclump(LocalAlignmentFinder<TScoreValue> & sw , else { if(sw.forbidden[position(finger0)]) s1 = 0; - else s1 = h + currScore; + else s1 = h + score_mismatch; } h = *finger1; @@ -523,16 +522,13 @@ _smithWatermanDeclump(LocalAlignmentFinder<TScoreValue> & sw , // ---------------------------------------------------------------------------- // Traceback. -template <typename TSourceH, typename TGapsSpecH, - typename TSourceV, typename TGapsSpecV, - typename TScoreValue, typename TScoreSpec, - unsigned DIMENSION> +template <typename TSourceH, typename TGapsSpecH, typename TSourceV, typename TGapsSpecV, typename TScoreValue, unsigned DIMENSION> typename Iterator<Matrix<TScoreValue, DIMENSION>, Standard >::Type _smithWatermanTrace(Gaps<TSourceH, TGapsSpecH> & gapsH, Gaps<TSourceV, TGapsSpecV> & gapsV, typename LocalAlignmentFinder<TScoreValue>::TBoolMatrix & fb_matrix, Iter< Matrix<TScoreValue, DIMENSION>, PositionIterator > source_, - Score<TScoreValue, TScoreSpec> const & scoring_) { + Score<TScoreValue, Simple> const & scoring_) { //typedefs typedef Iter<Matrix<TScoreValue, DIMENSION>, PositionIterator > TMatrixIterator; typedef typename Position<Matrix<TScoreValue, DIMENSION> >::Type TPosition; @@ -563,6 +559,7 @@ _smithWatermanTrace(Gaps<TSourceH, TGapsSpecH> & gapsH, TSourceIteratorV it_1 = iter(strV, pos_1, Standard()); TSourceIteratorV it_1_end = end(strV); + TScoreValue score_mismatch = scoreMismatch(scoring_); TScoreValue score_gap = scoreGapExtend(scoring_); //------------------------------------------------------------------------- @@ -589,7 +586,7 @@ _smithWatermanTrace(Gaps<TSourceH, TGapsSpecH> & gapsH, d = 0; else{ goNext(it_, 1); - d = *it_ + score(scoring_, *it_0, *it_1); + d = *it_ + score_mismatch; } it_ = source_; @@ -681,9 +678,7 @@ _getNextBestEndPosition(LocalAlignmentFinder<TScoreValue> & sw , // ---------------------------------------------------------------------------- // Wrapper that computes the matrix and does the backtracking for the best alignment -template <typename TSourceH, typename TGapsSpecH, - typename TSourceV, typename TGapsSpecV, - typename TScoreValue, typename TScoreSpec> +template <typename TSourceH, typename TGapsSpecH, typename TSourceV, typename TGapsSpecV, typename TScoreValue, typename TScoreSpec> TScoreValue _smithWaterman(Gaps<TSourceH, TGapsSpecH> & gapsH, Gaps<TSourceV, TGapsSpecV> & gapsV, diff --git a/include/seqan/arg_parse/arg_parse_argument.h b/include/seqan/arg_parse/arg_parse_argument.h index 03f473f..95ebf88 100644 --- a/include/seqan/arg_parse/arg_parse_argument.h +++ b/include/seqan/arg_parse/arg_parse_argument.h @@ -438,28 +438,6 @@ inline bool isOutputFileArgument(ArgParseArgument const & me) } // ---------------------------------------------------------------------------- -// Function isDirectoryArgument() -// ---------------------------------------------------------------------------- - -/*! - * @fn ArgParseArgument#isDirectoryArgument - * @headerfile <seqan/arg_parse.h> - * @brief Returns whether the argument is a directorz argument. - * - * @signature bool isDirectoryArgument(arg); - * - * @param[in] arg The ArgParseArgument to query. - * - * @return bool <tt>true</tt> if it is a directory argument, <tt>false</tt> otherwise. - */ - -inline bool isDirectoryArgument(ArgParseArgument const & me) -{ - return me._argumentType == ArgParseArgument::INPUT_DIRECTORY || - me._argumentType == ArgParseArgument::OUTPUT_DIRECTORY; -} - -// ---------------------------------------------------------------------------- // Function isOutputPrefixArgument() // ---------------------------------------------------------------------------- @@ -945,15 +923,7 @@ inline void _checkValue(ArgParseArgument const & me) { unsigned i = 0; for (std::vector<std::string>::const_iterator it = me.value.begin(); it != me.value.end(); ++it, ++i) - { - auto val = *it; - - if (isDirectoryArgument(me)) // strip trailing slash for directories - if (val[length(val) - 1] == '/') - val.resize(length(val) - 1); - - _checkValue(me, val, i); - } + _checkValue(me, *it, i); } // ---------------------------------------------------------------------------- @@ -1168,10 +1138,6 @@ inline std::string getFileExtension(ArgParseArgument const & me, unsigned pos = if (value.empty()) return ""; - if (isDirectoryArgument(me)) // strip trailing slash for directories - if (value[length(value) - 1] == '/') - value.resize(length(value) - 1); - // If there is a list of valid values then we look for each of these in the path. if (!me.validValues.empty()) { diff --git a/include/seqan/arg_parse/tool_doc.h b/include/seqan/arg_parse/tool_doc.h index 970c0e3..a19a983 100644 --- a/include/seqan/arg_parse/tool_doc.h +++ b/include/seqan/arg_parse/tool_doc.h @@ -444,13 +444,6 @@ public: std::fill_n(out, _layout.leftPadding, ' '); stream << _toText(listItem._term); unsigned pos = _layout.leftPadding + length(listItem._term); - - if (empty(listItem._description)) - { - stream << '\n'; - return; - } - if (pos + _layout.centerPadding > _layout.rightColumnTab) { stream << '\n'; diff --git a/include/seqan/bam_io/bam_alignment_record_util.h b/include/seqan/bam_io/bam_alignment_record_util.h index 15d1ac1..1a7a02f 100644 --- a/include/seqan/bam_io/bam_alignment_record_util.h +++ b/include/seqan/bam_io/bam_alignment_record_util.h @@ -237,7 +237,7 @@ bamRecordToAlignment(Align<TSource, TSpec> & result, TReference & reference, Bam // TODO(holtgrew): Clipping better than copying infix? But is it generic? resize(rows(result), 2); - unsigned len = getAlignmentLengthInRef(record) - countPaddings(record.cigar); + unsigned len = record.beginPos + getAlignmentLengthInRef(record) - countPaddings(record.cigar); setSource(row(result, 0), reference); setClippedEndPosition(row(result, 0), record.beginPos + len); diff --git a/include/seqan/index/index_base.h b/include/seqan/index/index_base.h index 6aa2f5b..1cb2eb8 100644 --- a/include/seqan/index/index_base.h +++ b/include/seqan/index/index_base.h @@ -218,7 +218,7 @@ SEQAN_CONCEPT_REFINE(StringTrieConcept, (TIndex), (StringIndexConcept)) {}; */ template <typename TObject> - struct DefaultIndexStringSpec : StringSpec<TObject> {}; + struct [[deprecated("Deprecated in favor of StringSpec.")]] DefaultIndexStringSpec : StringSpec<TObject> {}; ////////////////////////////////////////////////////////////////////////////// diff --git a/include/seqan/index/index_fm_compressed_sa.h b/include/seqan/index/index_fm_compressed_sa.h index 453fdd3..16fbc0c 100644 --- a/include/seqan/index/index_fm_compressed_sa.h +++ b/include/seqan/index/index_fm_compressed_sa.h @@ -84,8 +84,8 @@ typedef Tag<FibreSparseString_> const FibreSparseString; // ---------------------------------------------------------------------------- template <typename TText, typename TSpec, typename TConfig> -struct DefaultIndexStringSpec<CompressedSA<TText, TSpec, TConfig> > : - DefaultIndexStringSpec<TText> {}; +struct StringSpec<CompressedSA<TText, TSpec, TConfig> > : + StringSpec<TText> {}; // ---------------------------------------------------------------------------- // Metafunction Fibre @@ -97,7 +97,7 @@ struct Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString> // TODO(esiragusa): Change SparseString spec to be SparseString<TValue, TSpec, TConfig>. typedef CompressedSA<TText, TSpec, TConfig> TCSA; typedef typename SAValue<TText>::Type TSAValue_; - typedef typename DefaultIndexStringSpec<TCSA>::Type TSASpec_; + typedef typename StringSpec<TCSA>::Type TSASpec_; typedef String<TSAValue_, TSASpec_> TSA_; typedef SparseString<TSA_, TConfig> Type; }; diff --git a/include/seqan/index/index_fm_lf_table.h b/include/seqan/index/index_fm_lf_table.h index 64d8320..8da0a12 100644 --- a/include/seqan/index/index_fm_lf_table.h +++ b/include/seqan/index/index_fm_lf_table.h @@ -125,7 +125,7 @@ struct Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums> // typedef Tuple<TSize_, ValueSize<TValue_>::VALUE> Type; typedef typename Size<LF<TText, TSpec, TConfig> >::Type TSize_; - typedef typename DefaultIndexStringSpec<TText>::Type TSpec_; + typedef typename StringSpec<TText>::Type TSpec_; typedef String<TSize_, TSpec_> Type; }; diff --git a/include/seqan/index/index_fm_rank_dictionary_base.h b/include/seqan/index/index_fm_rank_dictionary_base.h index f45549c..6d8a5ba 100644 --- a/include/seqan/index/index_fm_rank_dictionary_base.h +++ b/include/seqan/index/index_fm_rank_dictionary_base.h @@ -121,7 +121,7 @@ struct RankDictionary; // ---------------------------------------------------------------------------- template <typename TValue, template <typename, typename> class TRankDictionary, typename TSpec, typename TConfig> -struct DefaultIndexStringSpec<RankDictionary<TValue, TRankDictionary<TSpec, TConfig> > > +struct StringSpec<RankDictionary<TValue, TRankDictionary<TSpec, TConfig> > > { typedef typename TConfig::Fibre Type; }; diff --git a/include/seqan/index/index_fm_rank_dictionary_levels.h b/include/seqan/index/index_fm_rank_dictionary_levels.h index 2eeeadd..8b0a446 100644 --- a/include/seqan/index/index_fm_rank_dictionary_levels.h +++ b/include/seqan/index/index_fm_rank_dictionary_levels.h @@ -354,7 +354,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreRanks> { typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_; typedef RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> > TEntry_; - typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_; + typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_; typedef String<TEntry_, TFibreSpec_> Type; }; @@ -364,7 +364,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreSuperBlocks> { typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_; typedef typename RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >::Type TSuperBlocks_; - typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_; + typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_; typedef String<TSuperBlocks_, TFibreSpec_> Type; }; @@ -374,7 +374,7 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreUltraBlocks> { typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary_; typedef typename RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >::Type TUltraBlocks_; - typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_; + typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_; typedef String<TUltraBlocks_, TFibreSpec_> Type; }; diff --git a/include/seqan/index/index_fm_rank_dictionary_naive.h b/include/seqan/index/index_fm_rank_dictionary_naive.h index dcd9ab0..1884c2e 100644 --- a/include/seqan/index/index_fm_rank_dictionary_naive.h +++ b/include/seqan/index/index_fm_rank_dictionary_naive.h @@ -61,7 +61,7 @@ struct Fibre<RankDictionary<TValue, Naive<TSpec, TConfig> >, FibreRanks> { typedef RankDictionary<TValue, Naive<TSpec, TConfig> > TRankDictionary_; typedef typename Size<TRankDictionary_>::Type TSize_; - typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type TFibreSpec_; + typedef typename StringSpec<TRankDictionary_>::Type TFibreSpec_; typedef String<TSize_, TFibreSpec_> Type; }; diff --git a/include/seqan/index/index_qgram.h b/include/seqan/index/index_qgram.h index 7611d23..90ba86f 100644 --- a/include/seqan/index/index_qgram.h +++ b/include/seqan/index/index_qgram.h @@ -343,7 +343,7 @@ struct Fibre< Index<TText, TSpec>, FibreCounts> { typename Size< TText >::Type, typename Size< Index<TText, TSpec> >::Type >, - typename DefaultIndexStringSpec< Index<TText, TSpec> >::Type + typename StringSpec< Index<TText, TSpec> >::Type > Type; }; diff --git a/include/seqan/modifier/modifier_padding.h b/include/seqan/modifier/modifier_padding.h index 88aad70..83bb805 100644 --- a/include/seqan/modifier/modifier_padding.h +++ b/include/seqan/modifier/modifier_padding.h @@ -165,7 +165,7 @@ struct DefaultIteratorSpec< ModifiedString<THost, ModPadding> > * @param [in,out] str The modified string to be padded. * @param [in] size The number of padded characters. * @param [in] pad The character to pad the sequence with. - * + * * @datarace Not thread-safe. */ @@ -211,51 +211,6 @@ length(ModifiedString<THost, ModPadding> const & me) } // ---------------------------------------------------------------------------- -// Function cargoValue() -// ---------------------------------------------------------------------------- - -template <typename THost> -inline typename Reference<ModifiedString<THost, ModPadding> >::Type -cargoValue(ModifiedString<THost, ModPadding> & me) -{ - return cargo(me)._paddedValue; -} - -// NOTE(rrahn): The problem with the padding symbol is, that it is always stored as a member -// of the modifier class. Hence, if the modifier is const all it's members are const. -// Now, the cargo could be either defined mutable or, and this what we did right now, the -// the const is cast-away. However, we use SFINAE to only apply this hack to the Host types, -// for which this becomes relevant. That are Host types like the Segment class who copy pointer semantics, i.e. -// the constness of the object is not propagated to the underlying source. - -// The default version, where Reference<THost const>::Type gives back a const reference. -template <typename THost, - std::enable_if_t<std::is_same<std::remove_reference_t< - typename Reference<ModifiedString<THost, ModPadding>>::Type>, - std::add_const_t<std::remove_reference_t< - typename Reference<ModifiedString<THost, ModPadding>>::Type>>>::value, - int> = 0> -inline typename Reference<ModifiedString<THost, ModPadding> >::Type -cargoValue(ModifiedString<THost, ModPadding> const & me) -{ - return cargo(me)._paddedValue; -} - -// The version, where Reference<THost const>::Type gives back a non-const reference. -template <typename THost, - std::enable_if_t<!std::is_same<std::remove_reference_t< - typename Reference<ModifiedString<THost, ModPadding>>::Type>, - std::add_const_t<std::remove_reference_t< - typename Reference<ModifiedString<THost, ModPadding>>::Type>>>::value, - int> = 0> -inline typename Reference<ModifiedString<THost, ModPadding> >::Type -cargoValue(ModifiedString<THost, ModPadding> const & me) -{ - using TTargetType = typename Reference<ModifiedString<THost, ModPadding> >::Type; - return const_cast<TTargetType>(cargo(me)._paddedValue); -} - -// ---------------------------------------------------------------------------- // Function value() // ---------------------------------------------------------------------------- @@ -264,7 +219,7 @@ inline typename Reference<ModifiedString<THost, ModPadding> >::Type value(ModifiedString<THost, ModPadding> & me, TPosition const pos) { SEQAN_ASSERT_LT(pos, static_cast<TPosition>(length(me))); - return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? host(me)[pos] : cargoValue(me); + return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? host(me)[pos] : cargo(me)._paddedValue; } template <typename THost, typename TPosition> @@ -272,7 +227,7 @@ inline typename Reference<ModifiedString<THost, ModPadding> const>::Type value(ModifiedString<THost, ModPadding> const & me, TPosition const pos) { SEQAN_ASSERT_LT(pos, static_cast<TPosition>(length(me))); - return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? value(host(me), pos) : cargoValue(me); + return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? value(host(me), pos) : cargo(me)._paddedValue; } // ---------------------------------------------------------------------------- diff --git a/include/seqan/platform.h b/include/seqan/platform.h index e743c71..ab0c7ba 100644 --- a/include/seqan/platform.h +++ b/include/seqan/platform.h @@ -477,9 +477,9 @@ typedef int8_t __int8; // nolint #include <endian.h> #endif // __GLIBC__ -#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || (defined(__has_include) && __has_include(<sys/endian.h>)) #include <sys/endian.h> -#endif // defined *BSD +#endif // defined(__FreeBSD__) #ifndef SEQAN_BIG_ENDIAN #if (defined( _BYTE_ORDER ) && ( _BYTE_ORDER == _BIG_ENDIAN )) || \ diff --git a/include/seqan/seeds/seeds_global_chaining.h b/include/seqan/seeds/seeds_global_chaining.h index ee84323..5a6e867 100644 --- a/include/seqan/seeds/seeds_global_chaining.h +++ b/include/seqan/seeds/seeds_global_chaining.h @@ -62,23 +62,6 @@ typedef Tag<SparseChaining_> SparseChaining; // Functions // =========================================================================== -template <typename TIntermediate> -inline bool _checkScoreInvariant(TIntermediate const & list) -{ - if (list.empty()) - return true; - auto it = list.begin(); - auto score = it->i2; - ++it; - for (; it != list.end(); ++it) - { - if (score > it->i2) - return false; - score = it->i2; - } - return true; -} - /*! * @fn chainSeedsGlobally * @headerfile <seqan/seeds.h> @@ -114,13 +97,6 @@ inline bool _checkScoreInvariant(TIntermediate const & list) */ // TODO(holtgrew): Implement scored! -// NOTE(rrahn): Some general notes regarding the sparse chaining algorithm by Gusfield. -// From the text it is hard to follow the correct algorithm, as one usually expects the y-coordinates to -// be increasing integers (sequence positions). However, the algorithm assumes the coordinates of the -// rectangles to be placed in the fourth quadrant of the cartesian coordinate system (negative y-coordinates). -// To adapt the algorithm for the positive sequence space we sort the y-coordinates in *L* in ascending order. -// We then can use lower_bound and upper_bound on the sorted set to find the corresponding seed j as described in -// the algorithm. template <typename TTargetContainer, typename TSeed, typename TSeedSetSpec> void chainSeedsGlobally( @@ -177,8 +153,8 @@ chainSeedsGlobally( // ----------------------------------------------------------------------- // Step 2: Build the chain. // ----------------------------------------------------------------------- - // We build a list of "intermediate solutions" (referred to as *L* in the Gusfield book). - // Each such solution is represented by the triple (end position in dim1, + // We build a list of "intermediate solutions". Each such + // solution is represented by the triple (end position in dim1, // value of best chain so far, last seed of the chain). typedef Triple<TPosition, TSize, unsigned> TIntermediateSolution; typedef std::multiset<TIntermediateSolution> TIntermediateSolutions; @@ -186,99 +162,89 @@ chainSeedsGlobally( // For all interval points... TIntermediateSolutions intermediateSolutions; - for (TIntervalPointsIterator it_k = begin(intervalPoints), itEnd = end(intervalPoints); it_k != itEnd; ++it_k) { + for (TIntervalPointsIterator it = begin(intervalPoints), itEnd = end(intervalPoints); it != itEnd; ++it) { // The seed belonging ot the interval point is seed k. - TSeed const & seed_k = seeds[it_k->i3]; + TSeed const & seedK = seeds[it->i3]; // std::cout << "Processing interval point (" << it->i1 << ", " << it->i2 << ", " << it->i3 << ")" << std::endl; - if (it_k->i2) { // Is is begin point. - // Find the closest seed j (in y-dimension) with an - // entry in L whose end coordinate is less or equal the begin position of k. + if (it->i2) { // Is is begin point. + // Find the closest seed (in dimension 1) to seed k with an + // entry in intermediateSolutions whose end coordinate in + // dimension 1 is <= the begin coordinate in dimension 1 + // of seedK. // // STL gives us upper_bound which returns a pointer to the // *first* one that compares greater than the reference // one. Searching for the this one and decrementing the // result iterator gives the desired result. - TIntermediateSolution referenceSolution(beginPositionV(seed_k), std::numeric_limits<TSize>::max(), std::numeric_limits<unsigned>::max()); - // std::cout << " intermediateSolutions.upper_bound(" << beginPositionV(seed_k) << ")" << std::endl; - TIntermediateSolutionsIterator it_j = intermediateSolutions.upper_bound(referenceSolution); - - // Special case not dealt with in the book: If L is empty or there is no chain - // that ends before k begins, simply continue with the next point in I. - if (intermediateSolutions.empty() || it_j == intermediateSolutions.begin()) - { - continue; + TIntermediateSolution referenceSolution(beginPositionV(seedK), std::numeric_limits<TSize>::max(), std::numeric_limits<unsigned>::max()); + // std::cout << " intermediateSolutions.upper_bound(" << beginPositionV(seedK) << ")" << std::endl; + TIntermediateSolutionsIterator itJ = intermediateSolutions.upper_bound(referenceSolution); + if (itJ == intermediateSolutions.begin()) { + if (intermediateSolutions.size() > 0 && + intermediateSolutions.rbegin()->i1 <= beginPositionV(seedK)) { + itJ = intermediateSolutions.end(); + --itJ; + } else { + continue; + } + } else { + SEQAN_ASSERT_GT(intermediateSolutions.size(), 0u); // TODO(holtgrew): Remove this assertion? + --itJ; } - // Go to the last value in L, i.e. l_j <= h_k. - --it_j; - // std::cout << " --> " << seeds[it_j->i3] << std::endl; + // std::cout << " --> " << seeds[itJ->i3] << std::endl; // Now, we have found such a seed j. - SEQAN_ASSERT_LEQ(endPositionV(seeds[it_j->i3]), beginPositionV(seed_k)); + SEQAN_ASSERT_LEQ(endPositionV(seeds[itJ->i3]), endPositionV(seedK)); // Update the intermediate solution value for k and set predecessor. - qualityOfChainEndingIn[it_k->i3] += it_j->i2; + qualityOfChainEndingIn[it->i3] += itJ->i2; // std::cout << " UPDATE qualityOfChainEndingIn[" << it->i3 << "] == " << qualityOfChainEndingIn[it->i3] << std::endl; - predecessor[it_k->i3] = it_j->i3; + predecessor[it->i3] = itJ->i3; // std::cout << " predecessor[" << it->i3 << "] == " << itJ->i3 << std::endl; } else { // Is end point. - // Search for the first triple j in L with l_j >= l_k. - // Or to put it in differently, find the first chain that ends - // left and below the chain that ends in k. These are other possible solutions, - // that either result in a better score or must be deleted as the score of the chain ending in k - // is bigger. Hence, every other seed that could connect to both j and k, prefers the one with the higher - // score. + // Search for the first triple in intermediateSolutions + // where the end coordinate in dimension 1 is >= end + // coordinate in dimension 1 for seed k. The corresponding + // seed is seed j. // - // We can use the lower_bound, which gives the first triple j such that l_j >= l_k - SEQAN_ASSERT_GT(endPositionV(seed_k), 0u); - TIntermediateSolution referenceSolution(endPositionV(seed_k), 0, std::numeric_limits<unsigned>::max()); - TIntermediateSolutionsIterator it_j = intermediateSolutions.lower_bound(referenceSolution); - - // If there was a valid solution in L... - if (it_j != intermediateSolutions.end()) - { + // We work with upper_bound here which gives us the first + // value that is > so we have to work around this to get + // >= again... + SEQAN_ASSERT_GT(endPositionV(seedK), 0u); + TIntermediateSolution referenceSolution(endPositionV(seedK), 0, std::numeric_limits<unsigned>::max()); + TIntermediateSolutionsIterator itSol = intermediateSolutions.upper_bound(referenceSolution); + if (itSol == intermediateSolutions.end()) { + // None found. Insert a new triple for seed k. + TIntermediateSolution sol(endPositionV(seedK), qualityOfChainEndingIn[it->i3], it->i3); + // std::cout << " INSERT (" << sol.i1 << ", " << sol.i2 << ", " << sol.i3 << ") " << __LINE__ << std::endl; + intermediateSolutions.insert(sol); + } else { // Found this intermediate solution. - SEQAN_ASSERT_GEQ(it_j->i1, endPositionV(seed_k)); - TSeed const & seed_j = seeds[it_j->i3]; - // ... start a new chain at k if the vertical end of k is - // above the vertical end of the chain ending in j or if - // both k and j end at the same vertical position, while - // the score of the chain ending in k is bigger than the - // score of the chain ending in j. - if (endPositionV(seed_j) > endPositionV(seed_k) || - (endPositionV(seed_j) == endPositionV(seed_k) && qualityOfChainEndingIn[it_k->i3] > it_j->i2)) - { - TIntermediateSolution sol(endPositionV(seed_k), qualityOfChainEndingIn[it_k->i3], it_k->i3); + SEQAN_ASSERT_GEQ(itSol->i1, endPositionV(seedK)); + TSeed const & seedJ = seeds[itSol->i3]; + // Possibly start a new chain at k if the end1 is + // before the end1 of the chain ending in j or they + // end at the same coordinate in dim1 but k already + // has a higher quality than the whole chaing ending + // at j. + if (endPositionV(seedJ) > endPositionV(seedK) || + (endPositionV(seedJ) == endPositionV(seedK) && qualityOfChainEndingIn[it->i3] > itSol->i2)) { + TIntermediateSolution sol(endPositionV(seedK), qualityOfChainEndingIn[it->i3], it->i3); // std::cout << " INSERT (" << sol.i1 << ", " << sol.i2 << ", " << sol.i3 << ")" << __LINE__ << std::endl; intermediateSolutions.insert(sol); + } + } - // Delete all intermediate solutions where end1 >= end1 of k and have a lower score than k - // to ensure that the invariant of V(j) >= V(j'), with j' <= j holds. - // Roughly then, there is no chain ending in a seed below the seed_k, that has a lower score - // than the chain ending in seed_k. Thus the last value in `intermediateSolutions` will - // always point to the optimal chain. - TIntermediateSolutionsIterator itDel = intermediateSolutions.upper_bound(referenceSolution); - TIntermediateSolutionsIterator itDelEnd = intermediateSolutions.end(); - while (itDel != itDelEnd) - { - TIntermediateSolutionsIterator ptr = itDel; - ++itDel; - if (qualityOfChainEndingIn[it_k->i3] > ptr->i2) - { - // std::cout << " ERASE (" << ptr->i1 << ", " << ptr->i2 << ", " << ptr->i3 << ")" << std::endl; - intermediateSolutions.erase(ptr); - } - } + // Delete all intermediate solutions where end1 >= end1 of k and have a lower quality than k. + TIntermediateSolutionsIterator itDel = intermediateSolutions.upper_bound(referenceSolution); + TIntermediateSolutionsIterator itDelEnd = intermediateSolutions.end(); + while (itDel != itDelEnd) { + TIntermediateSolutionsIterator ptr = itDel; + ++itDel; + if (qualityOfChainEndingIn[it->i3] > ptr->i2) { + // std::cout << " ERASE (" << ptr->i1 << ", " << ptr->i2 << ", " << ptr->i3 << ")" << std::endl; + intermediateSolutions.erase(ptr); } - } // ... otherwise, add a triple for k in L if either L is empty or the last triple in - // L has a lower score than the chain ending in k. - else if (intermediateSolutions.empty() || (--it_j)->i2 < qualityOfChainEndingIn[it_k->i3]) - { - // None found. Insert a new triple for seed k. - TIntermediateSolution sol(endPositionV(seed_k), qualityOfChainEndingIn[it_k->i3], it_k->i3); - // std::cout << " INSERT (" << sol.i1 << ", " << sol.i2 << ", " << sol.i3 << ") " << __LINE__ << std::endl; - intermediateSolutions.insert(sol); } - // Check if the invariant holds, that the scores in L are in a non-decreasing order. - SEQAN_ASSERT(_checkScoreInvariant(intermediateSolutions)); } } diff --git a/include/seqan/stream/iter_stream.h b/include/seqan/stream/iter_stream.h index 661905b..6e1e9d7 100644 --- a/include/seqan/stream/iter_stream.h +++ b/include/seqan/stream/iter_stream.h @@ -61,7 +61,7 @@ struct StreamIterator {}; /*! * @class StreamBuffer * @headerfile <seqan/stream.h> - * @brief Reinterprets the std::basic_streambuf to grant access to protected member functions. + * @brief Buffer to use in stream. * * @signature template <typename TValue[, typenam TTraits]> * class StreamBuffer : public std::basic_streambuf<TValue, TTraits>; @@ -69,92 +69,65 @@ struct StreamIterator {}; * @tparam TValue The value type of the stream buffer. * @tparam TTraits The traits to use, defaults to <tt>std::char_traits<TValue></tt>. */ -// TODO(holtgrew): Add documentation for member functions. - // Unfortunately some of the most useful members of basic_streambuf are - // protected, so we define a subclass to cast and access them -template <typename TValue, typename TTraits_ = std::char_traits<TValue>> -struct StreamBuffer : public std::basic_streambuf<TValue, TTraits_> -{ - using TTraits = TTraits_; - using TBasicStream = std::basic_streambuf<TValue, TTraits_>; - - using TBasicStream::eback; - using TBasicStream::gptr; - using TBasicStream::egptr; - using TBasicStream::gbump; - using TBasicStream::underflow; - - using TBasicStream::pbase; - using TBasicStream::pptr; - using TBasicStream::epptr; - using TBasicStream::pbump; - using TBasicStream::overflow; -}; +// TODO(holtgrew): Add documentation for member functions. -// NOTE(rrahn): This is a wrapper for the StreamBuffer class. -// Since we usually work with std::basic_iostreams and their derivatives, we cannot simply cast a pointer to -// std::basic_filebuf to StreamBuffer to expose it's protected member functions. -// To do so, we only use the StreamBuffer to inherit from basic_streambuf (the base class of all buffer implementations.) -// and only expose the protected member functions as public functions. We then store the original basic_streambuf -// in this wrapper class and whenever access to the protected members is required we use a reinterpret_cast to convert -// basic_streambuf* into the public StreamBuffer*. The reinterpret_cast has zero overhead. -// This fixes an undetected error reported w/ the sanitizer option of gcc (https://github.com/seqan/seqan/issues/2104). -template <typename TValue, typename TTraits_ = std::char_traits<TValue>> -class StreamBufferWrapper +// Unfortunately some of the most useful members of basic_streambuf are +// protected, so we define a subclass to cast and access them +template <typename TValue, typename TTraits_ = std::char_traits<TValue> > +class StreamBuffer : public std::basic_streambuf<TValue, TTraits_> { public: + typedef TTraits_ TTraits; + typedef std::basic_streambuf<TValue, TTraits_> TBase; - typedef std::basic_streambuf<TValue, TTraits_> TBasicStreamBuffer; - typedef StreamBuffer<TValue, TTraits_> TPubStreamBuffer_; - typedef typename TPubStreamBuffer_::TTraits TTraits; + using TBase::eback; + using TBase::gptr; + using TBase::egptr; - TBasicStreamBuffer * streamBuf{nullptr}; - - StreamBufferWrapper() = default; - - explicit StreamBufferWrapper(TBasicStreamBuffer * _basicStreamBuf) : streamBuf(_basicStreamBuf) - {} + using TBase::pbase; + using TBase::pptr; + using TBase::epptr; size_t chunkSize(Input) { - return baseBuf()->egptr() - baseBuf()->gptr(); + return egptr() - gptr(); } size_t chunkSize(Output) { - return baseBuf()->epptr() - baseBuf()->pptr(); + return epptr() - pptr(); } template <typename TOffset> void advanceChunk(TOffset ofs, Input) { - baseBuf()->gbump(ofs); + this->gbump(ofs); } template <typename TOffset> void advanceChunk(TOffset ofs, Output) { - baseBuf()->pbump(ofs); + this->pbump(ofs); } void reserveChunk(Input) { - if (baseBuf()->gptr() == baseBuf()->egptr()) - baseBuf()->underflow(); + if (gptr() == egptr()) + this->underflow(); } void reserveChunk(Output) { - if (baseBuf()->pptr() == baseBuf()->epptr()) - baseBuf()->overflow(EOF); + if (pptr() == epptr()) + this->overflow(EOF); } template <typename TOffset> typename std::streampos seekoff(TOffset ofs, std::ios_base::seekdir way, std::ios_base::openmode which) { - return streamBuf->pubseekoff(ofs, way, which); + return TBase::seekoff(ofs, way, which); } template <typename TOffset, typename TDirection> @@ -176,9 +149,9 @@ public: return; if (IsSameType<TDirection, Input>::VALUE) - baseBuf()->underflow(); + this->underflow(); else - baseBuf()->overflow(); + this->overflow(); left = chunkSize(dir); if (SEQAN_UNLIKELY(left == 0)) @@ -194,23 +167,18 @@ public: if (IsSameType<TDirection, Input>::VALUE) { for (; ofs != 0; --ofs) - baseBuf()->sbumpc(); + this->sbumpc(); } if (IsSameType<TDirection, Output>::VALUE) { for (; ofs != 0; --ofs) - baseBuf()->sputc('\0'); + this->sputc('\0'); } } return; } } } - - TPubStreamBuffer_* baseBuf() const - { - return reinterpret_cast<TPubStreamBuffer_ *>(streamBuf); - } }; // ---------------------------------------------------------------------------- @@ -248,13 +216,12 @@ template <typename TStream> class Iter<TStream, StreamIterator<Input> > { public: - typedef typename Value<TStream>::Type TValue; - typedef std::basic_istream<TValue> TIStream; - typedef std::basic_streambuf<TValue> TBasicBuffer; - typedef StreamBufferWrapper<TValue> TStreamBufferWrapper; - typedef typename TStreamBufferWrapper::TPubStreamBuffer_ TStreamBuffer; + typedef typename Value<TStream>::Type TValue; + typedef std::basic_istream<TValue> TIStream; + typedef std::basic_streambuf<TValue> TBasicBuffer; + typedef StreamBuffer<TValue> TStreamBuffer; - TStreamBufferWrapper streamBufWrapper{nullptr}; + TStreamBuffer *streamBuf; /*! * @fn InputStreamIterator::Iter @@ -269,15 +236,17 @@ public: * * Allows default construction, construction from stream, as well as from a @link StreamBuffer @endlink. */ - Iter() = default; + Iter() : streamBuf() + {} - Iter(TIStream & stream) : streamBufWrapper(stream.rdbuf()) + Iter(TIStream & stream) : + streamBuf(static_cast<StreamBuffer<TValue> *>(stream.rdbuf())) { - // printf("streamBuf: %p\n", streamBuf); stream.exceptions(std::ios_base::badbit); } - Iter(TBasicBuffer * buf) : streamBufWrapper(buf) + Iter(TStreamBuffer * buf) : + streamBuf(static_cast<StreamBuffer<TValue> *>(buf)) {} }; @@ -299,13 +268,12 @@ template <typename TStream> class Iter<TStream, StreamIterator<Output> > { public: - typedef typename Value<TStream>::Type TValue; - typedef std::basic_ostream<TValue> TOStream; - typedef std::basic_streambuf<TValue> TBasicBuffer; - typedef StreamBufferWrapper<TValue> TStreamBufferWrapper; - typedef typename TStreamBufferWrapper::TPubStreamBuffer_ TStreamBuffer; + typedef typename Value<TStream>::Type TValue; + typedef std::basic_ostream<TValue> TOStream; + typedef std::basic_streambuf<TValue> TBasicBuffer; + typedef StreamBuffer<TValue> TStreamBuffer; - TStreamBufferWrapper streamBufWrapper{nullptr}; + TStreamBuffer *streamBuf; /*! * @fn Iter::Iter @@ -320,14 +288,17 @@ public: * * Allows default construction, construction from stream, as well as from a @link StreamBuffer @endlink. */ - Iter() = default; + Iter() : streamBuf() + {} - Iter(TOStream & stream) : streamBufWrapper(stream.rdbuf()) + Iter(TOStream & stream): + streamBuf(static_cast<StreamBuffer<TValue> *>(stream.rdbuf())) { stream.exceptions(std::ios_base::badbit); } - Iter(TBasicBuffer * buf) : streamBufWrapper(buf) + Iter(TBasicBuffer *buf): + streamBuf(static_cast<StreamBuffer<TValue> *>(buf)) {} template <typename TValue2> @@ -534,13 +505,13 @@ directionIterator(TContainer &cont, TDirection const &) template <typename TStream, typename TDirection, typename TSize> inline void reserveChunk(Iter<TStream, StreamIterator<TDirection> > &iter, TSize, Input dir) { - iter.streamBufWrapper.reserveChunk(dir); + iter.streamBuf->reserveChunk(dir); } template <typename TStream, typename TDirection, typename TSize> inline void reserveChunk(Iter<TStream, StreamIterator<TDirection> > &iter, TSize, Output dir) { - iter.streamBufWrapper.reserveChunk(dir); + iter.streamBuf->reserveChunk(dir); } // ---------------------------------------------------------------------------- @@ -552,7 +523,7 @@ inline void reserveChunk(Iter<TStream, StreamIterator<TDirection> > &iter, TSize template <typename TStream, typename TDirection, typename TSize> inline void advanceChunk(Iter<TStream, StreamIterator<TDirection> > &iter, TSize size) { - iter.streamBufWrapper.advanceChunk(size, TDirection()); + iter.streamBuf->advanceChunk(size, TDirection()); } // ---------------------------------------------------------------------------- @@ -579,8 +550,8 @@ template <typename TChunk, typename TStream, typename TDirection> inline void getChunk(TChunk &result, Iter<TStream, StreamIterator<Tag<TDirection> > > &iter, Tag<TDirection>) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - getChunk(result, *iter.streamBufWrapper.baseBuf(), Tag<TDirection>()); + SEQAN_ASSERT(iter.streamBuf != NULL); + getChunk(result, *iter.streamBuf, Tag<TDirection>()); } // ---------------------------------------------------------------------------- @@ -591,15 +562,15 @@ template <typename TStream> inline typename Reference<Iter<TStream, StreamIterator<Input> > >::Type value(Iter<TStream, StreamIterator<Input> > &iter) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - return iter.streamBufWrapper.baseBuf()->sgetc(); + SEQAN_ASSERT(iter.streamBuf != NULL); + return iter.streamBuf->sgetc(); } template <typename TStream> inline typename Reference<Iter<TStream, StreamIterator<Input> > const>::Type value(Iter<TStream, StreamIterator<Input> > const &iter) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - return iter.streamBufWrapper.baseBuf()->sgetc(); + SEQAN_ASSERT(iter.streamBuf != NULL); + return iter.streamBuf->sgetc(); } // ---------------------------------------------------------------------------- @@ -629,13 +600,12 @@ setValue(Iter<TStream, StreamIterator<Output> > & iter, TValue const &val) { return setValue(const_cast<Iter<TStream, StreamIterator<Output> > const &>(iter), val); } - template <typename TStream, typename TValue> inline void setValue(Iter<TStream, StreamIterator<Output> > const & iter, TValue const &val) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - iter.streamBufWrapper.baseBuf()->sputc((typename Value<Iter<TStream, StreamIterator<Output> > >::Type)val); + SEQAN_ASSERT(iter.streamBuf != NULL); + iter.streamBuf->sputc((typename Value<Iter<TStream, StreamIterator<Output> > >::Type)val); } // ---------------------------------------------------------------------------- @@ -658,8 +628,8 @@ template <typename TStream> inline void goNext(Iter<TStream, StreamIterator<Input> > & iter) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - iter.streamBufWrapper.baseBuf()->sbumpc(); + SEQAN_ASSERT(iter.streamBuf != NULL); + iter.streamBuf->sbumpc(); } template <typename TStream> @@ -676,8 +646,8 @@ template <typename TContainer, typename TSpec> inline void operator++(Iter<TContainer, StreamIterator<Input> > & iter, int) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - iter.streamBufWrapper.baseBuf()->sbumpc(); + SEQAN_ASSERT(iter.streamBuf != NULL); + iter.streamBuf->sbumpc(); } // ---------------------------------------------------------------------------- @@ -688,8 +658,8 @@ template <typename TStream, typename TOffset, typename TDirection> inline void goFurther(Iter<TStream, StreamIterator<TDirection> > &iter, TOffset ofs) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - iter.streamBufWrapper.goFurther(ofs, TDirection()); + SEQAN_ASSERT(iter.streamBuf != NULL); + iter.streamBuf->goFurther(ofs, TDirection()); } // ---------------------------------------------------------------------------- @@ -700,8 +670,8 @@ template <typename TStream, typename TDirection> inline typename Position<Iter<TStream, StreamIterator<TDirection> > const>::Type position(Iter<TStream, StreamIterator<TDirection> > const & iter) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - return iter.streamBufWrapper.baseBuf()->pubseekoff(0, std::ios_base::cur, + SEQAN_ASSERT(iter.streamBuf != NULL); + return iter.streamBuf->pubseekoff(0, std::ios_base::cur, (IsSameType<TDirection, Input>::VALUE)? std::ios_base::in: std::ios_base::out); } @@ -713,8 +683,8 @@ template <typename TStream, typename TDirection, typename TPosition> inline void setPosition(Iter<TStream, StreamIterator<TDirection> > const & iter, TPosition pos) { - SEQAN_ASSERT(iter.streamBufWrapper.baseBuf() != nullptr); - iter.streamBufWrapper.baseBuf()->pubseekpos(pos, (IsSameType<TDirection, Input>::VALUE)? std::ios_base::in: std::ios_base::out); + SEQAN_ASSERT(iter.streamBuf != NULL); + iter.streamBuf->pubseekpos(pos, (IsSameType<TDirection, Input>::VALUE)? std::ios_base::in: std::ios_base::out); } // ---------------------------------------------------------------------------- @@ -728,13 +698,13 @@ atEnd(Iter<TStream, StreamIterator<Input> > const & iter) typedef typename Value<Iter<TStream, StreamIterator<Input> > >::Type TValue; typedef StreamBuffer<TValue> TStreamBuffer; - if (SEQAN_UNLIKELY(iter.streamBufWrapper.baseBuf() == nullptr)) + if (SEQAN_UNLIKELY(iter.streamBuf == NULL)) { return true; } else { - TStreamBuffer * const buf = iter.streamBufWrapper.baseBuf(); + TStreamBuffer *buf = static_cast<TStreamBuffer*>(iter.streamBuf); if (SEQAN_LIKELY(buf->gptr() < buf->egptr())) return false; else @@ -749,13 +719,13 @@ atEnd(Iter<TStream, StreamIterator<Output> > const & iter) typedef typename Value<Iter<TStream, StreamIterator<Input> > >::Type TValue; typedef StreamBuffer<TValue> TStreamBuffer; - if (SEQAN_UNLIKELY(iter.streamBufWrapper.baseBuf() == nullptr)) + if (SEQAN_UNLIKELY(iter.streamBuf == NULL)) { return true; } else { - TStreamBuffer * const buf = iter.streamBufWrapper.baseBuf(); + TStreamBuffer *buf = static_cast<TStreamBuffer*>(iter.streamBuf); if (SEQAN_LIKELY(buf->pptr() < buf->epptr())) return false; else diff --git a/manual/source/Infrastructure/Use/Install.rst b/manual/source/Infrastructure/Use/Install.rst index e3ce7d4..85dadac 100644 --- a/manual/source/Infrastructure/Use/Install.rst +++ b/manual/source/Infrastructure/Use/Install.rst @@ -32,27 +32,27 @@ SeqAn is available natively on the following platforms. <br/> -+-------------------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Operating System | Package Name | Command | links | -+============+============+================+=========================================+========================================================================================================================================================================+ -| **G** |br| | Arch | seqan (AUR) | *depends* | `info <https://aur.archlinux.org/packages/seqan/>`__ | -| **N** |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **U** |br| | Debian | libseqan2-dev | ``apt install libseqan2-dev`` | `info <https://packages.debian.org/search?keywords=libseqan2-dev>`__ | `contact <mailto:debian-med-packaging()lists.alioth.debian.org>`__ | -| / |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **L** |br| | Fedora | seqan-devel | ``yum install seqan-devel`` | `info <https://apps.fedoraproject.org/packages/seqan-devel>`__ | `contact <mailto:sagitter()fedoraproject.org>`__ | -| **I** |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **N** |br| | Gentoo | seqan | ``emerge sci-biology/seqan`` | `info <https://packages.gentoo.org/packages/sci-biology/seqan>`__ | `contact <mailto:[email protected]>`__ | -| **U** |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **X** |br| | Ubuntu | libseqan2-dev | ``apt install libseqan2-dev`` | `info <https://packages.ubuntu.com/search?keywords=libseqan2-dev&searchon=names&suite=all§ion=all>`__ | `contact <mailto:[email protected]>`__ | -+------------+------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **M** |br| | Homebrew | seqan | ``brew install homebrew/science/seqan`` | `info <http://braumeister.org/repos/Homebrew/homebrew-science/formula/seqan>`__ | `contact <mailto:tim()tim-smith.us>`__ | -| **A** |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **C** |br| | MacPorts | seqan | ``port install seqan`` | `info <https://trac.macports.org/browser/trunk/dports/science/seqan/Portfile>`__ | `contact <mailto:rene.rahn()fu-berlin.de>`__ | -+------------+------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **B** |br| | FreeBSD | seqan | ``pkg install seqan`` | `info <http://freshports.org/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__ | -| **S** |br| +------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **D** |br| | OpenBSD | seqan | ``pkg_add seqan`` | `info <http://openports.se/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__ | -+------------+------------+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Operating System | Package Name | Command | links | ++============+==============+====================+==============================================+==============================================================================================================================================================+ +| **G** |br| | Arch | | | `AUR <https://aur.archlinux.org/packages/?O=0&K=seqan>`__ | +| **N** |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **U** |br| | Debian | libseqan2-dev | ``apt install libseqan2-dev`` | `info <https://packages.debian.org/search?keywords=libseqan2-dev>`__ | `contact <mailto:debian-med-packaging()lists.alioth.debian.org>`__ | +| / |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **L** |br| | Fedora | seqan-devel | ``yum install seqan-devel`` | `info <https://apps.fedoraproject.org/packages/seqan-devel>`__ | `contact <mailto:sagitter()fedoraproject.org>`__ | +| **I** |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **N** |br| | Gentoo | seqan | ``emerge sci-biology/seqan`` | `info <https://packages.gentoo.org/packages/sci-biology/seqan>`__ | `contact <mailto:[email protected]>`__ | +| **U** |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **X** |br| | Ubuntu | seqan-dev | ``apt install seqan-dev`` | `info <http://packages.ubuntu.com/xenial/seqan-dev>`__ | `contact <mailto:ubuntu-motu()lists.ubuntu.com>`__ | ++------------+--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **M** |br| | Homebrew | seqan | ``brew install homebrew/science/seqan`` | `info <http://braumeister.org/repos/Homebrew/homebrew-science/formula/seqan>`__ | `contact <mailto:tim()tim-smith.us>`__ | +| **A** |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **C** |br| | MacPorts | seqan | ``port install seqan`` | `info <https://trac.macports.org/browser/trunk/dports/science/seqan/Portfile>`__ | `contact <mailto:rene.rahn()fu-berlin.de>`__ | ++------------+--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **B** |br| | FreeBSD | seqan | ``pkg install seqan`` | `info <http://freshports.org/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__ | +| **S** |br| +--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **D** |br| | OpenBSD | seqan | ``pkg_add seqan`` | `info <http://openports.se/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__ | ++------------+--------------+--------------------+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ You should execute the above commands in a terminal as the ``root`` user or prefix them with ``sudo``. If you have problems installing the package on your operating system, or it is outdated, please write to the contact shown above (and replace ``()`` in the e-mail-address with ``@``). diff --git a/tests/align/test_alignment_algorithms_local.h b/tests/align/test_alignment_algorithms_local.h index 99ce1c7..f6c1d73 100644 --- a/tests/align/test_alignment_algorithms_local.h +++ b/tests/align/test_alignment_algorithms_local.h @@ -607,53 +607,6 @@ SEQAN_DEFINE_TEST(test_align_local_alignment_enumeration_gaps) SEQAN_ASSERT_NOT(nextLocalAlignment(gapsH, gapsV, enumerator)); } - - // Test scoring matrix - { - - std::stringstream ssH, ssV; - - String<AminoAcid> strH("IGYELAPIPHTRTMDDFGNWWWKKWIHDDELNYFGTQLLIWHLQEKEGEQ"); - String<AminoAcid> strV("KHSDQGQIALLIHNTLQDWRPKVECDSPRTMIRRDFDDPQLAPPPHTNHRGNM"); - - Gaps<String<AminoAcid>, ArrayGaps> gapsH(strH); - Gaps<String<AminoAcid>, ArrayGaps> gapsV(strV); - - Blosum62 scoringScheme; - int cutoff = 40; - - LocalAlignmentEnumerator<Blosum62, Unbanded> enumerator(scoringScheme, cutoff); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 69); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "GYELAP--IPHTRTMDDFGNWWWK-KWIH-DD-E-L---NYFGT-QLLIW---HLQEKEG"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT_EQ(ssV.str(), "G-QIA-LLI-HN-TLQD---W--RPK-VECDSPRTMIRRD-FDDPQLA--PPPHTNHR-G"); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 57); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "KWIHDDELNYFGTQ--LLIWH--LQE---K-E"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT(ssV.str() == "K--HSDQ----G-QIALLI-HNTLQDWRPKVE"); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 51); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "IGYE-LA---P-I----PHTRTMD---DFGNWWWKKWIHDD-EL------NYF-GTQL"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT_EQ(ssV.str(), "I-HNTLQDWRPKVECDSP--RTM-IRRDF----------DDPQLAPPPHTNH-RGN-M"); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 46); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "I--GYE---LAPIP-HT--RTMDDFGN"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT_EQ(ssV.str(), "IRRDFDDPQLAP-PPHTNHR-----GN"); - - SEQAN_ASSERT_NOT(nextLocalAlignment(gapsH, gapsV, enumerator)); - } } SEQAN_DEFINE_TEST(test_align_local_alignment_enumeration_fragment) diff --git a/tests/align/test_alignment_algorithms_local_banded.h b/tests/align/test_alignment_algorithms_local_banded.h index afe4148..846cf94 100644 --- a/tests/align/test_alignment_algorithms_local_banded.h +++ b/tests/align/test_alignment_algorithms_local_banded.h @@ -502,38 +502,6 @@ SEQAN_DEFINE_TEST(test_align_local_alignment_enumeration_banded_gaps) SEQAN_ASSERT_NOT(nextLocalAlignment(gapsH, gapsV, enumerator)); } - - // Test scoring matrix - { - std::stringstream ssH, ssV; - - String<AminoAcid> strH("IGYELAPIPHTRTMDDFGNWWWKKWIHDDELNYFGTQLLIWHLQEKEGEQ"); - String<AminoAcid> strV("KHSDQGQIALLIHNTLQDWRPKVECDSPRTMIRRDFDDPQLAPPPHTNHRGNM"); - - Gaps<String<AminoAcid>, ArrayGaps> gapsH(strH); - Gaps<String<AminoAcid>, ArrayGaps> gapsV(strV); - - Blosum62 scoringScheme; - int cutoff = 40; - - LocalAlignmentEnumerator<Blosum62, Banded> enumerator(scoringScheme, -20, 20, cutoff); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 69); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "GYELAP--IPHTRTMDDFGNWWWK-KWIH-DD-E--L--NYF-GTQLLIW---HLQEKEG"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT_EQ(ssV.str(), "G-QIA-LLI-H-NTLQD-----WRPK-VECDSPRTMIRRD-FDDPQ-LA-PPPHTNHR-G"); - - SEQAN_ASSERT(nextLocalAlignment(gapsH, gapsV, enumerator)); - SEQAN_ASSERT_EQ(getScore(enumerator), 51); - ssH.clear(); ssH.str(""); ssH << gapsH; - SEQAN_ASSERT_EQ(ssH.str(), "IGYE-L---AP-I----PHTRTM--DDFGNWWWKKWIHDD-EL------NYF-GTQL"); - ssV.clear(); ssV.str(""); ssV << gapsV; - SEQAN_ASSERT(ssV.str() == "I-HNTLQDWRPKVECDSP--RTMIRRDF----------DDPQLAPPPHTNH-RG-NM"); - - SEQAN_ASSERT_NOT(nextLocalAlignment(gapsH, gapsV, enumerator)); - } } SEQAN_DEFINE_TEST(test_align_local_alignment_enumeration_banded_fragment) diff --git a/tests/arg_parse/test_arg_parse.cpp b/tests/arg_parse/test_arg_parse.cpp index 100ec59..aec4bcb 100644 --- a/tests/arg_parse/test_arg_parse.cpp +++ b/tests/arg_parse/test_arg_parse.cpp @@ -144,7 +144,6 @@ SEQAN_BEGIN_TESTSUITE(test_arg_parse) SEQAN_CALL_TEST(test_argument_invalid_cast); SEQAN_CALL_TEST(test_argument_min_max_boundaries); SEQAN_CALL_TEST(test_argument_valid_values); - SEQAN_CALL_TEST(test_argument_valid_values_directories); SEQAN_CALL_TEST(test_argument_parser); SEQAN_CALL_TEST(test_parse_non_const_cstring); diff --git a/tests/arg_parse/test_arg_parse_argument.h b/tests/arg_parse/test_arg_parse_argument.h index b46fb84..675e403 100644 --- a/tests/arg_parse/test_arg_parse_argument.h +++ b/tests/arg_parse/test_arg_parse_argument.h @@ -223,32 +223,4 @@ SEQAN_DEFINE_TEST(test_argument_valid_values) "the given path 'not-a-validfile.qxt' does not have one of the valid file extensions [*.txt, *.fasta]; the file extension was overridden to be '.fa'"); } -SEQAN_DEFINE_TEST(test_argument_valid_values_directories) -{ - ArgParseArgument dirarg(ArgParseArgument::INPUT_DIRECTORY); - setValidValues(dirarg, ".dir1 .dir2"); - - _assignArgumentValue(dirarg, "directory.dir1"); - SEQAN_ASSERT_EQ(value(dirarg.value, 0), "directory.dir1"); - - // Test getFileExtension() function. - SEQAN_ASSERT_EQ(getFileExtension(dirarg), ".dir1"); - - // different case should also work - _assignArgumentValue(dirarg, "directory.DIR1"); - SEQAN_ASSERT_EQ(value(dirarg.value, 0), "directory.DIR1"); - - // also accept a trailing '/' - _assignArgumentValue(dirarg, "directory.dir2/"); - SEQAN_ASSERT_EQ(value(dirarg.value, 0), "directory.dir2/"); - - // Test getFileExtension() function. - SEQAN_ASSERT_EQ(getFileExtension(dirarg), ".dir2"); - - // different case should also work - _assignArgumentValue(dirarg, "directory.DIR2/"); - SEQAN_ASSERT_EQ(value(dirarg.value, 0), "directory.DIR2/"); - -} - #endif // SEQAN_TESTS_ARG_PARSE_TEST_ARG_PARSE_ARGUMENT_H_ diff --git a/tests/modifier/test_modifier.cpp b/tests/modifier/test_modifier.cpp index ec6fc83..9b139a9 100644 --- a/tests/modifier/test_modifier.cpp +++ b/tests/modifier/test_modifier.cpp @@ -42,7 +42,7 @@ #include "test_modifier_string_padding.h" -SEQAN_BEGIN_TESTSUITE(test_modifier) +SEQAN_BEGIN_TESTSUITE(test_modifier) { // Test the modifier shortcuts. SEQAN_CALL_TEST(test_modifer_shortcuts_dna_string_reverse); @@ -130,6 +130,5 @@ SEQAN_BEGIN_TESTSUITE(test_modifier) SEQAN_CALL_TEST(test_modified_string_padding_end); SEQAN_CALL_TEST(test_modified_string_padding_difference); SEQAN_CALL_TEST(test_modified_string_padding_iterator); - SEQAN_CALL_TEST(test_modified_string_padding_defect_2190); } SEQAN_END_TESTSUITE diff --git a/tests/modifier/test_modifier_string_padding.h b/tests/modifier/test_modifier_string_padding.h index b474429..063b620 100644 --- a/tests/modifier/test_modifier_string_padding.h +++ b/tests/modifier/test_modifier_string_padding.h @@ -181,28 +181,4 @@ SEQAN_DEFINE_TEST(test_modified_string_padding_iterator) SEQAN_ASSERT_EQ(*(it - 3), seq[12]); } -SEQAN_DEFINE_TEST(test_modified_string_padding_defect_2190) -{ - using namespace seqan; - - DnaString seq = "ACGTGGATAGCATCG"; - auto seqInf = infix(seq, 0, length(seq)); - - auto test_const = [](auto const & modifier) - { - // using TRef = typename Reference<decltype(modifier)>::Type; - auto x = value(modifier, 1); - SEQAN_ASSERT_EQ(x, 'C'); - }; - { // Test working case, when reference of const modifier gives back a const reference to the value - ModifiedString<decltype(seq), ModPadding> modString(seq); - test_const(modString); - } - - { // Test defect, when reference of const modifier gives back a non-const reference to the value - ModifiedString<decltype(seqInf), ModPadding> modString(seqInf); - test_const(modString); - } -} - #endif // #ifndef TESTS_MODIFIER_MODIFIER_STRING_PADDING_H_ diff --git a/tests/seeds/test_seeds_global_chaining.cpp b/tests/seeds/test_seeds_global_chaining.cpp index f9e729f..3cb5b82 100644 --- a/tests/seeds/test_seeds_global_chaining.cpp +++ b/tests/seeds/test_seeds_global_chaining.cpp @@ -116,32 +116,6 @@ SEQAN_DEFINE_TEST(test_seeds_global_chaining_sparse_length) SEQAN_ASSERT_EQ(1u, length(result)); SEQAN_ASSERT_EQ(TSeed(0, 93, 281, 342), result[0]); } - - { // Issue #2082 - TSeedSet seedSet; - - addSeed(seedSet, TSeed(0, 0, 3), Single()); - addSeed(seedSet, TSeed(2, 3, 2), Single()); - - TSeedChain result; - chainSeedsGlobally(result, seedSet, SparseChaining()); - - SEQAN_ASSERT_EQ(1u, length(result)); - SEQAN_ASSERT_EQ(TSeed(0, 0, 3), result[0]); - } - - { // Issue #2082 - TSeedSet seedSet; - - addSeed(seedSet, TSeed(0, 0, 100), Single()); - addSeed(seedSet, TSeed(95, 95, 10), Single()); - - TSeedChain result; - chainSeedsGlobally(result, seedSet, SparseChaining()); - - SEQAN_ASSERT_EQ(1u, length(result)); - SEQAN_ASSERT_EQ(TSeed(0, 0, 100), result[0]); - } } SEQAN_BEGIN_TESTSUITE(test_seeds_global_chaining) diff --git a/util/cmake/SeqAnBuildSystem.cmake b/util/cmake/SeqAnBuildSystem.cmake index d4e2ba8..e642f81 100644 --- a/util/cmake/SeqAnBuildSystem.cmake +++ b/util/cmake/SeqAnBuildSystem.cmake @@ -53,12 +53,6 @@ set(PythonInterp_FIND_VERSION_COUNT 2) include (SeqAnUsabilityAnalyzer) include (CheckCXXCompilerFlag) -if (DEFINED CMAKE_INSTALL_DOCDIR) - set(CMAKE_INSTALL_DOCDIR_IS_SET ON) -endif () - -include (GNUInstallDirs) - set (COMPILER_CLANG FALSE) set (COMPILER_GCC FALSE) set (COMPILER_LINTEL FALSE) @@ -212,7 +206,7 @@ macro (seqan_build_system_init) # TODO(h-2): raise this to W4 set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W3") else() - set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -W -Wall -pedantic") + set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -W -Wall -pedantic -fstrict-aliasing -Wstrict-aliasing") set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64) # disable some warnings on ICC @@ -395,24 +389,24 @@ macro (seqan_setup_library) install (FILES LICENSE README.rst CHANGELOG.rst - DESTINATION ${CMAKE_INSTALL_DOCDIR}) + DESTINATION share/doc/seqan) # Install pkg-config file, except on Windows. if (NOT CMAKE_SYSTEM_NAME MATCHES Windows) configure_file("util/pkgconfig/seqan.pc.in" "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" @ONLY) - install(FILES "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) + install(FILES "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" DESTINATION lib/pkgconfig) endif (NOT CMAKE_SYSTEM_NAME MATCHES Windows) # Install FindSeqAn TODO(h-2) rename seqan-config.cmake to seqan-config${SEQAN_VERSION_MAJOR}.cmake after 2.x cycle - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/util/cmake/seqan-config.cmake" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/seqan/) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/util/cmake/seqan-config.cmake" DESTINATION lib/cmake/seqan/) # Install headers file (GLOB HEADERS - RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include/ + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/seqan/[A-z]*/[A-z]/[A-z]*.h include/seqan/[A-z]*/[A-z]*.h include/seqan/[A-z]*.h) foreach (HEADER ${HEADERS}) get_filename_component (_DESTINATION ${HEADER} PATH) - install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/${HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${_DESTINATION}) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} DESTINATION ${_DESTINATION}) endforeach () endif () @@ -469,11 +463,8 @@ macro (seqan_setup_install_vars APP_NAME) set (SEQAN_PREFIX_SHARE ".") set (SEQAN_PREFIX_SHARE_DOC ".") else () - if (NOT DEFINED CMAKE_INSTALL_DOCDIR_IS_SET) - set (CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc" CACHE STRING "Documentation root (DATAROOTDIR/doc)" FORCE) - endif () - set (SEQAN_PREFIX_SHARE "${CMAKE_INSTALL_DATADIR}/${APP_NAME}") - set (SEQAN_PREFIX_SHARE_DOC "${CMAKE_INSTALL_DOCDIR}/${APP_NAME}") + set (SEQAN_PREFIX_SHARE "share/${APP_NAME}") + set (SEQAN_PREFIX_SHARE_DOC "share/doc/${APP_NAME}") endif () endmacro (seqan_setup_install_vars) diff --git a/util/pkgconfig/seqan.pc.in b/util/pkgconfig/seqan.pc.in index 7dc4a00..8cc5f3f 100644 --- a/util/pkgconfig/seqan.pc.in +++ b/util/pkgconfig/seqan.pc.in @@ -1,4 +1,6 @@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include Name: @CMAKE_PROJECT_NAME@ Description: C++ library for biological sequence analysis diff --git a/util/skel/app_template/CMakeLists.txt b/util/skel/app_template/CMakeLists.txt index 1c72c2b..6d1aeca 100644 --- a/util/skel/app_template/CMakeLists.txt +++ b/util/skel/app_template/CMakeLists.txt @@ -48,7 +48,7 @@ endif (NOT SEQAN_PREFIX_SHARE_DOC) # Install %(NAME)s in ${PREFIX}/bin directory install (TARGETS %(NAME)s - DESTINATION ${CMAKE_INSTALL_BINDIR}) + DESTINATION bin) # Install non-binary files for the package to "." for app builds and # ${PREFIX}/share/doc/%(NAME)s for SeqAn release builds. -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/seqan2.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
