Loading ChangeLog +33 −1 Original line number Diff line number Diff line 2017-12-19 Ben Vandervalk <benv@bcgsc.ca> 2018-04-13 Ben Vandervalk <benv@bcgsc.ca> * Release version 2.1.0 * Adds support for misassembly correction and scaffolding using linked reads, using Tigmint and ARCS. (Tigmint and ARCS must be installed separately.) * Support simultaneous optimization of `s` (min sequence length) and `n` (min supporting read pairs / Chromium barcodes) during scaffolding abyss-longseqdist: * Fix hang on input SAM containing no alignments with MAPQ > 0 abyss-pe: * New `lr` parameter. Provide linked reads (i.e. 10x Genomics Chromium reads) via this parameter to perform misassembly correction and scaffolding using Chromium barcode information. Requires Tigmint and ARCS tools to be installed in addition to ABySS. * Fix bug where `j` (threads) was not being correctly passed to to `bgzip`/`pigz` * Fix bug where `zsh` time/memory profiling was not being used, even when `zsh` was available abyss-scaffold: * Simultaneous optimization of `n` and `s` using line search or grid search [default] SimpleGraph: * add options `-s` and `-n` to filter paired-end paths by seed length and edge weight, respectively 2018-03-14 Ben Vandervalk <benv@bcgsc.ca> * Release version 2.0.3 * Many compiler fixes for GCC >= 6, Boost >= 1.64 Loading Common/ContigID.h +23 −4 Original line number Diff line number Diff line Loading @@ -24,13 +24,32 @@ static inline void setNextContigName(cstring s) g_nextContigName = 0; } /** * Set the next contig name returned by createContigName * to one plus the current largest numeric contig name. */ static inline void setNextContigName() { if (g_contigNames.empty()) { g_nextContigName = 0; return; } unsigned maxContigName = 0; for (unsigned i = 0; i < g_contigNames.size(); ++i) { cstring s = g_contigNames.getName(i); std::istringstream iss((std::string)s); unsigned contigName; if (iss >> contigName && iss.eof() && contigName > maxContigName) maxContigName = contigName; } g_nextContigName = 1 + maxContigName; } /** Return the next unique contig name. */ static inline std::string createContigName() { if (g_nextContigName == 0) { assert(!g_contigNames.empty()); setNextContigName(g_contigNames.back()); } if (g_nextContigName == 0) setNextContigName(); std::ostringstream ss; ss << g_nextContigName++; return ss.str(); Loading Common/Histogram.h +25 −16 Original line number Diff line number Diff line Loading @@ -315,22 +315,20 @@ namespace std { inline void swap(Histogram&, Histogram&) { assert(false); } } /** Print assembly contiguity statistics. */ static inline std::ostream& printContiguityStats( std::ostream& out, const Histogram& h0, unsigned minSize, bool printHeader = true, /** Print assembly contiguity statistics header. */ static inline std::ostream& printContiguityStatsHeader( std::ostream& out, unsigned minSize, const std::string& sep = "\t", const long long unsigned expSize = 0) { Histogram h = h0.trimLow(minSize); if (printHeader) { out << "n" << sep << "n:" << minSize << sep << "L50" << sep; if (expSize > 0) out << "LG50" << sep << "NG50" << sep; out << "min" << sep return out << "min" << sep << "N80" << sep << "N50" << sep << "N20" << sep Loading @@ -339,6 +337,17 @@ static inline std::ostream& printContiguityStats( << "sum" << sep << "name" << '\n'; } /** Print assembly contiguity statistics. */ static inline std::ostream& printContiguityStats( std::ostream& out, const Histogram& h0, unsigned minSize, bool printHeader = true, const std::string& sep = "\t", const long long unsigned expSize = 0) { Histogram h = h0.trimLow(minSize); if (printHeader) printContiguityStatsHeader(out, minSize, sep, expSize); unsigned n50 = h.n50(); out << toEng(h0.size()) << sep << toEng(h.size()) << sep Loading Common/IOUtil.h +5 −2 Original line number Diff line number Diff line Loading @@ -51,9 +51,12 @@ static inline std::istream& operator>>(std::istream& in, expect o) if (!in || c != *p) { std::cerr << "error: Expected `" << p << "' and saw "; if (in) if (in) { std::cerr << '`' << c << "'\n"; else if (in.eof()) std::string s; if (getline(in, s) && !s.empty()) std::cerr << "near: " << c << s << '\n'; } else if (in.eof()) std::cerr << "end-of-file\n"; else std::cerr << "I/O error\n"; Loading Common/SAM.h +9 −4 Original line number Diff line number Diff line Loading @@ -275,6 +275,8 @@ struct SAMRecord : SAMAlignment { { flag &= ~(FPROPER_PAIR | FMUNMAP | FMREVERSE); flag |= FPAIRED; if (rname == o.rname && isReverse() != o.isReverse()) flag |= FPROPER_PAIR; if (o.isUnmapped()) flag |= FMUNMAP; if (o.isReverse()) Loading Loading @@ -308,7 +310,7 @@ struct SAMRecord : SAMAlignment { friend std::ostream& operator <<(std::ostream& out, const SAMRecord& o) { return out << o.qname out << o.qname << '\t' << o.flag << '\t' << o.rname << '\t' << (1 + o.pos) Loading @@ -316,13 +318,16 @@ struct SAMRecord : SAMAlignment { << '\t' << o.cigar << '\t' << (o.mrnm == o.rname ? "=" : o.mrnm) << '\t' << (1 + o.mpos) << '\t' << o.isize << '\t' << o.isize; #if SAM_SEQ_QUAL << '\t' << o.seq out << '\t' << o.seq << '\t' << o.qual; if (!o.tags.empty()) out << '\t' << o.tags; #else << "\t*\t*"; out << "\t*\t*"; #endif return out; } friend std::istream& operator >>(std::istream& in, SAMRecord& o) Loading Loading
ChangeLog +33 −1 Original line number Diff line number Diff line 2017-12-19 Ben Vandervalk <benv@bcgsc.ca> 2018-04-13 Ben Vandervalk <benv@bcgsc.ca> * Release version 2.1.0 * Adds support for misassembly correction and scaffolding using linked reads, using Tigmint and ARCS. (Tigmint and ARCS must be installed separately.) * Support simultaneous optimization of `s` (min sequence length) and `n` (min supporting read pairs / Chromium barcodes) during scaffolding abyss-longseqdist: * Fix hang on input SAM containing no alignments with MAPQ > 0 abyss-pe: * New `lr` parameter. Provide linked reads (i.e. 10x Genomics Chromium reads) via this parameter to perform misassembly correction and scaffolding using Chromium barcode information. Requires Tigmint and ARCS tools to be installed in addition to ABySS. * Fix bug where `j` (threads) was not being correctly passed to to `bgzip`/`pigz` * Fix bug where `zsh` time/memory profiling was not being used, even when `zsh` was available abyss-scaffold: * Simultaneous optimization of `n` and `s` using line search or grid search [default] SimpleGraph: * add options `-s` and `-n` to filter paired-end paths by seed length and edge weight, respectively 2018-03-14 Ben Vandervalk <benv@bcgsc.ca> * Release version 2.0.3 * Many compiler fixes for GCC >= 6, Boost >= 1.64 Loading
Common/ContigID.h +23 −4 Original line number Diff line number Diff line Loading @@ -24,13 +24,32 @@ static inline void setNextContigName(cstring s) g_nextContigName = 0; } /** * Set the next contig name returned by createContigName * to one plus the current largest numeric contig name. */ static inline void setNextContigName() { if (g_contigNames.empty()) { g_nextContigName = 0; return; } unsigned maxContigName = 0; for (unsigned i = 0; i < g_contigNames.size(); ++i) { cstring s = g_contigNames.getName(i); std::istringstream iss((std::string)s); unsigned contigName; if (iss >> contigName && iss.eof() && contigName > maxContigName) maxContigName = contigName; } g_nextContigName = 1 + maxContigName; } /** Return the next unique contig name. */ static inline std::string createContigName() { if (g_nextContigName == 0) { assert(!g_contigNames.empty()); setNextContigName(g_contigNames.back()); } if (g_nextContigName == 0) setNextContigName(); std::ostringstream ss; ss << g_nextContigName++; return ss.str(); Loading
Common/Histogram.h +25 −16 Original line number Diff line number Diff line Loading @@ -315,22 +315,20 @@ namespace std { inline void swap(Histogram&, Histogram&) { assert(false); } } /** Print assembly contiguity statistics. */ static inline std::ostream& printContiguityStats( std::ostream& out, const Histogram& h0, unsigned minSize, bool printHeader = true, /** Print assembly contiguity statistics header. */ static inline std::ostream& printContiguityStatsHeader( std::ostream& out, unsigned minSize, const std::string& sep = "\t", const long long unsigned expSize = 0) { Histogram h = h0.trimLow(minSize); if (printHeader) { out << "n" << sep << "n:" << minSize << sep << "L50" << sep; if (expSize > 0) out << "LG50" << sep << "NG50" << sep; out << "min" << sep return out << "min" << sep << "N80" << sep << "N50" << sep << "N20" << sep Loading @@ -339,6 +337,17 @@ static inline std::ostream& printContiguityStats( << "sum" << sep << "name" << '\n'; } /** Print assembly contiguity statistics. */ static inline std::ostream& printContiguityStats( std::ostream& out, const Histogram& h0, unsigned minSize, bool printHeader = true, const std::string& sep = "\t", const long long unsigned expSize = 0) { Histogram h = h0.trimLow(minSize); if (printHeader) printContiguityStatsHeader(out, minSize, sep, expSize); unsigned n50 = h.n50(); out << toEng(h0.size()) << sep << toEng(h.size()) << sep Loading
Common/IOUtil.h +5 −2 Original line number Diff line number Diff line Loading @@ -51,9 +51,12 @@ static inline std::istream& operator>>(std::istream& in, expect o) if (!in || c != *p) { std::cerr << "error: Expected `" << p << "' and saw "; if (in) if (in) { std::cerr << '`' << c << "'\n"; else if (in.eof()) std::string s; if (getline(in, s) && !s.empty()) std::cerr << "near: " << c << s << '\n'; } else if (in.eof()) std::cerr << "end-of-file\n"; else std::cerr << "I/O error\n"; Loading
Common/SAM.h +9 −4 Original line number Diff line number Diff line Loading @@ -275,6 +275,8 @@ struct SAMRecord : SAMAlignment { { flag &= ~(FPROPER_PAIR | FMUNMAP | FMREVERSE); flag |= FPAIRED; if (rname == o.rname && isReverse() != o.isReverse()) flag |= FPROPER_PAIR; if (o.isUnmapped()) flag |= FMUNMAP; if (o.isReverse()) Loading Loading @@ -308,7 +310,7 @@ struct SAMRecord : SAMAlignment { friend std::ostream& operator <<(std::ostream& out, const SAMRecord& o) { return out << o.qname out << o.qname << '\t' << o.flag << '\t' << o.rname << '\t' << (1 + o.pos) Loading @@ -316,13 +318,16 @@ struct SAMRecord : SAMAlignment { << '\t' << o.cigar << '\t' << (o.mrnm == o.rname ? "=" : o.mrnm) << '\t' << (1 + o.mpos) << '\t' << o.isize << '\t' << o.isize; #if SAM_SEQ_QUAL << '\t' << o.seq out << '\t' << o.seq << '\t' << o.qual; if (!o.tags.empty()) out << '\t' << o.tags; #else << "\t*\t*"; out << "\t*\t*"; #endif return out; } friend std::istream& operator >>(std::istream& in, SAMRecord& o) Loading