biopipen 0.7.0__py3-none-any.whl → 0.8.0__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.
Potentially problematic release.
This version of biopipen might be problematic. Click here for more details.
- biopipen/__init__.py +1 -1
- biopipen/core/config.py +0 -5
- biopipen/core/config.toml +4 -4
- biopipen/core/defaults.py +3 -3
- biopipen/core/filters.py +1 -0
- biopipen/core/proc.py +1 -3
- biopipen/core/testing.py +1 -2
- biopipen/ns/bam.py +10 -14
- biopipen/ns/bcftools.py +37 -7
- biopipen/ns/bed.py +9 -16
- biopipen/ns/cnv.py +8 -11
- biopipen/ns/cnvkit.py +32 -59
- biopipen/ns/cnvkit_pipeline.py +266 -310
- biopipen/ns/csv.py +0 -2
- biopipen/ns/gene.py +0 -1
- biopipen/ns/gsea.py +4 -10
- biopipen/ns/misc.py +0 -5
- biopipen/ns/plot.py +2 -4
- biopipen/ns/rnaseq.py +0 -1
- biopipen/ns/scrna.py +78 -120
- biopipen/ns/scrna_metabolic_landscape.py +306 -348
- biopipen/ns/tcgamaf.py +52 -0
- biopipen/ns/tcr.py +5 -15
- biopipen/ns/vcf.py +52 -34
- biopipen/ns/web.py +8 -19
- biopipen/reports/bam/CNAClinic.svelte +1 -1
- biopipen/reports/bam/CNVpytor.svelte +2 -2
- biopipen/reports/bam/ControlFREEC.svelte +1 -1
- biopipen/reports/cnv/AneuploidyScore.svelte +2 -2
- biopipen/reports/cnv/AneuploidyScoreSummary.svelte +1 -1
- biopipen/reports/cnvkit/CNVkitDiagram.svelte +1 -1
- biopipen/reports/cnvkit/CNVkitHeatmap.svelte +1 -1
- biopipen/reports/cnvkit/CNVkitScatter.svelte +1 -1
- biopipen/reports/gsea/FGSEA.svelte +1 -1
- biopipen/reports/gsea/GSEA.svelte +2 -2
- biopipen/reports/scrna/CellsDistribution.svelte +1 -1
- biopipen/reports/scrna/DimPlots.svelte +1 -1
- biopipen/reports/scrna/GeneExpressionInvistigation.svelte +1 -1
- biopipen/reports/scrna/MarkersFinder.svelte +42 -39
- biopipen/reports/scrna/ScFGSEA.svelte +3 -3
- biopipen/reports/scrna/SeuratClusterStats.svelte +3 -3
- biopipen/reports/scrna/SeuratPreparing.svelte +2 -2
- biopipen/reports/scrna_metabolic_landscape/MetabolicFeaturesIntraSubsets.svelte +2 -2
- biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayActivity.svelte +1 -1
- biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.svelte +1 -1
- biopipen/reports/tcr/CloneResidency.svelte +4 -4
- biopipen/reports/tcr/Immunarch.svelte +2 -2
- biopipen/reports/tcr/SampleDiversity.svelte +2 -2
- biopipen/reports/tcr/TCRClusteringStats.svelte +3 -3
- biopipen/reports/tcr/VJUsage.svelte +1 -1
- biopipen/reports/utils/gsea.liq +1 -1
- biopipen/reports/utils/misc.liq +1 -1
- biopipen/reports/vcf/TruvariBenchSummary.svelte +1 -1
- biopipen/reports/vcf/TruvariConsistency.svelte +3 -3
- biopipen/scripts/bcftools/BcftoolsSort.py +19 -0
- biopipen/scripts/scrna/MarkersFinder.R +73 -35
- biopipen/scripts/tcgamaf/Maf2Vcf.py +22 -0
- biopipen/scripts/tcgamaf/MafAddChr.py +14 -0
- biopipen/scripts/tcgamaf/maf2vcf.pl +427 -0
- biopipen/scripts/vcf/VcfAnno.py +26 -0
- biopipen/scripts/vcf/VcfFix_utils.py +3 -2
- {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/METADATA +7 -8
- {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/RECORD +65 -59
- {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/WHEEL +1 -1
- {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/entry_points.txt +2 -1
biopipen/ns/tcgamaf.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Processes for TCGA MAF files."""
|
|
2
|
+
from ..core.proc import Proc
|
|
3
|
+
from ..core.config import config
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Maf2Vcf(Proc):
|
|
7
|
+
"""Converts a MAF file to a VCF file.
|
|
8
|
+
|
|
9
|
+
This is a wrapper around the `maf2vcf` script from the `maf2vcf` package.
|
|
10
|
+
|
|
11
|
+
Input:
|
|
12
|
+
infile: The input MAF file
|
|
13
|
+
|
|
14
|
+
Output:
|
|
15
|
+
outfile: Output multi-sample VCF containing all TN-pairs
|
|
16
|
+
outdir: Path to output directory where VCFs will be stored,
|
|
17
|
+
one per TN-pair
|
|
18
|
+
|
|
19
|
+
Envs:
|
|
20
|
+
perl: Path to perl to run `maf2vcf.pl`
|
|
21
|
+
samtools: Path to samtools to be used in `maf2vcf.pl`
|
|
22
|
+
args: Other arguments to pass to the script
|
|
23
|
+
"""
|
|
24
|
+
input = "infile:file"
|
|
25
|
+
output = [
|
|
26
|
+
'outfile:file:{{in.infile | stem}}.vcfs/'
|
|
27
|
+
'{{in.infile | stem}}.multisample.vcf',
|
|
28
|
+
'outdir:dir:{{in.infile | stem}}.vcfs'
|
|
29
|
+
]
|
|
30
|
+
lang = config.lang.python
|
|
31
|
+
envs = {
|
|
32
|
+
"perl": config.lang.perl,
|
|
33
|
+
"samtools": config.exe.samtools,
|
|
34
|
+
"ref": config.ref.reffa,
|
|
35
|
+
"args": {"per-tn-vcfs": True},
|
|
36
|
+
}
|
|
37
|
+
script = "file://../scripts/tcgamaf/Maf2Vcf.py"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class MafAddChr(Proc):
|
|
41
|
+
"""Adds the `chr` prefix to chromosome names in a MAF file if not present.
|
|
42
|
+
|
|
43
|
+
Input:
|
|
44
|
+
infile: The input MAF file
|
|
45
|
+
|
|
46
|
+
Output:
|
|
47
|
+
outfile: The output MAF file
|
|
48
|
+
"""
|
|
49
|
+
input = "infile:file"
|
|
50
|
+
output = "outfile:file:{{in.infile | stem}}.maf"
|
|
51
|
+
lang = config.lang.python
|
|
52
|
+
script = "file://../scripts/tcgamaf/MafAddChr.py"
|
biopipen/ns/tcr.py
CHANGED
|
@@ -116,7 +116,6 @@ class ImmunarchFilter(Proc):
|
|
|
116
116
|
Placeholders like `{Sample}_` can be used to from the meta data
|
|
117
117
|
metacols: The extra columns to be exported to the group file.
|
|
118
118
|
"""
|
|
119
|
-
|
|
120
119
|
input = "immdata:file, filterfile:file"
|
|
121
120
|
output = """
|
|
122
121
|
outfile:file:{{in.immdata | stem}}.RDS,
|
|
@@ -209,7 +208,6 @@ class Immunarch(Proc):
|
|
|
209
208
|
If you do want multiple parameter sets for the same K, You can use
|
|
210
209
|
a float number as the K. For example: `5.1` for K `5`.
|
|
211
210
|
"""
|
|
212
|
-
|
|
213
211
|
input = "immdata:file"
|
|
214
212
|
output = "outdir:dir:{{in.immdata | stem}}.immunarch"
|
|
215
213
|
lang = config.lang.rscript
|
|
@@ -341,7 +339,6 @@ class CloneResidency(Proc):
|
|
|
341
339
|
sample_groups: How the samples aligned in the report.
|
|
342
340
|
Useful for cohort with large number of samples.
|
|
343
341
|
"""
|
|
344
|
-
|
|
345
342
|
input = "immdata:file"
|
|
346
343
|
output = "outdir:dir:{{in.immdata | stem}}.cloneov"
|
|
347
344
|
lang = config.lang.rscript
|
|
@@ -366,7 +363,6 @@ class Immunarch2VDJtools(Proc):
|
|
|
366
363
|
outdir: The output directory containing the vdjtools input for each
|
|
367
364
|
sample
|
|
368
365
|
"""
|
|
369
|
-
|
|
370
366
|
input = "immdata:file"
|
|
371
367
|
output = "outdir:dir:{{in.immdata | stem}}.vdjtools_input"
|
|
372
368
|
lang = config.lang.rscript
|
|
@@ -451,7 +447,6 @@ class Attach2Seurat(Proc):
|
|
|
451
447
|
`{Sample}_` to use the meta data from the immunarch object
|
|
452
448
|
metacols: Which meta columns to attach
|
|
453
449
|
"""
|
|
454
|
-
|
|
455
450
|
input = "immfile:file, sobjfile:file"
|
|
456
451
|
output = "outfile:file:{{in.sobjfile | basename}}"
|
|
457
452
|
lang = config.lang.rscript
|
|
@@ -505,12 +500,10 @@ class TCRClustering(Proc):
|
|
|
505
500
|
For ClusTCR, they will be passed to `clustcr.Clustering(...)`
|
|
506
501
|
|
|
507
502
|
Requires:
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
{{ proc.envs.python }} -c "import clustcr"
|
|
503
|
+
clusTCR:
|
|
504
|
+
- if: {{ proc.envs.tool == 'ClusTCR' }}
|
|
505
|
+
- check: {{ proc.envs.python }} -c "import clustcr"
|
|
512
506
|
"""
|
|
513
|
-
|
|
514
507
|
input = "immfile:file"
|
|
515
508
|
output = [
|
|
516
509
|
"immfile:file:{{in.immfile | basename}}",
|
|
@@ -549,11 +542,9 @@ class TCRClusteringStats(Proc):
|
|
|
549
542
|
the diversities by groups
|
|
550
543
|
|
|
551
544
|
Requires:
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
{{proc.lang}} -e "library(immunarch)"
|
|
545
|
+
r-immunarch:
|
|
546
|
+
- check: {{proc.lang}} -e "library(immunarch)"
|
|
555
547
|
"""
|
|
556
|
-
|
|
557
548
|
input = "immfile:file"
|
|
558
549
|
output = "outdir:dir:{{in.immfile | stem}}.tcrclusters_stats"
|
|
559
550
|
lang = config.lang.rscript
|
|
@@ -602,7 +593,6 @@ class CloneSizeQQPlot(Proc):
|
|
|
602
593
|
on: The key of the metadata to use for the QQ plot. One/Both of
|
|
603
594
|
`["Clones", "Proportion"]`
|
|
604
595
|
"""
|
|
605
|
-
|
|
606
596
|
input = "immdata:file"
|
|
607
597
|
output = "outdir:dir:{{in.immdata | stem}}.qqplots"
|
|
608
598
|
lang = config.lang.rscript
|
biopipen/ns/vcf.py
CHANGED
|
@@ -18,7 +18,6 @@ class VcfLiftOver(Proc):
|
|
|
18
18
|
tmpdir: Directory for temporary storage of working files
|
|
19
19
|
args: Other CLI arguments for `gatk LiftoverVcf`
|
|
20
20
|
"""
|
|
21
|
-
|
|
22
21
|
input = "invcf:file"
|
|
23
22
|
output = "outvcf:file:{{in.invcf | basename}}"
|
|
24
23
|
envs = {
|
|
@@ -61,7 +60,6 @@ class VcfFilter(Proc):
|
|
|
61
60
|
helper: Some helper code for the filters
|
|
62
61
|
keep: Keep the variants not passing the filters?
|
|
63
62
|
""" # noqa: E501
|
|
64
|
-
|
|
65
63
|
input = "invcf:file"
|
|
66
64
|
output = "outfile:file:{{in.invcf | basename}}"
|
|
67
65
|
lang = config.lang.python
|
|
@@ -87,7 +85,6 @@ class VcfIndex(Proc):
|
|
|
87
85
|
Envs:
|
|
88
86
|
tabix: Path to tabix
|
|
89
87
|
"""
|
|
90
|
-
|
|
91
88
|
input = "infile:file"
|
|
92
89
|
output = """
|
|
93
90
|
{%- if in.infile.endswith(".gz") %}
|
|
@@ -120,11 +117,9 @@ class Vcf2Bed(Proc):
|
|
|
120
117
|
outbase: The coordinate base of the base file
|
|
121
118
|
|
|
122
119
|
Requires:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
{{proc.lang}} -c "import cyvcf2"
|
|
120
|
+
cyvcf2:
|
|
121
|
+
- check: {{proc.lang}} -c "import cyvcf2"
|
|
126
122
|
"""
|
|
127
|
-
|
|
128
123
|
input = "infile:file"
|
|
129
124
|
output = "outfile:file:{{in.infile | stem0}}.bed"
|
|
130
125
|
lang = config.lang.python
|
|
@@ -147,10 +142,10 @@ class VcfDownSample(Proc):
|
|
|
147
142
|
If `n > 1`, it is the number.
|
|
148
143
|
If `n <= 1`, it is the fraction.
|
|
149
144
|
"""
|
|
150
|
-
|
|
151
145
|
input = "infile:file"
|
|
152
146
|
output = "outfile:file:{{in.infile | basename}}"
|
|
153
147
|
envs = {"n": 0}
|
|
148
|
+
lang = config.lang.bash
|
|
154
149
|
script = "file://../scripts/vcf/VcfDownSample.sh"
|
|
155
150
|
|
|
156
151
|
|
|
@@ -290,14 +285,7 @@ class VcfFix(Proc):
|
|
|
290
285
|
helpers: raw code the provide some helpers for the fixes
|
|
291
286
|
The code will automatically dedented if given as a string. A list
|
|
292
287
|
of strings is also supported and will be joined with newlines.
|
|
293
|
-
|
|
294
|
-
Requires:
|
|
295
|
-
- name: biopipen
|
|
296
|
-
check: |
|
|
297
|
-
{{proc.lang}} -c "import biopipen"
|
|
298
|
-
|
|
299
288
|
"""
|
|
300
|
-
|
|
301
289
|
input = "infile:file"
|
|
302
290
|
output = "outfile:file:{{in.infile | basename}}"
|
|
303
291
|
lang = config.lang.python
|
|
@@ -305,6 +293,44 @@ class VcfFix(Proc):
|
|
|
305
293
|
script = "file://../scripts/vcf/VcfFix.py"
|
|
306
294
|
|
|
307
295
|
|
|
296
|
+
class VcfAnno(Proc):
|
|
297
|
+
"""Annotate a VCF file using vcfanno
|
|
298
|
+
|
|
299
|
+
https://github.com/brentp/vcfanno
|
|
300
|
+
|
|
301
|
+
Input:
|
|
302
|
+
infile: The input VCF file
|
|
303
|
+
conffile: The configuration file for vcfanno or configuration dict
|
|
304
|
+
itself
|
|
305
|
+
|
|
306
|
+
Output:
|
|
307
|
+
outfile: The output VCF file
|
|
308
|
+
|
|
309
|
+
Envs:
|
|
310
|
+
vcfanno: Path to vcfanno
|
|
311
|
+
ncores: Number of cores to use
|
|
312
|
+
conffile: configuration file for vcfanno or configuration dict itself
|
|
313
|
+
This is ignored when `conffile` is given as input
|
|
314
|
+
args: Additional arguments to pass to vcfanno
|
|
315
|
+
|
|
316
|
+
Requires:
|
|
317
|
+
- name: vcfanno
|
|
318
|
+
check: |
|
|
319
|
+
{{proc.envs.vcfanno}} --help
|
|
320
|
+
"""
|
|
321
|
+
|
|
322
|
+
input = "infile:file, conffile"
|
|
323
|
+
output = "outfile:file:{{in.infile | stem0}}.{{envs.tool}}.vcf"
|
|
324
|
+
lang = config.lang.python
|
|
325
|
+
envs = {
|
|
326
|
+
"vcfanno": config.exe.vcfanno,
|
|
327
|
+
"ncores": config.misc.ncores,
|
|
328
|
+
"conffile": {},
|
|
329
|
+
"args": {"permissive-overlap": True},
|
|
330
|
+
}
|
|
331
|
+
script = "file://../scripts/vcf/VcfAnno.py"
|
|
332
|
+
|
|
333
|
+
|
|
308
334
|
class TruvariBench(Proc):
|
|
309
335
|
"""Run `truvari bench` to compare a VCF with CNV calls and
|
|
310
336
|
base CNV standards
|
|
@@ -323,11 +349,9 @@ class TruvariBench(Proc):
|
|
|
323
349
|
`<other>`: Ohter `truvari bench` arguments
|
|
324
350
|
|
|
325
351
|
Requires:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
{{proc.envs.truvari}} version
|
|
352
|
+
truvari:
|
|
353
|
+
- check: {{proc.envs.truvari}} version
|
|
329
354
|
"""
|
|
330
|
-
|
|
331
355
|
input = "compvcf:file, basevcf:file"
|
|
332
356
|
output = "outdir:dir:{{in.compvcf | stem0 | append: '.truvari_bench'}}"
|
|
333
357
|
envs = {
|
|
@@ -340,6 +364,7 @@ class TruvariBench(Proc):
|
|
|
340
364
|
"typeignore": False,
|
|
341
365
|
"multimatch": False,
|
|
342
366
|
}
|
|
367
|
+
lang = config.lang.bash
|
|
343
368
|
script = "file://../scripts/vcf/TruvariBench.sh"
|
|
344
369
|
|
|
345
370
|
|
|
@@ -363,21 +388,15 @@ class TruvariBenchSummary(Proc):
|
|
|
363
388
|
devpars: The parameters to use for the plots.
|
|
364
389
|
|
|
365
390
|
Requires:
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
{{proc.lang}} -e "library(
|
|
372
|
-
-
|
|
373
|
-
|
|
374
|
-
{{proc.lang}} -e "library(dplyr)"
|
|
375
|
-
- name: r-ggplot2
|
|
376
|
-
check: |
|
|
377
|
-
{{proc.lang}} -e "library(ggplot2)"
|
|
378
|
-
|
|
391
|
+
r-ggprism:
|
|
392
|
+
- check: {{proc.lang}} -e "library(ggprism)"
|
|
393
|
+
r-rjson:
|
|
394
|
+
- check: {{proc.lang}} -e "library(rjson)"
|
|
395
|
+
r-dplyr:
|
|
396
|
+
- check: {{proc.lang}} -e "library(dplyr)"
|
|
397
|
+
r-ggplot2:
|
|
398
|
+
- check: {{proc.lang}} -e "library(ggplot2)"
|
|
379
399
|
"""
|
|
380
|
-
|
|
381
400
|
input = "indirs:files"
|
|
382
401
|
input_data = lambda ch: [list(ch.iloc[:, 0])]
|
|
383
402
|
output = "outdir:dir:truvari_bench.summary"
|
|
@@ -411,7 +430,6 @@ class TruvariConsistency(Proc):
|
|
|
411
430
|
annotations will be added as row annotations.
|
|
412
431
|
Other options see also `biopipen.ns.plot.Heatmap`.
|
|
413
432
|
"""
|
|
414
|
-
|
|
415
433
|
input = "vcfs:files"
|
|
416
434
|
output = (
|
|
417
435
|
"outdir:dir:"
|
biopipen/ns/web.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"""Get data from the web"""
|
|
2
|
-
|
|
3
2
|
from ..core.proc import Proc
|
|
4
3
|
from ..core.config import config
|
|
5
4
|
|
|
@@ -22,16 +21,11 @@ class Download(Proc):
|
|
|
22
21
|
ncores: The number of cores to use
|
|
23
22
|
|
|
24
23
|
Requires:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
{{proc.envs.
|
|
29
|
-
- name: aria2c
|
|
30
|
-
message: Only required when envs.tool == "aria2c"
|
|
31
|
-
check: |
|
|
32
|
-
{{proc.envs.aria2c}} --version
|
|
24
|
+
wget: Only required when envs.tool == "wget"
|
|
25
|
+
- check: {{proc.envs.wget}} --version
|
|
26
|
+
aria2c: Only required when envs.tool == "aria2c"
|
|
27
|
+
- check: {{proc.envs.aria2c}} --version
|
|
33
28
|
"""
|
|
34
|
-
|
|
35
29
|
input = "url"
|
|
36
30
|
output = (
|
|
37
31
|
"outfile:file:"
|
|
@@ -66,16 +60,11 @@ class DownloadList(Proc):
|
|
|
66
60
|
ncores: The number of cores to use
|
|
67
61
|
|
|
68
62
|
Requires:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{{proc.envs.
|
|
73
|
-
- name: aria2c
|
|
74
|
-
message: Only required when envs.tool == "aria2c"
|
|
75
|
-
check: |
|
|
76
|
-
{{proc.envs.aria2c}} --version
|
|
63
|
+
wget: Only required when envs.tool == "wget"
|
|
64
|
+
- check: {{proc.envs.wget}} --version
|
|
65
|
+
aria2c: Only required when envs.tool == "aria2c"
|
|
66
|
+
- check: {{proc.envs.aria2c}} --version
|
|
77
67
|
"""
|
|
78
|
-
|
|
79
68
|
input = "urlfile:file"
|
|
80
69
|
output = "outdir:dir:{{in.urlfile | stem}}.downloaded"
|
|
81
70
|
lang = config.lang.python
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import table_of_images -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image } from "
|
|
4
|
-
import { Tabs, Tab, TabContent } from "
|
|
3
|
+
import { Image } from "$lib";
|
|
4
|
+
import { Tabs, Tab, TabContent } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
{% for case in envs.cases %}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
2
|
|
|
3
3
|
<script>
|
|
4
|
-
import { Image, DataTable } from "
|
|
5
|
-
import { Tabs, Tab, TabContent, Tile } from "
|
|
4
|
+
import { Image, DataTable } from "$lib";
|
|
5
|
+
import { Tabs, Tab, TabContent, Tile } from "$ccs";
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=1) -%}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
2
|
{% from "utils/gsea.liq" import gsea_report -%}
|
|
3
3
|
<script>
|
|
4
|
-
import { Image, DataTable } from "
|
|
5
|
-
import { Tile } from "
|
|
4
|
+
import { Image, DataTable } from "$lib";
|
|
5
|
+
import { Tile } from "$ccs";
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=1) -%}
|
|
@@ -1,52 +1,55 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
2
2
|
<script>
|
|
3
|
-
import { Image, DataTable } from "
|
|
4
|
-
import { Tabs, Tab, TabContent } from "
|
|
3
|
+
import { Image, DataTable } from "$lib";
|
|
4
|
+
import { Tabs, Tab, TabContent, InlineNotification } from "$ccs";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=1) -%}
|
|
9
|
-
{% for casedir in job.out.outdir | glob: "*" %}
|
|
10
|
-
{%
|
|
11
|
-
<h{{h}}>{{case}}</h{{h}}>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
9
|
+
{% for casedir in job.out.outdir | glob: "*" %}
|
|
10
|
+
{% set case = casedir | basename %}
|
|
11
|
+
<h{{h}}>{{case}}</h{{h}}>
|
|
12
|
+
|
|
13
|
+
{% if casedir | joinpaths: "error.txt" | exists %}
|
|
14
|
+
<InlineNotification
|
|
15
|
+
hideCloseButton
|
|
16
|
+
lowContrast
|
|
17
|
+
kind="warning"
|
|
18
|
+
subtitle={{ casedir | joinpaths: "error.txt" | read | quote }}
|
|
19
|
+
/>
|
|
20
|
+
{% else %}
|
|
21
|
+
<h{{h+1}}>Markers</h{{h+1}}>
|
|
22
|
+
<DataTable
|
|
23
|
+
src={{ casedir | joinpaths: "markers.txt" | quote }}
|
|
24
|
+
data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
<h{{h+1}}>Enrichment analysis</h{{h+1}}>
|
|
28
|
+
<Tabs>
|
|
29
|
+
{% for enrtxt in casedir | glob: "Enrichr-*.txt" %}
|
|
30
|
+
{% set db = enrtxt | stem | replace: "Enrichr-", "" %}
|
|
31
|
+
<Tab label="{{db}}" title="{{db}}" />
|
|
32
|
+
{% endfor %}
|
|
33
|
+
<div slot="content">
|
|
34
|
+
{% for enrtxt in casedir | glob: "Enrichr-*.txt" %}
|
|
35
|
+
{% set db = enrtxt | stem | replace: "Enrichr-", "" %}
|
|
36
|
+
<TabContent>
|
|
37
|
+
<Image src={{casedir | joinpaths: "Enrichr-" + db + ".png" | quote}} />
|
|
38
|
+
<DataTable
|
|
39
|
+
src={{ enrtxt | quote }}
|
|
40
|
+
data={ {{ enrtxt | datatable: sep="\t", nrows=100 }} }
|
|
41
|
+
/>
|
|
42
|
+
</TabContent>
|
|
43
|
+
{% endfor %}
|
|
44
|
+
</div>
|
|
45
|
+
</Tabs>
|
|
46
|
+
{% endif %}
|
|
47
|
+
{% endfor %}
|
|
40
48
|
{%- endmacro -%}
|
|
41
49
|
|
|
42
50
|
|
|
43
51
|
{%- macro head_job(job) -%}
|
|
44
|
-
{
|
|
45
|
-
{% set name = in.casefile | config: "toml" | attr: "name" %}
|
|
46
|
-
{% else %}
|
|
47
|
-
{% set name = envs | attr: "name" %}
|
|
48
|
-
{% endif %}
|
|
49
|
-
<h1>{{name | escape}}</h1>
|
|
52
|
+
<h1>{{job.in.srtobj | stem | escape}}</h1>
|
|
50
53
|
{%- endmacro -%}
|
|
51
54
|
|
|
52
55
|
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{% from "utils/gsea.liq" import fgsea_report -%}
|
|
2
2
|
{% from "utils/misc.liq" import report_jobs -%}
|
|
3
3
|
<script>
|
|
4
|
-
import { Image, DataTable } from "
|
|
4
|
+
import { Image, DataTable } from "$lib";
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
{%- macro report_job(job, h=1) -%}
|
|
8
8
|
{% for casedir in job.out.outdir | glob: "*" %}
|
|
9
9
|
{%- set case = casedir | basename -%}
|
|
10
10
|
<h{{h}}>{{case}}</h{{h}}>
|
|
11
|
-
{%- if casedir | joinpaths: "percluster" |
|
|
12
|
-
{%- for cldir in casedir |
|
|
11
|
+
{%- if casedir | joinpaths: "percluster" | isfile -%}
|
|
12
|
+
{%- for cldir in casedir | glob: "*" -%}
|
|
13
13
|
{%- if basename(cldir) == "percluster" -%}
|
|
14
14
|
{%- continue -%}
|
|
15
15
|
{%- endif -%}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
2
|
{% from_ os import path %}
|
|
3
3
|
<script>
|
|
4
|
-
import { DataTable, Image } from "
|
|
5
|
-
import { Tabs, Tab, TabContent } from "
|
|
4
|
+
import { DataTable, Image } from "$lib";
|
|
5
|
+
import { Tabs, Tab, TabContent } from "$ccs";
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=1) -%}
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
{%- endif -%}
|
|
113
113
|
|
|
114
114
|
|
|
115
|
-
{%- if job.out.outdir | joinpaths: "dimplots" |
|
|
115
|
+
{%- if job.out.outdir | joinpaths: "dimplots" | isdir -%}
|
|
116
116
|
<h{{h}}>Dimensional reduction plots</h{{h}}>
|
|
117
117
|
{%- set dpimgs = job.out.outdir | glob: "dimplots", "*.png" -%}
|
|
118
118
|
{{ table_of_images(dpimgs, caps=[]) }}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
2
|
{% from_ os import path %}
|
|
3
3
|
<script>
|
|
4
|
-
import { Image } from "
|
|
5
|
-
import { Tile } from "
|
|
4
|
+
import { Image } from "$lib";
|
|
5
|
+
import { Tile } from "$ccs";
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=1) -%}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
{% from "utils/gsea.liq" import fgsea_report, gsea_report -%}
|
|
3
3
|
|
|
4
4
|
<script>
|
|
5
|
-
import { Image, DataTable } from "
|
|
5
|
+
import { Image, DataTable } from "$lib";
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
{%- macro report_job(job, h=2) -%}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{% for dsdir in groupdir | glob: "*" %}
|
|
13
13
|
<h{{h+1}}>{{ dsdir | basename }}</h{{h+1}}>
|
|
14
14
|
{% if envs.fgsea %}
|
|
15
|
-
{% if dsdir | joinpaths: "fgsea.txt" |
|
|
15
|
+
{% if dsdir | joinpaths: "fgsea.txt" | isfile %}
|
|
16
16
|
{{ fgsea_report(dsdir, h+2, envs, envs.top) }}
|
|
17
17
|
{% else %}
|
|
18
18
|
<p>Not enough events.</p>
|