biopipen 0.21.0__py3-none-any.whl → 0.34.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- biopipen/__init__.py +1 -1
- biopipen/core/config.toml +28 -0
- biopipen/core/filters.py +79 -4
- biopipen/core/proc.py +12 -3
- biopipen/core/testing.py +75 -3
- biopipen/ns/bam.py +148 -6
- biopipen/ns/bed.py +75 -0
- biopipen/ns/cellranger.py +186 -0
- biopipen/ns/cellranger_pipeline.py +126 -0
- biopipen/ns/cnv.py +19 -3
- biopipen/ns/cnvkit.py +1 -1
- biopipen/ns/cnvkit_pipeline.py +20 -12
- biopipen/ns/delim.py +34 -35
- biopipen/ns/gene.py +68 -23
- biopipen/ns/gsea.py +63 -37
- biopipen/ns/misc.py +39 -14
- biopipen/ns/plot.py +304 -1
- biopipen/ns/protein.py +183 -0
- biopipen/ns/regulatory.py +290 -0
- biopipen/ns/rnaseq.py +142 -5
- biopipen/ns/scrna.py +2053 -473
- biopipen/ns/scrna_metabolic_landscape.py +228 -382
- biopipen/ns/snp.py +659 -0
- biopipen/ns/stats.py +484 -0
- biopipen/ns/tcr.py +683 -98
- biopipen/ns/vcf.py +236 -2
- biopipen/ns/web.py +97 -6
- biopipen/reports/bam/CNVpytor.svelte +4 -9
- biopipen/reports/cellranger/CellRangerCount.svelte +18 -0
- biopipen/reports/cellranger/CellRangerSummary.svelte +16 -0
- biopipen/reports/cellranger/CellRangerVdj.svelte +18 -0
- biopipen/reports/cnvkit/CNVkitDiagram.svelte +1 -1
- biopipen/reports/cnvkit/CNVkitHeatmap.svelte +1 -1
- biopipen/reports/cnvkit/CNVkitScatter.svelte +1 -1
- biopipen/reports/common.svelte +15 -0
- biopipen/reports/protein/ProdigySummary.svelte +16 -0
- biopipen/reports/scrna/CellsDistribution.svelte +4 -39
- biopipen/reports/scrna/DimPlots.svelte +1 -1
- biopipen/reports/scrna/MarkersFinder.svelte +6 -126
- biopipen/reports/scrna/MetaMarkers.svelte +3 -75
- biopipen/reports/scrna/RadarPlots.svelte +4 -20
- biopipen/reports/scrna_metabolic_landscape/MetabolicFeatures.svelte +61 -22
- biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayActivity.svelte +88 -82
- biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.svelte +70 -10
- biopipen/reports/snp/PlinkCallRate.svelte +24 -0
- biopipen/reports/snp/PlinkFreq.svelte +18 -0
- biopipen/reports/snp/PlinkHWE.svelte +18 -0
- biopipen/reports/snp/PlinkHet.svelte +18 -0
- biopipen/reports/snp/PlinkIBD.svelte +18 -0
- biopipen/reports/tcr/CDR3AAPhyschem.svelte +19 -66
- biopipen/reports/tcr/ClonalStats.svelte +16 -0
- biopipen/reports/tcr/CloneResidency.svelte +3 -93
- biopipen/reports/tcr/Immunarch.svelte +4 -155
- biopipen/reports/tcr/TCRClusterStats.svelte +3 -45
- biopipen/reports/tcr/TESSA.svelte +11 -28
- biopipen/reports/utils/misc.liq +22 -7
- biopipen/scripts/bam/BamMerge.py +11 -15
- biopipen/scripts/bam/BamSampling.py +90 -0
- biopipen/scripts/bam/BamSort.py +141 -0
- biopipen/scripts/bam/BamSplitChroms.py +10 -10
- biopipen/scripts/bam/BamSubsetByBed.py +38 -0
- biopipen/scripts/bam/CNAClinic.R +41 -5
- biopipen/scripts/bam/CNVpytor.py +153 -54
- biopipen/scripts/bam/ControlFREEC.py +13 -14
- biopipen/scripts/bam/SamtoolsView.py +33 -0
- biopipen/scripts/bed/Bed2Vcf.py +5 -5
- biopipen/scripts/bed/BedConsensus.py +5 -5
- biopipen/scripts/bed/BedLiftOver.sh +6 -4
- biopipen/scripts/bed/BedtoolsIntersect.py +54 -0
- biopipen/scripts/bed/BedtoolsMakeWindows.py +47 -0
- biopipen/scripts/bed/BedtoolsMerge.py +4 -4
- biopipen/scripts/cellranger/CellRangerCount.py +138 -0
- biopipen/scripts/cellranger/CellRangerSummary.R +181 -0
- biopipen/scripts/cellranger/CellRangerVdj.py +112 -0
- biopipen/scripts/cnv/AneuploidyScore.R +55 -20
- biopipen/scripts/cnv/AneuploidyScoreSummary.R +221 -163
- biopipen/scripts/cnv/TMADScore.R +25 -9
- biopipen/scripts/cnv/TMADScoreSummary.R +57 -86
- biopipen/scripts/cnvkit/CNVkitAccess.py +7 -6
- biopipen/scripts/cnvkit/CNVkitAutobin.py +26 -18
- biopipen/scripts/cnvkit/CNVkitBatch.py +6 -6
- biopipen/scripts/cnvkit/CNVkitCall.py +3 -3
- biopipen/scripts/cnvkit/CNVkitCoverage.py +4 -3
- biopipen/scripts/cnvkit/CNVkitDiagram.py +5 -5
- biopipen/scripts/cnvkit/CNVkitFix.py +3 -3
- biopipen/scripts/cnvkit/CNVkitGuessBaits.py +12 -8
- biopipen/scripts/cnvkit/CNVkitHeatmap.py +5 -5
- biopipen/scripts/cnvkit/CNVkitReference.py +6 -5
- biopipen/scripts/cnvkit/CNVkitScatter.py +5 -5
- biopipen/scripts/cnvkit/CNVkitSegment.py +5 -5
- biopipen/scripts/cnvkit/guess_baits.py +166 -93
- biopipen/scripts/delim/RowsBinder.R +1 -1
- biopipen/scripts/delim/SampleInfo.R +116 -118
- biopipen/scripts/gene/GeneNameConversion.R +67 -0
- biopipen/scripts/gene/GenePromoters.R +61 -0
- biopipen/scripts/gsea/Enrichr.R +5 -5
- biopipen/scripts/gsea/FGSEA.R +184 -50
- biopipen/scripts/gsea/GSEA.R +2 -2
- biopipen/scripts/gsea/PreRank.R +5 -5
- biopipen/scripts/misc/Config2File.py +2 -2
- biopipen/scripts/misc/Plot.R +80 -0
- biopipen/scripts/misc/Shell.sh +15 -0
- biopipen/scripts/misc/Str2File.py +2 -2
- biopipen/scripts/plot/Heatmap.R +3 -3
- biopipen/scripts/plot/Manhattan.R +147 -0
- biopipen/scripts/plot/QQPlot.R +146 -0
- biopipen/scripts/plot/ROC.R +88 -0
- biopipen/scripts/plot/Scatter.R +112 -0
- biopipen/scripts/plot/VennDiagram.R +5 -9
- biopipen/scripts/protein/MMCIF2PDB.py +33 -0
- biopipen/scripts/protein/PDB2Fasta.py +60 -0
- biopipen/scripts/protein/Prodigy.py +119 -0
- biopipen/scripts/protein/ProdigySummary.R +140 -0
- biopipen/scripts/protein/RMSD.py +178 -0
- biopipen/scripts/regulatory/MotifAffinityTest.R +102 -0
- biopipen/scripts/regulatory/MotifAffinityTest_AtSNP.R +127 -0
- biopipen/scripts/regulatory/MotifAffinityTest_MotifBreakR.R +104 -0
- biopipen/scripts/regulatory/MotifScan.py +159 -0
- biopipen/scripts/regulatory/VariantMotifPlot.R +78 -0
- biopipen/scripts/regulatory/motifs-common.R +324 -0
- biopipen/scripts/rnaseq/Simulation-ESCO.R +180 -0
- biopipen/scripts/rnaseq/Simulation-RUVcorr.R +45 -0
- biopipen/scripts/rnaseq/Simulation.R +21 -0
- biopipen/scripts/rnaseq/UnitConversion.R +325 -54
- biopipen/scripts/scrna/AnnData2Seurat.R +40 -0
- biopipen/scripts/scrna/CCPlotR-patch.R +161 -0
- biopipen/scripts/scrna/CellCellCommunication.py +150 -0
- biopipen/scripts/scrna/CellCellCommunicationPlots.R +93 -0
- biopipen/scripts/scrna/CellSNPLite.py +30 -0
- biopipen/scripts/scrna/CellTypeAnnotation-celltypist.R +185 -0
- biopipen/scripts/scrna/CellTypeAnnotation-direct.R +68 -31
- biopipen/scripts/scrna/CellTypeAnnotation-hitype.R +27 -22
- biopipen/scripts/scrna/CellTypeAnnotation-sccatch.R +28 -20
- biopipen/scripts/scrna/CellTypeAnnotation-sctype.R +48 -25
- biopipen/scripts/scrna/CellTypeAnnotation.R +37 -1
- biopipen/scripts/scrna/CellsDistribution.R +456 -167
- biopipen/scripts/scrna/DimPlots.R +1 -1
- biopipen/scripts/scrna/ExprImputation-alra.R +109 -0
- biopipen/scripts/scrna/ExprImputation-rmagic.R +256 -0
- biopipen/scripts/scrna/{ExprImpution-scimpute.R → ExprImputation-scimpute.R} +8 -5
- biopipen/scripts/scrna/ExprImputation.R +7 -0
- biopipen/scripts/scrna/LoomTo10X.R +51 -0
- biopipen/scripts/scrna/MQuad.py +25 -0
- biopipen/scripts/scrna/MarkersFinder.R +679 -400
- biopipen/scripts/scrna/MetaMarkers.R +265 -161
- biopipen/scripts/scrna/ModuleScoreCalculator.R +66 -11
- biopipen/scripts/scrna/PseudoBulkDEG.R +678 -0
- biopipen/scripts/scrna/RadarPlots.R +355 -134
- biopipen/scripts/scrna/ScFGSEA.R +298 -100
- biopipen/scripts/scrna/ScSimulation.R +65 -0
- biopipen/scripts/scrna/ScVelo.py +617 -0
- biopipen/scripts/scrna/Seurat2AnnData.R +7 -0
- biopipen/scripts/scrna/SeuratClusterStats-clustree.R +87 -0
- biopipen/scripts/scrna/SeuratClusterStats-dimplots.R +36 -30
- biopipen/scripts/scrna/SeuratClusterStats-features.R +138 -187
- biopipen/scripts/scrna/SeuratClusterStats-ngenes.R +81 -0
- biopipen/scripts/scrna/SeuratClusterStats-stats.R +78 -89
- biopipen/scripts/scrna/SeuratClusterStats.R +47 -10
- biopipen/scripts/scrna/SeuratClustering.R +36 -233
- biopipen/scripts/scrna/SeuratLoading.R +2 -2
- biopipen/scripts/scrna/SeuratMap2Ref.R +84 -113
- biopipen/scripts/scrna/SeuratMetadataMutater.R +16 -6
- biopipen/scripts/scrna/SeuratPreparing.R +223 -173
- biopipen/scripts/scrna/SeuratSubClustering.R +64 -0
- biopipen/scripts/scrna/SeuratTo10X.R +27 -0
- biopipen/scripts/scrna/Slingshot.R +65 -0
- biopipen/scripts/scrna/Subset10X.R +2 -2
- biopipen/scripts/scrna/TopExpressingGenes.R +169 -135
- biopipen/scripts/scrna/celltypist-wrapper.py +195 -0
- biopipen/scripts/scrna/scvelo_paga.py +313 -0
- biopipen/scripts/scrna/seurat_anndata_conversion.py +98 -0
- biopipen/scripts/scrna_metabolic_landscape/MetabolicFeatures.R +447 -82
- biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayActivity.R +348 -241
- biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.R +188 -166
- biopipen/scripts/snp/MatrixEQTL.R +217 -0
- biopipen/scripts/snp/Plink2GTMat.py +148 -0
- biopipen/scripts/snp/PlinkCallRate.R +199 -0
- biopipen/scripts/snp/PlinkFilter.py +100 -0
- biopipen/scripts/snp/PlinkFreq.R +291 -0
- biopipen/scripts/snp/PlinkFromVcf.py +81 -0
- biopipen/scripts/snp/PlinkHWE.R +85 -0
- biopipen/scripts/snp/PlinkHet.R +96 -0
- biopipen/scripts/snp/PlinkIBD.R +196 -0
- biopipen/scripts/snp/PlinkSimulation.py +124 -0
- biopipen/scripts/snp/PlinkUpdateName.py +124 -0
- biopipen/scripts/stats/ChowTest.R +146 -0
- biopipen/scripts/stats/DiffCoexpr.R +152 -0
- biopipen/scripts/stats/LiquidAssoc.R +135 -0
- biopipen/scripts/stats/Mediation.R +108 -0
- biopipen/scripts/stats/MetaPvalue.R +130 -0
- biopipen/scripts/stats/MetaPvalue1.R +74 -0
- biopipen/scripts/tcgamaf/Maf2Vcf.py +2 -2
- biopipen/scripts/tcgamaf/MafAddChr.py +2 -2
- biopipen/scripts/tcr/Attach2Seurat.R +3 -2
- biopipen/scripts/tcr/CDR3AAPhyschem.R +211 -143
- biopipen/scripts/tcr/CDR3Clustering.R +343 -0
- biopipen/scripts/tcr/ClonalStats.R +526 -0
- biopipen/scripts/tcr/CloneResidency.R +255 -131
- biopipen/scripts/tcr/CloneSizeQQPlot.R +4 -4
- biopipen/scripts/tcr/GIANA/GIANA.py +1356 -797
- biopipen/scripts/tcr/GIANA/GIANA4.py +1362 -789
- biopipen/scripts/tcr/GIANA/query.py +164 -162
- biopipen/scripts/tcr/Immunarch-basic.R +31 -9
- biopipen/scripts/tcr/Immunarch-clonality.R +25 -5
- biopipen/scripts/tcr/Immunarch-diversity.R +352 -134
- biopipen/scripts/tcr/Immunarch-geneusage.R +45 -5
- biopipen/scripts/tcr/Immunarch-kmer.R +68 -8
- biopipen/scripts/tcr/Immunarch-overlap.R +84 -4
- biopipen/scripts/tcr/Immunarch-spectratyping.R +35 -6
- biopipen/scripts/tcr/Immunarch-tracking.R +38 -6
- biopipen/scripts/tcr/Immunarch-vjjunc.R +165 -0
- biopipen/scripts/tcr/Immunarch.R +63 -11
- biopipen/scripts/tcr/Immunarch2VDJtools.R +2 -2
- biopipen/scripts/tcr/ImmunarchFilter.R +4 -4
- biopipen/scripts/tcr/ImmunarchLoading.R +38 -29
- biopipen/scripts/tcr/SampleDiversity.R +1 -1
- biopipen/scripts/tcr/ScRepCombiningExpression.R +40 -0
- biopipen/scripts/tcr/ScRepLoading.R +166 -0
- biopipen/scripts/tcr/TCRClusterStats.R +176 -22
- biopipen/scripts/tcr/TCRDock.py +110 -0
- biopipen/scripts/tcr/TESSA.R +102 -118
- biopipen/scripts/tcr/VJUsage.R +5 -5
- biopipen/scripts/tcr/immunarch-patched.R +142 -0
- biopipen/scripts/tcr/vdjtools-patch.sh +1 -1
- biopipen/scripts/vcf/BcftoolsAnnotate.py +91 -0
- biopipen/scripts/vcf/BcftoolsFilter.py +90 -0
- biopipen/scripts/vcf/BcftoolsMerge.py +31 -0
- biopipen/scripts/vcf/BcftoolsSort.py +113 -0
- biopipen/scripts/vcf/BcftoolsView.py +73 -0
- biopipen/scripts/vcf/TruvariBench.sh +14 -7
- biopipen/scripts/vcf/TruvariBenchSummary.R +16 -13
- biopipen/scripts/vcf/TruvariConsistency.R +1 -1
- biopipen/scripts/vcf/Vcf2Bed.py +2 -2
- biopipen/scripts/vcf/VcfAnno.py +11 -11
- biopipen/scripts/vcf/VcfDownSample.sh +22 -10
- biopipen/scripts/vcf/VcfFilter.py +5 -5
- biopipen/scripts/vcf/VcfFix.py +7 -7
- biopipen/scripts/vcf/VcfFix_utils.py +13 -4
- biopipen/scripts/vcf/VcfIndex.py +3 -3
- biopipen/scripts/vcf/VcfIntersect.py +3 -3
- biopipen/scripts/vcf/VcfLiftOver.sh +5 -0
- biopipen/scripts/vcf/VcfSplitSamples.py +4 -4
- biopipen/scripts/vcf/bcftools_utils.py +52 -0
- biopipen/scripts/web/Download.py +8 -4
- biopipen/scripts/web/DownloadList.py +5 -5
- biopipen/scripts/web/GCloudStorageDownloadBucket.py +82 -0
- biopipen/scripts/web/GCloudStorageDownloadFile.py +23 -0
- biopipen/scripts/web/gcloud_common.py +49 -0
- biopipen/utils/gene.py +108 -60
- biopipen/utils/misc.py +146 -20
- biopipen/utils/reference.py +64 -20
- biopipen/utils/reporter.py +177 -0
- biopipen/utils/vcf.py +1 -1
- biopipen-0.34.26.dist-info/METADATA +27 -0
- biopipen-0.34.26.dist-info/RECORD +292 -0
- {biopipen-0.21.0.dist-info → biopipen-0.34.26.dist-info}/WHEEL +1 -1
- {biopipen-0.21.0.dist-info → biopipen-0.34.26.dist-info}/entry_points.txt +6 -2
- biopipen/ns/bcftools.py +0 -111
- biopipen/ns/scrna_basic.py +0 -255
- biopipen/reports/delim/SampleInfo.svelte +0 -36
- biopipen/reports/scrna/GeneExpressionInvistigation.svelte +0 -32
- biopipen/reports/scrna/ScFGSEA.svelte +0 -35
- biopipen/reports/scrna/SeuratClusterStats.svelte +0 -82
- biopipen/reports/scrna/SeuratMap2Ref.svelte +0 -20
- biopipen/reports/scrna/SeuratPreparing.svelte +0 -38
- biopipen/reports/scrna/TopExpressingGenes.svelte +0 -55
- biopipen/reports/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.svelte +0 -31
- biopipen/reports/utils/gsea.liq +0 -110
- biopipen/scripts/bcftools/BcftoolsAnnotate.py +0 -42
- biopipen/scripts/bcftools/BcftoolsFilter.py +0 -79
- biopipen/scripts/bcftools/BcftoolsSort.py +0 -19
- biopipen/scripts/gene/GeneNameConversion.py +0 -66
- biopipen/scripts/scrna/ExprImpution-alra.R +0 -32
- biopipen/scripts/scrna/ExprImpution-rmagic.R +0 -29
- biopipen/scripts/scrna/ExprImpution.R +0 -7
- biopipen/scripts/scrna/GeneExpressionInvistigation.R +0 -132
- biopipen/scripts/scrna/Write10X.R +0 -11
- biopipen/scripts/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.R +0 -150
- biopipen/scripts/tcr/TCRClustering.R +0 -280
- biopipen/utils/common_docstrs.py +0 -61
- biopipen/utils/gene.R +0 -49
- biopipen/utils/gsea.R +0 -193
- biopipen/utils/io.R +0 -20
- biopipen/utils/misc.R +0 -114
- biopipen/utils/mutate_helpers.R +0 -433
- biopipen/utils/plot.R +0 -173
- biopipen/utils/rnaseq.R +0 -48
- biopipen/utils/single_cell.R +0 -115
- biopipen-0.21.0.dist-info/METADATA +0 -22
- biopipen-0.21.0.dist-info/RECORD +0 -218
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
|
+
<script>
|
|
3
|
+
import { Image, Descr } from "$libs";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{%- macro report_job(job, h=1) -%}
|
|
7
|
+
<h{{h+1}}>Sample Call Rate</h{{h+1}}>
|
|
8
|
+
{%- for pngfile in job.out.outdir | glob: '*.samplecr.png' -%}
|
|
9
|
+
<Descr>Cutoff: {{envs.samplecr}}</Descr>
|
|
10
|
+
<Image src="{{pngfile}}" />
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
|
|
13
|
+
<h{{h+1}}>Variant Call Rate</h{{h+1}}>
|
|
14
|
+
{%- for pngfile in job.out.outdir | glob: '*.varcr.png' -%}
|
|
15
|
+
<Descr>Cutoff: {{envs.varcr}}</Descr>
|
|
16
|
+
<Image src="{{pngfile}}" />
|
|
17
|
+
{%- endfor -%}
|
|
18
|
+
{%- endmacro -%}
|
|
19
|
+
|
|
20
|
+
{%- macro head_job(job) -%}
|
|
21
|
+
<h1>Sample: {{job.in.cnrfile | stem0 }}</h1>
|
|
22
|
+
{%- endmacro -%}
|
|
23
|
+
|
|
24
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
|
+
<script>
|
|
3
|
+
import { Image, Descr } from "$libs";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{%- macro report_job(job, h=1) -%}
|
|
7
|
+
{%- for pngfile in job.out.outdir | glob: '*.png' -%}
|
|
8
|
+
{% set metric_col = pngfile | stem | ext0 %}
|
|
9
|
+
<h{{h+1}}>{{metric_col}} distribution</h{{h+1}}>
|
|
10
|
+
<Image src="{{pngfile}}" />
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
{%- endmacro -%}
|
|
13
|
+
|
|
14
|
+
{%- macro head_job(job) -%}
|
|
15
|
+
<h1>Sample: {{job.in.cnrfile | stem0 }}</h1>
|
|
16
|
+
{%- endmacro -%}
|
|
17
|
+
|
|
18
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
|
+
<script>
|
|
3
|
+
import { Image, Descr } from "$libs";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{%- macro report_job(job, h=1) -%}
|
|
7
|
+
{%- for pngfile in job.out.outdir | glob: '*.png' -%}
|
|
8
|
+
<h{{h+1}}>Distribution</h{{h+1}}>
|
|
9
|
+
<Descr>Cutoff: {{envs.cutoff}}</Descr>
|
|
10
|
+
<Image src="{{pngfile}}" />
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
{%- endmacro -%}
|
|
13
|
+
|
|
14
|
+
{%- macro head_job(job) -%}
|
|
15
|
+
<h1>Sample: {{job.in.cnrfile | stem0 }}</h1>
|
|
16
|
+
{%- endmacro -%}
|
|
17
|
+
|
|
18
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
|
+
<script>
|
|
3
|
+
import { Image, Descr } from "$libs";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{%- macro report_job(job, h=1) -%}
|
|
7
|
+
{%- for pngfile in job.out.outdir | glob: '*.png' -%}
|
|
8
|
+
<h{{h+1}}>Distribution</h{{h+1}}>
|
|
9
|
+
<Descr>Cutoff: [mean - {{envs.cutoff}} x sd, mean + {{envs.cutoff}} x sd]</Descr>
|
|
10
|
+
<Image src="{{pngfile}}" />
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
{%- endmacro -%}
|
|
13
|
+
|
|
14
|
+
{%- macro head_job(job) -%}
|
|
15
|
+
<h1>Sample: {{job.in.cnrfile | stem0 }}</h1>
|
|
16
|
+
{%- endmacro -%}
|
|
17
|
+
|
|
18
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
|
+
<script>
|
|
3
|
+
import { Image, Descr } from "$libs";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{%- macro report_job(job, h=1) -%}
|
|
7
|
+
{%- for pngfile in job.out.outdir | glob: '*.png' -%}
|
|
8
|
+
<h{{h+1}}>Heatmap</h{{h+1}}>
|
|
9
|
+
<Descr>PI_HAT threshold = {{envs.pihat}}</Descr>
|
|
10
|
+
<Image src="{{pngfile}}" />
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
{%- endmacro -%}
|
|
13
|
+
|
|
14
|
+
{%- macro head_job(job) -%}
|
|
15
|
+
<h1>Sample: {{job.in.cnrfile | stem0 }}</h1>
|
|
16
|
+
{%- endmacro -%}
|
|
17
|
+
|
|
18
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -1,79 +1,32 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "$libs";
|
|
3
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
4
4
|
import { Tile, UnorderedList, ListItem, Link, Tabs, Tab, TabContent } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<ListItem
|
|
21
|
-
<ListItem class="ccs-li"><Link href="https://www.nature.com/articles/s41590-022-01129-x" target="_blank">https://www.nature.com/articles/s41590-022-01129-x</Link></ListItem>
|
|
22
|
-
<ListItem class="ccs-li">Wimley, W. C. & White, S. H. Experimentally determined hydrophobicity scale for proteins at membrane - interfaces. Nat. Struct. Biol. 3, 842-848 (1996).</ListItem>
|
|
23
|
-
<ListItem class="ccs-li">Hdbk of chemistry & physics 72nd edition. (CRC Press, 1991).</ListItem>
|
|
24
|
-
<ListItem class="ccs-li">Zamyatnin, A. A. Protein volume in solution. Prog. Biophys. Mol. Biol. 24, 107-123 (1972).</ListItem>
|
|
7
|
+
<h1>Summary</h1>
|
|
8
|
+
<Descr>
|
|
9
|
+
The idea is to perform a regression between two groups of cells
|
|
10
|
+
(e.g. Treg vs Tconv) at different length of CDR3 AA sequences.
|
|
11
|
+
The regression will be performed for each physicochemical feature of the
|
|
12
|
+
AA (hydrophobicity, volume and isolectric point).
|
|
13
|
+
|
|
14
|
+
<h2>Reference</h2>
|
|
15
|
+
<UnorderedList>
|
|
16
|
+
<ListItem><Link href="https://www.nature.com/articles/ni.3491" target="_blank">https://www.nature.com/articles/ni.3491</Link></ListItem>
|
|
17
|
+
<ListItem><Link href="https://www.nature.com/articles/s41590-022-01129-x" target="_blank">https://www.nature.com/articles/s41590-022-01129-x</Link></ListItem>
|
|
18
|
+
<ListItem>Wimley, W. C. & White, S. H. Experimentally determined hydrophobicity scale for proteins at membrane - interfaces. Nat. Struct. Biol. 3, 842-848 (1996).</ListItem>
|
|
19
|
+
<ListItem>Hdbk of chemistry & physics 72nd edition. (CRC Press, 1991).</ListItem>
|
|
20
|
+
<ListItem>Zamyatnin, A. A. Protein volume in solution. Prog. Biophys. Mol. Biol. 24, 107-123 (1972).</ListItem>
|
|
25
21
|
</UnorderedList>
|
|
22
|
+
</Descr>
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
src={{job.out.outdir | joinpaths: "stats.txt" | quote}}
|
|
30
|
-
data={ {{job.out.outdir | joinpaths: "stats.txt" | datatable: sep="\t", index_col=None}} }
|
|
31
|
-
/>
|
|
32
|
-
|
|
33
|
-
{% for subsetdir in job.out.outdir | glob: "*" %}
|
|
34
|
-
{% if not subsetdir | isdir %}
|
|
35
|
-
{% continue %}
|
|
36
|
-
{% endif %}
|
|
37
|
-
{% if basename(subsetdir) == "ALL" %}
|
|
38
|
-
{% set h = h - 1 %}
|
|
39
|
-
{% else %}
|
|
40
|
-
<h{{h}}>Subset: {{subsetdir | stem}}</h{{h}}>
|
|
41
|
-
{% endif %}
|
|
42
|
-
|
|
43
|
-
<h{{h+1}}>Estimated OR (per s.d.) for each physicochemical feature</h{{h+1}}>
|
|
44
|
-
<Tabs>
|
|
45
|
-
<Tab label="Plot" />
|
|
46
|
-
<Tab label="Table" />
|
|
47
|
-
<svelte:fragment slot="content">
|
|
48
|
-
<TabContent>
|
|
49
|
-
<Image src={{subsetdir | joinpaths: "estimated_coefficients.png" | quote}} />
|
|
50
|
-
</TabContent>
|
|
51
|
-
<TabContent>
|
|
52
|
-
<DataTable
|
|
53
|
-
src={{subsetdir | joinpaths: "estimates.txt" | quote}}
|
|
54
|
-
data={ {{subsetdir | joinpaths: "estimates.txt" | datatable: sep="\t", index_col=None}} }
|
|
55
|
-
/>
|
|
56
|
-
</TabContent>
|
|
57
|
-
</svelte:fragment>
|
|
58
|
-
</Tabs>
|
|
59
|
-
|
|
60
|
-
<h{{h+1}}>Hydrophobicity Distribution</h{{h+1}}>
|
|
61
|
-
<Image src={{subsetdir | joinpaths: "distribution.png" | quote}} />
|
|
62
|
-
|
|
63
|
-
{% endfor %}
|
|
64
|
-
|
|
24
|
+
{%- macro report_job(job, h=1) -%}
|
|
25
|
+
{{ job | render_job: h=h }}
|
|
65
26
|
{%- endmacro -%}
|
|
66
27
|
|
|
67
28
|
{%- macro head_job(job) -%}
|
|
68
|
-
<h1>{{job.out.outdir | stem | replace: ".
|
|
29
|
+
<h1>{{job.out.outdir | stem | replace: ".scRep", ""}}</h1>
|
|
69
30
|
{%- endmacro -%}
|
|
70
31
|
|
|
71
32
|
{{ report_jobs(jobs, head_job, report_job) }}
|
|
72
|
-
|
|
73
|
-
<style>
|
|
74
|
-
:global(.ccs-li) {
|
|
75
|
-
/* default will have messy bullet points */
|
|
76
|
-
list-style-type: square;
|
|
77
|
-
position: unset !important;
|
|
78
|
-
}
|
|
79
|
-
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
|
+
|
|
3
|
+
<script>
|
|
4
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
5
|
+
import { Tabs, Tab, TabContent, UnorderedList, ListItem, InlineNotification } from "$ccs";
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
{%- macro report_job(job, h=1) -%}
|
|
9
|
+
{{ job | render_job: h=h }}
|
|
10
|
+
{%- endmacro -%}
|
|
11
|
+
|
|
12
|
+
{%- macro head_job(job) -%}
|
|
13
|
+
<h1>{{job.in.screpfile | stem | escape }}</h1>
|
|
14
|
+
{%- endmacro -%}
|
|
15
|
+
|
|
16
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -1,105 +1,15 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "$libs";
|
|
4
|
-
import { Dropdown } from "$ccs";
|
|
3
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
4
|
+
import { Dropdown, UnorderedList, ListItem } from "$ccs";
|
|
5
5
|
|
|
6
6
|
let count_subject;
|
|
7
7
|
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
|
-
{%- macro report_case(casename, h=2) -%}
|
|
11
|
-
<h{{h}}>Count table</h{{h}}>
|
|
12
|
-
<Dropdown
|
|
13
|
-
selectedId="-1"
|
|
14
|
-
items={[
|
|
15
|
-
{ id: "-1", text: "Select a subject" },
|
|
16
|
-
{% for i, countfile in job.out.outdir | glob: casename, "counts", "*.txt" | enumerate -%}
|
|
17
|
-
{ id: "{{i}}", text: "{{countfile | stem}}" },
|
|
18
|
-
{% endfor %}
|
|
19
|
-
]}
|
|
20
|
-
on:select={({ detail }) => {
|
|
21
|
-
count_subject = `{{casename}}-${detail.selectedItem.text}`;
|
|
22
|
-
}}
|
|
23
|
-
/>
|
|
24
|
-
{% for countfile in job.out.outdir | glob: casename, "counts", "*.txt" -%}
|
|
25
|
-
{#if count_subject == {{ countfile | stem | prepend: casename + '-' | quote }} }
|
|
26
|
-
<DataTable src={{
|
|
27
|
-
job.out.outdir
|
|
28
|
-
| joinpaths: casename, "counts", stem(countfile) + ".txt"
|
|
29
|
-
| quote
|
|
30
|
-
}} data={ {{
|
|
31
|
-
job.out.outdir
|
|
32
|
-
| joinpaths: casename, "counts", stem(countfile) + ".txt"
|
|
33
|
-
| datatable: sep="\t", nrows=20, index_col=None
|
|
34
|
-
}} } />
|
|
35
|
-
{/if}
|
|
36
|
-
{%- endfor %}
|
|
37
|
-
|
|
38
|
-
<h{{h}}>Residency plots</h{{h}}>
|
|
39
|
-
|
|
40
|
-
{% if job.out.outdir | joinpaths: casename, "section" | exists %}
|
|
41
|
-
{% for groupfile in job.out.outdir | glob: casename, "section", "*.txt" %}
|
|
42
|
-
{% set group = groupfile | stem %}
|
|
43
|
-
<h{{h+1}}>{{group}}</h{{h+1}}>
|
|
44
|
-
{% set scatter_pngs = [] %}
|
|
45
|
-
{% for sample in groupfile | readlines %}
|
|
46
|
-
{% set spngs = job.out.outdir | glob: casename, "scatter", "scatter_" + sample + "_*.png" %}
|
|
47
|
-
{% set _ = scatter_pngs.extend(spngs) %}
|
|
48
|
-
{% endfor %}
|
|
49
|
-
{{ table_of_images(scatter_pngs, col=3, caps=false) }}
|
|
50
|
-
{% endfor %}
|
|
51
|
-
{% else %}
|
|
52
|
-
{% assign scatter_pngs = job.out.outdir | joinpaths: casename, "scatter", "scatter_*.png" | glob %}
|
|
53
|
-
{{ table_of_images(scatter_pngs, col=3, caps=false) }}
|
|
54
|
-
{% endif %}
|
|
55
|
-
|
|
56
|
-
<h{{h}}>Clonotype overlapping (Venn plots)</h{{h}}>
|
|
57
|
-
|
|
58
|
-
{% if job.out.outdir | joinpaths: casename, "section" | exists %}
|
|
59
|
-
{% for groupfile in job.out.outdir | glob: casename, "section", "*.txt" %}
|
|
60
|
-
{% set group = groupfile | stem %}
|
|
61
|
-
<h{{h+1}}>{{group}}</h{{h+1}}>
|
|
62
|
-
{% set venn_pngs = [] %}
|
|
63
|
-
{% for sample in groupfile | readlines %}
|
|
64
|
-
{% set spng = job.out.outdir | glob0: casename, "venn", "venn_" + sample + ".png" %}
|
|
65
|
-
{% set _ = venn_pngs.append(spng) %}
|
|
66
|
-
{% endfor %}
|
|
67
|
-
{{ table_of_images(venn_pngs, col=3) }}
|
|
68
|
-
{% endfor %}
|
|
69
|
-
{% else %}
|
|
70
|
-
{% assign venn_pngs = job.out.outdir | joinpaths: casename, "venn", "*.png" | glob %}
|
|
71
|
-
{{ table_of_images(venn_pngs, col=3) }}
|
|
72
|
-
{% endif %}
|
|
73
|
-
|
|
74
|
-
<h{{h}}>Clonotype overlapping (Upset plots)</h{{h}}>
|
|
75
|
-
|
|
76
|
-
{% if job.out.outdir | joinpaths: casename, "section" | exists %}
|
|
77
|
-
{% for groupfile in job.out.outdir | glob: casename, "section", "*.txt" %}
|
|
78
|
-
{% set group = groupfile | stem %}
|
|
79
|
-
<h{{h+1}}>{{group}}</h{{h+1}}>
|
|
80
|
-
{% set venn_pngs = [] %}
|
|
81
|
-
{% for sample in groupfile | readlines %}
|
|
82
|
-
{% set spng = job.out.outdir | glob0: casename, "upset", "upset_" + sample + ".png" %}
|
|
83
|
-
{% set _ = venn_pngs.append(spng) %}
|
|
84
|
-
{% endfor %}
|
|
85
|
-
{{ table_of_images(venn_pngs, col=3) }}
|
|
86
|
-
{% endfor %}
|
|
87
|
-
{% else %}
|
|
88
|
-
{% assign venn_pngs = job.out.outdir | joinpaths: casename, "upset", "*.png" | glob %}
|
|
89
|
-
{{ table_of_images(venn_pngs, col=3) }}
|
|
90
|
-
{% endif %}
|
|
91
|
-
{%- endmacro -%}
|
|
92
10
|
|
|
93
11
|
{%- macro report_job(job, h=1) -%}
|
|
94
|
-
{
|
|
95
|
-
{% if len(casedirs) == 1 %}
|
|
96
|
-
{{ report_case(stem(casedirs[0]), h) }}
|
|
97
|
-
{% else %}
|
|
98
|
-
{% for casedir in casedirs %}
|
|
99
|
-
<h{{h}}>{{casedir | stem}}</h{{h}}>
|
|
100
|
-
{{ report_case(stem(casedir), h+1) }}
|
|
101
|
-
{% endfor %}
|
|
102
|
-
{% endif %}
|
|
12
|
+
{{ job | render_job: h=h }}
|
|
103
13
|
{%- endmacro -%}
|
|
104
14
|
|
|
105
15
|
{%- macro head_job(job) -%}
|
|
@@ -1,167 +1,16 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "$libs";
|
|
4
|
-
import { Tabs, Tab, TabContent
|
|
3
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
4
|
+
import { Tabs, Tab, TabContent } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
{%- macro report_job(job, h=1) -%}
|
|
8
|
-
|
|
9
|
-
<h{{h}}>Exploratory analysis</h{{h}}>
|
|
10
|
-
|
|
11
|
-
<h{{h+1}}>CDR3 length distribution</h{{h+1}}>
|
|
12
|
-
|
|
13
|
-
{% assign lenpngs = job.out.outdir | glob: "len", "*.png" %}
|
|
14
|
-
{{ table_of_images(lenpngs) }}
|
|
15
|
-
|
|
16
|
-
<h{{h+1}}>Clonotype volume (# clonotypes)</h{{h+1}}>
|
|
17
|
-
|
|
18
|
-
{% assign volpngs = job.out.outdir | glob: "volume", "*.png" %}
|
|
19
|
-
{{ table_of_images(volpngs) }}
|
|
20
|
-
|
|
21
|
-
<h{{h+1}}>Clonotype abundances</h{{h+1}}>
|
|
22
|
-
|
|
23
|
-
{% assign cntpngs = job.out.outdir | glob: "count", "*.png" %}
|
|
24
|
-
{{ table_of_images(cntpngs) }}
|
|
25
|
-
|
|
26
|
-
<h{{h}}>Clonality</h{{h}}>
|
|
27
|
-
|
|
28
|
-
<h{{h+1}}>Top clones</h{{h+1}}>
|
|
29
|
-
|
|
30
|
-
{% assign tcpngs = job.out.outdir | glob: "top_clones", "*.png" %}
|
|
31
|
-
{{ table_of_images(tcpngs) }}
|
|
32
|
-
|
|
33
|
-
<h{{h+1}}>Rare clones</h{{h+1}}>
|
|
34
|
-
|
|
35
|
-
{% assign rcpngs = job.out.outdir | glob: "rare_clones", "*.png" %}
|
|
36
|
-
{{ table_of_images(rcpngs) }}
|
|
37
|
-
|
|
38
|
-
<h{{h+1}}>Clonal space homeostasis</h{{h+1}}>
|
|
39
|
-
|
|
40
|
-
<p>The proportion of the repertoire occupied by the clones of a given size</p>
|
|
41
|
-
|
|
42
|
-
{% assign hcpngs = job.out.outdir | glob: "homeo_clones", "*.png" %}
|
|
43
|
-
{{ table_of_images(hcpngs) }}
|
|
44
|
-
|
|
45
|
-
<h{{h}}>Repertoire overlaps</h{{h}}>
|
|
46
|
-
|
|
47
|
-
{% if job.index == 0 %}
|
|
48
|
-
<Accordion>
|
|
49
|
-
<AccordionItem title="Overlapping methods">
|
|
50
|
-
<p>
|
|
51
|
-
Repertoire overlap is the most common approach to measure repertoire similarity.
|
|
52
|
-
Immunarch provides several indices:
|
|
53
|
-
</p>
|
|
54
|
-
<p>
|
|
55
|
-
- number of public clonotypes (.method = "public") - a classic measure of overlap similarity.
|
|
56
|
-
</p>
|
|
57
|
-
<p>
|
|
58
|
-
- overlap coefficient (.method = "overlap") - a normalised measure of overlap
|
|
59
|
-
similarity. It is defined as the size of the intersection divided by the smaller of the size of the two sets.
|
|
60
|
-
</p>
|
|
61
|
-
<p>
|
|
62
|
-
- Jaccard index (.method = "jaccard") - it measures similarity between finite
|
|
63
|
-
sample sets, and is defined as the size of the intersection divided by the size of the union of the sample sets.
|
|
64
|
-
</p>
|
|
65
|
-
<p>
|
|
66
|
-
- Tversky index (.method = "tversky") - an asymmetric similarity measure on sets
|
|
67
|
-
that compares a variant to a prototype. If using default arguments, it’s similar to Dice’s coefficient.
|
|
68
|
-
</p>
|
|
69
|
-
<p>
|
|
70
|
-
- cosine similarity (.method = "cosine") - a measure of similarity between two non-zero vectors
|
|
71
|
-
</p>
|
|
72
|
-
<p>
|
|
73
|
-
- Morisita’s overlap index (.method = "morisita") - a statistical measure of dispersion of individuals in a population.
|
|
74
|
-
It is used to compare overlap among samples.
|
|
75
|
-
</p>
|
|
76
|
-
<p>
|
|
77
|
-
- incremental overlap - overlaps of the N most abundant clonotypes with incrementally growing N
|
|
78
|
-
(.method = "inc+METHOD", e.g., "inc+public" or "inc+morisita").
|
|
79
|
-
</p>
|
|
80
|
-
</AccordionItem>
|
|
81
|
-
</Accordion>
|
|
82
|
-
{% endif %}
|
|
83
|
-
|
|
84
|
-
{% for ovdir in job.out.outdir | glob: "overlap", "*" | sort %}
|
|
85
|
-
{% set ovname = ovdir | basename %}
|
|
86
|
-
<h{{h+1}}>{{ovname}}</h{{h+1}}>
|
|
87
|
-
{% assign ovpngs = ovdir | glob: "*.png" | sort %}
|
|
88
|
-
{{ table_of_images(ovpngs) }}
|
|
89
|
-
{% endfor %}
|
|
90
|
-
|
|
91
|
-
<h{{h}}>Gene usage</h{{h}}>
|
|
92
|
-
{% for gu_dir in job.out.outdir | glob: "gene_usage", "*" | sort %}
|
|
93
|
-
{% set gu_name = gu_dir | basename %}
|
|
94
|
-
{% if gu_name != "DEFAULT" %}
|
|
95
|
-
<h{{h+1}}>{{gu_name}}</h{{h+1}}>
|
|
96
|
-
{% endif %}
|
|
97
|
-
{% assign gupngs = gu_dir | glob: "*.png" | sort %}
|
|
98
|
-
{{ table_of_images(gupngs) }}
|
|
99
|
-
{% endfor %}
|
|
100
|
-
|
|
101
|
-
<h{{h}}>Spectratyping</h{{h}}>
|
|
102
|
-
{% for spect_sam_dir in job.out.outdir | glob: "spectratyping", "*" | sort %}
|
|
103
|
-
<h{{h+1}}>{{ spect_sam_dir | basename }}</h{{h+1}}>
|
|
104
|
-
{% assign spectpngs = spect_sam_dir | glob: "*.png" | sort %}
|
|
105
|
-
{{ table_of_images(spectpngs) }}
|
|
106
|
-
{% endfor %}
|
|
107
|
-
|
|
108
|
-
<h{{h}}>Diversity estimation</h{{h}}>
|
|
109
|
-
{% assign div_met_dirs = job.out.outdir | glob: "diversity", "*" | sort %}
|
|
110
|
-
{% for dm_dir in div_met_dirs %}
|
|
111
|
-
<h{{h+1}}>{{dm_dir | basename}}</h{{h+1}}>
|
|
112
|
-
{% if dm_dir | glob: "diversity.test.*.txt" %}
|
|
113
|
-
{% assign dm_test_file = dm_dir | glob0: "diversity.test.*.txt" %}
|
|
114
|
-
{% assign dm_test_method = dm_test_file | stem | replace: "diversity.test.", "" %}
|
|
115
|
-
<Tabs>
|
|
116
|
-
<Tab label="Plot" />
|
|
117
|
-
<Tab label="Test: {{dm_test_method}}" />
|
|
118
|
-
<div slot="content">
|
|
119
|
-
<TabContent>
|
|
120
|
-
<Image src={{ dm_dir | joinpaths: "diversity.png" | quote }} />
|
|
121
|
-
</TabContent>
|
|
122
|
-
<TabContent>
|
|
123
|
-
<DataTable src={{ dm_test_file | quote }} data={ {{ dm_test_file | datatable: sep="\t" }} } />
|
|
124
|
-
</TabContent>
|
|
125
|
-
</div>
|
|
126
|
-
</Tabs>
|
|
127
|
-
{% else %}
|
|
128
|
-
<Image src={{ dm_dir | joinpaths: "diversity.png" | quote }} />
|
|
129
|
-
{% endif %}
|
|
130
|
-
{% endfor %}
|
|
131
|
-
|
|
132
|
-
{% if job.out.outdir | glob: "rarefraction", "*" %}
|
|
133
|
-
<h{{h}}>Rarefaction analysis</h{{h}}>
|
|
134
|
-
{% for rfdir in job.out.outdir | glob: "rarefraction", "*" | sort %}
|
|
135
|
-
{% assign rfname = rfdir | basename %}
|
|
136
|
-
{% if rfname != "DEFAULT" %}
|
|
137
|
-
<h{{h+1}}>{{rfname}}</h{{h+1}}>
|
|
138
|
-
{% endif %}
|
|
139
|
-
{% assign rfpngs = rfdir | glob: "*.png" | sort %}
|
|
140
|
-
{{ table_of_images(rfpngs) }}
|
|
141
|
-
{% endfor %}
|
|
142
|
-
{% endif %}
|
|
143
|
-
|
|
144
|
-
{% if job.out.outdir | glob: "tracking", "*.png" %}
|
|
145
|
-
<h{{h}}>Tracking of clonotypes</h{{h}}>
|
|
146
|
-
{% assign trackpngs = job.out.outdir | glob: "tracking", "*.png" | sort %}
|
|
147
|
-
{{ table_of_images(trackpngs) }}
|
|
148
|
-
{% endif %}
|
|
149
|
-
|
|
150
|
-
<h{{h}}>Kmer and sequence motif analysis</h{{h}}>
|
|
151
|
-
{% for kmerdir in job.out.outdir | glob: "kmer", "*" | sort %}
|
|
152
|
-
{% assign kmercase = kmerdir | basename %}
|
|
153
|
-
{% if kmercase != "DEFAULT" %}
|
|
154
|
-
<h{{h+1}}>{{kmercase}}</h{{h+1}}>
|
|
155
|
-
{% endif %}
|
|
156
|
-
{% assign kmerpngs = kmerdir | glob: "*.png" | sort %}
|
|
157
|
-
{{ table_of_images(kmerpngs) }}
|
|
158
|
-
{% endfor %}
|
|
159
|
-
|
|
8
|
+
{{ job | render_job: h=h }}
|
|
160
9
|
{%- endmacro -%}
|
|
161
10
|
|
|
162
11
|
|
|
163
12
|
{%- macro head_job(job) -%}
|
|
164
|
-
<h1>{{job.out.outdir | stem | replace: ".immunarch", ""}}</h1>
|
|
13
|
+
<h1>{{job.out.outdir | stem | replace: ".immunarch", ""}}</h1>
|
|
165
14
|
{%- endmacro -%}
|
|
166
15
|
|
|
167
16
|
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -1,57 +1,15 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "$libs";
|
|
3
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
4
4
|
import { Tabs, Tab, TabContent } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
{%- macro report_job(job, h=1) -%}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
{% for casedir in job.out.outdir | glob: "ClusterSizeDistribution", "*" %}
|
|
11
|
-
{% set casename = casedir | basename %}
|
|
12
|
-
{% if casename != "DEFAULT" %}
|
|
13
|
-
<h{{h+1}}>{{casename}}</h{{h+1}}>
|
|
14
|
-
{% endif %}
|
|
15
|
-
<Image src={{casedir | joinpaths: "cluster_size_distribution.png" | quote}} />
|
|
16
|
-
{% endfor %}
|
|
17
|
-
|
|
18
|
-
<h{{h}}>Shared TCR clusters among samples</h{{h}}>
|
|
19
|
-
|
|
20
|
-
{% for casedir in job.out.outdir | glob: "SharedClusters", "*" %}
|
|
21
|
-
{% set casename = casedir | basename %}
|
|
22
|
-
{% if casename != "DEFAULT" %}
|
|
23
|
-
<h{{h+1}}>{{casename}}</h{{h+1}}>
|
|
24
|
-
{% endif %}
|
|
25
|
-
<Image src={{casedir | joinpaths: "shared_clusters.png" | quote}} />
|
|
26
|
-
{% endfor %}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<h{{h}}>Sample diversity using TCR clusters</h{{h}}>
|
|
30
|
-
|
|
31
|
-
{% for casedir in job.out.outdir | glob: "SampleDiversity", "*" %}
|
|
32
|
-
{% set casename = casedir | basename %}
|
|
33
|
-
{% if casename != "DEFAULT" %}
|
|
34
|
-
<h{{h+1}}>{{casename}}</h{{h+1}}>
|
|
35
|
-
{% endif %}
|
|
36
|
-
|
|
37
|
-
<Tabs>
|
|
38
|
-
<Tab label="Plot" />
|
|
39
|
-
<Tab label="Table" />
|
|
40
|
-
<svelte:fragment slot="content">
|
|
41
|
-
<TabContent>
|
|
42
|
-
<Image src={{casedir | joinpaths: "diversity.png" | quote}} />
|
|
43
|
-
</TabContent>
|
|
44
|
-
<TabContent>
|
|
45
|
-
<DataTable src={{casedir | joinpaths: "diversity.txt" | quote}}
|
|
46
|
-
data={ {{ casedir | joinpaths: "diversity.txt" | datatable: sep="\t", index_col=0 }} } />
|
|
47
|
-
</TabContent>
|
|
48
|
-
</svelte:fragment>
|
|
49
|
-
</Tabs>
|
|
50
|
-
{% endfor %}
|
|
8
|
+
{{ job | render_job: h=h }}
|
|
51
9
|
{%- endmacro -%}
|
|
52
10
|
|
|
53
11
|
{%- macro head_job(job) -%}
|
|
54
|
-
<h1>{{job.in.immfile | stem | replace: ".immunarch", ""}}</h1>
|
|
12
|
+
<h1>{{job.in.immfile | stem | replace: ".immunarch", ""}}</h1>
|
|
55
13
|
{%- endmacro -%}
|
|
56
14
|
|
|
57
15
|
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -1,39 +1,22 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "$libs";
|
|
4
|
-
import {
|
|
3
|
+
import { Image, DataTable, Descr } from "$libs";
|
|
4
|
+
import { UnorderedList, ListItem } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<
|
|
7
|
+
<Descr>
|
|
8
|
+
<h1>Introduction</h1>
|
|
8
9
|
<p><a href="https://github.com/jcao89757/TESSA" target="_blank">Tessa</a> is a Bayesian model to integrate T cell receptor (TCR) sequence profiling with transcriptomes of T cells. Enabled by the recently developed single cell sequencing techniques, which provide both TCR sequences and RNA sequences of each T cell concurrently, Tessa maps the functional landscape of the TCR repertoire, and generates insights into understanding human immune response to diseases. As the first part of tessa, BriseisEncoder is employed prior to the Bayesian algorithm to capture the TCR sequence features and create numerical embeddings. We showed that the reconstructed Atchley Factor matrices and CDR3 sequences, generated through the numerical embeddings, are highly similar to their original counterparts. The CDR3 peptide sequences are constructed via a RandomForest model applied on the reconstructed Atchley Factor matrices.</p>
|
|
9
|
-
|
|
10
|
+
<p></p>
|
|
10
11
|
<p>For more information, please refer to the following papers:</p>
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
</
|
|
15
|
-
</
|
|
16
|
-
<p> </p>
|
|
12
|
+
<UnorderedList>
|
|
13
|
+
<ListItem><a href="https://www.nature.com/articles/s41592-020-01020-3" target="_blank">Mapping the Functional Landscape of TCR Repertoire</a>, Zhang, Z., Xiong, D., Wang, X. et al. 2021.</ListItem>
|
|
14
|
+
<ListItem><a href="https://www.nature.com/articles/s42256-021-00383-2" target="_blank">Deep learning-based prediction of the T cell receptor–antigen binding specificity</a>, Lu, T., Zhang, Z., Zhu, J. et al. 2021.</ListItem>
|
|
15
|
+
</UnorderedList>
|
|
16
|
+
</Descr>
|
|
17
17
|
|
|
18
18
|
{%- macro report_job(job, h=1) -%}
|
|
19
|
-
{{
|
|
20
|
-
[
|
|
21
|
-
joinpaths(job.outdir, "result", "Cluster_size_dist.png"),
|
|
22
|
-
joinpaths(job.outdir, "result", "clone_size.png"),
|
|
23
|
-
joinpaths(job.outdir, "result", "exp_TCR_pair_plot.png"),
|
|
24
|
-
joinpaths(job.outdir, "result", "TCR_dist_density.png"),
|
|
25
|
-
joinpaths(job.outdir, "result", "TCR_explore.png"),
|
|
26
|
-
joinpaths(job.outdir, "result", "TCR_explore_clusters.png"),
|
|
27
|
-
],
|
|
28
|
-
[
|
|
29
|
-
"TESSA cluster size distribution",
|
|
30
|
-
"Cluster center size vs. non-center cluster size",
|
|
31
|
-
"Expression-TCR distance plot",
|
|
32
|
-
"Density of TCR distances",
|
|
33
|
-
"Exploratory plot at the TCR level",
|
|
34
|
-
"TESSA clusters",
|
|
35
|
-
],
|
|
36
|
-
) }}
|
|
19
|
+
{{ job | render_job: h=h }}
|
|
37
20
|
{%- endmacro -%}
|
|
38
21
|
|
|
39
22
|
{%- macro head_job(job) -%}
|
biopipen/reports/utils/misc.liq
CHANGED
|
@@ -25,7 +25,14 @@ import { Image } from "$libs";
|
|
|
25
25
|
{% for batch_srcs in srcs | batch: col, "" %}
|
|
26
26
|
{% set outer_loop = loop %}
|
|
27
27
|
<tr>
|
|
28
|
-
{% for
|
|
28
|
+
{% for srcinfo in batch_srcs %}
|
|
29
|
+
{% if srcinfo | isinstance: str %}
|
|
30
|
+
{% set src = srcinfo %}
|
|
31
|
+
{% set download = None %}
|
|
32
|
+
{% else %}
|
|
33
|
+
{% set src = srcinfo['src'] %}
|
|
34
|
+
{% set download = srcinfo.get('download', None) %}
|
|
35
|
+
{% endif %}
|
|
29
36
|
{% set i = col * outer_loop.index0 + loop.index0 %}
|
|
30
37
|
{% if i >= len(srcs) %}
|
|
31
38
|
<td style="width: {{table_width / col}}%"></td>
|
|
@@ -33,20 +40,28 @@ import { Image } from "$libs";
|
|
|
33
40
|
<td style="width: {{table_width / col}}%; vertical-align:top;">
|
|
34
41
|
{% if caps is none %}
|
|
35
42
|
<div
|
|
36
|
-
style="padding-left: 28px; font-weight: bold; padding-top:
|
|
43
|
+
style="padding-left: 28px; font-weight: bold; padding-top: 16px;">
|
|
37
44
|
{{ src | stem }}
|
|
38
45
|
</div>
|
|
39
46
|
{% elif caps is false %}
|
|
40
47
|
{% else %}
|
|
41
48
|
<div
|
|
42
|
-
style="padding-left: 28px; font-weight: bold; padding-top:
|
|
49
|
+
style="padding-left: 28px; font-weight: bold; padding-top: 16px;">
|
|
43
50
|
{{ caps[i] }}
|
|
44
51
|
</div>
|
|
45
52
|
{% endif %}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
{% if download %}
|
|
54
|
+
<Image
|
|
55
|
+
style="max-width: 90%"
|
|
56
|
+
src={{src | quote}}
|
|
57
|
+
download={ {{download | json}} }
|
|
58
|
+
/>
|
|
59
|
+
{% else %}
|
|
60
|
+
<Image
|
|
61
|
+
style="max-width: 90%"
|
|
62
|
+
src={{src | quote}}
|
|
63
|
+
/>
|
|
64
|
+
{% endif %}
|
|
50
65
|
</td>
|
|
51
66
|
{% endif %}
|
|
52
67
|
{% endfor %}
|