From e1a1d759bb04dc03ed12f2051ae7f2dc88a7c95e Mon Sep 17 00:00:00 2001 From: Victor San Kho Lin Date: Wed, 16 Oct 2024 17:27:38 +1100 Subject: [PATCH] Added Subject Analysis panel to show WGTS results from BYOB by OrcaBus --- src/api/subject.ts | 4 +- .../subjects/AnalysisResultTable/index.tsx | 119 ++++++++++++++++-- 2 files changed, 114 insertions(+), 9 deletions(-) diff --git a/src/api/subject.ts b/src/api/subject.ts index 639f616..7402b4b 100644 --- a/src/api/subject.ts +++ b/src/api/subject.ts @@ -16,7 +16,9 @@ export type SubjectApiRes = { results: S3Row[]; results_gds: GDSRow[]; results_sash: S3Row[]; - results_cttsov2: S3Row[]; + results_byob_cttsov2: S3Row[]; + results_byob_wgts: S3Row[]; + results_byob_sash: S3Row[]; }; export type SubjectListApiRes = DjangoRestApiResponse & { results: string[] }; diff --git a/src/containers/subjects/AnalysisResultTable/index.tsx b/src/containers/subjects/AnalysisResultTable/index.tsx index c7fdc68..0450a18 100644 --- a/src/containers/subjects/AnalysisResultTable/index.tsx +++ b/src/containers/subjects/AnalysisResultTable/index.tsx @@ -361,7 +361,9 @@ function AnalysisResultsTable({ subjectId }: Props) { results_gds: data.results_gds, results_s3: data.results, results_sash: data.results_sash, - results_cttsov2: data.results_cttsov2, + results_byob_cttsov2: data.results_byob_cttsov2, + results_byob_wgts: data.results_byob_wgts, + results_byob_sash: data.results_byob_sash, }); return ( @@ -461,6 +463,44 @@ function AnalysisResultsTable({ subjectId }: Props) { + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
); } @@ -474,12 +514,16 @@ function groupResultsData({ results_s3, results_gds, results_sash, - results_cttsov2, + results_byob_cttsov2, + results_byob_wgts, + results_byob_sash, }: { results_s3: S3Row[]; results_gds: GDSRow[]; results_sash: S3Row[]; - results_cttsov2: S3Row[]; + results_byob_cttsov2: S3Row[]; + results_byob_wgts: S3Row[]; + results_byob_sash: S3Row[]; }) { const wgs = results_s3.filter((r) => r.key.includes('WGS/')); const wts = results_s3.filter((r) => r.key.includes('WTS/')); @@ -561,10 +605,10 @@ function groupResultsData({ ); // CTTSOV2 results - const cttsov2Bams = results_cttsov2.filter( + const cttsov2Bams = results_byob_cttsov2.filter( (r) => r.key.includes('cttsov2') && r.key.endsWith('bam') ); - const cttsov2Vcfs = results_cttsov2.filter( + const cttsov2Vcfs = results_byob_cttsov2.filter( (r) => r.key.includes('cttsov2') && (r.key.endsWith('.vcf') || @@ -572,16 +616,69 @@ function groupResultsData({ r.key.endsWith('.vcf.gz') || r.key.endsWith('.gvcf.gz')) ); - const cttsov2Tsv = results_cttsov2.filter( + const cttsov2Tsv = results_byob_cttsov2.filter( (r) => r.key.includes('cttsov2') && r.key.endsWith('tsv') ); - const cttsov2Csv = results_cttsov2.filter( + const cttsov2Csv = results_byob_cttsov2.filter( (r) => r.key.includes('cttsov2') && r.key.endsWith('csv') ); - const cttsov2Json = results_cttsov2.filter( + const cttsov2Json = results_byob_cttsov2.filter( (r) => r.key.includes('cttsov2') && (r.key.endsWith('json') || r.key.endsWith('json.gz')) ); + // WGTS BYOB results from ICA v2 + const wgtsByobGrouped = { + + wgsBams: results_byob_wgts.filter( + (r) => r.key.includes('tumor') && r.key.includes('normal') && r.key.endsWith('bam') + ), + wgsVcfs: results_byob_wgts.filter( + (r) => + (r.key.includes('umccrise') || r.key.includes('tumor') || r.key.includes('normal')) && + (r.key.endsWith('vcf.gz') || r.key.endsWith('.maf')) + ), + wgsCircos: results_byob_wgts.filter( + (r) => r.key.includes('umccrise') && r.key.endsWith('png') + ), + wgsPcgr: results_byob_wgts.filter( + (r) => r.key.includes('umccrise') && r.key.endsWith('pcgr.html') + ), + wgsCpsr: results_byob_wgts.filter( + (r) => r.key.includes('umccrise') && r.key.endsWith('cpsr.html') + ), + wgsMultiqc: results_byob_wgts.filter( + (r) => r.key.includes('umccrise') && r.key.endsWith('multiqc_report.html') + ), + wgsCancer: results_byob_wgts.filter( + (r) => r.key.includes('umccrise') && r.key.endsWith('cancer_report.html') + ), + wgsCoverage: results_byob_wgts.filter( + (r) => r.key.includes('cacao') && r.key.endsWith('html') + ), + wtsBamsIca: results_byob_wgts.filter( + (r) => r.key.includes('wts') && r.key.endsWith('bam') + ), + wtsMultiqc: results_byob_wgts.filter( + (r) => r.key.includes('wts') && r.key.endsWith('multiqc.html') + ), + wtsFusionsIca: results_byob_wgts.filter( + (r) => r.key.includes('wts') && r.key.endsWith('fusions.pdf') + ), + wtsRNAsum: results_byob_wgts.filter((r) => r.key.endsWith('RNAseq_report.html')), + } + + // Sash BYOB results from orcabus + const sashByobGrouped = { + // The rest of the output needed to show + vcfs: results_byob_sash.filter((r) => r.key.endsWith('vcf.gz') || r.key.endsWith('.maf')), + circos: results_byob_sash.filter((r) => r.key.includes('circos') && r.key.endsWith('.png')), + pcgr: results_byob_sash.filter((r) => r.key.endsWith('pcgr.html')), + cpsr: results_byob_sash.filter((r) => r.key.endsWith('cpsr.html')), + multiqc: results_byob_sash.filter((r) => r.key.includes('multiqc') && r.key.endsWith('.html')), + cancer: results_byob_sash.filter((r) => r.key.endsWith('cancer_report.html')), + linx: results_byob_sash.filter((r) => r.key.endsWith('linx.html')), + }; + // Sash results const sashGrouped = { // The input bam @@ -641,5 +738,11 @@ function groupResultsData({ // S3 - Sash sash: sashGrouped, + + // S3 - BYOB from orcabus + wgtsByob: wgtsByobGrouped, + + // S3 - BYOB from orcabus sash + sashByob: sashByobGrouped, }; }