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.

Files changed (65) hide show
  1. biopipen/__init__.py +1 -1
  2. biopipen/core/config.py +0 -5
  3. biopipen/core/config.toml +4 -4
  4. biopipen/core/defaults.py +3 -3
  5. biopipen/core/filters.py +1 -0
  6. biopipen/core/proc.py +1 -3
  7. biopipen/core/testing.py +1 -2
  8. biopipen/ns/bam.py +10 -14
  9. biopipen/ns/bcftools.py +37 -7
  10. biopipen/ns/bed.py +9 -16
  11. biopipen/ns/cnv.py +8 -11
  12. biopipen/ns/cnvkit.py +32 -59
  13. biopipen/ns/cnvkit_pipeline.py +266 -310
  14. biopipen/ns/csv.py +0 -2
  15. biopipen/ns/gene.py +0 -1
  16. biopipen/ns/gsea.py +4 -10
  17. biopipen/ns/misc.py +0 -5
  18. biopipen/ns/plot.py +2 -4
  19. biopipen/ns/rnaseq.py +0 -1
  20. biopipen/ns/scrna.py +78 -120
  21. biopipen/ns/scrna_metabolic_landscape.py +306 -348
  22. biopipen/ns/tcgamaf.py +52 -0
  23. biopipen/ns/tcr.py +5 -15
  24. biopipen/ns/vcf.py +52 -34
  25. biopipen/ns/web.py +8 -19
  26. biopipen/reports/bam/CNAClinic.svelte +1 -1
  27. biopipen/reports/bam/CNVpytor.svelte +2 -2
  28. biopipen/reports/bam/ControlFREEC.svelte +1 -1
  29. biopipen/reports/cnv/AneuploidyScore.svelte +2 -2
  30. biopipen/reports/cnv/AneuploidyScoreSummary.svelte +1 -1
  31. biopipen/reports/cnvkit/CNVkitDiagram.svelte +1 -1
  32. biopipen/reports/cnvkit/CNVkitHeatmap.svelte +1 -1
  33. biopipen/reports/cnvkit/CNVkitScatter.svelte +1 -1
  34. biopipen/reports/gsea/FGSEA.svelte +1 -1
  35. biopipen/reports/gsea/GSEA.svelte +2 -2
  36. biopipen/reports/scrna/CellsDistribution.svelte +1 -1
  37. biopipen/reports/scrna/DimPlots.svelte +1 -1
  38. biopipen/reports/scrna/GeneExpressionInvistigation.svelte +1 -1
  39. biopipen/reports/scrna/MarkersFinder.svelte +42 -39
  40. biopipen/reports/scrna/ScFGSEA.svelte +3 -3
  41. biopipen/reports/scrna/SeuratClusterStats.svelte +3 -3
  42. biopipen/reports/scrna/SeuratPreparing.svelte +2 -2
  43. biopipen/reports/scrna_metabolic_landscape/MetabolicFeaturesIntraSubsets.svelte +2 -2
  44. biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayActivity.svelte +1 -1
  45. biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.svelte +1 -1
  46. biopipen/reports/tcr/CloneResidency.svelte +4 -4
  47. biopipen/reports/tcr/Immunarch.svelte +2 -2
  48. biopipen/reports/tcr/SampleDiversity.svelte +2 -2
  49. biopipen/reports/tcr/TCRClusteringStats.svelte +3 -3
  50. biopipen/reports/tcr/VJUsage.svelte +1 -1
  51. biopipen/reports/utils/gsea.liq +1 -1
  52. biopipen/reports/utils/misc.liq +1 -1
  53. biopipen/reports/vcf/TruvariBenchSummary.svelte +1 -1
  54. biopipen/reports/vcf/TruvariConsistency.svelte +3 -3
  55. biopipen/scripts/bcftools/BcftoolsSort.py +19 -0
  56. biopipen/scripts/scrna/MarkersFinder.R +73 -35
  57. biopipen/scripts/tcgamaf/Maf2Vcf.py +22 -0
  58. biopipen/scripts/tcgamaf/MafAddChr.py +14 -0
  59. biopipen/scripts/tcgamaf/maf2vcf.pl +427 -0
  60. biopipen/scripts/vcf/VcfAnno.py +26 -0
  61. biopipen/scripts/vcf/VcfFix_utils.py +3 -2
  62. {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/METADATA +7 -8
  63. {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/RECORD +65 -59
  64. {biopipen-0.7.0.dist-info → biopipen-0.8.0.dist-info}/WHEEL +1 -1
  65. {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
- - name: clusTCR
509
- if: {{ proc.envs.tool == 'ClusTCR' }}
510
- check: |
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
- - name: r-immunarch
553
- check: |
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
- - name: cyvcf2
124
- check: |
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
- - name: truvari
327
- check: |
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
- - name: r-ggprism
367
- check: |
368
- {{proc.lang}} -e "library(ggprism)"
369
- - name: r-rjson
370
- check: |
371
- {{proc.lang}} -e "library(rjson)"
372
- - name: r-dplyr
373
- check: |
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
- - name: wget
26
- message: Only required when envs.tool == "wget"
27
- check: |
28
- {{proc.envs.wget}} --version
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
- - name: wget
70
- message: Only required when envs.tool == "wget"
71
- check: |
72
- {{proc.envs.wget}} --version
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,5 +1,5 @@
1
1
  <script>
2
- import { Image } from "@@";
2
+ import { Image } from "$lib";
3
3
  </script>
4
4
 
5
5
  {% for gwpng in job.out.outdir | glob: "*/*.png" %}
@@ -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 "carbon-components-svelte";
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,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
2
  <script>
3
- import { Image, DataTable } from "@@";
3
+ import { Image, DataTable } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -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 "carbon-components-svelte";
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,5 +1,5 @@
1
1
  <script>
2
- import { Image, DataTable } from "@@";
2
+ import { Image, DataTable } from "$lib";
3
3
  </script>
4
4
 
5
5
  <h1>Total number of arm-level gains/losses</h1>
@@ -1,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
2
  <script>
3
- import { Image } from "@@";
3
+ import { Image } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -1,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
2
  <script>
3
- import { Image } from "@@";
3
+ import { Image } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -1,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
2
  <script>
3
- import { Image } from "@@";
3
+ import { Image } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -1,7 +1,7 @@
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) -%}
@@ -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 "carbon-components-svelte";
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,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
2
  <script>
3
- import { Image } from "@@";
3
+ import { Image } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -1,6 +1,6 @@
1
1
  {% from "utils/misc.liq" import table_of_images, report_jobs -%}
2
2
  <script>
3
- import { Image } from "@@";
3
+ import { Image } from "$lib";
4
4
  </script>
5
5
 
6
6
  {%- macro report_job(job, h=1) -%}
@@ -2,7 +2,7 @@
2
2
  {% from "utils/misc.liq" import report_jobs, table_of_images -%}
3
3
 
4
4
  <script>
5
- import { Image } from "@@";
5
+ import { Image } from "$lib";
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 "carbon-components-svelte";
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
- {% set case = casedir | basename %}
11
- <h{{h}}>{{case}}</h{{h}}>
12
-
13
- <h{{h+1}}>Markers</h{{h+1}}>
14
- <DataTable
15
- src={{ casedir | joinpaths: "markers.txt" | quote }}
16
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
17
- />
18
-
19
- <h{{h+1}}>Enrichment analysis</h{{h+1}}>
20
- <Tabs>
21
- {% for enrtxt in casedir | as_path | attr: "glob" | call: "Enrichr-*.txt" %}
22
- {% set db = enrtxt | stem | replace: "Enrichr-", "" %}
23
- <Tab label="{{db}}" title="{{db}}" />
24
- {% endfor %}
25
- <div slot="content">
26
- {% for enrtxt in casedir | as_path | attr: "glob" | call: "Enrichr-*.txt" %}
27
- {% set db = enrtxt | stem | replace: "Enrichr-", "" %}
28
- <TabContent>
29
- <Image src={{casedir | joinpaths: "Enrichr-" + db + ".png" | quote}} />
30
- <DataTable
31
- src={{ enrtxt | quote }}
32
- data={ {{ enrtxt | datatable: sep="\t", nrows=100 }} }
33
- />
34
- </TabContent>
35
- {% endfor %}
36
- </div>
37
- </Tabs>
38
-
39
- {% endfor %}
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
- {% if in.casefile %}
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" | as_path | attr: "is_file" | call -%}
12
- {%- for cldir in casedir | as_path | attr: "glob" | call: "*" -%}
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 "carbon-components-svelte";
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" | as_path | attr: "is_dir" | call -%}
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 "carbon-components-svelte";
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" | as_path | attr: "is_file" | call %}
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>
@@ -1,7 +1,7 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
2
 
3
3
  <script>
4
- import { Image } from "@@";
4
+ import { Image } from "$lib";
5
5
  </script>
6
6
 
7
7
  <h1>Introduction</h1>
@@ -1,7 +1,7 @@
1
1
  {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
2
 
3
3
  <script>
4
- import { Image } from "@@";
4
+ import { Image } from "$lib";
5
5
  </script>
6
6
 
7
7
  {%- macro report_job(job, h=2) -%}