[med-svn] [sra-sdk] 03/04: Imported Upstream version 2.6.3
Andreas Tille
tille at debian.org
Mon Jun 6 09:28:28 UTC 2016
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository sra-sdk.
commit a32a2f5898a9bc909b450eb568ccb8b487808dfb
Author: Andreas Tille <tille at debian.org>
Date: Mon Jun 6 11:25:41 2016 +0200
Imported Upstream version 2.6.3
---
CHANGES | 13 ++
CHANGES.md | 12 ++
setup/package.prl | 2 +-
test/general-loader/expected/2.stderr | 4 +-
test/general-loader/expected/2packed.stderr | 4 +-
tools/align-info/align-info.vers | 2 +-
tools/align-info/align-info.vers.h | 2 +-
tools/bam-loader/Makefile | 20 ++
tools/bam-loader/alignment-writer.c | 26 ++-
tools/bam-loader/bam-load.vers | 2 +-
tools/bam-loader/bam.c | 235 +++++++++++++++------
tools/bam-loader/bam.h | 6 +-
tools/bam-loader/loader-imp.c | 129 ++++++++---
tools/bam-loader/reference-writer.c | 15 +-
tools/bam-loader/reference-writer.h | 2 +
tools/bam-loader/samview.c | 109 ++++++++++
.../fastdump.vers => bam-loader/samview.vers} | 0
tools/cache-mgr/cache-mgr.vers | 2 +-
tools/cache-mgr/cache-mgr.vers.h | 2 +-
tools/ccextract/ccextract.vers | 2 +-
tools/cg-load/cg-load.vers | 2 +-
tools/copycat/copycat.vers | 2 +-
tools/fastdump/fastdump.vers | 2 +-
tools/fastq-dump/fastq-dump.vers | 2 +-
tools/fastq-loader/latf-load.vers | 2 +-
tools/fastq-loader/latf-load.vers.h | 2 +-
tools/fuse/remote-fuser.vers | 2 +-
tools/fuse/sra-fuser-test.vers | 2 +-
tools/fuse/sra-fuser-test.vers.h | 2 +-
tools/fuse/sra-fuser.vers | 2 +-
tools/fuse/sra-makeidx.vers | 2 +-
tools/general-loader/general-loader.vers | 2 +-
tools/general-loader/general-loader.vers.h | 2 +-
tools/general-loader/libgeneral-writer.vers | 2 +-
tools/kar/kar.vers | 2 +-
tools/kar/kar.vers.h | 2 +-
tools/kar/sra-kar.vers | 2 +-
tools/kar/sra-kar.vers.h | 2 +-
tools/keyring-srv/keyring-srv.vers | 2 +-
tools/kqsh/kqsh.vers | 2 +-
tools/nenctool/nenctest.vers | 2 +-
tools/nenctool/nenctool.vers | 2 +-
tools/nencvalid/nencvalid.vers | 2 +-
tools/pacbio-load/pacbio-load.vers | 2 +-
tools/pileup-stats/pileup-stats.vers | 2 +-
tools/prefetch/prefetch.vers | 2 +-
tools/prefetch/prefetch.vers.h | 2 +-
tools/qual-recalib-stat/qual-recalib-stat.vers | 2 +-
tools/qual-recalib-stat/qual-recalib-stat.vers.h | 2 +-
tools/rd-filter-redact/rd-filter-redact.vers | 2 +-
tools/rd-filter-redact/read-filter-redact.vers | 2 +-
tools/rd-filter-redact/read-filter-redact.vers.h | 2 +-
tools/rd-filter-redact/test-read-write-cursor.vers | 2 +-
tools/ref-variation/ref-variation.vers | 2 +-
tools/ref-variation/ref-variation.vers.h | 2 +-
tools/ref-variation/var-expand.vers | 2 +-
tools/ref-variation/var-expand.vers.h | 2 +-
tools/refseq-load/refseq-load.vers | 1 -
tools/sra-dump/abi-dump.vers | 2 +-
tools/sra-dump/abi-dump.vers.h | 2 +-
tools/sra-dump/fastq-dump.vers | 2 +-
tools/sra-dump/fastq-dump.vers.h | 2 +-
tools/sra-dump/illumina-dump.vers | 2 +-
tools/sra-dump/illumina-dump.vers.h | 2 +-
tools/sra-dump/sff-dump.vers | 2 +-
tools/sra-dump/sff-dump.vers.h | 2 +-
tools/sra-dump/sra-dump.vers | 2 +-
tools/sra-load/abi-load.vers | 2 +-
tools/sra-load/fastq-load.vers | 2 +-
tools/sra-load/helicos-load.vers | 2 +-
tools/sra-load/illumina-load.vers | 2 +-
tools/sra-load/pacbio-loadxml.vers | 2 +-
tools/sra-load/sff-load.vers | 2 +-
tools/sra-load/srf-load.vers | 2 +-
tools/sra-pileup/sam-dump.vers | 2 +-
tools/sra-pileup/sam-dump.vers.h | 2 +-
tools/sra-pileup/sam-dump2.vers | 2 +-
tools/sra-pileup/sra-pileup.vers | 2 +-
tools/sra-pileup/sra-pileup.vers.h | 2 +-
tools/sra-sort/sra-sort.vers | 2 +-
tools/sra-stat/sra-stat.vers | 2 +-
tools/sra-stat/sra-stat.vers.h | 2 +-
tools/sra/table-vers.vers | 2 +-
tools/srapath/srapath.vers | 2 +-
tools/srapath/srapath.vers.h | 2 +-
tools/update-schema/vdb-update-schema.vers | 2 +-
tools/util/kdb-index.vers | 2 +-
tools/util/kdbmeta.vers | 2 +-
tools/util/kdbmeta.vers.h | 2 +-
tools/util/md5cp.vers | 2 +-
tools/util/md5cp.vers.h | 2 +-
tools/util/pacbio-correct.vers | 2 +-
tools/util/rcexplain.vers | 2 +-
tools/util/rcexplain.vers.h | 2 +-
tools/util/rowwritetest.vers | 2 +-
tools/util/schema-replace.vers | 2 +-
tools/util/schema-replace.vers.h | 2 +-
tools/util/test-sra.vers | 2 +-
tools/util/test-sra.vers.h | 2 +-
tools/util/testld.vers | 2 +-
tools/util/txt2kdb.vers | 2 +-
tools/util/vdb-lock.vers | 2 +-
tools/util/vdb-lock.vers.h | 2 +-
tools/util/vdb-passwd.vers | 2 +-
tools/util/vdb-passwd.vers.h | 2 +-
tools/util/vdb-unlock.vers | 2 +-
tools/util/vdb-unlock.vers.h | 2 +-
tools/vcf-loader/vcf-load.vers | 2 +-
tools/vdb-config/vdb-config.vers | 2 +-
tools/vdb-config/vdb-config.vers.h | 2 +-
tools/vdb-copy/vdb-copy.vers | 2 +-
tools/vdb-copy/vdb-copy.vers.h | 2 +-
tools/vdb-decrypt/vdb-decrypt.vers | 2 +-
tools/vdb-decrypt/vdb-decrypt.vers.h | 2 +-
tools/vdb-decrypt/vdb-encrypt.vers | 2 +-
tools/vdb-decrypt/vdb-encrypt.vers.h | 2 +-
tools/vdb-dump/vdb-boot.vers | 2 +-
tools/vdb-dump/vdb-dump.vers | 2 +-
tools/vdb-dump/vdb-dump.vers.h | 2 +-
tools/vdb-validate/check-corrupt.vers | 2 +-
tools/vdb-validate/check-corrupt.vers.h | 2 +-
tools/vdb-validate/vdb-validate.vers | 2 +-
tools/vdb-validate/vdb-validate.vers.h | 2 +-
123 files changed, 565 insertions(+), 229 deletions(-)
diff --git a/CHANGES b/CHANGES
index f406ba5..a209cef 100644
--- a/CHANGES
+++ b/CHANGES
@@ -26,6 +26,19 @@
The NCBI SRA Software Development Kit
Contact: sra-tools at ncbi.nlm.nih.gov
+NCBI External Developer Release: SRA Toolkit 2.6.3
+May 25, 2016
+
+ bam-load: Corrects an optimization used to compare read lengths when lengths are greater than 255
+ bam-load: alignments which are below the minimum match count but with at least 1/2 of the aligned bases matching are accepted
+ bam-load: improved performance of SAM parsing code
+ bam-load: non-fatal result codes no longer cause the reader thread to quit early
+ bam-load: will NOT do spot assembly using hard clipped secondary alignments even when make-spots-with-secondary is enabled;
+ WILL do spot assembly using hard-clipped secondary alignments when defer-secondary is enabled
+ build: MSVS 2013 toolset (12.0) is now supported across all repositories
+ vdb: Fixed a bound on memory cache that would never flush under certain access modes
+
+
NCBI External Developer Release: SRA Toolkit 2.6.2
April 20, 2016
diff --git a/CHANGES.md b/CHANGES.md
index d0f49b0..147ff8c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,4 +1,16 @@
# NCBI External Developer Release:
+
+## SRA Toolkit 2.6.3
+**May 25, 2016**
+
+ **bam-load**: Corrects an optimization used to compare read lengths when lengths are greater than 255
+ **bam-load**: alignments which are below the minimum match count but with at least 1/2 of the aligned bases matching are accepted
+ **bam-load**: improved performance of SAM parsing code
+ **bam-load**: non-fatal result codes no longer cause the reader thread to quit early
+ **bam-load**: will NOT do spot assembly using hard clipped secondary alignments even when make-spots-with-secondary is enabled; WILL do spot assembly using hard-clipped secondary alignments when defer-secondary is enabled
+ **build**: MSVS 2013 toolset (12.0) is now supported across all repositories
+ **vdb**: Fixed a bound on memory cache that would never flush under certain access modes
+
## SRA Toolkit 2.6.2
**April 20, 2016**
diff --git a/setup/package.prl b/setup/package.prl
index 2f6b782..7fdb755 100644
--- a/setup/package.prl
+++ b/setup/package.prl
@@ -1,6 +1,6 @@
################################################################################
sub PACKAGE { 'sra-tools' }
-sub VERSION { '2.6.2' }
+sub VERSION { '2.6.3' }
sub PACKAGE_TYPE { 'B' }
sub PACKAGE_NAME { 'SRA-TOOLS' }
sub PACKAGE_NAMW { 'SRATOOLS' }
diff --git a/test/general-loader/expected/2.stderr b/test/general-loader/expected/2.stderr
index 9851334..0e8df07 100644
--- a/test/general-loader/expected/2.stderr
+++ b/test/general-loader/expected/2.stderr
@@ -1,2 +1,2 @@
-general-loader.2.6.2 err: general-loader: error "something is wrong"
-general-loader.2.6.2 err: error exists while reading file - load failed
+general-loader.2.6.3 err: general-loader: error "something is wrong"
+general-loader.2.6.3 err: error exists while reading file - load failed
diff --git a/test/general-loader/expected/2packed.stderr b/test/general-loader/expected/2packed.stderr
index 9851334..0e8df07 100644
--- a/test/general-loader/expected/2packed.stderr
+++ b/test/general-loader/expected/2packed.stderr
@@ -1,2 +1,2 @@
-general-loader.2.6.2 err: general-loader: error "something is wrong"
-general-loader.2.6.2 err: error exists while reading file - load failed
+general-loader.2.6.3 err: general-loader: error "something is wrong"
+general-loader.2.6.3 err: error exists while reading file - load failed
diff --git a/tools/align-info/align-info.vers b/tools/align-info/align-info.vers
index 097a15a..ec1cf33 100644
--- a/tools/align-info/align-info.vers
+++ b/tools/align-info/align-info.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/align-info/align-info.vers.h b/tools/align-info/align-info.vers.h
index 15c01a7..f04bfe1 100644
--- a/tools/align-info/align-info.vers.h
+++ b/tools/align-info/align-info.vers.h
@@ -1 +1 @@
-#define ALIGN_INFO_VERS 0x02060002
+#define ALIGN_INFO_VERS 0x02060003
diff --git a/tools/bam-loader/Makefile b/tools/bam-loader/Makefile
index 5a27e06..a4b0a47 100644
--- a/tools/bam-loader/Makefile
+++ b/tools/bam-loader/Makefile
@@ -29,6 +29,7 @@ TOP ?= $(abspath ../..)
MODULE = tools/bam-loader
INT_TOOLS = \
+ samview
EXT_TOOLS = \
bam-load
@@ -102,3 +103,22 @@ BAMLOAD_LIB = \
$(BINDIR)/bam-load: $(BAMLOAD_OBJ)
$(LP) --exe --vers $(SRCDIR) -o $@ $^ $(BAMLOAD_LIB)
+
+#-------------------------------------------------------------------------------
+# samview
+#
+SAMVIEW_SRC = \
+ bam \
+ samview
+
+SAMVIEW_OBJ = \
+ $(addsuffix .$(OBJX),$(SAMVIEW_SRC))
+
+SAMVIEW_LIB = \
+ -lkapp \
+ -sncbi-vdb \
+ -lm
+
+$(BINDIR)/samview: $(SAMVIEW_OBJ)
+ $(LP) --exe --vers $(SRCDIR) -o $@ $^ $(SAMVIEW_LIB)
+
diff --git a/tools/bam-loader/alignment-writer.c b/tools/bam-loader/alignment-writer.c
index 999c7d1..6e93b7f 100644
--- a/tools/bam-loader/alignment-writer.c
+++ b/tools/bam-loader/alignment-writer.c
@@ -120,18 +120,24 @@ rc_t AlignmentGetSpotKey(Alignment *const self, uint64_t * keyId)
switch (self->st) {
case 0:
- rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblPrimary]);
- if (rc)
- break;
+ if (self->tbl[tblPrimary]) {
+ rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblPrimary]);
+ if (rc)
+ break;
+ }
self->rowId = 0;
++self->st;
case 1:
- rc = TableWriterAlgn_TmpKey(self->tbl[tblPrimary], ++self->rowId, keyId);
- if (rc == 0)
- break;
- ++self->st;
- if (GetRCState(rc) != rcNotFound || GetRCObject(rc) != rcRow || self->tbl[tblSecondary] == NULL)
- break;
+ if (self->tbl[tblPrimary]) {
+ rc = TableWriterAlgn_TmpKey(self->tbl[tblPrimary], ++self->rowId, keyId);
+ if (rc == 0)
+ break;
+ ++self->st;
+ if (GetRCState(rc) != rcNotFound || GetRCObject(rc) != rcRow || self->tbl[tblSecondary] == NULL)
+ break;
+ }
+ else
+ ++self->st;
case 2:
rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblSecondary]);
if (rc)
@@ -167,7 +173,7 @@ rc_t AlignmentWriteSpotId(Alignment * const self, int64_t const spotId)
rc_t AlignmentWhack(Alignment * const self, bool const commit)
{
- rc_t const rc = TableWriterAlgn_Whack(self->tbl[tblPrimary], commit, NULL);
+ rc_t const rc = self->tbl[tblPrimary] ? TableWriterAlgn_Whack(self->tbl[tblPrimary], commit, NULL) : 0;
rc_t const rc2 = self->tbl[tblSecondary] ? TableWriterAlgn_Whack(self->tbl[tblSecondary], commit | (rc == 0), NULL) : 0;
VDatabaseRelease(self->db);
diff --git a/tools/bam-loader/bam-load.vers b/tools/bam-loader/bam-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/bam-loader/bam-load.vers
+++ b/tools/bam-loader/bam-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/bam-loader/bam.c b/tools/bam-loader/bam.c
index 8d544f7..c32ad49 100644
--- a/tools/bam-loader/bam.c
+++ b/tools/bam-loader/bam.c
@@ -48,6 +48,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <math.h>
#include <assert.h>
#if 1
/*_DEBUGGING*/
@@ -1293,7 +1294,7 @@ static rc_t ProcessSAMHeader(BAM_File *self, char const substitute[])
void *const tmp = headerText;
int const ch = SAMFileRead1(file);
- if (ch < 0)
+ if (ch == -1)
return SAMFileLastError(file);
if (st == 0) {
@@ -1797,12 +1798,12 @@ rc_t BAM_FileReadNoCopy(BAM_File *const self, unsigned actsize[], BAM_Alignment
if ((int)GetRCObject(rc) == rcData && GetRCState(rc) == rcInsufficient)
{
self->eof = true;
- return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
}
return rc;
}
if (maxPeek < 4)
- return RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
else {
int32_t const i32 = BAM_FilePeekI32(self);
@@ -1810,14 +1811,14 @@ rc_t BAM_FileReadNoCopy(BAM_File *const self, unsigned actsize[], BAM_Alignment
return RC(rcAlign, rcFile, rcReading, rcData, rcInvalid);
if (maxPeek < i32 + 4)
- return RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
-
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
+
isgood = BAM_AlignmentInitLog(rhs, maxsize, i32, BAM_FilePeek(self, 4));
rhs[0].parent = self;
}
*actsize = BAM_AlignmentSize(rhs[0].numExtra);
if (isgood && *actsize > maxsize)
- return RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
BAM_FileAdvance(self, 4 + rhs->datasize);
return isgood ? 0 : RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid);
@@ -1837,6 +1838,8 @@ static bool BAM_AlignmentIsEmpty(BAM_Alignment const *const self)
{
if (getReadNameLength(self) == 0)
return true;
+ if (getReadName(self)[0] == '\0')
+ return true;
if (self->hasColor == 3)
return false;
if (getReadLen(self) != 0)
@@ -1864,7 +1867,7 @@ rc_t BAM_FileReadCopy(BAM_File *const self, BAM_Alignment const *rslt[], bool co
if ((int)GetRCObject(rc) == rcData && GetRCState(rc) == rcInsufficient)
{
self->eof = true;
- rc = RC( rcAlign, rcFile, rcReading, rcRow, rcNotFound );
+ rc = SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
}
return rc;
}
@@ -2105,19 +2108,93 @@ static rc_t SAM2BAM_ConvertQUAL(unsigned const insize, void /* inout */ *const d
static int SAM2BAM_ScanValue(void *const dst, char const *src, bool isFloat, bool isArray)
{
- static char const *Fmt[] = {
- ",%f%n",
- ",%i%n"
- };
- char const *const fmt = Fmt[isFloat ? 0 : 1] + (isArray ? 0 : 1);
- union { int i; float f; } x;
- int n = 0;
+ int i = 0;
+ int sgn = 0;
+ uint64_t mantissa = 0;
+ int shift = 0;
+ int exponent = 0;
+ int st = 0;
- x.i = 0;
- if (sscanf(src, fmt, &x, &n) != 1)
- return -1;
- SAM2BAM_ConvertInt(dst, x.i);
- return n;
+ if (isArray) {
+ int const ch = src[i++];
+ if (ch != ',')
+ return -1;
+ }
+ for ( ; ; ++i) {
+ int const ch = src[i];
+ int const value = ch - '0';
+
+ if (ch == '\0')
+ break;
+ if (isArray && ch == ',')
+ break;
+ switch (st) {
+ case 0:
+ ++st;
+ if (ch == '-') {
+ sgn = -1;
+ break;
+ }
+ else if (ch == '+') {
+ sgn = 1;
+ break;
+ }
+ /* fallthrough; */
+ case 1:
+ if (ch == '.') {
+ st = 2;
+ break;
+ }
+ if (ch == 'e' || ch == 'E') {
+ st = 3;
+ break;
+ }
+ if (value < 0 || value > 9)
+ return -1;
+ mantissa = mantissa * 10 + value;
+ break;
+ case 2:
+ if (ch == 'e' || ch == 'E') {
+ st = 3;
+ break;
+ }
+ if (value < 0 || value > 9)
+ return -1;
+ mantissa = mantissa * 10 + value;
+ ++shift;
+ break;
+ case 3:
+ ++st;
+ if (ch == '-') {
+ ++st;
+ break;
+ }
+ else if (ch == '+') {
+ break;
+ }
+ /* fallthrough; */
+ case 4:
+ if (value < 0 || value > 9)
+ return -1;
+ exponent = exponent * 10 + value;
+ break;
+ case 5:
+ if (value < 0 || value > 9)
+ return -1;
+ exponent = exponent * 10 - value;
+ break;
+ }
+ }
+ {
+ double const value = mantissa * pow(10, exponent - shift) * (sgn ? sgn : 1);
+ union { int i; float f; } x;
+ if (isFloat)
+ x.f = value;
+ else
+ x.i = floor(value);
+ SAM2BAM_ConvertInt(dst, x.i);
+ }
+ return i;
}
static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const data, void const *const endp)
@@ -2149,8 +2226,8 @@ static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const d
if ((void const *)&dst[7] >= endp)
return -2;
{
- int const n = SAM2BAM_ScanValue(&dst[3], src + 5, type == 'f', false);
- return (n < 0 || n + 5 != insize) ? -4 : 7;
+ int const n = SAM2BAM_ScanValue(&dst[3], src + 5, type == 'f', false);
+ return (n < 0 || n + 5 != insize) ? -4 : 7;
}
}
case 'B':
@@ -2175,27 +2252,25 @@ static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const d
return -3;
}
{
- uint8_t *scratch = (void *)(src + insize);
+ uint8_t *const scratch = (void *)(src + insize);
int const subtype = src[5] == 'f' ? 'f' : 'i';
unsigned i;
+ unsigned j;
dst[3] = subtype;
- for (i = 6; i < insize; ) {
- if ((void const *)&scratch[4] >= endp)
+ for (i = 6, j = 0; i < insize; ++j) {
+ if ((void const *)(scratch + 4 * j + 4) >= endp)
return -2;
{
- int const n = SAM2BAM_ScanValue(scratch, src + 5, subtype == 'f', true);
- if (n < 0)
- return -4;
- i += n;
+ int const n = SAM2BAM_ScanValue(scratch + 4 * j, src + i, subtype == 'f', true);
+ if (n < 0)
+ return -4;
+ i += n;
}
- scratch += 4;
- }
- {
- unsigned const written = scratch - (uint8_t const *)(src + insize);
- memmove(dst + 4, src + insize, written);
- return written + 5;
}
+ SAM2BAM_ConvertInt(&dst[4], j);
+ memmove(&dst[8], scratch, 4 * j);
+ return 8 + 4 * j;
}
}
}
@@ -2225,30 +2300,56 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
char *EXTRA;
} temp;
unsigned field = 1;
- char *scratch;
+ char *scratch = &raw->read_name[0];
+ int *intScratch = NULL;
+ int sgn = 1;
unsigned i = 0;
int n = 0;
memset(raw, 0, sizeof(*raw));
memset(&temp, 0, sizeof(temp));
- scratch = temp.QNAME = &raw->read_name[0];
+ temp.QNAME = scratch;
for ( ; ; ) {
int const ch = SAMFileRead1(&self->file.sam);
if (ch < 0) {
rc_t const rc = SAMFileLastError(&self->file.sam);
- return (i == 0 && field == 1 && (rc == 0 || GetRCState(rc) == rcInsufficient)) ? RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound) : rc;
+ return (i == 0 && field == 1 && (rc == 0 || GetRCState(rc) == rcInsufficient)) ? SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound) : rc;
}
if ((void const *)&scratch[i] >= endp)
return RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
if (!(ch == '\t' || ch == '\n')) {
- if (field != 0)
- scratch[i++] = ch;
+ if (field != 0) {
+ if (intScratch == NULL) {
+ scratch[i] = ch;
+ }
+ else {
+ int const value = ch - '0';
+ if (ch == '-' && i == 0) {
+ sgn = -1;
+ }
+ else if (ch == '-' && i == 0) {
+ sgn = 1;
+ }
+ else {
+ if (value < 0 || value > 9) {
+ LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing integer field");
+ return RC(rcAlign, rcFile, rcReading, rcData, rcInvalid);
+ }
+ *intScratch = *intScratch * 10 + value * sgn;
+ }
+ }
+ }
+ ++i;
continue;
}
- scratch[i] = '\0';
-
+ if (intScratch == NULL)
+ scratch[i] = '\0';
+ else {
+ intScratch = NULL;
+ sgn = 1;
+ }
switch (field) {
case 0:
if (ch == '\n')
@@ -2267,12 +2368,9 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
}
}
temp.CIGAR = (void *)scratch;
+ intScratch = &temp.FLAG;
break;
case 2:
- if (sscanf(scratch, "%i%n", &temp.FLAG, &n) != 1 || n != i) {
- LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing FLAG");
- field = 0;
- }
break;
case 3:
if (i == 1 && scratch[0] == '*')
@@ -2286,18 +2384,12 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
field = 0;
}
}
+ intScratch = &temp.POS;
break;
case 4:
- if (sscanf(scratch, "%i%n", &temp.POS, &n) != 1 || n != i) {
- LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing POS");
- field = 0;
- }
+ intScratch = &temp.MAPQ;
break;
case 5:
- if (sscanf(scratch, "%i%n", &temp.MAPQ, &n) != 1 || n != i) {
- LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing MAPQ");
- field = 0;
- }
if (temp.MAPQ > 255) {
LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error MAPQ > 255");
field = 0;
@@ -2337,25 +2429,19 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
field = 0;
}
}
+ intScratch = &temp.PNEXT;
break;
case 8:
- if (sscanf(scratch, "%i%n", &temp.PNEXT, &n) != 1 || n != i) {
- LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing PNEXT");
- field = 0;
- }
+ intScratch = &temp.TLEN;
break;
case 9:
- if (sscanf(scratch, "%i%n", &temp.TLEN, &n) != 1 || n != i) {
- LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing TLEN");
- field = 0;
- }
break;
case 10:
if (i == 1 && scratch[0] == '*')
temp.readlen = 0;
else {
temp.readlen = i;
- scratch += (i + 1) >> 1;
+ scratch += (temp.readlen + 1) / 2;
temp.QUAL = (uint8_t *)scratch;
{
rc_t const rc = SAM2BAM_ConvertSEQ(i, temp.SEQ, endp);
@@ -2450,7 +2536,7 @@ static rc_t read2(BAM_File *const self, BAM_Alignment const **const rhs)
rc_t rc;
if (self->bufCurrent >= self->bufSize && self->eof)
- return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
if (self->isSAM) {
rc = BAM_FileReadSAM(self, rhs);
@@ -2501,7 +2587,7 @@ static rc_t readDefer(BAM_File *const self, BAM_Alignment const **const rslt)
if (nread == 0) {
KFileRelease(self->defer);
self->defer = NULL;
- return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+ return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
}
assert(nread == 4);
assert(datasize < 64u * 1024u);
@@ -3231,6 +3317,10 @@ static int FormatOptData(BAM_Alignment const *const self,
j = snprintf(buffer + cur, maxsize - cur, "%f", fi.f);
if ((cur += j) >= maxsize)
return -1;
+ while (buffer[cur - 1] == '0')
+ --cur;
+ if (buffer[cur - 1] == '.')
+ --cur;
offset += 4;
break;
@@ -3311,7 +3401,12 @@ static int FormatOptData(BAM_Alignment const *const self,
j = snprintf(buffer + cur, maxsize - cur, "%f", fi.f);
if ((cur += j) >= maxsize)
return -1;
+ while (buffer[cur - 1] == '0')
+ --cur;
+ if (buffer[cur - 1] == '.')
+ --cur;
offset += 4;
+ break;
default:
return -1;
@@ -3662,7 +3757,7 @@ rc_t BAM_AlignmentCGReadLength(BAM_Alignment const *self, uint32_t *readlen)
*readlen = di;
return 0;
}
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
static unsigned BAM_AlignmentParseCGTag(BAM_Alignment const *self, size_t const max_cg_segs, unsigned cg_segs[/* max_cg_segs */])
@@ -3735,7 +3830,7 @@ rc_t ExtractInt32(BAM_Alignment const *self, int32_t *result,
return RC(rcAlign, rcRow, rcReading, rcData, rcInvalid);
break;
default:
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
if (INT32_MIN <= y && y <= INT32_MAX) {
*result = (int32_t)y;
@@ -3761,7 +3856,7 @@ rc_t BAM_AlignmentGetCGAlignGroup(BAM_Alignment const *self,
rc = ExtractInt32(self, &zi, ZI); if (rc) return rc;
return string_printf(buffer, max_size, act_size, "%i_%i", zi, za);
}
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
rc_t BAM_AlignmentGetCGSeqQual(BAM_Alignment const *self,
@@ -3816,7 +3911,7 @@ rc_t BAM_AlignmentGetCGSeqQual(BAM_Alignment const *self,
}
return 0;
}
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
@@ -3945,7 +4040,7 @@ rc_t BAM_AlignmentGetCGCigar(BAM_Alignment const *self,
*cig_act = GetCGCigar(self, cig_max, cigar);
return 0;
}
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
/* MARK: end CG stuff */
@@ -3959,7 +4054,7 @@ rc_t BAM_AlignmentGetTI(BAM_Alignment const *self, uint64_t *ti)
*ti = (uint64_t)temp;
return 0;
}
- return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+ return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
}
rc_t BAM_AlignmentGetRNAStrand(BAM_Alignment const *const self, uint8_t *const rslt)
diff --git a/tools/bam-loader/bam.h b/tools/bam-loader/bam.h
index 274744e..b4e1d53 100644
--- a/tools/bam-loader/bam.h
+++ b/tools/bam-loader/bam.h
@@ -317,9 +317,9 @@ rc_t BAM_AlignmentGetCigar ( const BAM_Alignment *self,
rc_t BAM_AlignmentGetInsertSize ( const BAM_Alignment *self, int64_t *size );
rc_t BAM_AlignmentFormatSAM(const BAM_Alignment *self,
- size_t *actsize,
- size_t maxsize,
- char *buffer);
+ size_t *actsize,
+ size_t maxsize,
+ char *buffer);
/* OptDataForEach
* DANGER
diff --git a/tools/bam-loader/loader-imp.c b/tools/bam-loader/loader-imp.c
index d2cfef6..7413d55 100644
--- a/tools/bam-loader/loader-imp.c
+++ b/tools/bam-loader/loader-imp.c
@@ -119,6 +119,7 @@ typedef struct {
uint32_t primaryId[2];
uint32_t spotId;
uint32_t fragmentId;
+ uint8_t fragment_len[2]; /*** lowest byte of fragment length to prevent different sizes of primary and secondary alignments **/
uint8_t platform;
uint8_t pId_ext[2];
uint8_t spotId_ext;
@@ -1005,9 +1006,10 @@ INSDC_SRA_platform_id GetINSDCPlatform(BAM_File const *bam, char const name[]) {
static
rc_t CheckLimitAndLogError(void)
{
- ++G.errCount;
- if (G.maxErrCount > 0 && G.errCount > G.maxErrCount) {
- (void)PLOGERR(klogErr, (klogErr, SILENT_RC(rcAlign, rcFile, rcReading, rcError, rcExcessive), "Number of errors $(cnt) exceeds limit of $(max): Exiting", "cnt=%u,max=%u", G.errCount, G.maxErrCount));
+ unsigned const count = ++G.errCount;
+
+ if (G.maxErrCount > 0 && count > G.maxErrCount) {
+ (void)PLOGERR(klogErr, (klogErr, SILENT_RC(rcAlign, rcFile, rcReading, rcError, rcExcessive), "Number of errors $(cnt) exceeds limit of $(max): Exiting", "cnt=%u,max=%u", count, G.maxErrCount));
return RC(rcAlign, rcFile, rcReading, rcError, rcExcessive);
}
return 0;
@@ -1394,12 +1396,23 @@ KQueue *bamq;
static rc_t run_bamread_thread(const KThread *self, void *const file)
{
rc_t rc = 0;
+ size_t NR = 0;
while (rc == 0) {
BAM_Alignment const *crec = NULL;
BAM_Alignment *rec = NULL;
+ ++NR;
rc = BAM_FileRead2(file, &crec);
+ if ((int)GetRCObject(rc) == rcRow && (int)GetRCState(rc) == rcEmpty) {
+ rc = CheckLimitAndLogError();
+ continue;
+ }
+ if ((int)GetRCObject(rc) == rcRow && (int)GetRCState(rc) == rcNotFound) {
+ /* EOF */
+ rc = 0;
+ break;
+ }
if (rc) break;
rc = BAM_AlignmentCopy(crec, &rec);
BAM_AlignmentRelease(crec);
@@ -1424,8 +1437,13 @@ static rc_t run_bamread_thread(const KThread *self, void *const file)
break;
}
}
- (void)PLOGERR(klogInfo, (klogInfo, rc, "bamread_thread done", NULL));
KQueueSeal(bamq);
+ if (rc) {
+ (void)LOGERR(klogErr, rc, "bamread_thread done");
+ }
+ else {
+ (void)PLOGMSG(klogInfo, (klogInfo, "bamread_thread done; read $(NR) records", "NR=%lu", NR));
+ }
return rc;
}
#endif
@@ -1580,11 +1598,14 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
if ((int)GetRCObject(rc) == rcTimeout)
rc = 0;
else {
- if ((int)GetRCObject(rc)==rcData && (int)GetRCState(rc)==rcDone)
- (void)PLOGMSG(klogInfo, (klogInfo, "KQueuePop Done", NULL));
+ rc_t rc2 = 0;
+ if ((int)GetRCObject(rc) == rcData && (int)GetRCState(rc) == rcDone)
+ (void)LOGMSG(klogDebug, "KQueuePop Done");
else
(void)PLOGERR(klogWarn, (klogWarn, rc, "KQueuePop Error", NULL));
- KThreadWait(bamread_thread, &rc);
+ KThreadWait(bamread_thread, &rc2);
+ if (rc2 != 0)
+ rc = rc2;
KThreadRelease(bamread_thread);
bamread_thread = NULL;
break;
@@ -1595,8 +1616,10 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
#endif
if (rc) {
- if (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound) {
- (void)PLOGMSG(klogInfo, (klogInfo, "EOF '$(file)'; read $(read); processed $(proc)", "file=%s,read=%lu,proc=%lu", bamFile, (unsigned long)recordsRead, (unsigned long)recordsProcessed));
+ if ( (GetRCModule(rc) == rcCont && (int)GetRCObject(rc) == rcData && GetRCState(rc) == rcDone)
+ || (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound))
+ {
+ (void)PLOGMSG(klogInfo, (klogInfo, "EOF '$(file)'; processed $(proc)", "file=%s,read=%lu,proc=%lu", bamFile, (unsigned long)recordsRead, (unsigned long)recordsProcessed));
rc = 0;
}
else if (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcEmpty) {
@@ -1612,6 +1635,17 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
}
++recordsRead;
+ BAM_AlignmentGetReadName2(rec, &name, &namelen);
+#if THREADING_BAMREAD_PRIME_NAME2KEY
+ keyId = rec->keyId;
+ wasInserted = rec->wasInserted;
+#else
+ rc = GetKeyID(&ctx->keyToID, &keyId, &wasInserted, spotGroup, name, namelen);
+ if (rc) {
+ (void)PLOGERR(klogErr, (klogErr, rc, "KBTreeEntry: failed on key '$(key)'", "key=%.*s", namelen, name));
+ goto LOOP_END;
+ }
+#endif
{
float const new_value = BAM_FileGetProportionalPosition(bam) * 100.0;
float const delta = new_value - progress;
@@ -1640,7 +1674,6 @@ MIXED_BASE_AND_COLOR:
isNotColorSpace = true;
}
BAM_AlignmentGetFlags(rec, &flags);
- BAM_AlignmentGetReadName2(rec, &name, &namelen);
isPrimary = (flags & (BAMFlags_IsNotPrimary|BAMFlags_IsSupplemental)) == 0 ? true : false;
if (!isPrimary && G.noSecondary)
goto LOOP_END;
@@ -1713,6 +1746,32 @@ MIXED_BASE_AND_COLOR:
}
}
}
+ if(G.deferSecondary && !isPrimary ){ /*** try to see if hard-clipped secondary alignment can be salvaged **/
+ ctx_value_t *tmp_value;
+ rc_t rc2=MMArrayGetRead(ctx->id2value, (void **)&tmp_value, keyId);
+ if(rc2==0){
+ int i=((flags&BAMFlags_WasPaired) && (flags&BAMFlags_IsSecond))?0:1;
+ BAM_AlignmentGetReadLength(rec, &readlen);
+ if(readlen + lpad + rpad < tmp_value->fragment_len[i]){
+ opCount++;
+ rc = KDataBufferResize(&cigBuf, opCount);
+ if (rc) {
+ (void)LOGERR(klogErr, rc, "Failed to resize CIGAR buffer");
+ goto LOOP_END;
+ }
+ if(rpad > 0 && lpad==0){
+ uint32_t * cigar = cigBuf.base;
+ lpad = tmp_value->fragment_len[i] - readlen - rpad;
+ memmove(cigar+1,cigar,(opCount-1)*sizeof(*cigar));
+ cigar[0] = (((uint32_t)lpad) << 4) | 4;
+ } else {
+ uint32_t *const cigar = cigBuf.base;
+ rpad += tmp_value->fragment_len[i] - readlen - lpad;
+ cigar[opCount - 1] = (((uint32_t)rpad) << 4) | 4;
+ }
+ }
+ }
+ }
}
if (hasCG) {
rc = AlignmentRecordInit(&data, readlen);
@@ -1898,23 +1957,15 @@ MIXED_BASE_AND_COLOR:
assert(!"this shouldn't happen");
goto LOOP_END;
}
-#if THREADING_BAMREAD_PRIME_NAME2KEY
- keyId = rec->keyId;
- wasInserted = rec->wasInserted;
-#else
- rc = GetKeyID(&ctx->keyToID, &keyId, &wasInserted, spotGroup, name, namelen);
-#endif
- if (rc) {
- (void)PLOGERR(klogErr, (klogErr, rc, "KBTreeEntry: failed on key '$(key)'", "key=%.*s", namelen, name));
- goto LOOP_END;
- }
+
+ AR_KEY(data) = keyId;
+
rc = MMArrayGet(ctx->id2value, (void **)&value, keyId);
if (rc) {
(void)PLOGERR(klogErr, (klogErr, rc, "MMArrayGet: failed on id '$(id)'", "id=%u", keyId));
goto LOOP_END;
}
- AR_KEY(data) = keyId;
mated = false;
if (flags & BAMFlags_WasPaired) {
@@ -1955,13 +2006,13 @@ MIXED_BASE_AND_COLOR:
}
memset(value, 0, sizeof(*value));
value->unmated = !mated;
- if (isPrimary || G.assembleWithSecondary) {
+ if (isPrimary || G.assembleWithSecondary || G.deferSecondary) {
value->pcr_dup = (flags & BAMFlags_IsDuplicate) == 0 ? 0 : 1;
value->platform = GetINSDCPlatform(bam, spotGroup);
value->primary_is_set = 1;
}
}
- else if (isPrimary || G.assembleWithSecondary) {
+ else if (isPrimary || G.assembleWithSecondary || G.deferSecondary) {
int o_pcr_dup = value->pcr_dup;
int const n_pcr_dup = (flags & BAMFlags_IsDuplicate) == 0 ? 0 : 1;
@@ -2046,6 +2097,31 @@ MIXED_BASE_AND_COLOR:
NCBI_align_ro_intron_unknown;
rc = ReferenceRead(ref, &data, rpos, cigBuf.base, opCount, seqDNA, readlen, intronType, &matches, &misses);
}
+ if (rc == 0) {
+ int const i= AR_READNO(data) - 1;
+ int const clipped_rl = (uint8_t)readlen;
+ if (i >= 0 && i < 2) {
+ int const rl = value->fragment_len[i];
+
+ if (rl == 0)
+ value->fragment_len[i] = clipped_rl;
+ else if (rl != clipped_rl) {
+ if (isPrimary) {
+ rc = RC(rcApp, rcFile, rcReading, rcConstraint, rcViolated);
+ (void)PLOGERR(klogErr, (klogErr, rc, "Primary alignment for '$(name)' has different length ($(len)) then previously recorded secondary alignment. Try to defer secondary alignment processing.",
+ "name=%s,len=%d", name, readlen));
+ }
+ else {
+ rc = SILENT_RC(rcApp, rcFile, rcReading, rcConstraint, rcViolated);
+ (void)PLOGERR(klogWarn, (klogWarn, rc, "Secondary alignment for '$(name)' has different length ($(len)) then previously recorded primary alignment; discarding secondary alignment.",
+ "name=%s,len=%d", name, readlen));
+ DISCARD_BAD_SECONDARY;
+ rc = CheckLimitAndLogError();
+ }
+ goto LOOP_END;
+ }
+ }
+ }
if (rc == 0 && (matches < G.minMatchCount || (matches == 0 && !G.acceptNoMatch))) {
if (isPrimary) {
if (misses > matches) {
@@ -2139,7 +2215,7 @@ WRITE_SEQUENCE:
int64_t pnext = 0;
if (!isPrimary) {
- if (!G.assembleWithSecondary || hardclipped) {
+ if ( (!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) {
goto WRITE_ALIGNMENT;
}
(void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2238,7 +2314,7 @@ WRITE_SEQUENCE:
uint8_t *src = (uint8_t*) fip + sizeof(*fip);
if (!isPrimary) {
- if (!G.assembleWithSecondary || hardclipped ) {
+ if ((!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) {
goto WRITE_ALIGNMENT;
}
(void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2360,7 +2436,7 @@ WRITE_SEQUENCE:
else if (CTX_VALUE_GET_S_ID(*value) == 0) {
/* new unmated fragment - no spot assembly */
if (!isPrimary) {
- if (!G.assembleWithSecondary || hardclipped ) {
+ if ((!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) {
goto WRITE_ALIGNMENT;
}
(void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2960,6 +3036,7 @@ rc_t run(char const progName[],
VDatabaseRelease(db);
VTableDropColumn(tbl, "TMP_KEY_ID");
VTableDropColumn(tbl, "READ");
+ VTableDropColumn(tbl, "ALTREAD");
VTableRelease(tbl);
}
diff --git a/tools/bam-loader/reference-writer.c b/tools/bam-loader/reference-writer.c
index 755f391..f43c54a 100644
--- a/tools/bam-loader/reference-writer.c
+++ b/tools/bam-loader/reference-writer.c
@@ -416,16 +416,14 @@ rc_t ReferenceAddCoverage(Reference *const self,
{
unsigned const refEnd = refStart + refLength;
- if (refLength == 0) /* this happens for insert-only alignments */
- return 0;
-
- if (refEnd > self->endPos) {
+ if (refEnd > self->endPos || self->endPos == 0) {
unsigned const t1 = refEnd + (G.maxSeqLen - 1);
unsigned const adjust = t1 % G.maxSeqLen;
- unsigned const newEndPos = t1 - adjust;
+ unsigned const t2 = t1 - adjust;
+ unsigned const newEndPos = t2 != 0 ? t2 : G.maxSeqLen;
unsigned const baseCount = self->endPos - self->curPos;
unsigned const newBaseCount = newEndPos - self->curPos;
-
+
BAIL_ON_FAIL(KDataBufferResize(&self->coverage, newBaseCount));
BAIL_ON_FAIL(KDataBufferResize(&self->mismatches, newBaseCount));
BAIL_ON_FAIL(KDataBufferResize(&self->indels, newBaseCount));
@@ -561,6 +559,11 @@ rc_t ReferenceRead(Reference *self, AlignmentRecord *data, uint64_t const pos,
return 0;
}
+rc_t ReferenceGetSequence(Reference *self, char *rslt, unsigned position, unsigned nCIGAR, unsigned *CIGAR)
+{
+ return ReferenceSeq_Read(self->rseq, rslt, position, nCIGAR, CIGAR);
+}
+
static rc_t IdVecAppend(KDataBuffer *vec, uint64_t id)
{
uint64_t const end = vec->elem_count;
diff --git a/tools/bam-loader/reference-writer.h b/tools/bam-loader/reference-writer.h
index 2946c82..1c798f5 100644
--- a/tools/bam-loader/reference-writer.h
+++ b/tools/bam-loader/reference-writer.h
@@ -73,4 +73,6 @@ rc_t ReferenceRead(Reference *self, AlignmentRecord *data, uint64_t pos,
uint8_t rna_orient, uint32_t *matches, uint32_t *misses);
rc_t ReferenceWhack(Reference *self, bool commit);
+rc_t ReferenceGetSequence(Reference *self, char *rslt, unsigned position, unsigned nCIGAR, unsigned *CIGAR);
+
#endif
diff --git a/tools/bam-loader/samview.c b/tools/bam-loader/samview.c
new file mode 100644
index 0000000..77b6519
--- /dev/null
+++ b/tools/bam-loader/samview.c
@@ -0,0 +1,109 @@
+/* ===========================================================================
+ *
+ * PUBLIC DOMAIN NOTICE
+ * National Center for Biotechnology Information
+ *
+ * This software/database is a "United States Government Work" under the
+ * terms of the United States Copyright Act. It was written as part of
+ * the author's official duties as a United States Government employee and
+ * thus cannot be copyrighted. This software/database is freely available
+ * to the public for use. The National Library of Medicine and the U.S.
+ * Government have not placed any restriction on its use or reproduction.
+ *
+ * Although all reasonable efforts have been taken to ensure the accuracy
+ * and reliability of the software and data, the NLM and the U.S.
+ * Government do not and cannot warrant the performance or results that
+ * may be obtained by using this software or data. The NLM and the U.S.
+ * Government disclaim all warranties, express or implied, including
+ * warranties of performance, merchantability or fitness for any particular
+ * purpose.
+ *
+ * Please cite the author in any work or product based on this material.
+ *
+ * ===========================================================================
+ *
+ */
+
+#include <kapp/args.h>
+#include <kapp/main.h>
+#include <klib/log.h>
+#include <kfs/file.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "bam.h"
+
+#include <klib/rc.h>
+
+static void writeHeader(BAM_File const *const bam)
+{
+ char const *header = NULL;
+ size_t hsize = 0;
+
+ BAM_FileGetHeaderText(bam, &header, &hsize);
+ fwrite(header, 1, hsize, stdout);
+}
+
+static rc_t writeSAM(BAM_Alignment const *const rec)
+{
+ static char buffer[64*1024];
+ size_t actsize = 0;
+ rc_t const rc = BAM_AlignmentFormatSAM(rec, &actsize, sizeof(buffer), buffer);
+
+ if (rc == 0)
+ fwrite(buffer, 1, actsize, stdout);
+
+ return rc;
+}
+
+static
+void samview(char const path[])
+{
+ BAM_File const *bam = NULL;
+ rc_t rc = BAM_FileMake(&bam, NULL, NULL, path);
+
+ if (rc == 0) {
+ BAM_Alignment const *rec = NULL;
+
+ writeHeader(bam);
+ while ((rc = BAM_FileRead2(bam, &rec)) == 0) {
+ rc_t const rc2 = writeSAM(rec);
+ BAM_AlignmentRelease(rec);
+ if (rc2)
+ break;
+ }
+ BAM_FileRelease(bam);
+ if (GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound)
+ rc = 0;
+ }
+ if (rc)
+ LOGERR(klogWarn, rc, "Final RC");
+}
+
+rc_t CC UsageSummary(char const *name)
+{
+ return 0;
+}
+
+rc_t CC Usage(Args const *args)
+{
+ return 0;
+}
+
+ver_t CC KAppVersion(void)
+{
+ return 0;
+}
+
+rc_t CC KMain(int argc, char *argv[])
+{
+ if (argc == 1) {
+ samview("/dev/stdin");
+ return 0;
+ }
+ while (--argc) {
+ samview(*++argv);
+ }
+ return 0;
+}
diff --git a/tools/fastdump/fastdump.vers b/tools/bam-loader/samview.vers
similarity index 100%
copy from tools/fastdump/fastdump.vers
copy to tools/bam-loader/samview.vers
diff --git a/tools/cache-mgr/cache-mgr.vers b/tools/cache-mgr/cache-mgr.vers
index 097a15a..ec1cf33 100644
--- a/tools/cache-mgr/cache-mgr.vers
+++ b/tools/cache-mgr/cache-mgr.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/cache-mgr/cache-mgr.vers.h b/tools/cache-mgr/cache-mgr.vers.h
index 554e80d..faf499d 100644
--- a/tools/cache-mgr/cache-mgr.vers.h
+++ b/tools/cache-mgr/cache-mgr.vers.h
@@ -1 +1 @@
-#define CACHE_MGR_VERS 0x02060002
+#define CACHE_MGR_VERS 0x02060003
diff --git a/tools/ccextract/ccextract.vers b/tools/ccextract/ccextract.vers
index 097a15a..ec1cf33 100644
--- a/tools/ccextract/ccextract.vers
+++ b/tools/ccextract/ccextract.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/cg-load/cg-load.vers b/tools/cg-load/cg-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/cg-load/cg-load.vers
+++ b/tools/cg-load/cg-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/copycat/copycat.vers b/tools/copycat/copycat.vers
index 097a15a..ec1cf33 100644
--- a/tools/copycat/copycat.vers
+++ b/tools/copycat/copycat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastdump/fastdump.vers b/tools/fastdump/fastdump.vers
index 3eefcb9..ec1cf33 100644
--- a/tools/fastdump/fastdump.vers
+++ b/tools/fastdump/fastdump.vers
@@ -1 +1 @@
-1.0.0
+2.6.3
diff --git a/tools/fastq-dump/fastq-dump.vers b/tools/fastq-dump/fastq-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/fastq-dump/fastq-dump.vers
+++ b/tools/fastq-dump/fastq-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastq-loader/latf-load.vers b/tools/fastq-loader/latf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/fastq-loader/latf-load.vers
+++ b/tools/fastq-loader/latf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastq-loader/latf-load.vers.h b/tools/fastq-loader/latf-load.vers.h
index d8b420a..c6d8979 100644
--- a/tools/fastq-loader/latf-load.vers.h
+++ b/tools/fastq-loader/latf-load.vers.h
@@ -1 +1 @@
-#define LATF_LOAD_VERS 0x02060002
+#define LATF_LOAD_VERS 0x02060003
diff --git a/tools/fuse/remote-fuser.vers b/tools/fuse/remote-fuser.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/remote-fuser.vers
+++ b/tools/fuse/remote-fuser.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-fuser-test.vers b/tools/fuse/sra-fuser-test.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-fuser-test.vers
+++ b/tools/fuse/sra-fuser-test.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-fuser-test.vers.h b/tools/fuse/sra-fuser-test.vers.h
index 02a6a64..02be1cf 100644
--- a/tools/fuse/sra-fuser-test.vers.h
+++ b/tools/fuse/sra-fuser-test.vers.h
@@ -1 +1 @@
-#define SRA_FUSER_TEST_VERS 0x02060002
+#define SRA_FUSER_TEST_VERS 0x02060003
diff --git a/tools/fuse/sra-fuser.vers b/tools/fuse/sra-fuser.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-fuser.vers
+++ b/tools/fuse/sra-fuser.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-makeidx.vers b/tools/fuse/sra-makeidx.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-makeidx.vers
+++ b/tools/fuse/sra-makeidx.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/general-loader/general-loader.vers b/tools/general-loader/general-loader.vers
index 097a15a..ec1cf33 100644
--- a/tools/general-loader/general-loader.vers
+++ b/tools/general-loader/general-loader.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/general-loader/general-loader.vers.h b/tools/general-loader/general-loader.vers.h
index 259ee83..367089a 100644
--- a/tools/general-loader/general-loader.vers.h
+++ b/tools/general-loader/general-loader.vers.h
@@ -1 +1 @@
-#define GENERAL_LOADER_VERS 0x02060002
+#define GENERAL_LOADER_VERS 0x02060003
diff --git a/tools/general-loader/libgeneral-writer.vers b/tools/general-loader/libgeneral-writer.vers
index 097a15a..ec1cf33 100644
--- a/tools/general-loader/libgeneral-writer.vers
+++ b/tools/general-loader/libgeneral-writer.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/kar.vers b/tools/kar/kar.vers
index 097a15a..ec1cf33 100644
--- a/tools/kar/kar.vers
+++ b/tools/kar/kar.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/kar.vers.h b/tools/kar/kar.vers.h
index 72ddb2d..8d8dc95 100644
--- a/tools/kar/kar.vers.h
+++ b/tools/kar/kar.vers.h
@@ -1 +1 @@
-#define KAR_VERS 0x02060002
+#define KAR_VERS 0x02060003
diff --git a/tools/kar/sra-kar.vers b/tools/kar/sra-kar.vers
index 097a15a..ec1cf33 100644
--- a/tools/kar/sra-kar.vers
+++ b/tools/kar/sra-kar.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/sra-kar.vers.h b/tools/kar/sra-kar.vers.h
index 77c127a..1be0e24 100644
--- a/tools/kar/sra-kar.vers.h
+++ b/tools/kar/sra-kar.vers.h
@@ -1 +1 @@
-#define SRA_KAR_VERS 0x02060002
+#define SRA_KAR_VERS 0x02060003
diff --git a/tools/keyring-srv/keyring-srv.vers b/tools/keyring-srv/keyring-srv.vers
index 097a15a..ec1cf33 100644
--- a/tools/keyring-srv/keyring-srv.vers
+++ b/tools/keyring-srv/keyring-srv.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kqsh/kqsh.vers b/tools/kqsh/kqsh.vers
index 097a15a..ec1cf33 100644
--- a/tools/kqsh/kqsh.vers
+++ b/tools/kqsh/kqsh.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nenctool/nenctest.vers b/tools/nenctool/nenctest.vers
index 097a15a..ec1cf33 100644
--- a/tools/nenctool/nenctest.vers
+++ b/tools/nenctool/nenctest.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nenctool/nenctool.vers b/tools/nenctool/nenctool.vers
index 097a15a..ec1cf33 100644
--- a/tools/nenctool/nenctool.vers
+++ b/tools/nenctool/nenctool.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nencvalid/nencvalid.vers b/tools/nencvalid/nencvalid.vers
index 097a15a..ec1cf33 100644
--- a/tools/nencvalid/nencvalid.vers
+++ b/tools/nencvalid/nencvalid.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/pacbio-load/pacbio-load.vers b/tools/pacbio-load/pacbio-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/pacbio-load/pacbio-load.vers
+++ b/tools/pacbio-load/pacbio-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/pileup-stats/pileup-stats.vers b/tools/pileup-stats/pileup-stats.vers
index 097a15a..ec1cf33 100644
--- a/tools/pileup-stats/pileup-stats.vers
+++ b/tools/pileup-stats/pileup-stats.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/prefetch/prefetch.vers b/tools/prefetch/prefetch.vers
index 097a15a..ec1cf33 100644
--- a/tools/prefetch/prefetch.vers
+++ b/tools/prefetch/prefetch.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/prefetch/prefetch.vers.h b/tools/prefetch/prefetch.vers.h
index 1fdd187..9ab6a39 100644
--- a/tools/prefetch/prefetch.vers.h
+++ b/tools/prefetch/prefetch.vers.h
@@ -1 +1 @@
-#define PREFETCH_VERS 0x02060002
+#define PREFETCH_VERS 0x02060003
diff --git a/tools/qual-recalib-stat/qual-recalib-stat.vers b/tools/qual-recalib-stat/qual-recalib-stat.vers
index 097a15a..ec1cf33 100644
--- a/tools/qual-recalib-stat/qual-recalib-stat.vers
+++ b/tools/qual-recalib-stat/qual-recalib-stat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/qual-recalib-stat/qual-recalib-stat.vers.h b/tools/qual-recalib-stat/qual-recalib-stat.vers.h
index 6e217ad..447af5d 100644
--- a/tools/qual-recalib-stat/qual-recalib-stat.vers.h
+++ b/tools/qual-recalib-stat/qual-recalib-stat.vers.h
@@ -1 +1 @@
-#define QUAL_RECALIB_STAT_VERS 0x02060002
+#define QUAL_RECALIB_STAT_VERS 0x02060003
diff --git a/tools/rd-filter-redact/rd-filter-redact.vers b/tools/rd-filter-redact/rd-filter-redact.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/rd-filter-redact.vers
+++ b/tools/rd-filter-redact/rd-filter-redact.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/rd-filter-redact/read-filter-redact.vers b/tools/rd-filter-redact/read-filter-redact.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/read-filter-redact.vers
+++ b/tools/rd-filter-redact/read-filter-redact.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/rd-filter-redact/read-filter-redact.vers.h b/tools/rd-filter-redact/read-filter-redact.vers.h
index 7b2743b..0724895 100644
--- a/tools/rd-filter-redact/read-filter-redact.vers.h
+++ b/tools/rd-filter-redact/read-filter-redact.vers.h
@@ -1 +1 @@
-#define READ_FILTER_REDACT_VERS 0x02060002
+#define READ_FILTER_REDACT_VERS 0x02060003
diff --git a/tools/rd-filter-redact/test-read-write-cursor.vers b/tools/rd-filter-redact/test-read-write-cursor.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/test-read-write-cursor.vers
+++ b/tools/rd-filter-redact/test-read-write-cursor.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/ref-variation.vers b/tools/ref-variation/ref-variation.vers
index 097a15a..ec1cf33 100644
--- a/tools/ref-variation/ref-variation.vers
+++ b/tools/ref-variation/ref-variation.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/ref-variation.vers.h b/tools/ref-variation/ref-variation.vers.h
index 9d66d52..60715b0 100644
--- a/tools/ref-variation/ref-variation.vers.h
+++ b/tools/ref-variation/ref-variation.vers.h
@@ -1 +1 @@
-#define REF_VARIATION_VERS 0x02060002
+#define REF_VARIATION_VERS 0x02060003
diff --git a/tools/ref-variation/var-expand.vers b/tools/ref-variation/var-expand.vers
index 097a15a..ec1cf33 100644
--- a/tools/ref-variation/var-expand.vers
+++ b/tools/ref-variation/var-expand.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/var-expand.vers.h b/tools/ref-variation/var-expand.vers.h
index 8d3b773..cf2ec40 100644
--- a/tools/ref-variation/var-expand.vers.h
+++ b/tools/ref-variation/var-expand.vers.h
@@ -1 +1 @@
-#define VAR_EXPAND_VERS 0x02060002
+#define VAR_EXPAND_VERS 0x02060003
diff --git a/tools/refseq-load/refseq-load.vers b/tools/refseq-load/refseq-load.vers
deleted file mode 100644
index ecd7ee5..0000000
--- a/tools/refseq-load/refseq-load.vers
+++ /dev/null
@@ -1 +0,0 @@
-2.5.8
diff --git a/tools/sra-dump/abi-dump.vers b/tools/sra-dump/abi-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/abi-dump.vers
+++ b/tools/sra-dump/abi-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/abi-dump.vers.h b/tools/sra-dump/abi-dump.vers.h
index 5cb1220..e794e28 100644
--- a/tools/sra-dump/abi-dump.vers.h
+++ b/tools/sra-dump/abi-dump.vers.h
@@ -1 +1 @@
-#define ABI_DUMP_VERS 0x02060002
+#define ABI_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/fastq-dump.vers b/tools/sra-dump/fastq-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/fastq-dump.vers
+++ b/tools/sra-dump/fastq-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/fastq-dump.vers.h b/tools/sra-dump/fastq-dump.vers.h
index 2e4eac7..bac1c66 100644
--- a/tools/sra-dump/fastq-dump.vers.h
+++ b/tools/sra-dump/fastq-dump.vers.h
@@ -1 +1 @@
-#define FASTQ_DUMP_VERS 0x02060002
+#define FASTQ_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/illumina-dump.vers b/tools/sra-dump/illumina-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/illumina-dump.vers
+++ b/tools/sra-dump/illumina-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/illumina-dump.vers.h b/tools/sra-dump/illumina-dump.vers.h
index 5578f1e..a7a1763 100644
--- a/tools/sra-dump/illumina-dump.vers.h
+++ b/tools/sra-dump/illumina-dump.vers.h
@@ -1 +1 @@
-#define ILLUMINA_DUMP_VERS 0x02060002
+#define ILLUMINA_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/sff-dump.vers b/tools/sra-dump/sff-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/sff-dump.vers
+++ b/tools/sra-dump/sff-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/sff-dump.vers.h b/tools/sra-dump/sff-dump.vers.h
index edc31de..5f9ef78 100644
--- a/tools/sra-dump/sff-dump.vers.h
+++ b/tools/sra-dump/sff-dump.vers.h
@@ -1 +1 @@
-#define SFF_DUMP_VERS 0x02060002
+#define SFF_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/sra-dump.vers b/tools/sra-dump/sra-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/sra-dump.vers
+++ b/tools/sra-dump/sra-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/abi-load.vers b/tools/sra-load/abi-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/abi-load.vers
+++ b/tools/sra-load/abi-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/fastq-load.vers b/tools/sra-load/fastq-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/fastq-load.vers
+++ b/tools/sra-load/fastq-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/helicos-load.vers b/tools/sra-load/helicos-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/helicos-load.vers
+++ b/tools/sra-load/helicos-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/illumina-load.vers b/tools/sra-load/illumina-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/illumina-load.vers
+++ b/tools/sra-load/illumina-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/pacbio-loadxml.vers b/tools/sra-load/pacbio-loadxml.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/pacbio-loadxml.vers
+++ b/tools/sra-load/pacbio-loadxml.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/sff-load.vers b/tools/sra-load/sff-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/sff-load.vers
+++ b/tools/sra-load/sff-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/srf-load.vers b/tools/sra-load/srf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/srf-load.vers
+++ b/tools/sra-load/srf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sam-dump.vers b/tools/sra-pileup/sam-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sam-dump.vers
+++ b/tools/sra-pileup/sam-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sam-dump.vers.h b/tools/sra-pileup/sam-dump.vers.h
index b2db389..0d9ee9f 100644
--- a/tools/sra-pileup/sam-dump.vers.h
+++ b/tools/sra-pileup/sam-dump.vers.h
@@ -1 +1 @@
-#define SAM_DUMP_VERS 0x02060002
+#define SAM_DUMP_VERS 0x02060003
diff --git a/tools/sra-pileup/sam-dump2.vers b/tools/sra-pileup/sam-dump2.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sam-dump2.vers
+++ b/tools/sra-pileup/sam-dump2.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sra-pileup.vers b/tools/sra-pileup/sra-pileup.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sra-pileup.vers
+++ b/tools/sra-pileup/sra-pileup.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sra-pileup.vers.h b/tools/sra-pileup/sra-pileup.vers.h
index 41689b9..83db8f0 100644
--- a/tools/sra-pileup/sra-pileup.vers.h
+++ b/tools/sra-pileup/sra-pileup.vers.h
@@ -1 +1 @@
-#define SRA_PILEUP_VERS 0x02060002
+#define SRA_PILEUP_VERS 0x02060003
diff --git a/tools/sra-sort/sra-sort.vers b/tools/sra-sort/sra-sort.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-sort/sra-sort.vers
+++ b/tools/sra-sort/sra-sort.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-stat/sra-stat.vers b/tools/sra-stat/sra-stat.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-stat/sra-stat.vers
+++ b/tools/sra-stat/sra-stat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-stat/sra-stat.vers.h b/tools/sra-stat/sra-stat.vers.h
index ffd88d8..baf727b 100644
--- a/tools/sra-stat/sra-stat.vers.h
+++ b/tools/sra-stat/sra-stat.vers.h
@@ -1 +1 @@
-#define SRA_STAT_VERS 0x02060002
+#define SRA_STAT_VERS 0x02060003
diff --git a/tools/sra/table-vers.vers b/tools/sra/table-vers.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra/table-vers.vers
+++ b/tools/sra/table-vers.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/srapath/srapath.vers b/tools/srapath/srapath.vers
index 097a15a..ec1cf33 100644
--- a/tools/srapath/srapath.vers
+++ b/tools/srapath/srapath.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/srapath/srapath.vers.h b/tools/srapath/srapath.vers.h
index 94ba19b..9a38b5c 100644
--- a/tools/srapath/srapath.vers.h
+++ b/tools/srapath/srapath.vers.h
@@ -1 +1 @@
-#define SRAPATH_VERS 0x02060002
+#define SRAPATH_VERS 0x02060003
diff --git a/tools/update-schema/vdb-update-schema.vers b/tools/update-schema/vdb-update-schema.vers
index 097a15a..ec1cf33 100644
--- a/tools/update-schema/vdb-update-schema.vers
+++ b/tools/update-schema/vdb-update-schema.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdb-index.vers b/tools/util/kdb-index.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/kdb-index.vers
+++ b/tools/util/kdb-index.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdbmeta.vers b/tools/util/kdbmeta.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/kdbmeta.vers
+++ b/tools/util/kdbmeta.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdbmeta.vers.h b/tools/util/kdbmeta.vers.h
index 2a17913..7531271 100644
--- a/tools/util/kdbmeta.vers.h
+++ b/tools/util/kdbmeta.vers.h
@@ -1 +1 @@
-#define KDBMETA_VERS 0x02060002
+#define KDBMETA_VERS 0x02060003
diff --git a/tools/util/md5cp.vers b/tools/util/md5cp.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/md5cp.vers
+++ b/tools/util/md5cp.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/md5cp.vers.h b/tools/util/md5cp.vers.h
index 4fe95b6..ab6b4ff 100644
--- a/tools/util/md5cp.vers.h
+++ b/tools/util/md5cp.vers.h
@@ -1 +1 @@
-#define MD5CP_VERS 0x02060002
+#define MD5CP_VERS 0x02060003
diff --git a/tools/util/pacbio-correct.vers b/tools/util/pacbio-correct.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/pacbio-correct.vers
+++ b/tools/util/pacbio-correct.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/rcexplain.vers b/tools/util/rcexplain.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/rcexplain.vers
+++ b/tools/util/rcexplain.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/rcexplain.vers.h b/tools/util/rcexplain.vers.h
index 7f877fa..7ceed3d 100644
--- a/tools/util/rcexplain.vers.h
+++ b/tools/util/rcexplain.vers.h
@@ -1 +1 @@
-#define RCEXPLAIN_VERS 0x02060002
+#define RCEXPLAIN_VERS 0x02060003
diff --git a/tools/util/rowwritetest.vers b/tools/util/rowwritetest.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/rowwritetest.vers
+++ b/tools/util/rowwritetest.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/schema-replace.vers b/tools/util/schema-replace.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/schema-replace.vers
+++ b/tools/util/schema-replace.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/schema-replace.vers.h b/tools/util/schema-replace.vers.h
index 3e4e977..cc76b17 100644
--- a/tools/util/schema-replace.vers.h
+++ b/tools/util/schema-replace.vers.h
@@ -1 +1 @@
-#define SCHEMA_REPLACE_VERS 0x02060002
+#define SCHEMA_REPLACE_VERS 0x02060003
diff --git a/tools/util/test-sra.vers b/tools/util/test-sra.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/test-sra.vers
+++ b/tools/util/test-sra.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/test-sra.vers.h b/tools/util/test-sra.vers.h
index 853d01a..d706c30 100644
--- a/tools/util/test-sra.vers.h
+++ b/tools/util/test-sra.vers.h
@@ -1 +1 @@
-#define TEST_SRA_VERS 0x02060002
+#define TEST_SRA_VERS 0x02060003
diff --git a/tools/util/testld.vers b/tools/util/testld.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/testld.vers
+++ b/tools/util/testld.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/txt2kdb.vers b/tools/util/txt2kdb.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/txt2kdb.vers
+++ b/tools/util/txt2kdb.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-lock.vers b/tools/util/vdb-lock.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-lock.vers
+++ b/tools/util/vdb-lock.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-lock.vers.h b/tools/util/vdb-lock.vers.h
index c72842d..b179426 100644
--- a/tools/util/vdb-lock.vers.h
+++ b/tools/util/vdb-lock.vers.h
@@ -1 +1 @@
-#define VDB_LOCK_VERS 0x02060002
+#define VDB_LOCK_VERS 0x02060003
diff --git a/tools/util/vdb-passwd.vers b/tools/util/vdb-passwd.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-passwd.vers
+++ b/tools/util/vdb-passwd.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-passwd.vers.h b/tools/util/vdb-passwd.vers.h
index be91a7b..0c2f054 100644
--- a/tools/util/vdb-passwd.vers.h
+++ b/tools/util/vdb-passwd.vers.h
@@ -1 +1 @@
-#define VDB_PASSWD_VERS 0x02060002
+#define VDB_PASSWD_VERS 0x02060003
diff --git a/tools/util/vdb-unlock.vers b/tools/util/vdb-unlock.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-unlock.vers
+++ b/tools/util/vdb-unlock.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-unlock.vers.h b/tools/util/vdb-unlock.vers.h
index 921e5a2..9f05aa4 100644
--- a/tools/util/vdb-unlock.vers.h
+++ b/tools/util/vdb-unlock.vers.h
@@ -1 +1 @@
-#define VDB_UNLOCK_VERS 0x02060002
+#define VDB_UNLOCK_VERS 0x02060003
diff --git a/tools/vcf-loader/vcf-load.vers b/tools/vcf-loader/vcf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/vcf-loader/vcf-load.vers
+++ b/tools/vcf-loader/vcf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-config/vdb-config.vers b/tools/vdb-config/vdb-config.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-config/vdb-config.vers
+++ b/tools/vdb-config/vdb-config.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-config/vdb-config.vers.h b/tools/vdb-config/vdb-config.vers.h
index 7a7a5bf..55347d6 100644
--- a/tools/vdb-config/vdb-config.vers.h
+++ b/tools/vdb-config/vdb-config.vers.h
@@ -1 +1 @@
-#define VDB_CONFIG_VERS 0x02060002
+#define VDB_CONFIG_VERS 0x02060003
diff --git a/tools/vdb-copy/vdb-copy.vers b/tools/vdb-copy/vdb-copy.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-copy/vdb-copy.vers
+++ b/tools/vdb-copy/vdb-copy.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-copy/vdb-copy.vers.h b/tools/vdb-copy/vdb-copy.vers.h
index 2051ddd..b8f37a1 100644
--- a/tools/vdb-copy/vdb-copy.vers.h
+++ b/tools/vdb-copy/vdb-copy.vers.h
@@ -1 +1 @@
-#define VDB_COPY_VERS 0x02060002
+#define VDB_COPY_VERS 0x02060003
diff --git a/tools/vdb-decrypt/vdb-decrypt.vers b/tools/vdb-decrypt/vdb-decrypt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-decrypt/vdb-decrypt.vers
+++ b/tools/vdb-decrypt/vdb-decrypt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-decrypt/vdb-decrypt.vers.h b/tools/vdb-decrypt/vdb-decrypt.vers.h
index 6867585..fa1acef 100644
--- a/tools/vdb-decrypt/vdb-decrypt.vers.h
+++ b/tools/vdb-decrypt/vdb-decrypt.vers.h
@@ -1 +1 @@
-#define VDB_DECRYPT_VERS 0x02060002
+#define VDB_DECRYPT_VERS 0x02060003
diff --git a/tools/vdb-decrypt/vdb-encrypt.vers b/tools/vdb-decrypt/vdb-encrypt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-decrypt/vdb-encrypt.vers
+++ b/tools/vdb-decrypt/vdb-encrypt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-decrypt/vdb-encrypt.vers.h b/tools/vdb-decrypt/vdb-encrypt.vers.h
index 8619a5a..0d3bf0d 100644
--- a/tools/vdb-decrypt/vdb-encrypt.vers.h
+++ b/tools/vdb-decrypt/vdb-encrypt.vers.h
@@ -1 +1 @@
-#define VDB_ENCRYPT_VERS 0x02060002
+#define VDB_ENCRYPT_VERS 0x02060003
diff --git a/tools/vdb-dump/vdb-boot.vers b/tools/vdb-dump/vdb-boot.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-dump/vdb-boot.vers
+++ b/tools/vdb-dump/vdb-boot.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-dump/vdb-dump.vers b/tools/vdb-dump/vdb-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-dump/vdb-dump.vers
+++ b/tools/vdb-dump/vdb-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-dump/vdb-dump.vers.h b/tools/vdb-dump/vdb-dump.vers.h
index a7aa35d..6d6ab84 100644
--- a/tools/vdb-dump/vdb-dump.vers.h
+++ b/tools/vdb-dump/vdb-dump.vers.h
@@ -1 +1 @@
-#define VDB_DUMP_VERS 0x02060002
+#define VDB_DUMP_VERS 0x02060003
diff --git a/tools/vdb-validate/check-corrupt.vers b/tools/vdb-validate/check-corrupt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-validate/check-corrupt.vers
+++ b/tools/vdb-validate/check-corrupt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-validate/check-corrupt.vers.h b/tools/vdb-validate/check-corrupt.vers.h
index 581f280..f0acd0c 100644
--- a/tools/vdb-validate/check-corrupt.vers.h
+++ b/tools/vdb-validate/check-corrupt.vers.h
@@ -1 +1 @@
-#define CHECK_CORRUPT_VERS 0x02060002
+#define CHECK_CORRUPT_VERS 0x02060003
diff --git a/tools/vdb-validate/vdb-validate.vers b/tools/vdb-validate/vdb-validate.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-validate/vdb-validate.vers
+++ b/tools/vdb-validate/vdb-validate.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-validate/vdb-validate.vers.h b/tools/vdb-validate/vdb-validate.vers.h
index 90495a8..b536b1f 100644
--- a/tools/vdb-validate/vdb-validate.vers.h
+++ b/tools/vdb-validate/vdb-validate.vers.h
@@ -1 +1 @@
-#define VDB_VALIDATE_VERS 0x02060002
+#define VDB_VALIDATE_VERS 0x02060003
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/sra-sdk.git
More information about the debian-med-commit
mailing list