From 99aa2ccb4c32c72398562e17f25116efdc5eed3c Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Sun, 27 Aug 2017 15:22:32 -0400 Subject: [PATCH 01/17] fixed typo --- scripts/opt/optIIFE.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/opt/optIIFE.bash b/scripts/opt/optIIFE.bash index b104a27f4..be5ad0d1b 100644 --- a/scripts/opt/optIIFE.bash +++ b/scripts/opt/optIIFE.bash @@ -7,6 +7,7 @@ if [[ "$OSTYPE" == "cygwin" ]]; then fi if [[ "$APPVEYOR" == "true" ]]; then exit 0 +fi for f in $target/*.js do if [[ "$f" != "$target/pileup.js" ]]; then From 20d120c200aa600cbfa7c2ea2c5d43a376c06869 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Sun, 27 Aug 2017 15:22:52 -0400 Subject: [PATCH 02/17] changed optimization order --- scripts/optPackage.bash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/optPackage.bash b/scripts/optPackage.bash index bc525ab69..2a0531514 100644 --- a/scripts/optPackage.bash +++ b/scripts/optPackage.bash @@ -7,9 +7,10 @@ if [[ "$OSTYPE" == "cygwin" ]]; then fi bash scripts/opt/collapseBundle.bash -bash scripts/opt/optIIFE.bash + #bash scripts/opt/asi.bash bash scripts/opt/minify.bash +bash scripts/opt/optIIFE.bash cd "$target" From b37f79e1c4a963ea4bf0120c25aa4ecdf06f50f8 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Sun, 27 Aug 2017 15:23:16 -0400 Subject: [PATCH 03/17] Merge branch 'importAlignments' of https://github.com/chgibb/phat into importAlignments --- README.md | 4 ++++ img/gifinstaller2.gif | Bin 0 -> 15476 bytes src/ProjectSelectionRenderer.ts | 9 +++++---- src/req/renderer/citationText.ts | 1 - 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 img/gifinstaller2.gif delete mode 100644 src/req/renderer/citationText.ts diff --git a/README.md b/README.md index c75a44dcc..4beb48917 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,7 @@ PHAT is under development in the Zehbe Lab ([http://zehbelab.weebly.com/](http:/ **Project Lead/Biologist:** Robert Jackson, PhD Biotech Candidate **Project Lead/Software Developer:** Chris Gibb, HBSc Comp Sci Student **Team Members:** Mitchell Pynn, Shane Liu, Jeremy Braun + +**How to Cite PHAT (pre-print):** + +Gibb CM, Jackson R, Mohammed S, Fiaidhi J, Zehbe I. Pathogen-Host Analysis Tool (PHAT): an Integrative Platform to Analyze Pathogen-Host Relationships in Next-Generation Sequencing Data. bioRxiv. https://doi.org/10.1101/178327 diff --git a/img/gifinstaller2.gif b/img/gifinstaller2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a30d0e8eae828cb347c85450e8ec303171e381db GIT binary patch literal 15476 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 SN&d8oQ2Nhc$A3IY4gL?X!?v*i literal 0 HcmV?d00001 diff --git a/src/ProjectSelectionRenderer.ts b/src/ProjectSelectionRenderer.ts index c9e5a9bd6..741157bf8 100644 --- a/src/ProjectSelectionRenderer.ts +++ b/src/ProjectSelectionRenderer.ts @@ -1,5 +1,6 @@ import * as electron from "electron"; const ipc = electron.ipcRenderer; +const remote = electron.remote; const jsonFile = require("jsonfile"); const Dialogs = require("dialogs"); @@ -18,8 +19,6 @@ import * as splashView from "./req/renderer/ProjectSelectionRenderer/splashView" import * as openProjectView from "./req/renderer/ProjectSelectionRenderer/openProjectView"; import * as helpView from "./req/renderer/ProjectSelectionRenderer/helpView"; -import {citationText} from "./req/renderer/citationText"; - import * as $ from "jquery"; (window).$ = $; require("./req/renderer/commonBehaviour"); @@ -30,7 +29,7 @@ $ { document.body.innerHTML += `
-

${citationText}

+ Gibb et al., 2017 (bioRxiv pre-print) `; ipc.send( "runOperation", @@ -102,6 +101,8 @@ $ } } ); - + document.getElementById("citeLink").onclick = function(this : HTMLElement,ev : MouseEvent){ + remote.shell.openExternal("https://doi.org/10.1101/178327"); + } } ); \ No newline at end of file diff --git a/src/req/renderer/citationText.ts b/src/req/renderer/citationText.ts deleted file mode 100644 index 1d9bbf773..000000000 --- a/src/req/renderer/citationText.ts +++ /dev/null @@ -1 +0,0 @@ -export let citationText = `Gibb, Jackson et al 2017 (in preparation)`; \ No newline at end of file From 3b5981700abad7e892b993359e29ff0d1063ecf0 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 09:54:13 -0400 Subject: [PATCH 04/17] save manifest after successful operations --- src/req/main/main.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/req/main/main.ts b/src/req/main/main.ts index 3fc4a6ca8..106a9fa59 100644 --- a/src/req/main/main.ts +++ b/src/req/main/main.ts @@ -121,6 +121,11 @@ app.on //on completion of any operation, wait and then broadcast the queue to listening windows atomicOp.setOnComplete( function(op : atomicOp.AtomicOperation){ + //upon success of any operation except compiling templates to SVGs + if(op.flags.success && op.name != "compileTemplates") + { + dataMgr.saveData(); + } setTimeout(function(){ setImmediate(function(){ dataMgr.setKey("application","operations",atomicOp.operationsQueue); From 671ce0dd19b27c2e9c9ef5e23e99d8778e8d2764 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 10:04:22 -0400 Subject: [PATCH 05/17] get operations on startup --- src/AlignRenderer.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/AlignRenderer.ts b/src/AlignRenderer.ts index 86df95133..b46878ce1 100644 --- a/src/AlignRenderer.ts +++ b/src/AlignRenderer.ts @@ -34,7 +34,15 @@ $ replyChannel : "align" } ); - + ipc.send( + "getKey", + { + action : "getKey", + channel : "application", + key : "operations", + replyChannel : "align" + } + ); ipc.send( "keySub", { From a3fd894b2fd709c3e14573a4e70ab6e3a11b868e Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 10:05:23 -0400 Subject: [PATCH 06/17] get operations on startup --- src/QCRenderer.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/QCRenderer.ts b/src/QCRenderer.ts index 37f3e06b5..fb4082a3a 100644 --- a/src/QCRenderer.ts +++ b/src/QCRenderer.ts @@ -34,6 +34,15 @@ $ replyChannel : "QC" } ); + ipc.send( + "getKey", + { + action : "getKey", + channel : "application", + key : "operations", + replyChannel : "QC" + } + ); ipc.send( "getKey", { From 133b608a26f06551ea1a8d8b0ebee6512fa32a17 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 10:14:25 -0400 Subject: [PATCH 07/17] get and sub to operations --- src/InputRenderer.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/InputRenderer.ts b/src/InputRenderer.ts index 36ce6307b..2da7a9db9 100644 --- a/src/InputRenderer.ts +++ b/src/InputRenderer.ts @@ -65,6 +65,15 @@ $ action : "getKey" } ); + ipc.send( + "getKey", + { + action : "getKey", + channel : "application", + key : "operations", + replyChannel : "input" + } + ); //subscribe to changes in data ipc.send( @@ -94,6 +103,16 @@ $ action : "keySub" } ); + ipc.send( + "keySub", + { + action : "keySub", + channel : "application", + key : "operations", + replyChannel : "input" + } + ); + viewMgr.render(); //on message from main process From 414a89e6e7b818c83c01567e9bb6897be55083e1 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 10:28:44 -0400 Subject: [PATCH 08/17] fixed prop description --- src/req/operations/atomicOperations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/req/operations/atomicOperations.ts b/src/req/operations/atomicOperations.ts index 2a16890b2..d3d5d09a6 100644 --- a/src/req/operations/atomicOperations.ts +++ b/src/req/operations/atomicOperations.ts @@ -106,7 +106,7 @@ export abstract class AtomicOperation /** - * Indicates whether the current operation is currently executing + * Indicates whether the operation is currently executing * * @type {boolean} * @memberof AtomicOperation From ceb3aa66f55cf8a87c3a129b40d63665d5b0576a Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 10:30:48 -0400 Subject: [PATCH 09/17] added loading text to all views --- src/req/renderer/inputRenderer/AlignView.ts | 1 + src/req/renderer/inputRenderer/FastaView.ts | 3 ++- src/req/renderer/inputRenderer/FastqView.ts | 1 + src/req/renderer/inputRenderer/LinkRefView.ts | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/req/renderer/inputRenderer/AlignView.ts b/src/req/renderer/inputRenderer/AlignView.ts index 64b352579..807b9b879 100644 --- a/src/req/renderer/inputRenderer/AlignView.ts +++ b/src/req/renderer/inputRenderer/AlignView.ts @@ -15,6 +15,7 @@ export class View extends viewMgr.View { return `
+

diff --git a/src/req/renderer/inputRenderer/FastaView.ts b/src/req/renderer/inputRenderer/FastaView.ts index 59ca8ecb9..489ef546c 100644 --- a/src/req/renderer/inputRenderer/FastaView.ts +++ b/src/req/renderer/inputRenderer/FastaView.ts @@ -14,7 +14,8 @@ export class View extends viewMgr.View public renderView() : string { return ` -
+
+

diff --git a/src/req/renderer/inputRenderer/FastqView.ts b/src/req/renderer/inputRenderer/FastqView.ts index 38bffd0d9..a6f2a0710 100644 --- a/src/req/renderer/inputRenderer/FastqView.ts +++ b/src/req/renderer/inputRenderer/FastqView.ts @@ -15,6 +15,7 @@ export class View extends viewMgr.View { return `
+

diff --git a/src/req/renderer/inputRenderer/LinkRefView.ts b/src/req/renderer/inputRenderer/LinkRefView.ts index c7f288adc..142a4f334 100644 --- a/src/req/renderer/inputRenderer/LinkRefView.ts +++ b/src/req/renderer/inputRenderer/LinkRefView.ts @@ -24,6 +24,7 @@ export class View extends viewMgr.View { return `
+



Potentially Compatible References

From da14b800cf93f77913fb76e52f2d3f0a78f27dcc Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 11:15:46 -0400 Subject: [PATCH 10/17] fixed progress updates --- src/req/operations/indexFastaForAlignment.ts | 8 ++++++++ src/req/operations/indexFastaForVisualization.ts | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/req/operations/indexFastaForAlignment.ts b/src/req/operations/indexFastaForAlignment.ts index 696c5f2c6..1ee2ade1c 100644 --- a/src/req/operations/indexFastaForAlignment.ts +++ b/src/req/operations/indexFastaForAlignment.ts @@ -77,14 +77,22 @@ export class IndexFastaForAlignment extends atomic.AtomicOperation return new Promise(async (resolve,reject) => { try { + self.progressMessage = "Building bowtie2 index"; + self.update(); await bowTie2Build(self); self.setSuccess(self.bowtieFlags); self.update(); + self.progressMessage = "Building fai index"; + self.update(); + await samToolsFaidx(self.fasta,self); self.setSuccess(self.faiFlags); self.update(); + self.progressMessage = "Reading contigs"; + self.update(); + //don't reparse contigs if we don't have to //contigs are parsed during viz indexing as well //if we reparse, we will clobber contig uuids and all references which point to them diff --git a/src/req/operations/indexFastaForVisualization.ts b/src/req/operations/indexFastaForVisualization.ts index 0be2b4c86..78c05ace3 100644 --- a/src/req/operations/indexFastaForVisualization.ts +++ b/src/req/operations/indexFastaForVisualization.ts @@ -38,8 +38,12 @@ export class IndexFastaForVisualization extends atomic.AtomicOperation return new Promise(async (resolve,reject) => { try { + self.progressMessage = "Building 2bit archive"; + self.update(); await faToTwoBit(self); self.setSuccess(self.twoBitFlags); + + self.progressMessage = "Reading contigs"; self.update(); //don't reparse contigs if we don't have to From 5e160668f06fc73f5ec04e3aa25ab2aa515427f5 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 11:15:56 -0400 Subject: [PATCH 11/17] fixed broadcastin updates --- src/InputBamFileProcess.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/InputBamFileProcess.ts b/src/InputBamFileProcess.ts index 8fc9651cf..dd607f42c 100644 --- a/src/InputBamFileProcess.ts +++ b/src/InputBamFileProcess.ts @@ -60,20 +60,25 @@ process.on( { (async function(){ progressMessage = "Copying BAM"; + update(); await new Promise((resolve,reject) => { fse.copySync(bamPath,getUnSortedBam(align)); resolve(); }); progressMessage = "Sorting BAM"; + update(); await samToolsSort(align,logger); progressMessage = "Getting Flag Statistics"; + update(); await samToolsFlagStat(align,logger); progressMessage = "Generating index"; + update(); await samToolsIndex(align,logger); progressMessage = "Getting mapped reads"; + update(); await samToolsIdxStats(align,logger); flags.done = true From a79db5d7995cbd943fd82e9d238824415ca55286 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 11:16:13 -0400 Subject: [PATCH 12/17] display progress for relevant operations --- src/InputRenderer.ts | 32 +++++++++++++++++++ src/req/renderer/inputRenderer/AlignView.ts | 3 +- src/req/renderer/inputRenderer/FastaView.ts | 3 +- src/req/renderer/inputRenderer/FastqView.ts | 3 +- src/req/renderer/inputRenderer/LinkRefView.ts | 3 +- src/req/renderer/inputRenderer/masterView.ts | 6 ++++ 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/InputRenderer.ts b/src/InputRenderer.ts index 2da7a9db9..62644efad 100644 --- a/src/InputRenderer.ts +++ b/src/InputRenderer.ts @@ -8,6 +8,13 @@ import * as viewMgr from "./req/renderer/viewMgr"; import * as masterView from "./req/renderer/inputRenderer/masterView"; import * as fastqView from "./req/renderer/inputRenderer/FastqView"; import * as fastaView from "./req/renderer/inputRenderer/FastaView"; + +import {AtomicOperation} from "./req/operations/atomicOperations"; +import {IndexFastaForAlignment} from "./req/operations/indexFastaForAlignment"; +import {IndexFastaForVisualization} from "./req/operations/indexFastaForVisualization"; +import {InputBamFile} from "./req/operations/InputBamFile"; +import {LinkRefSeqToAlignment} from "./req/operations/LinkRefSeqToAlignment"; + import * as $ from "jquery"; (window).$ = $; require("./req/renderer/commonBehaviour"); @@ -145,6 +152,31 @@ $ masterView.aligns = arg.val; } } + let found = false; + if(arg.key == "operations") + { + if(arg.val !== undefined) + { + let ops : Array = arg.val; + console.log(ops); + for(let i = 0; i != ops.length; ++i) + { + if(ops[i].running) + { + if(ops[i].name == "inputBamFile" || ops[i].name == "linkRefSeqToAlignment" || + ops[i].name == "indexFastaForVisualization" || ops[i].name == "indexFastaForAlignment") + { + console.log("found input bam file"); + masterView.progressMessage = ops[i].progressMessage; + found = true; + break; + } + } + } + } + } + if(!found) + masterView.progressMessage = ""; masterView.dataChanged(); } viewMgr.render(); diff --git a/src/req/renderer/inputRenderer/AlignView.ts b/src/req/renderer/inputRenderer/AlignView.ts index 807b9b879..7e54dbc1e 100644 --- a/src/req/renderer/inputRenderer/AlignView.ts +++ b/src/req/renderer/inputRenderer/AlignView.ts @@ -4,6 +4,7 @@ import {AlignData} from "./../../alignData"; export class View extends viewMgr.View { public aligns : Array; + public progressMessage : string; public constructor(div : string) { super("alignView",div); @@ -15,7 +16,7 @@ export class View extends viewMgr.View { return `
-

+

${this.progressMessage}

diff --git a/src/req/renderer/inputRenderer/FastaView.ts b/src/req/renderer/inputRenderer/FastaView.ts index 489ef546c..61b3e31b1 100644 --- a/src/req/renderer/inputRenderer/FastaView.ts +++ b/src/req/renderer/inputRenderer/FastaView.ts @@ -4,6 +4,7 @@ import {Fasta} from "./../../fasta"; export class View extends viewMgr.View { public fastaInputs : Array; + public progressMessage : string; public constructor(div : string) { super("fastaView",div); @@ -15,7 +16,7 @@ export class View extends viewMgr.View { return `
-

+

${this.progressMessage}

diff --git a/src/req/renderer/inputRenderer/FastqView.ts b/src/req/renderer/inputRenderer/FastqView.ts index a6f2a0710..ff5f90251 100644 --- a/src/req/renderer/inputRenderer/FastqView.ts +++ b/src/req/renderer/inputRenderer/FastqView.ts @@ -4,6 +4,7 @@ import Fastq from "./../../fastq"; export class View extends viewMgr.View { public fastqInputs : Array; + public progressMessage : string; public constructor(div : string) { super("fastqView",div); @@ -15,7 +16,7 @@ export class View extends viewMgr.View { return `
-

+

${this.progressMessage}

diff --git a/src/req/renderer/inputRenderer/LinkRefView.ts b/src/req/renderer/inputRenderer/LinkRefView.ts index 142a4f334..c81269a65 100644 --- a/src/req/renderer/inputRenderer/LinkRefView.ts +++ b/src/req/renderer/inputRenderer/LinkRefView.ts @@ -9,6 +9,7 @@ export class View extends viewMgr.View public inspectingAlign : AlignData; public fastaInputs : Array; public linkableRefSeqs : Array; + public progressMessage : string; public constructor(div : string) { super("linkRefView",div); @@ -24,7 +25,7 @@ export class View extends viewMgr.View { return `
-

+

${this.progressMessage}



Potentially Compatible References

diff --git a/src/req/renderer/inputRenderer/masterView.ts b/src/req/renderer/inputRenderer/masterView.ts index 0d042bd56..23b57ab9f 100644 --- a/src/req/renderer/inputRenderer/masterView.ts +++ b/src/req/renderer/inputRenderer/masterView.ts @@ -26,6 +26,7 @@ export class View extends viewMgr.View public fastaInputs : Array; public aligns : Array; public currentView : "fastqView" | "fastaView" | "alignView" | "linkRefView"; + public progressMessage : string; public constructor(div : string) { super("masterView",div); @@ -35,6 +36,7 @@ export class View extends viewMgr.View this.fastaInputs = new Array(); this.aligns = new Array(); this.currentView = "fastqView"; + this.progressMessage = ""; } public onMount() : void { @@ -284,15 +286,19 @@ export class View extends viewMgr.View { let fastqView = viewMgr.getViewByName("fastqView",this.views); fastqView.fastqInputs = this.fastqInputs; + fastqView.progressMessage = this.progressMessage; let fastaView = viewMgr.getViewByName("fastaView",this.views); fastaView.fastaInputs = this.fastaInputs; + fastaView.progressMessage = this.progressMessage; let alignView = viewMgr.getViewByName("alignView",this.views); alignView.aligns = this.aligns; + alignView.progressMessage = this.progressMessage; let linkRefView = viewMgr.getViewByName("linkRefView",this.views); linkRefView.fastaInputs = this.fastaInputs; + linkRefView.progressMessage = this.progressMessage; } } export function addView(arr : Array,div : string) : void From 8168ffe89316441a46bd3a6c6830708de6cf1aeb Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 14:55:23 -0400 Subject: [PATCH 13/17] fixed view transition when link is complete --- src/req/renderer/inputRenderer/masterView.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/req/renderer/inputRenderer/masterView.ts b/src/req/renderer/inputRenderer/masterView.ts index 23b57ab9f..0dd67e0e8 100644 --- a/src/req/renderer/inputRenderer/masterView.ts +++ b/src/req/renderer/inputRenderer/masterView.ts @@ -299,6 +299,21 @@ export class View extends viewMgr.View let linkRefView = viewMgr.getViewByName("linkRefView",this.views); linkRefView.fastaInputs = this.fastaInputs; linkRefView.progressMessage = this.progressMessage; + if(linkRefView.inspectingAlign && this.currentView == "linkRefView") + { + for(let i = 0; i != this.aligns.length; ++i) + { + if(this.aligns[i].uuid == linkRefView.inspectingAlign.uuid) + { + if(this.aligns[i].fasta !== undefined) + { + this.currentView = "alignView"; + viewMgr.render(); + break; + } + } + } + } } } export function addView(arr : Array,div : string) : void From 6a7a023786e7b880e0273f249a8b5b11bc1cbf61 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 15:42:07 -0400 Subject: [PATCH 14/17] fixed test for 0.00% alignment --- src/req/samToolsFlagStatReport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/req/samToolsFlagStatReport.ts b/src/req/samToolsFlagStatReport.ts index 7760aea28..9ab9726b9 100644 --- a/src/req/samToolsFlagStatReport.ts +++ b/src/req/samToolsFlagStatReport.ts @@ -19,7 +19,7 @@ export function samToolsFlagStatReportParser(report : string) : SamToolsFlagStat } if(/mapped/.test(lines[i])) { - let percentages = /(\d\d\d\.\d\d%)|(\d\d.\d\d%)/.exec(lines[i]); + let percentages = /(\d\d\d\.\d\d%)|(\d\d.\d\d%)|(\d.\d\d%)/.exec(lines[i]); if(percentages) { let trimmed = percentages[0].substr(0,percentages[0].length - 1); From 4e22ca7aa5dbacc6611e6db75df8a53feee37d91 Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 15:42:17 -0400 Subject: [PATCH 15/17] tests for hpv18 bam importing --- src/req/tests/L6R1HPV18AlignImported.ts | 13 ++++ .../testL6R1HPV18AlignImportedImporting.ts | 59 +++++++++++++++++ .../testL6R1HPV18AlignImportedLinking.ts | 63 +++++++++++++++++++ src/tests.ts | 16 +++++ 4 files changed, 151 insertions(+) create mode 100644 src/req/tests/L6R1HPV18AlignImported.ts create mode 100644 src/req/tests/testL6R1HPV18AlignImportedImporting.ts create mode 100644 src/req/tests/testL6R1HPV18AlignImportedLinking.ts diff --git a/src/req/tests/L6R1HPV18AlignImported.ts b/src/req/tests/L6R1HPV18AlignImported.ts new file mode 100644 index 000000000..0dd93712e --- /dev/null +++ b/src/req/tests/L6R1HPV18AlignImported.ts @@ -0,0 +1,13 @@ +import {AlignData} from "./../alignData"; + +let L6R1HPV18AlignImported : AlignData; + +export function get() : AlignData +{ + return L6R1HPV18AlignImported; +} + +export function set(align : AlignData) : void +{ + L6R1HPV18AlignImported = align; +} \ No newline at end of file diff --git a/src/req/tests/testL6R1HPV18AlignImportedImporting.ts b/src/req/tests/testL6R1HPV18AlignImportedImporting.ts new file mode 100644 index 000000000..cfd06b7ad --- /dev/null +++ b/src/req/tests/testL6R1HPV18AlignImportedImporting.ts @@ -0,0 +1,59 @@ +import * as fs from "fs"; + +import * as atomic from "./../operations/atomicOperations"; +import {Fasta} from "./../fasta"; +import {InputBamFile} from "./../operations/InputBamFile"; +import * as hpv18Ref from "./hpv18Ref"; +import * as L6R1HPV18AlignImported from "./L6R1HPV18AlignImported"; +import {getUnSortedBam,getSortedBam,getSortBamIndex,} from "./../alignData"; +import {getLinkableRefSeqs} from "./../getLinkableRefSeqs"; +export async function testL6R1HPV18AlignImportedImporting() : Promise +{ + return new Promise((resolve,reject) => { + atomic.updates.removeAllListeners().on("inputBamFile",function(op : InputBamFile){ + if(op.flags.failure) + { + console.log(`Failed to input bam`); + return reject(); + } + else if(op.flags.success) + { + fs.accessSync(getUnSortedBam(op.alignData)); + fs.accessSync(getSortedBam(op.alignData)); + fs.accessSync(getSortBamIndex(op.alignData)); + + if(op.alignData.flagStatReport.overallAlignmentRate == 0) + console.log(`${op.alignData.alias} has correct overall alignment rate`); + else + return reject(); + if(op.alignData.idxStatsReport[0].mappedReads == 0) + console.log(`${op.alignData.alias} has correct number of mapped reads`); + else + return reject(); + if(op.alignData.idxStatsReport[0].unMappedReads == 0) + console.log(`${op.alignData.alias} has correct number of unmapped reads`); + else + return reject(); + + let res = getLinkableRefSeqs(>[hpv18Ref.get()],op.alignData); + + if(!res) + { + console.log(`Failed to determine link status for ${op.alignData.alias}`); + return reject(); + } + if(res[0].linkable == true && res[0].uuid == hpv18Ref.get().uuid) + console.log(`Successfully determined link status to HPV18 for ${op.alignData.alias}`); + else + { + console.log(`${op.alignData.alias} is not linkable to HPV18`); + return reject(); + } + + L6R1HPV18AlignImported.set(op.alignData); + + return resolve(); + } + }); + }); +} \ No newline at end of file diff --git a/src/req/tests/testL6R1HPV18AlignImportedLinking.ts b/src/req/tests/testL6R1HPV18AlignImportedLinking.ts new file mode 100644 index 000000000..52dea82ed --- /dev/null +++ b/src/req/tests/testL6R1HPV18AlignImportedLinking.ts @@ -0,0 +1,63 @@ +import * as fs from "fs"; + +import * as atomic from "./../operations/atomicOperations"; +import {Fasta} from "./../fasta"; +import {LinkRefSeqToAlignment} from "./../operations/LinkRefSeqToAlignment"; +import * as hpv18Ref from "./hpv18Ref"; +import * as L6R1HPV18AlignImported from "./L6R1HPV18AlignImported"; +import {getCoverage,getCoverageDir,getFlagStats,getMPileup,getSNPsJSON,getSNPsVCF} from "./../alignData"; +export async function testL6R1HPV18AlignImportedLinking() : Promise +{ + return new Promise((resolve,reject) => { + atomic.updates.removeAllListeners().on("linkRefSeqToAlignment",function(op : LinkRefSeqToAlignment){ + if(op.flags.failure) + { + console.log(`Failure to link bam`); + return reject(); + } + else if(op.flags.success) + { + fs.accessSync(getCoverage(op.alignData)); + fs.accessSync(getCoverageDir(op.alignData)); + fs.accessSync(getFlagStats(op.alignData)); + fs.accessSync(getMPileup(op.alignData)); + fs.accessSync(getSNPsJSON(op.alignData)); + fs.accessSync(getSNPsVCF(op.alignData)); + + if(op.alignData.varScanSNPSummary.minVarFreq == 0.2) + console.log(`${op.alignData.alias} has correct minimum variable frequency`); + else + return reject(); + + if(op.alignData.varScanSNPSummary.minCoverage == 8) + console.log(`${op.alignData.alias} has correct minimum coverage`); + else + return reject(); + + if(op.alignData.varScanSNPSummary.minAvgQual == 15) + console.log(`${op.alignData.alias} has correct minimum average quality`); + else + return reject(); + + if(op.alignData.varScanSNPSummary.pValueThresh == 0.01) + console.log(`${op.alignData.alias} has correct p-value threshold`); + else + return reject(); + + if(op.alignData.varScanSNPSummary.SNPsReported == 8) + console.log(`${op.alignData.alias} has correct predicted SNPs`); + else + return reject(); + + if(op.alignData.varScanSNPSummary.indelsReported == 0) + console.log(`${op.alignData.alias} has correct indels reported`); + else + return reject(); + + L6R1HPV18AlignImported.set(op.alignData); + + return resolve(); + } + }); + }); +} \ No newline at end of file diff --git a/src/tests.ts b/src/tests.ts index 7bc036fdc..d7f495530 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -11,8 +11,10 @@ import * as hpv16Ref from "./req/tests/hpv16Ref"; import * as hpv18Ref from "./req/tests/hpv18Ref"; import * as hpv16Figure from "./req/tests/hpv16Figure"; import * as L6R1HPV16Align from "./req/tests/L6R1HPV16Align"; +import * as L6R1HPV18Align from "./req/tests/L6R1HPV18Align"; import * as L6R1HPV16AlignImported from "./req/tests/L6R1HPV16AlignImported"; +import * as L6R1HPV18AlignImported from "./req/tests/L6R1HPV18AlignImported"; import {testVersionParser} from "./req/tests/testVersionParser"; @@ -32,6 +34,8 @@ import {testL6R1HPV18SNPTrackRenderer} from "./req/tests/testL6R1HPV18SNPTrackRe import {testL6R1HPV16AlignImportedImporting} from "./req/tests/testL6R1HPV16AlignImportedImporting"; import {testL6R1HPV16AlignImportedLinking} from "./req/tests/testL6R1HPV16AlignImportedLinking"; +import {testL6R1HPV18AlignImportedImporting} from "./req/tests/testL6R1HPV18AlignImportedImporting"; +import {testL6R1HPV18AlignImportedLinking} from "./req/tests/testL6R1HPV18AlignImportedLinking"; const pjson = require("./resources/app/package.json"); import {isBeta,versionIsGreaterThan} from "./req/versionIsGreaterThan"; @@ -267,6 +271,18 @@ async function runTests() : Promise { console.log("bam linking threw exception"); } + + console.log("Importing binary alignment map from L6R1 HPV18 alignment"); + atomic.addOperation("inputBamFile",getUnSortedBam(L6R1HPV18Align.get())); + try + { + await testL6R1HPV18AlignImportedImporting(); + } + catch(err) + { + console.log("bam importing threw exception "+err); + return reject(); + } resolve(); }); From d42fcd092a9689d7c027ea74d3371655c1713f9b Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 16:05:21 -0400 Subject: [PATCH 16/17] fixed test --- src/req/tests/testL6R1HPV18AlignImportedLinking.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/req/tests/testL6R1HPV18AlignImportedLinking.ts b/src/req/tests/testL6R1HPV18AlignImportedLinking.ts index 52dea82ed..936faa3e8 100644 --- a/src/req/tests/testL6R1HPV18AlignImportedLinking.ts +++ b/src/req/tests/testL6R1HPV18AlignImportedLinking.ts @@ -44,7 +44,7 @@ export async function testL6R1HPV18AlignImportedLinking() : Promise else return reject(); - if(op.alignData.varScanSNPSummary.SNPsReported == 8) + if(op.alignData.varScanSNPSummary.SNPsReported == 0) console.log(`${op.alignData.alias} has correct predicted SNPs`); else return reject(); From 4b7d7604feea6bdd235352850a8455c7ca61cafe Mon Sep 17 00:00:00 2001 From: Chris Gibb Date: Mon, 28 Aug 2017 16:05:32 -0400 Subject: [PATCH 17/17] added test for hpv18 bam linking --- src/tests.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/tests.ts b/src/tests.ts index d7f495530..b718b16b4 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -270,6 +270,7 @@ async function runTests() : Promise catch(err) { console.log("bam linking threw exception"); + return reject(); } console.log("Importing binary alignment map from L6R1 HPV18 alignment"); @@ -283,6 +284,22 @@ async function runTests() : Promise console.log("bam importing threw exception "+err); return reject(); } + + console.log("Linking imported L6R1 HPV18 binary alignment map to HPv18"); + atomic.addOperation("linkRefSeqToAlignment",{ + align : L6R1HPV18AlignImported.get(), + fasta : hpv18Ref.get() + }); + try + { + await testL6R1HPV18AlignImportedLinking(); + } + catch(err) + { + console.log("bam linking threw exception"); + return reject(); + } + resolve(); });