Commit e2ac24df authored by Andreas Tille's avatar Andreas Tille
Browse files

New upstream version 2.1.0

parent b538cfd6
Loading
Loading
Loading
Loading
+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
+23 −4
Original line number Diff line number Diff line
@@ -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();
+25 −16
Original line number Diff line number Diff line
@@ -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
@@ -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
+5 −2
Original line number Diff line number Diff line
@@ -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";
+9 −4
Original line number Diff line number Diff line
@@ -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())
@@ -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)
@@ -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