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.
Files changed (290) hide show
  1. biopipen/__init__.py +1 -1
  2. biopipen/core/config.toml +28 -0
  3. biopipen/core/filters.py +79 -4
  4. biopipen/core/proc.py +12 -3
  5. biopipen/core/testing.py +75 -3
  6. biopipen/ns/bam.py +148 -6
  7. biopipen/ns/bed.py +75 -0
  8. biopipen/ns/cellranger.py +186 -0
  9. biopipen/ns/cellranger_pipeline.py +126 -0
  10. biopipen/ns/cnv.py +19 -3
  11. biopipen/ns/cnvkit.py +1 -1
  12. biopipen/ns/cnvkit_pipeline.py +20 -12
  13. biopipen/ns/delim.py +34 -35
  14. biopipen/ns/gene.py +68 -23
  15. biopipen/ns/gsea.py +63 -37
  16. biopipen/ns/misc.py +39 -14
  17. biopipen/ns/plot.py +304 -1
  18. biopipen/ns/protein.py +183 -0
  19. biopipen/ns/regulatory.py +290 -0
  20. biopipen/ns/rnaseq.py +142 -5
  21. biopipen/ns/scrna.py +2053 -473
  22. biopipen/ns/scrna_metabolic_landscape.py +228 -382
  23. biopipen/ns/snp.py +659 -0
  24. biopipen/ns/stats.py +484 -0
  25. biopipen/ns/tcr.py +683 -98
  26. biopipen/ns/vcf.py +236 -2
  27. biopipen/ns/web.py +97 -6
  28. biopipen/reports/bam/CNVpytor.svelte +4 -9
  29. biopipen/reports/cellranger/CellRangerCount.svelte +18 -0
  30. biopipen/reports/cellranger/CellRangerSummary.svelte +16 -0
  31. biopipen/reports/cellranger/CellRangerVdj.svelte +18 -0
  32. biopipen/reports/cnvkit/CNVkitDiagram.svelte +1 -1
  33. biopipen/reports/cnvkit/CNVkitHeatmap.svelte +1 -1
  34. biopipen/reports/cnvkit/CNVkitScatter.svelte +1 -1
  35. biopipen/reports/common.svelte +15 -0
  36. biopipen/reports/protein/ProdigySummary.svelte +16 -0
  37. biopipen/reports/scrna/CellsDistribution.svelte +4 -39
  38. biopipen/reports/scrna/DimPlots.svelte +1 -1
  39. biopipen/reports/scrna/MarkersFinder.svelte +6 -126
  40. biopipen/reports/scrna/MetaMarkers.svelte +3 -75
  41. biopipen/reports/scrna/RadarPlots.svelte +4 -20
  42. biopipen/reports/scrna_metabolic_landscape/MetabolicFeatures.svelte +61 -22
  43. biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayActivity.svelte +88 -82
  44. biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.svelte +70 -10
  45. biopipen/reports/snp/PlinkCallRate.svelte +24 -0
  46. biopipen/reports/snp/PlinkFreq.svelte +18 -0
  47. biopipen/reports/snp/PlinkHWE.svelte +18 -0
  48. biopipen/reports/snp/PlinkHet.svelte +18 -0
  49. biopipen/reports/snp/PlinkIBD.svelte +18 -0
  50. biopipen/reports/tcr/CDR3AAPhyschem.svelte +19 -66
  51. biopipen/reports/tcr/ClonalStats.svelte +16 -0
  52. biopipen/reports/tcr/CloneResidency.svelte +3 -93
  53. biopipen/reports/tcr/Immunarch.svelte +4 -155
  54. biopipen/reports/tcr/TCRClusterStats.svelte +3 -45
  55. biopipen/reports/tcr/TESSA.svelte +11 -28
  56. biopipen/reports/utils/misc.liq +22 -7
  57. biopipen/scripts/bam/BamMerge.py +11 -15
  58. biopipen/scripts/bam/BamSampling.py +90 -0
  59. biopipen/scripts/bam/BamSort.py +141 -0
  60. biopipen/scripts/bam/BamSplitChroms.py +10 -10
  61. biopipen/scripts/bam/BamSubsetByBed.py +38 -0
  62. biopipen/scripts/bam/CNAClinic.R +41 -5
  63. biopipen/scripts/bam/CNVpytor.py +153 -54
  64. biopipen/scripts/bam/ControlFREEC.py +13 -14
  65. biopipen/scripts/bam/SamtoolsView.py +33 -0
  66. biopipen/scripts/bed/Bed2Vcf.py +5 -5
  67. biopipen/scripts/bed/BedConsensus.py +5 -5
  68. biopipen/scripts/bed/BedLiftOver.sh +6 -4
  69. biopipen/scripts/bed/BedtoolsIntersect.py +54 -0
  70. biopipen/scripts/bed/BedtoolsMakeWindows.py +47 -0
  71. biopipen/scripts/bed/BedtoolsMerge.py +4 -4
  72. biopipen/scripts/cellranger/CellRangerCount.py +138 -0
  73. biopipen/scripts/cellranger/CellRangerSummary.R +181 -0
  74. biopipen/scripts/cellranger/CellRangerVdj.py +112 -0
  75. biopipen/scripts/cnv/AneuploidyScore.R +55 -20
  76. biopipen/scripts/cnv/AneuploidyScoreSummary.R +221 -163
  77. biopipen/scripts/cnv/TMADScore.R +25 -9
  78. biopipen/scripts/cnv/TMADScoreSummary.R +57 -86
  79. biopipen/scripts/cnvkit/CNVkitAccess.py +7 -6
  80. biopipen/scripts/cnvkit/CNVkitAutobin.py +26 -18
  81. biopipen/scripts/cnvkit/CNVkitBatch.py +6 -6
  82. biopipen/scripts/cnvkit/CNVkitCall.py +3 -3
  83. biopipen/scripts/cnvkit/CNVkitCoverage.py +4 -3
  84. biopipen/scripts/cnvkit/CNVkitDiagram.py +5 -5
  85. biopipen/scripts/cnvkit/CNVkitFix.py +3 -3
  86. biopipen/scripts/cnvkit/CNVkitGuessBaits.py +12 -8
  87. biopipen/scripts/cnvkit/CNVkitHeatmap.py +5 -5
  88. biopipen/scripts/cnvkit/CNVkitReference.py +6 -5
  89. biopipen/scripts/cnvkit/CNVkitScatter.py +5 -5
  90. biopipen/scripts/cnvkit/CNVkitSegment.py +5 -5
  91. biopipen/scripts/cnvkit/guess_baits.py +166 -93
  92. biopipen/scripts/delim/RowsBinder.R +1 -1
  93. biopipen/scripts/delim/SampleInfo.R +116 -118
  94. biopipen/scripts/gene/GeneNameConversion.R +67 -0
  95. biopipen/scripts/gene/GenePromoters.R +61 -0
  96. biopipen/scripts/gsea/Enrichr.R +5 -5
  97. biopipen/scripts/gsea/FGSEA.R +184 -50
  98. biopipen/scripts/gsea/GSEA.R +2 -2
  99. biopipen/scripts/gsea/PreRank.R +5 -5
  100. biopipen/scripts/misc/Config2File.py +2 -2
  101. biopipen/scripts/misc/Plot.R +80 -0
  102. biopipen/scripts/misc/Shell.sh +15 -0
  103. biopipen/scripts/misc/Str2File.py +2 -2
  104. biopipen/scripts/plot/Heatmap.R +3 -3
  105. biopipen/scripts/plot/Manhattan.R +147 -0
  106. biopipen/scripts/plot/QQPlot.R +146 -0
  107. biopipen/scripts/plot/ROC.R +88 -0
  108. biopipen/scripts/plot/Scatter.R +112 -0
  109. biopipen/scripts/plot/VennDiagram.R +5 -9
  110. biopipen/scripts/protein/MMCIF2PDB.py +33 -0
  111. biopipen/scripts/protein/PDB2Fasta.py +60 -0
  112. biopipen/scripts/protein/Prodigy.py +119 -0
  113. biopipen/scripts/protein/ProdigySummary.R +140 -0
  114. biopipen/scripts/protein/RMSD.py +178 -0
  115. biopipen/scripts/regulatory/MotifAffinityTest.R +102 -0
  116. biopipen/scripts/regulatory/MotifAffinityTest_AtSNP.R +127 -0
  117. biopipen/scripts/regulatory/MotifAffinityTest_MotifBreakR.R +104 -0
  118. biopipen/scripts/regulatory/MotifScan.py +159 -0
  119. biopipen/scripts/regulatory/VariantMotifPlot.R +78 -0
  120. biopipen/scripts/regulatory/motifs-common.R +324 -0
  121. biopipen/scripts/rnaseq/Simulation-ESCO.R +180 -0
  122. biopipen/scripts/rnaseq/Simulation-RUVcorr.R +45 -0
  123. biopipen/scripts/rnaseq/Simulation.R +21 -0
  124. biopipen/scripts/rnaseq/UnitConversion.R +325 -54
  125. biopipen/scripts/scrna/AnnData2Seurat.R +40 -0
  126. biopipen/scripts/scrna/CCPlotR-patch.R +161 -0
  127. biopipen/scripts/scrna/CellCellCommunication.py +150 -0
  128. biopipen/scripts/scrna/CellCellCommunicationPlots.R +93 -0
  129. biopipen/scripts/scrna/CellSNPLite.py +30 -0
  130. biopipen/scripts/scrna/CellTypeAnnotation-celltypist.R +185 -0
  131. biopipen/scripts/scrna/CellTypeAnnotation-direct.R +68 -31
  132. biopipen/scripts/scrna/CellTypeAnnotation-hitype.R +27 -22
  133. biopipen/scripts/scrna/CellTypeAnnotation-sccatch.R +28 -20
  134. biopipen/scripts/scrna/CellTypeAnnotation-sctype.R +48 -25
  135. biopipen/scripts/scrna/CellTypeAnnotation.R +37 -1
  136. biopipen/scripts/scrna/CellsDistribution.R +456 -167
  137. biopipen/scripts/scrna/DimPlots.R +1 -1
  138. biopipen/scripts/scrna/ExprImputation-alra.R +109 -0
  139. biopipen/scripts/scrna/ExprImputation-rmagic.R +256 -0
  140. biopipen/scripts/scrna/{ExprImpution-scimpute.R → ExprImputation-scimpute.R} +8 -5
  141. biopipen/scripts/scrna/ExprImputation.R +7 -0
  142. biopipen/scripts/scrna/LoomTo10X.R +51 -0
  143. biopipen/scripts/scrna/MQuad.py +25 -0
  144. biopipen/scripts/scrna/MarkersFinder.R +679 -400
  145. biopipen/scripts/scrna/MetaMarkers.R +265 -161
  146. biopipen/scripts/scrna/ModuleScoreCalculator.R +66 -11
  147. biopipen/scripts/scrna/PseudoBulkDEG.R +678 -0
  148. biopipen/scripts/scrna/RadarPlots.R +355 -134
  149. biopipen/scripts/scrna/ScFGSEA.R +298 -100
  150. biopipen/scripts/scrna/ScSimulation.R +65 -0
  151. biopipen/scripts/scrna/ScVelo.py +617 -0
  152. biopipen/scripts/scrna/Seurat2AnnData.R +7 -0
  153. biopipen/scripts/scrna/SeuratClusterStats-clustree.R +87 -0
  154. biopipen/scripts/scrna/SeuratClusterStats-dimplots.R +36 -30
  155. biopipen/scripts/scrna/SeuratClusterStats-features.R +138 -187
  156. biopipen/scripts/scrna/SeuratClusterStats-ngenes.R +81 -0
  157. biopipen/scripts/scrna/SeuratClusterStats-stats.R +78 -89
  158. biopipen/scripts/scrna/SeuratClusterStats.R +47 -10
  159. biopipen/scripts/scrna/SeuratClustering.R +36 -233
  160. biopipen/scripts/scrna/SeuratLoading.R +2 -2
  161. biopipen/scripts/scrna/SeuratMap2Ref.R +84 -113
  162. biopipen/scripts/scrna/SeuratMetadataMutater.R +16 -6
  163. biopipen/scripts/scrna/SeuratPreparing.R +223 -173
  164. biopipen/scripts/scrna/SeuratSubClustering.R +64 -0
  165. biopipen/scripts/scrna/SeuratTo10X.R +27 -0
  166. biopipen/scripts/scrna/Slingshot.R +65 -0
  167. biopipen/scripts/scrna/Subset10X.R +2 -2
  168. biopipen/scripts/scrna/TopExpressingGenes.R +169 -135
  169. biopipen/scripts/scrna/celltypist-wrapper.py +195 -0
  170. biopipen/scripts/scrna/scvelo_paga.py +313 -0
  171. biopipen/scripts/scrna/seurat_anndata_conversion.py +98 -0
  172. biopipen/scripts/scrna_metabolic_landscape/MetabolicFeatures.R +447 -82
  173. biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayActivity.R +348 -241
  174. biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.R +188 -166
  175. biopipen/scripts/snp/MatrixEQTL.R +217 -0
  176. biopipen/scripts/snp/Plink2GTMat.py +148 -0
  177. biopipen/scripts/snp/PlinkCallRate.R +199 -0
  178. biopipen/scripts/snp/PlinkFilter.py +100 -0
  179. biopipen/scripts/snp/PlinkFreq.R +291 -0
  180. biopipen/scripts/snp/PlinkFromVcf.py +81 -0
  181. biopipen/scripts/snp/PlinkHWE.R +85 -0
  182. biopipen/scripts/snp/PlinkHet.R +96 -0
  183. biopipen/scripts/snp/PlinkIBD.R +196 -0
  184. biopipen/scripts/snp/PlinkSimulation.py +124 -0
  185. biopipen/scripts/snp/PlinkUpdateName.py +124 -0
  186. biopipen/scripts/stats/ChowTest.R +146 -0
  187. biopipen/scripts/stats/DiffCoexpr.R +152 -0
  188. biopipen/scripts/stats/LiquidAssoc.R +135 -0
  189. biopipen/scripts/stats/Mediation.R +108 -0
  190. biopipen/scripts/stats/MetaPvalue.R +130 -0
  191. biopipen/scripts/stats/MetaPvalue1.R +74 -0
  192. biopipen/scripts/tcgamaf/Maf2Vcf.py +2 -2
  193. biopipen/scripts/tcgamaf/MafAddChr.py +2 -2
  194. biopipen/scripts/tcr/Attach2Seurat.R +3 -2
  195. biopipen/scripts/tcr/CDR3AAPhyschem.R +211 -143
  196. biopipen/scripts/tcr/CDR3Clustering.R +343 -0
  197. biopipen/scripts/tcr/ClonalStats.R +526 -0
  198. biopipen/scripts/tcr/CloneResidency.R +255 -131
  199. biopipen/scripts/tcr/CloneSizeQQPlot.R +4 -4
  200. biopipen/scripts/tcr/GIANA/GIANA.py +1356 -797
  201. biopipen/scripts/tcr/GIANA/GIANA4.py +1362 -789
  202. biopipen/scripts/tcr/GIANA/query.py +164 -162
  203. biopipen/scripts/tcr/Immunarch-basic.R +31 -9
  204. biopipen/scripts/tcr/Immunarch-clonality.R +25 -5
  205. biopipen/scripts/tcr/Immunarch-diversity.R +352 -134
  206. biopipen/scripts/tcr/Immunarch-geneusage.R +45 -5
  207. biopipen/scripts/tcr/Immunarch-kmer.R +68 -8
  208. biopipen/scripts/tcr/Immunarch-overlap.R +84 -4
  209. biopipen/scripts/tcr/Immunarch-spectratyping.R +35 -6
  210. biopipen/scripts/tcr/Immunarch-tracking.R +38 -6
  211. biopipen/scripts/tcr/Immunarch-vjjunc.R +165 -0
  212. biopipen/scripts/tcr/Immunarch.R +63 -11
  213. biopipen/scripts/tcr/Immunarch2VDJtools.R +2 -2
  214. biopipen/scripts/tcr/ImmunarchFilter.R +4 -4
  215. biopipen/scripts/tcr/ImmunarchLoading.R +38 -29
  216. biopipen/scripts/tcr/SampleDiversity.R +1 -1
  217. biopipen/scripts/tcr/ScRepCombiningExpression.R +40 -0
  218. biopipen/scripts/tcr/ScRepLoading.R +166 -0
  219. biopipen/scripts/tcr/TCRClusterStats.R +176 -22
  220. biopipen/scripts/tcr/TCRDock.py +110 -0
  221. biopipen/scripts/tcr/TESSA.R +102 -118
  222. biopipen/scripts/tcr/VJUsage.R +5 -5
  223. biopipen/scripts/tcr/immunarch-patched.R +142 -0
  224. biopipen/scripts/tcr/vdjtools-patch.sh +1 -1
  225. biopipen/scripts/vcf/BcftoolsAnnotate.py +91 -0
  226. biopipen/scripts/vcf/BcftoolsFilter.py +90 -0
  227. biopipen/scripts/vcf/BcftoolsMerge.py +31 -0
  228. biopipen/scripts/vcf/BcftoolsSort.py +113 -0
  229. biopipen/scripts/vcf/BcftoolsView.py +73 -0
  230. biopipen/scripts/vcf/TruvariBench.sh +14 -7
  231. biopipen/scripts/vcf/TruvariBenchSummary.R +16 -13
  232. biopipen/scripts/vcf/TruvariConsistency.R +1 -1
  233. biopipen/scripts/vcf/Vcf2Bed.py +2 -2
  234. biopipen/scripts/vcf/VcfAnno.py +11 -11
  235. biopipen/scripts/vcf/VcfDownSample.sh +22 -10
  236. biopipen/scripts/vcf/VcfFilter.py +5 -5
  237. biopipen/scripts/vcf/VcfFix.py +7 -7
  238. biopipen/scripts/vcf/VcfFix_utils.py +13 -4
  239. biopipen/scripts/vcf/VcfIndex.py +3 -3
  240. biopipen/scripts/vcf/VcfIntersect.py +3 -3
  241. biopipen/scripts/vcf/VcfLiftOver.sh +5 -0
  242. biopipen/scripts/vcf/VcfSplitSamples.py +4 -4
  243. biopipen/scripts/vcf/bcftools_utils.py +52 -0
  244. biopipen/scripts/web/Download.py +8 -4
  245. biopipen/scripts/web/DownloadList.py +5 -5
  246. biopipen/scripts/web/GCloudStorageDownloadBucket.py +82 -0
  247. biopipen/scripts/web/GCloudStorageDownloadFile.py +23 -0
  248. biopipen/scripts/web/gcloud_common.py +49 -0
  249. biopipen/utils/gene.py +108 -60
  250. biopipen/utils/misc.py +146 -20
  251. biopipen/utils/reference.py +64 -20
  252. biopipen/utils/reporter.py +177 -0
  253. biopipen/utils/vcf.py +1 -1
  254. biopipen-0.34.26.dist-info/METADATA +27 -0
  255. biopipen-0.34.26.dist-info/RECORD +292 -0
  256. {biopipen-0.21.0.dist-info → biopipen-0.34.26.dist-info}/WHEEL +1 -1
  257. {biopipen-0.21.0.dist-info → biopipen-0.34.26.dist-info}/entry_points.txt +6 -2
  258. biopipen/ns/bcftools.py +0 -111
  259. biopipen/ns/scrna_basic.py +0 -255
  260. biopipen/reports/delim/SampleInfo.svelte +0 -36
  261. biopipen/reports/scrna/GeneExpressionInvistigation.svelte +0 -32
  262. biopipen/reports/scrna/ScFGSEA.svelte +0 -35
  263. biopipen/reports/scrna/SeuratClusterStats.svelte +0 -82
  264. biopipen/reports/scrna/SeuratMap2Ref.svelte +0 -20
  265. biopipen/reports/scrna/SeuratPreparing.svelte +0 -38
  266. biopipen/reports/scrna/TopExpressingGenes.svelte +0 -55
  267. biopipen/reports/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.svelte +0 -31
  268. biopipen/reports/utils/gsea.liq +0 -110
  269. biopipen/scripts/bcftools/BcftoolsAnnotate.py +0 -42
  270. biopipen/scripts/bcftools/BcftoolsFilter.py +0 -79
  271. biopipen/scripts/bcftools/BcftoolsSort.py +0 -19
  272. biopipen/scripts/gene/GeneNameConversion.py +0 -66
  273. biopipen/scripts/scrna/ExprImpution-alra.R +0 -32
  274. biopipen/scripts/scrna/ExprImpution-rmagic.R +0 -29
  275. biopipen/scripts/scrna/ExprImpution.R +0 -7
  276. biopipen/scripts/scrna/GeneExpressionInvistigation.R +0 -132
  277. biopipen/scripts/scrna/Write10X.R +0 -11
  278. biopipen/scripts/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.R +0 -150
  279. biopipen/scripts/tcr/TCRClustering.R +0 -280
  280. biopipen/utils/common_docstrs.py +0 -61
  281. biopipen/utils/gene.R +0 -49
  282. biopipen/utils/gsea.R +0 -193
  283. biopipen/utils/io.R +0 -20
  284. biopipen/utils/misc.R +0 -114
  285. biopipen/utils/mutate_helpers.R +0 -433
  286. biopipen/utils/plot.R +0 -173
  287. biopipen/utils/rnaseq.R +0 -48
  288. biopipen/utils/single_cell.R +0 -115
  289. biopipen-0.21.0.dist-info/METADATA +0 -22
  290. biopipen-0.21.0.dist-info/RECORD +0 -218
@@ -1,138 +1,18 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
- {% from "utils/gsea.liq" import enrichr_report -%}
2
+
3
3
  <script>
4
- import { Image, DataTable } from "$libs";
5
- import { Tabs, Tab, TabContent, InlineNotification } from "$ccs";
4
+ import { Image, DataTable, Descr } from "$libs";
5
+ import { Tabs, Tab, TabContent, InlineNotification, Accordion, AccordionItem } from "$ccs";
6
6
  </script>
7
7
 
8
8
 
9
9
  {%- macro report_job(job, h=1) -%}
10
- {%- set alldirs = job.out.outdir | glob: "*" -%}
11
- {%- set ovdir = job.out.outdir | joinpaths: "OVERLAPS" -%}
12
- {%- set secdirs = [] -%}
13
- {%- for adir in alldirs -%}
14
- {%- if basename(adir) != "OVERLAPS" -%}
15
- {%- set _ = secdirs.append(adir) -%}
16
- {%- endif -%}
17
- {%- endfor -%}
18
-
19
- {%- if len(secdirs) == 1 -%}
20
- {%- set secname = secdirs | first | basename -%}
21
- {%- for casedir in secdirs[0] | glob: "*" -%}
22
- {%- if secname == "DEFAULT" -%}
23
- <h{{h}}>{{casedir | basename | escape}}</h{{h}}>
24
- {%- else -%}
25
- <h{{h}}>{{secname | escape}} - {{casedir | basename | escape}}</h{{h}}>
26
- {%- endif -%}
27
- {%- if casedir | joinpaths: "error.txt" | exists -%}
28
- <InlineNotification
29
- hideCloseButton
30
- lowContrast
31
- kind="warning"
32
- subtitle={{ casedir | joinpaths: "error.txt" | read | quote }}
33
- />
34
- {%- else -%}
35
- <h{{h+1}}>Markers</h{{h+1}}>
36
- <Tabs>
37
- <Tab label="Markers" />
38
- <Tab label="Volcano Plot" />
39
- <Tab label="Dot Plot" />
40
- <svelte:fragment slot="content">
41
- <TabContent>
42
- <DataTable
43
- src={{ casedir | joinpaths: "markers.txt" | quote }}
44
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
45
- />
46
- </TabContent>
47
- <TabContent>
48
- <Image src={{ casedir | joinpaths: "volcano.png" | quote }} />
49
- </TabContent>
50
- <TabContent>
51
- <Image src={{ casedir | joinpaths: "dotplot.png" | quote }} />
52
- </TabContent>
53
- </svelte:fragment>
54
- </Tabs>
55
-
56
- <h{{h+1}}>Enrichment analysis</h{{h+1}}>
57
- {{ enrichr_report(casedir) }}
58
- {%- endif -%}
59
- {%- endfor -%}
60
- {%- else -%}
61
- {%- for secdir in secdirs -%}
62
- {%- set sec = secdir | basename -%}
63
- <h{{h}}>{{sec | escape}}</h{{h}}>
64
- {%- for casedir in secdir | glob: "*" -%}
65
- <h{{h+1}}>{{casedir | basename | escape}}</h{{h+1}}>
66
- {%- if casedir | joinpaths: "error.txt" | exists -%}
67
- <InlineNotification
68
- hideCloseButton
69
- lowContrast
70
- kind="warning"
71
- subtitle={{ casedir | joinpaths: "error.txt" | read | quote }}
72
- />
73
- {%- else -%}
74
- <h{{h+2}}>Markers</h{{h+2}}>
75
- <Tabs>
76
- <Tab label="Markers" />
77
- <Tab label="Volcano Plot" />
78
- <Tab label="Dot Plot" />
79
- <svelte:fragment slot="content">
80
- <TabContent>
81
- <DataTable
82
- src={{ casedir | joinpaths: "markers.txt" | quote }}
83
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
84
- />
85
- </TabContent>
86
- <TabContent>
87
- <Image src={{ casedir | joinpaths: "volcano.png" | quote }} />
88
- </TabContent>
89
- <TabContent>
90
- <Image src={{ casedir | joinpaths: "dotplot.png" | quote }} />
91
- </TabContent>
92
- </svelte:fragment>
93
- </Tabs>
94
-
95
- <h{{h+2}}>Enrichment analysis</h{{h+2}}>
96
- {{ enrichr_report(casedir) }}
97
- {%- endif -%}
98
- {%- endfor -%}
99
- {%- endfor -%}
100
- {%- endif -%}
101
-
102
- {%- if ovdir | exists -%}
103
- <h{{h}}>Overlapping Markers</h{{h}}>
104
- {%- for casedir in ovdir | glob: "*" -%}
105
- <h{{h+1}}>{{casedir | basename | escape}}</h{{h+1}}>
106
- <Tabs>
107
- {%- if casedir | joinpaths: "venn.png" | exists -%}
108
- <Tab label="Venn Diagram" />
109
- {%- endif -%}
110
- <Tab label="UpSet Plot" />
111
- <Tab label="Marks" />
112
- <svelte:fragment slot="content">
113
- {%- if casedir | joinpaths: "venn.png" | exists -%}
114
- <TabContent>
115
- <Image src={{ casedir | joinpaths: "venn.png" | quote }} />
116
- </TabContent>
117
- {%- endif -%}
118
- <TabContent>
119
- <Image src={{ casedir | joinpaths: "upset.png" | quote }} />
120
- </TabContent>
121
- <TabContent>
122
- <DataTable
123
- src={{ casedir | joinpaths: "markers.txt" | quote }}
124
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t" }} }
125
- />
126
- </TabContent>
127
- </svelte:fragment>
128
- </Tabs>
129
- {%- endfor -%}
130
- {%- endif -%}
10
+ {{ job | render_job: h=h }}
131
11
  {%- endmacro -%}
132
12
 
133
13
 
134
14
  {%- macro head_job(job) -%}
135
- <h1>{{job.in.srtobj | stem | escape}}</h1>
15
+ <h1>{{job.in.srtobj | stem | escape}}</h1>
136
16
  {%- endmacro -%}
137
17
 
138
- {{ report_jobs(jobs, head_job, report_job) }}
18
+ {{ report_jobs(jobs, head_job, report_job) }}
@@ -1,85 +1,13 @@
1
1
  {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
2
  {% from "utils/gsea.liq" import enrichr_report -%}
3
3
  <script>
4
- import { Image, DataTable } from "$libs";
5
- import { Tabs, Tab, TabContent, InlineNotification } from "$ccs";
4
+ import { Image, DataTable, Descr } from "$libs";
5
+ import { Tabs, Tab, TabContent, InlineNotification, Accordion, AccordionItem } from "$ccs";
6
6
  </script>
7
7
 
8
8
 
9
9
  {%- macro report_job(job, h=1) -%}
10
- {%- set secdirs = job.out.outdir | glob: "*" -%}
11
- {%- if len(secdirs) == 1 -%}
12
- {%- set secname = secdirs | first | basename -%}
13
- {%- for casedir in secdirs[0] | glob: "*" -%}
14
- {%- if secname == "DEFAULT" -%}
15
- <h{{h}}>{{casedir | basename | escape}}</h{{h}}>
16
- {%- else -%}
17
- <h{{h}}>{{secname | escape}} - {{casedir | basename | escape}}</h{{h}}>
18
- {%- endif -%}
19
- {%- if casedir | joinpaths: "error.txt" | exists -%}
20
- <InlineNotification
21
- hideCloseButton
22
- lowContrast
23
- kind="warning"
24
- subtitle={{ casedir | joinpaths: "error.txt" | read | quote }}
25
- />
26
- {%- else -%}
27
- <h{{h+1}}>Markers</h{{h+1}}>
28
- <Tabs>
29
- <Tab label="Top 10 genes" />
30
- <Tab label="Table of top 100 genes" />
31
- <div slot="content">
32
- <TabContent>
33
- {{ table_of_images(glob(casedir, "plots", "*.png"), col = 4) }}
34
- </TabContent>
35
- <TabContent>
36
- <DataTable
37
- src={{ casedir | joinpaths: "markers.txt" | quote }}
38
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
39
- />
40
- </TabContent>
41
- </div>
42
- </Tabs>
43
-
44
- <h{{h+1}}>Enrichment analysis</h{{h+1}}>
45
- {{ enrichr_report(casedir) }}
46
- {%- endif -%}
47
- {%- endfor -%}
48
- {%- else -%}
49
- {%- for secdir in secdirs -%}
50
- {%- set sec = secdir | basename -%}
51
- <h{{h}}>{{sec | escape}}</h{{h}}>
52
- {%- for casedir in secdir | glob: "*" -%}
53
- <h{{h+1}}>{{casedir | basename | escape}}</h{{h+1}}>
54
- {%- if casedir | joinpaths: "error.txt" | exists -%}
55
- <InlineNotification
56
- hideCloseButton
57
- lowContrast
58
- kind="warning"
59
- subtitle={{ casedir | joinpaths: "error.txt" | read | quote }}
60
- />
61
- {%- else -%}
62
- <h{{h+2}}>Markers</h{{h+2}}>
63
- <Tabs>
64
- <Tab label="Top 10 genes" />
65
- <Tab label="Table of top 100 genes" />
66
- <TabContent>
67
- {{ table_of_images(glob(casedir, "plots", "*.png"), col = 4) }}
68
- </TabContent>
69
- <TabContent>
70
- <DataTable
71
- src={{ casedir | joinpaths: "markers.txt" | quote }}
72
- data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
73
- />
74
- </TabContent>
75
- </Tabs>
76
-
77
- <h{{h+2}}>Enrichment analysis</h{{h+2}}>
78
- {{ enrichr_report(casedir) }}
79
- {%- endif -%}
80
- {%- endfor -%}
81
- {%- endfor -%}
82
- {%- endif -%}
10
+ {{ job | render_job: h=h }}
83
11
  {%- endmacro -%}
84
12
 
85
13
 
@@ -1,31 +1,15 @@
1
1
  {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
2
  <script>
3
- import { Image } from "$libs";
3
+ import { Image, DataTable } from "$libs";
4
+ import { Tabs, Tab, TabContent } from "$ccs";
4
5
  </script>
5
6
 
6
7
  {%- macro report_job(job, h=1) -%}
7
- {%- set section_file = job.out.outdir | joinpaths: "sections.toml" -%}
8
- {%- if section_file | exists -%}
9
- {%- set sections = section_file | config: "toml" -%}
10
- {%- for section, cases in sections.items() -%}
11
- <h{{h}}>{{section | escape}}</h{{h}}>
12
- {%- set imgs = [] -%}
13
- {%- for case in cases -%}
14
- {%- set img = job.out.outdir | joinpaths: case + ".png" -%}
15
- {%- set _ = imgs.append(img) -%}
16
- {%- endfor -%}
17
- {{ table_of_images(imgs) }}
18
- {%- endfor -%}
19
- {%- else -%}
20
- {%- for img in job.out.outdir | glob: "*.png" -%}
21
- <h{{h}}>{{img | stem | escape}}</h{{h}}>
22
- <Image src={{img | quote}} />
23
- {%- endfor -%}
24
- {%- endif -%}
8
+ {{ job | render_job: h=h }}
25
9
  {%- endmacro -%}
26
10
 
27
11
  {%- macro head_job(job) -%}
28
- <h1>{{job.in.srtobj | stem}}</h1>
12
+ <h1>{{job.in.srtobj | stem}}</h1>
29
13
  {%- endmacro -%}
30
14
 
31
15
  {{ report_jobs(jobs, head_job, report_job) }}
@@ -1,31 +1,70 @@
1
- {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
- {% from "utils/gsea.liq" import fgsea_report_script, fgsea_report, gsea_report -%}
3
-
1
+ {% from "utils/misc.liq" import report_jobs -%}
4
2
  <script>
5
- {{ fgsea_report_script() }}
3
+ import { Image, DataTable, Descr } from "$libs";
4
+ import { Tabs, Tab, TabContent, UnorderedList, ListItem, InlineNotification, Tile } from "$ccs";
6
5
  </script>
7
6
 
8
- {%- macro report_job(job, h=2) -%}
9
- {%- for ssdir in job.out.outdir | glob: "*" -%}
10
- {%- if basename(ssdir) == "ALL" -%}
11
- {%- set h = 1 -%}
12
- {%- else -%}
13
- <h{{h}}>{{ ssdir | stem }}</h{{h}}>
14
- {%- endif -%}
15
-
16
- {% for cldir in ssdir | glob: '*' %}
17
- <h{{h+1}}>{{ cldir | basename }}</h{{h+1}}>
18
- {% if envs.fgsea %}
19
- {{ fgsea_report(cldir, h+2, envs, envs.top) }}
20
- {% else %}
21
- {{ gsea_report(cldir, h+2, envs, envs.top) }}
22
- {% endif %}
23
- {% endfor %}
24
- {%- endfor -%}
7
+ <h1>Introduction</h1>
8
+
9
+ <Descr>
10
+ Metabolic landscape of single cells in the tumor microenvironment.
11
+ </Descr>
12
+
13
+ <h2>Workflow of the original analysis</h2>
14
+ <Image src="https://raw.githubusercontent.com/LocasaleLab/Single-Cell-Metabolic-Landscape/master/pipeline.png" />
15
+
16
+ <h2>Reference</h2>
17
+ <UnorderedList>
18
+ <ListItem><a href="https://www.nature.com/articles/s41467-019-11738-0" target="_blank">
19
+ Zhengtao, Ziwei Dai, and Jason W. Locasale.
20
+ "Metabolic landscape of the tumor microenvironment at single cell resolution."
21
+ Nature communications 10.1 (2019): 1-12.
22
+ </a></ListItem>
23
+ <ListItem><a href="https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape" target="_blank">
24
+ Orginal pipeline
25
+ </a></ListItem>
26
+ </UnorderedList>
27
+
28
+ <h2>Analyses with this pipeline</h2>
29
+
30
+ <Descr>
31
+ The cells are grouped at 2 dimensions: `subset_by`, usually the clinic groups that bring biological meaning
32
+ (i.e. different timepoints or sample types (tumor/normal)), and `group_by`, usually the cell types.
33
+ </Descr>
34
+
35
+ <UnorderedList>
36
+ <ListItem>
37
+ <a href="?proc=MetabolicPathwayActivity" class="listitem">MetabolicPathwayActivity</a>
38
+ <Tile><p>Investigating the metabolic pathways of the cells in different subsets and groups.</p></Tile>
39
+ </ListItem>
40
+ <ListItem>
41
+ <a href="?proc=MetabolicPathwayHeterogeneity" class="listitem">MetabolicPathwayHeterogeneity</a>
42
+ <Tile><p>Showing metabolic pathways enriched in genes with highest contribution to the metabolic heterogeneities</p></Tile>
43
+ </ListItem>
44
+ <ListItem>
45
+ <span class="listitem">MetabolicFeatures (this page)</span>
46
+ <Tile>
47
+ <p>Gene set enrichment analysis against the metabolic pathways for comparisons by different groups in different subsets.</p>
48
+ <p>The metabolic features are actual gene set enrichment analysis (GSEA) results for the metabolic pathways with given comparisons.</p>
49
+ </Tile>
50
+ </ListItem>
51
+ </UnorderedList>
52
+
53
+ <style>
54
+ .listitem {
55
+ font-size: large;
56
+ font-weight: bold;
57
+ margin: 1rem 0 0.5rem 0;
58
+ display: inline-block;
59
+ }
60
+ </style>
61
+
62
+ {%- macro report_job(job, h=1) -%}
63
+ {{ job | render_job: h=h }}
25
64
  {%- endmacro -%}
26
65
 
27
66
  {%- macro head_job(job) -%}
28
- <h1>{{job.in.sobjfile | stem | escape}}</h1>
67
+ <h1>{{job.in | attr: "values" | call | first | stem0 | escape}}</h1>
29
68
  {%- endmacro -%}
30
69
 
31
70
  {{ report_jobs(jobs, head_job, report_job) }}
@@ -1,97 +1,103 @@
1
1
  {% from "utils/misc.liq" import report_jobs -%}
2
-
3
2
  <script>
4
- import { Image } from "$libs";
3
+ import { Image, DataTable, Descr, Math } from "$libs";
4
+ import { Tabs, Tab, TabContent, UnorderedList, ListItem, InlineNotification, Tile } from "$ccs";
5
5
  </script>
6
6
 
7
7
  <h1>Introduction</h1>
8
8
 
9
- <div class="markdown-wrap">
10
- <Markdown>
11
-
12
- Metabolic landscape of single cells in the tumor microenvironment.
13
-
14
- ## Workflow of the original analysis
15
- <Image src="https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape/raw/master/pipeline.png" />
16
-
17
- ## Reference
18
- - [Xiao, Zhengtao, Ziwei Dai, and Jason W. Locasale. "Metabolic landscape of the tumor microenvironment at single cell resolution." Nature communications 10.1 (2019): 1-12.](https://www.nature.com/articles/s41467-019-11738-0)
19
- - [Original pipeline](https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape)
20
-
21
- ## Analyses with this pipeline
22
-
23
- The cells are grouped at 2 dimensions: `grouping`, usually the cell types, and `subsetting`, usually
24
- the groups that bring biological meaning (i.e. different timepoints or sample types (tumor/normal)).
25
-
26
- - **MetabolicPathwayActivity (this page)**
27
-
28
- Investigating the metabolic pathways of the cells in different groups and subsets.
29
-
30
- The cells are first grouped by subsets and then the metabolic activities are examined for each groups in different subsets.
31
-
32
- - **MetabolicPathwayHeterogeneity**
33
-
34
- Showing metabolic pathways enriched in genes with highest contribution to the metabolic heterogeneities
35
-
36
- - **MetabolicFeatures**
37
-
38
- Gene set enrichment analysis against the metabolic pathways for groups in different subsets.
39
-
40
- - **MetabolicFeaturesIntraSubsets** (optional)
41
-
42
- Gene set enrichment analysis against the metabolic pathways for subsets based on the designed comparison in different groups.
9
+ <Descr>
10
+ Metabolic landscape of single cells in the tumor microenvironment.
11
+ </Descr>
12
+
13
+ <h2>Workflow of the original analysis</h2>
14
+ <Image src="https://raw.githubusercontent.com/LocasaleLab/Single-Cell-Metabolic-Landscape/master/pipeline.png" />
15
+
16
+ <h2>Reference</h2>
17
+ <UnorderedList>
18
+ <ListItem><a href="https://www.nature.com/articles/s41467-019-11738-0" target="_blank">
19
+ Zhengtao, Ziwei Dai, and Jason W. Locasale.
20
+ "Metabolic landscape of the tumor microenvironment at single cell resolution."
21
+ Nature communications 10.1 (2019): 1-12.
22
+ </a></ListItem>
23
+ <ListItem><a href="https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape" target="_blank">
24
+ Orginal pipeline
25
+ </a></ListItem>
26
+ </UnorderedList>
27
+
28
+ <h2>Analyses with this pipeline</h2>
29
+
30
+ <Descr>
31
+ The cells are grouped at 2 dimensions: `subset_by`, usually the clinic groups that bring biological meaning
32
+ (i.e. different timepoints or sample types (tumor/normal)), and `group_by`, usually the cell types.
33
+ </Descr>
34
+
35
+ <UnorderedList>
36
+ <ListItem>
37
+ <span class="listitem">MetabolicPathwayActivity (this page)</span>
38
+ <Tile>
39
+ <p>Investigating the metabolic pathways of the cells in different subsets and groups.</p>
40
+ <p>The cells are first subset by subsets and then the metabolic activities are examined for each groups in different subsets.</p>
41
+ <p> </p>
42
+ <p>A pathway activity score defined as the relative gene expression value averaged over all genes in the pathway and all cells of the group.</p>
43
+ <p> </p>
44
+ <p>For the i-th metabolic gene, we first calculated its mean expression level across cells of the j-th cell group:
45
+ <Math displayMode>E_{i,j} = \frac{ {\mathop {\sum }\nolimits_{k = 1}^{n_j} g_{i,k}}}{ {n_j}},\,i \in 1 \ldots M,j \in 1 \ldots N</Math>
46
+ <p>
47
+ In which n<sub>j</sub> is the number of cells in the j-th cell group, g<sub>i,k</sub> is the expression level of the i-th gene in the k-th cell in this cell group,
48
+ M is the number of metabolic genes, and N is the number of cell groups. The relative expression level of the i-th gene in the j-th cell group was then
49
+ defined as the ratio of E<sub>i,j</sub> to its average over all cell groups:
50
+ </p>
51
+ <Math displayMode>r_{i,j} = \frac{ {E_{i,j}}}{ {\frac{1}{N}\mathop {\sum }\nolimits_j^N E_{i,j}}}</Math>
52
+ <p>
53
+ Here r<sub>i,j</sub> quantifies the relative expression level of gene i in cell group j comparing to the average expression level of this gene in all cell groups.
54
+ A r<sub>i,j</sub> value &gt;1 means that expression level of gene i is higher in cell group j compared to its average expression level over all cell groups.
55
+ The pathway activity score for the t-th pathway and the j-th cell group was then defined as the weighted average of r<sub>i,j</sub> over all genes included
56
+ in this pathway:
57
+ </p>
58
+ <Math displayMode>p_{t,j} = \frac{ {\mathop {\sum }\nolimits_{i = 1}^{m_t} w_i \times r_{i,j}}}{ {\mathop {\sum }\nolimits_{i = 1}^{m_t} w_i}}</Math>
59
+ <p>Where p<sub>t,j</sub> represents the activity of the t-th pathway in the j-th cell group, m<sub>t</sub> is the number of genes in the pathway t, w<sub>i</sub>
60
+ is the weighting factor equal to the reciprocal of number of pathways that include the i-th gene.
61
+ To avoid the possibility that pathway activity scores were affected by genes with low expression level or high drop-out rates,
62
+ we excluded the outliers in each pathway defined by genes with relative expression levels greater than three times 75th percentile or below 1/3 times 25th percentile.
63
+ Statistical significance of higher or lower pathway activity in a specific cell group was then evaluated by a random permutation test,
64
+ in which the cell group labels were randomly shuffled for 5000 (for the scRNA datasets) to simulate a null distribution of the pathway activity scores
65
+ and compare to the pathway activity scores in the original, non-shuffled dataset.
66
+ For the pathway activity score p<sub>t,j</sub>, we then calculated a p-value defined as the fraction of random pathway activity scores larger than pt,j
67
+ (if p<sub>t,j</sub> is &gt;1) or smaller than p<sub>t,j</sub> (if p<sub>t,j</sub> is &lt;1) to assess if activity of this pathway is significantly
68
+ higher or lower in this cell group than average.</p>
69
+ </Tile>
70
+ </ListItem>
71
+ <ListItem>
72
+ <a href="?proc=MetabolicPathwayHeterogeneity" class="listitem">MetabolicPathwayHeterogeneity</a>
73
+ <Tile>
74
+ <p>Showing metabolic pathways enriched in genes with highest contribution to the metabolic heterogeneities</p>
75
+ </Tile>
76
+ </ListItem>
77
+ <ListItem>
78
+ <a href="?proc=MetabolicFeatures" class="listitem">MetabolicFeatures</a>
79
+ <Tile>
80
+ <p>Gene set enrichment analysis against the metabolic pathways for comparisons by different groups in different subsets.</p>
81
+ </Tile>
82
+ </ListItem>
83
+ </UnorderedList>
43
84
 
44
- </Markdown>
45
- </div>
46
-
47
- {%- macro report_job(job, h=2) -%}
48
- {%- for ssdir in job.out.outdir | glob: "*" -%}
49
- {%- if not isdir(ssdir) -%}
50
- {%- continue -%}
51
- {%- endif -%}
52
- <h{{h}}>{{ ssdir | stem }}</h{{h}}>
53
-
54
- <h{{ h+1 }}>Metabolic pathway activities by {{envs.grouping}}</h{{ h+1 }}>
55
- <Image src="{{ssdir | joinpaths: 'KEGGpathway_activity_heatmap.png'}}" />
56
-
57
- <h{{ h+1 }}>Distributions of pathway activities by {{envs.grouping}}</h{{ h+1 }}>
58
- <Image src="{{ssdir | joinpaths: 'pathway_activity_violinplot.png'}}" />
59
- {%- endfor -%}
85
+ <style>
86
+ .listitem {
87
+ font-size: large;
88
+ font-weight: bold;
89
+ margin: 1rem 0 0.5rem 0;
90
+ display: inline-block;
91
+ }
92
+ </style>
60
93
 
61
- {% if job.out.outdir | glob: "*.group-*.png" -%}
62
- <h{{h}}>Merged heatmaps</h{{h}}>
63
- {% for group_hm in job.out.outdir | glob: "*.group-*.png" -%}
64
- {%- if group_hm.endswith(".group-unclustered.png") -%}
65
- <h{{h+1}}>{{group_hm | stem | replace: ".group-unclustered", " (Group Unclustered)"}}</h{{h+1}}>
66
- <Image src="{{group_hm}}" />
67
- {%- else -%}
68
- <h{{h+1}}>{{group_hm | stem | replace: ".group-clustered", " (Group Clustered)"}}</h{{h+1}}>
69
- <Image src="{{group_hm}}" />
70
- {%- endif -%}
71
- {%- endfor -%}
72
- {%- endif -%}
94
+ {%- macro report_job(job, h=1) -%}
95
+ {{ job | render_job: h=h }}
73
96
  {%- endmacro -%}
74
97
 
75
98
  {%- macro head_job(job) -%}
76
- <h1>{{job.in.sobjfile | stem | escape}}</h1>
99
+ <h1>{{job.in | attr: "values" | call | first | stem0 | escape}}</h1>
77
100
  {%- endmacro -%}
78
101
 
79
102
  {{ report_jobs(jobs, head_job, report_job) }}
80
103
 
81
- <style>
82
-
83
- .markdown-wrap ul {
84
- list-style-position: inside;
85
- list-style-type: disc;
86
- margin-top: 0.2rem;
87
- }
88
-
89
- .markdown-wrap ul li p {
90
- padding-left: 1.2rem;
91
- }
92
-
93
- .markdown-wrap ul li > p:first-of-type {
94
- padding-left: 0;
95
- display: inline;
96
- }
97
- </style>
@@ -1,21 +1,81 @@
1
- {% from "utils/misc.liq" import report_jobs, table_of_images -%}
2
-
1
+ {% from "utils/misc.liq" import report_jobs -%}
3
2
  <script>
4
- import { Image } from "$libs";
3
+ import { Image, DataTable, Descr } from "$libs";
4
+ import { Tabs, Tab, TabContent, UnorderedList, ListItem, InlineNotification, Tile } from "$ccs";
5
5
  </script>
6
6
 
7
- {%- macro report_job(job, h=2) -%}
8
- {%- for ssdir in job.out.outdir | glob: "*" -%}
9
- <h{{h}}>{{ ssdir | stem }}</h{{h}}>
7
+ <h1>Introduction</h1>
8
+
9
+ <Descr>
10
+ Metabolic landscape of single cells in the tumor microenvironment.
11
+ </Descr>
12
+
13
+ <h2>Workflow of the original analysis</h2>
14
+ <Image src="https://raw.githubusercontent.com/LocasaleLab/Single-Cell-Metabolic-Landscape/master/pipeline.png" />
15
+
16
+ <h2>Reference</h2>
17
+ <UnorderedList>
18
+ <ListItem><a href="https://www.nature.com/articles/s41467-019-11738-0" target="_blank">
19
+ Zhengtao, Ziwei Dai, and Jason W. Locasale.
20
+ "Metabolic landscape of the tumor microenvironment at single cell resolution."
21
+ Nature communications 10.1 (2019): 1-12.
22
+ </a></ListItem>
23
+ <ListItem><a href="https://github.com/LocasaleLab/Single-Cell-Metabolic-Landscape" target="_blank">
24
+ Orginal pipeline
25
+ </a></ListItem>
26
+ </UnorderedList>
27
+
28
+ <h2>Analyses with this pipeline</h2>
29
+
30
+ <Descr>
31
+ The cells are grouped at 2 dimensions: `subset_by`, usually the clinic groups that bring biological meaning
32
+ (i.e. different timepoints or sample types (tumor/normal)), and `group_by`, usually the cell types.
33
+ </Descr>
34
+
35
+ <UnorderedList>
36
+ <ListItem>
37
+ <a href="?proc=MetabolicPathwayActivity" class="listitem">MetabolicPathwayActivity</a>
38
+ <Tile>
39
+ <p>Investigating the metabolic pathways of the cells in different subsets and groups.</p>
40
+ </Tile>
41
+ </ListItem>
42
+ <ListItem>
43
+ <span class="listitem">MetabolicPathwayHeterogeneity (this page)</span>
44
+ <Tile>
45
+ <p>Showing metabolic pathways enriched in genes with highest contribution to the metabolic heterogeneities</p>
46
+ <p>
47
+ The PCA analysis was applied on normalized expression values.
48
+ The function prcomp in R was used to perform the PCA analysis.
49
+ For each metabolic gene, we computed its PCA score defined as the sum of absolute values of the loadings of this gene in the top PCs
50
+ that in total account for certain variance to measure variability of gene expression across cells.
51
+ We then sorted the PCA scores of the genes in descending order and applied GSEA analysis to the ranked list of genes to identify metabolic pathways
52
+ enriched in genes with highest variability.
53
+ </p>
54
+ </Tile>
55
+ </ListItem>
56
+ <ListItem>
57
+ <a href="?proc=MetabolicFeatures" class="listitem">MetabolicFeatures</a>
58
+ <Tile>
59
+ <p>Gene set enrichment analysis against the metabolic pathways for comparisons by different groups in different subsets.</p>
60
+ </Tile>
61
+ </ListItem>
62
+ </UnorderedList>
10
63
 
11
- <h{{h+1}}>Metabolic pathways enriched in genes with highest contribution to the metabolic heterogeneities</h{{h+1}}>
12
- <Image src="{{ssdir | joinpaths: 'pathway_heterogeneity.png'}}" />
64
+ <style>
65
+ .listitem {
66
+ font-size: large;
67
+ font-weight: bold;
68
+ margin: 1rem 0 0.5rem 0;
69
+ display: inline-block;
70
+ }
71
+ </style>
13
72
 
14
- {%- endfor -%}
73
+ {%- macro report_job(job, h=1) -%}
74
+ {{ job | render_job: h=h }}
15
75
  {%- endmacro -%}
16
76
 
17
77
  {%- macro head_job(job) -%}
18
- <h1>{{job.in.sobjfile | stem | escape}}</h1>
78
+ <h1>{{job.in | attr: "values" | call | first | stem0 | escape}}</h1>
19
79
  {%- endmacro -%}
20
80
 
21
81
  {{ report_jobs(jobs, head_job, report_job) }}