|
|
@@ -53,25 +53,40 @@ var async_exec = function (prog, args, onData) {
|
|
|
child.on('exit', function (code) { return resolve(code); });
|
|
|
});
|
|
|
};
|
|
|
-var asyncBwaMem = function (refPath, R1, R2, runName, libName, outputDir, onData, options) {
|
|
|
+var asyncBwaMem = function (refPath, reads,
|
|
|
+// R1 : string | Array<string>,
|
|
|
+// R2 : string | Array<string>,
|
|
|
+runName, libName, outputDir, onData, options) {
|
|
|
if (typeof options === 'undefined')
|
|
|
- options = {};
|
|
|
+ options = {
|
|
|
+ discordants: true,
|
|
|
+ splitted: true
|
|
|
+ };
|
|
|
var refName = path_1.default.parse(refPath).name;
|
|
|
var bwa = 'bwa';
|
|
|
var samblaster = 'samblaster';
|
|
|
var samtools = 'samtools';
|
|
|
var sambamba = 'sambamba';
|
|
|
- var R1_arr = Array.isArray(R1) ? R1.join(' ') : R1;
|
|
|
- var R2_arr = Array.isArray(R2) ? R2.join(' ') : R2;
|
|
|
- var R1_kitty = R1_arr.slice(-2) === 'gz' ? 'zcat' : 'cat';
|
|
|
- var R2_kitty = R2_arr.slice(-2) === 'gz' ? 'zcat' : 'cat';
|
|
|
- var R1_in = "'< ".concat(R1_kitty, " ").concat(R1_arr, "'");
|
|
|
- var R2_in = "'< ".concat(R2_kitty, " ").concat(R2_arr, "'");
|
|
|
+ var readsIn;
|
|
|
+ if (Array.isArray(reads)) {
|
|
|
+ var R1 = reads[0], R2 = reads[1];
|
|
|
+ var R1_arr = Array.isArray(R1) ? R1.join(' ') : R1;
|
|
|
+ var R2_arr = Array.isArray(R2) ? R2.join(' ') : R2;
|
|
|
+ var R1_kitty = R1_arr.slice(-2) === 'gz' ? 'zcat' : 'cat';
|
|
|
+ var R2_kitty = R2_arr.slice(-2) === 'gz' ? 'zcat' : 'cat';
|
|
|
+ var R1_in = "'< ".concat(R1_kitty, " ").concat(R1_arr, "'");
|
|
|
+ var R2_in = "'< ".concat(R2_kitty, " ").concat(R2_arr, "'");
|
|
|
+ readsIn = R1_in + ' ' + R2_in;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ readsIn = reads;
|
|
|
+ }
|
|
|
var discordantFile = path_1.default.join(outputDir, "bwa_mem_discordants_on_".concat(refName, ".sam"));
|
|
|
var splitterFile = path_1.default.join(outputDir, "bwa_mem_splitters_on_".concat(refName, ".sam"));
|
|
|
var unmappedFile = path_1.default.join(outputDir, "bwa_mem_unmapped_on_".concat(refName, ".fq"));
|
|
|
var bam = path_1.default.join(outputDir, "bwa_mem_properly_on_".concat(refName, ".bam"));
|
|
|
var bamSorted = path_1.default.join(outputDir, "bwa_mem_properly_on_".concat(refName, ".sorted.bam"));
|
|
|
+ var threads = String((0, os_1.cpus)().length);
|
|
|
return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
|
|
|
var code, code_sort, err_1;
|
|
|
return __generator(this, function (_a) {
|
|
|
@@ -79,8 +94,9 @@ var asyncBwaMem = function (refPath, R1, R2, runName, libName, outputDir, onData
|
|
|
case 0:
|
|
|
_a.trys.push([0, 3, , 4]);
|
|
|
return [4 /*yield*/, async_exec(bwa, ['mem',
|
|
|
- '-t', String((0, os_1.cpus)().length),
|
|
|
- '-R', "\"@RG\\tPL:Illumina\\tID:".concat(+(new Date), "\\tSM:").concat(runName, "\\tLB:").concat(libName, "\""), refPath, R1_in, R2_in,
|
|
|
+ '-t', threads,
|
|
|
+ '-R', "\"@RG\\tPL:Illumina\\tID:".concat(+(new Date), "\\tSM:").concat(runName, "\\tLB:").concat(libName, "\""), refPath,
|
|
|
+ readsIn,
|
|
|
'|',
|
|
|
samblaster,
|
|
|
'--addMateTags',
|
|
|
@@ -100,7 +116,7 @@ var asyncBwaMem = function (refPath, R1, R2, runName, libName, outputDir, onData
|
|
|
code = _a.sent();
|
|
|
onData('[BWA-MEM][EXIT CODE] ' + code);
|
|
|
return [4 /*yield*/, async_exec(sambamba, ['sort',
|
|
|
- '-t', String(require('os').cpus().length),
|
|
|
+ '-t', threads,
|
|
|
bam
|
|
|
], function (message) { return onData('[SAMBAMBA-SORT] ' + message); })];
|
|
|
case 2:
|