Skip to content

Commit

Permalink
hisat2 hpv18 index and hpv16 alignment tests
Browse files Browse the repository at this point in the history
  • Loading branch information
chgibb committed Nov 20, 2018
1 parent a15eb59 commit d9b55e3
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 6 deletions.
24 changes: 22 additions & 2 deletions src/req/main/main.ts
Expand Up @@ -24,6 +24,7 @@ import {IndexFastaForBowtie2Alignment} from "../operations/indexFastaForBowtie2A
import {IndexFastaForHisat2Alignment} from "../operations/indexFastaForHisat2Alignment";
import {IndexFastaForVisualization} from "./../operations/indexFastaForVisualization";
import {RunBowtie2Alignment} from "../operations/RunBowtie2Alignment";
import {RunHisat2Alignment} from "../operations/RunHisat2Alignment";
import {RenderCoverageTrackForContig} from "./../operations/RenderCoverageTrack";
import {RenderSNPTrackForContig} from "./../operations/RenderSNPTrack";
import {CheckForUpdate} from "./../operations/CheckForUpdate";
Expand Down Expand Up @@ -95,6 +96,7 @@ app.on
atomicOp.register("indexFastaForHisat2Alignment",IndexFastaForHisat2Alignment);
atomicOp.register("indexFastaForVisualization",IndexFastaForVisualization);
atomicOp.register("runBowtie2Alignment",RunBowtie2Alignment);
atomicOp.register("runHisat2Alignment",RunHisat2Alignment);
atomicOp.register("renderCoverageTrackForContig",RenderCoverageTrackForContig);
atomicOp.register("renderSNPTrackForContig",RenderSNPTrackForContig);

Expand Down Expand Up @@ -312,7 +314,7 @@ ipc.on(
}
}
}
else if(arg.opName == "runBowtie2Alignment")
else if(arg.opName == "runBowtie2Alignment" || arg.opName == "runHisat2Alignment")
{
console.log("running alignment");
atomicOp.addOperation(
Expand Down Expand Up @@ -643,7 +645,7 @@ atomicOp.updates.on(
{
if(fastaInputs[i].uuid == fasta.uuid)
{
fastaInputs[i].indexed = true;
fastaInputs[i].indexedForHisat2 = true;
fastaInputs[i].contigs = fasta.contigs;
break;
}
Expand Down Expand Up @@ -722,6 +724,24 @@ atomicOp.updates.on(
}
);

atomicOp.updates.on(
"runHisat2Alignment",function(op : RunBowtie2Alignment)
{
dataMgr.setKey("application","operations",atomicOp.operationsQueue);
winMgr.publishChangeForKey("application","operations");
if(op.flags.success)
{
let aligns : Array<AlignData> = dataMgr.getKey("align","aligns");
if(aligns == undefined)
aligns = new Array<AlignData>();

aligns.push(op.alignData);
dataMgr.setKey("align","aligns",aligns);
winMgr.publishChangeForKey("align","aligns");
}
}
);

atomicOp.updates.on(
"renderCoverageTrackForContig",function(op : RenderCoverageTrackForContig)
{
Expand Down
2 changes: 1 addition & 1 deletion src/req/operations/RunAlignment/hisat2Align.ts
Expand Up @@ -55,7 +55,7 @@ export function hisat2Align(alignData : AlignData,logger : atomic.AtomicOperatio

if(process.platform == "win32")
args.push(getReadable("hisat2"));
args.push("--sensitive-local");
args.push("-x");
args.push("\""+getReadableAndWritable(`rt/indexes/${alignData.fasta.uuid}`)+"\"");
if(alignData.fastqs[1])
Expand Down
2 changes: 2 additions & 0 deletions src/req/tests/registerOperations.ts
Expand Up @@ -5,6 +5,7 @@ import {IndexFastaForBowtie2Alignment} from "../operations/indexFastaForBowtie2A
import {IndexFastaForHisat2Alignment} from "../operations/indexFastaForHisat2Alignment";
import {IndexFastaForVisualization} from "./../operations/indexFastaForVisualization";
import {RunBowtie2Alignment} from "../operations/RunBowtie2Alignment";
import {RunHisat2Alignment} from "../operations/RunHisat2Alignment";
import {RenderCoverageTrackForContig} from "./../operations/RenderCoverageTrack";
import {RenderSNPTrackForContig} from "./../operations/RenderSNPTrack";
import {CheckForUpdate} from "./../operations/CheckForUpdate";
Expand All @@ -23,6 +24,7 @@ export function registerOperations() : void
atomic.register("indexFastaForBowtie2Alignment",IndexFastaForBowtie2Alignment);
atomic.register("indexFastaForVisualization",IndexFastaForVisualization);
atomic.register("runBowtie2Alignment",RunBowtie2Alignment);
atomic.register("runHisat2Alignment",RunHisat2Alignment);
atomic.register("renderCoverageTrackForContig",RenderCoverageTrackForContig);
atomic.register("renderSNPTrackForContig",RenderSNPTrackForContig);
atomic.register("inputBamFile",InputBamFile);
Expand Down
79 changes: 79 additions & 0 deletions src/req/tests/testL6R1HPV16Hisat2Alignment.ts
@@ -0,0 +1,79 @@
import * as atomic from "../operations/atomicOperations";
import {RunBowtie2Alignment} from "../operations/RunBowtie2Alignment";
import * as L6R1HPV16Align from "./L6R1HPV16Align";

export async function testL6R1HPV16Hisat2Alignment() : Promise<void>
{
return new Promise<void>((resolve,reject) => {
atomic.updates.removeAllListeners().on("runHisat2Alignment",function(op : RunBowtie2Alignment){
if(op.flags.failure)
{
console.log(`Failed to align`);
return reject();
}
else if(op.flags.success)
{
console.log(JSON.stringify(op.alignData,undefined,4));
if(op.alignData.summary.reads == 2689)
console.log(`${op.alignData.alias} has correct number of reads`);
else
return reject();

if(op.alignData.summary.mates == 4714)
console.log(`${op.alignData.alias} has correct number of mates`);
else
return reject();

if(op.alignData.summary.overallAlignmentRate == 12.61)
console.log(`${op.alignData.alias} has correct overall alignment rate`);
else
return reject();

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 == 11)
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();

if(op.alignData.idxStatsReport[0].mappedReads == 678)
console.log(`${op.alignData.alias} has correct number of mapped reads`);
else
return reject();

if(op.alignData.idxStatsReport[0].unMappedReads == 12)
console.log(`${op.alignData.alias} has correct number of unmapped reads`);
else
return reject();

L6R1HPV16Align.set(op.alignData);

return resolve();

}
});
});
}
38 changes: 35 additions & 3 deletions src/tests.ts
Expand Up @@ -26,11 +26,12 @@ import {testFastQCReportGeneration} from "./req/tests/testFastQCReportGeneration
import {testHPV16Bowtie2Index} from "./req/tests/testHPV16Bowtie2Index";
import {testHPV18Bowtie2Index} from "./req/tests/testHPV18Bowtie2Index";
import {testHPV16Hisat2Index} from "./req/tests/testHPV16Hisat2Index";
//import {testHPV18Hisat2Index} from "./req/tests/testHPV18Hisat2Index";
import {testHPV18Hisat2Index} from "./req/tests/testHPV18Hisat2Index";
import {testHPV16IndexForVisualization} from "./req/tests/testHPV16IndexForVisualization";
import {testHPV18IndexForVisualization} from "./req/tests/testHPV18IndexForVisualization";
import {testL6R1HPV16Bowtie2Alignment} from "./req/tests/testL6R1HPV16Bowtie2Alignment";
import {testL6R1HPV18Bowtie2Alignment} from "./req/tests/testL6R1HPV18Bowtie2Alignment"
import {testL6R1HPV16Hisat2Alignment} from "./req/tests/testL6R1HPV16Hisat2Alignment";
import {testL6R1HPV16CoverageTrackRenderer} from "./req/tests/testL6R1HPV16CoverageTrackRender";
import {testL6R1HPV16SNPTrackRenderer} from "./req/tests/testL6R1HPV16SNPTrackRender";
import {testL6R1HPV16CoverageTrackCompilation} from "./req/tests/testL6R1HPV16CoverageTrackCompilation";
Expand Down Expand Up @@ -143,6 +144,18 @@ async function runTests() : Promise<void>
return reject();
}

console.log("Starting to index hpv18 for hisat2");
atomic.addOperation("indexFastaForHisat2Alignment",hpv18Ref.get());
try
{
await testHPV18Hisat2Index();
}
catch(err)
{
console.log("test index threw exception");
return reject();
}

console.log("Starting to index hpv16 for visualization");
atomic.addOperation("indexFastaForVisualization",hpv16Ref.get());
try
Expand All @@ -167,7 +180,26 @@ async function runTests() : Promise<void>
return reject();
}

console.log("Starting to align L6R1R1, L6R1R2 against hpv16");
console.log("Starting to align L6R1R1, L6R1R2 against hpv16 using hisat2");
atomic.addOperation(
"runHisat2Alignment",
{
fasta : hpv16Ref.get(),
fastq1 : L6R1R1.get(),
fastq2 : L6R1R2.get()
}
);
try
{
await testL6R1HPV16Hisat2Alignment();
}
catch(err)
{
console.log("test alignment threw exception");
return reject();
}

console.log("Starting to align L6R1R1, L6R1R2 against hpv16 using bowtie2");
atomic.addOperation(
"runBowtie2Alignment",
{
Expand All @@ -186,7 +218,7 @@ async function runTests() : Promise<void>
return reject();
}

console.log("Starting to align L6R1R1, L6R1R2 against hpv18");
console.log("Starting to align L6R1R1, L6R1R2 against hpv18 using bowtie2");
atomic.addOperation(
"runBowtie2Alignment",
{
Expand Down

0 comments on commit d9b55e3

Please sign in to comment.