biopipen 0.17.7__tar.gz → 0.18.0__tar.gz
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-0.17.7 → biopipen-0.18.0}/PKG-INFO +8 -8
- biopipen-0.18.0/biopipen/__init__.py +1 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/filters.py +36 -23
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/delim.py +1 -1
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/scrna.py +132 -49
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/tcr.py +5 -1
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/MarkersFinder.svelte +30 -8
- biopipen-0.18.0/biopipen/reports/scrna/SeuratClusterStats.svelte +82 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/delim/SampleInfo.R +18 -15
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/MarkersFinder.R +58 -2
- biopipen-0.18.0/biopipen/scripts/scrna/SeuratClusterStats-dimplots.R +40 -0
- biopipen-0.18.0/biopipen/scripts/scrna/SeuratClusterStats-features.R +236 -0
- biopipen-0.18.0/biopipen/scripts/scrna/SeuratClusterStats-stats.R +105 -0
- biopipen-0.18.0/biopipen/scripts/scrna/SeuratClusterStats.R +21 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratClustering.R +20 -1
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA.R +9 -5
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/BriseisEncoder.py +2 -2
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/real_data.R +1 -1
- {biopipen-0.17.7 → biopipen-0.18.0}/pyproject.toml +9 -9
- {biopipen-0.17.7 → biopipen-0.18.0}/setup.py +8 -8
- biopipen-0.17.7/biopipen/__init__.py +0 -1
- biopipen-0.17.7/biopipen/reports/scrna/SeuratClusterStats.svelte +0 -127
- biopipen-0.17.7/biopipen/scripts/scrna/SeuratClusterStats.R +0 -535
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/__init__.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/config.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/config.toml +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/defaults.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/proc.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/core/testing.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/__init__.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/bam.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/bcftools.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/bed.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/cnv.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/cnvkit.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/cnvkit_pipeline.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/gene.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/gsea.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/misc.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/plot.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/rnaseq.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/scrna_basic.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/scrna_metabolic_landscape.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/tcgamaf.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/vcf.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/ns/web.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/bam/CNAClinic.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/bam/CNVpytor.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/bam/ControlFREEC.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnv/AneuploidyScore.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnv/AneuploidyScoreSummary.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnv/TMADScoreSummary.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnvkit/CNVkitDiagram.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnvkit/CNVkitHeatmap.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/cnvkit/CNVkitScatter.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/delim/SampleInfo.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/gsea/FGSEA.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/gsea/GSEA.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/CellsDistribution.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/DimPlots.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/GeneExpressionInvistigation.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/MetaMarkers.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/RadarPlots.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/ScFGSEA.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/SeuratMap2Ref.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/SeuratPreparing.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna/TopExpressingGenes.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna_metabolic_landscape/MetabolicFeatures.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayActivity.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/CDR3AAPhyschem.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/CloneResidency.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/Immunarch.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/SampleDiversity.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/TCRClusteringStats.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/TESSA.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/tcr/VJUsage.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/utils/gsea.liq +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/utils/misc.liq +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/vcf/TruvariBenchSummary.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/reports/vcf/TruvariConsistency.svelte +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bam/BamMerge.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bam/BamSplitChroms.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bam/CNAClinic.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bam/CNVpytor.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bam/ControlFREEC.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bcftools/BcftoolsAnnotate.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bcftools/BcftoolsFilter.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bcftools/BcftoolsSort.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bed/Bed2Vcf.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bed/BedConsensus.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bed/BedLiftOver.sh +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/bed/BedtoolsMerge.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnv/AneuploidyScore.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnv/AneuploidyScoreSummary.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnv/TMADScore.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnv/TMADScoreSummary.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitAccess.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitAutobin.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitBatch.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitCall.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitCoverage.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitDiagram.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitFix.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitGuessBaits.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitHeatmap.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitReference.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitScatter.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/CNVkitSegment.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/cnvkit/guess_baits.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/delim/RowsBinder.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/gene/GeneNameConversion.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/gsea/Enrichr.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/gsea/FGSEA.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/gsea/GSEA.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/gsea/PreRank.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/misc/Config2File.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/misc/Str2File.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/plot/Heatmap.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/plot/VennDiagram.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/rnaseq/UnitConversion.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellTypeAnnotation-direct.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellTypeAnnotation-hitype.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellTypeAnnotation-sccatch.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellTypeAnnotation-sctype.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellTypeAnnotation.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/CellsDistribution.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/DimPlots.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ExprImpution-alra.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ExprImpution-rmagic.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ExprImpution-scimpute.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ExprImpution.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/GeneExpressionInvistigation.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/MetaMarkers.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ModuleScoreCalculator.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/RadarPlots.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SCImpute.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/ScFGSEA.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratFilter.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratLoading.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratMap2Ref.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratMetadataMutater.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratPreparing.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratSplit.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/SeuratSubset.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/Subset10X.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/TopExpressingGenes.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/Write10X.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna/sctype.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna_metabolic_landscape/MetabolicFeatures.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna_metabolic_landscape/MetabolicFeaturesIntraSubset.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayActivity.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/scrna_metabolic_landscape/MetabolicPathwayHeterogeneity.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcgamaf/Maf2Vcf.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcgamaf/MafAddChr.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcgamaf/maf2vcf.pl +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Attach2Seurat.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/CDR3AAPhyschem.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/CloneResidency.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/CloneSizeQQPlot.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/GIANA/GIANA.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/GIANA/GIANA4.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/GIANA/Imgt_Human_TRBV.fasta +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/GIANA/query.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-basic.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-clonality.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-diversity.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-geneusage.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-kmer.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-overlap.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-spectratyping.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch-tracking.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/Immunarch2VDJtools.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/ImmunarchFilter.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/ImmunarchLoading.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/ImmunarchSplitIdents.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/SampleDiversity.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TCRClustering.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TCRClusteringStats.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/Atchley_factors.csv +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/MCMC_control.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/TrainedEncoder.h5 +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/fixed_b.csv +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/initialization.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/post_analysis.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/update.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/TESSA_source/utility.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/VJUsage.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/tcr/vdjtools-patch.sh +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/TruvariBench.sh +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/TruvariBenchSummary.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/TruvariConsistency.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/Vcf2Bed.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfAnno.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfDownSample.sh +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfFilter.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfFix.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfFix_utils.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfIndex.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfIntersect.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfLiftOver.sh +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/vcf/VcfSplitSamples.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/web/Download.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/scripts/web/DownloadList.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/__init__.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/gene.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/gene.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/gsea.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/io.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/misc.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/misc.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/mutate_helpers.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/plot.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/reference.py +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/rnaseq.R +0 -0
- {biopipen-0.17.7 → biopipen-0.18.0}/biopipen/utils/vcf.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: biopipen
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Summary: Bioinformatics processes/pipelines that can be run from `pipen run`
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: pwwang
|
|
@@ -13,10 +13,10 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
15
|
Provides-Extra: runinfo
|
|
16
|
-
Requires-Dist: datar[pandas] (>=0.
|
|
17
|
-
Requires-Dist: pipen (>=0.
|
|
18
|
-
Requires-Dist: pipen-board[report] (>=0.
|
|
19
|
-
Requires-Dist: pipen-cli-run (>=0.
|
|
20
|
-
Requires-Dist: pipen-filters (>=0.
|
|
21
|
-
Requires-Dist: pipen-runinfo (>=0.
|
|
22
|
-
Requires-Dist: pipen-verbose (>=0.
|
|
16
|
+
Requires-Dist: datar[pandas] (>=0.15.2,<0.16.0)
|
|
17
|
+
Requires-Dist: pipen (>=0.11,<0.12)
|
|
18
|
+
Requires-Dist: pipen-board[report] (>=0.12,<0.13)
|
|
19
|
+
Requires-Dist: pipen-cli-run (>=0.10,<0.11)
|
|
20
|
+
Requires-Dist: pipen-filters (>=0.9,<0.10)
|
|
21
|
+
Requires-Dist: pipen-runinfo (>=0.3,<0.4) ; extra == "runinfo"
|
|
22
|
+
Requires-Dist: pipen-verbose (>=0.8,<0.9)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.18.0"
|
|
@@ -107,6 +107,8 @@ def r(
|
|
|
107
107
|
ignoreintkey: bool = True,
|
|
108
108
|
todot: str = None,
|
|
109
109
|
sortkeys: bool = False,
|
|
110
|
+
skip: int = 0,
|
|
111
|
+
_i: int = 0,
|
|
110
112
|
) -> str:
|
|
111
113
|
"""Convert a python object into R repr
|
|
112
114
|
|
|
@@ -117,6 +119,7 @@ def r(
|
|
|
117
119
|
>>> {"a": 1, "b": 2} -> list(a = 1, b = 2)
|
|
118
120
|
|
|
119
121
|
Args:
|
|
122
|
+
obj: The object to convert
|
|
120
123
|
ignoreintkey: When keys of a dict are integers, whether we should
|
|
121
124
|
ignore them. For example, when `True`, `{1: 1, 2: 2}` will be
|
|
122
125
|
translated into `"list(1, 2)"`, but `"list(`1` = 1, `2` = 2)"`
|
|
@@ -130,6 +133,10 @@ def r(
|
|
|
130
133
|
But sometimes, you want to keep orginal order, for example,
|
|
131
134
|
arguments passed the `dplyr::mutate` function. Because the later
|
|
132
135
|
arguments can refer to the earlier ones.
|
|
136
|
+
skip: Levels to skip for `todot`. For example, `skip=1` will skip
|
|
137
|
+
the first level of the keys. When `todot` is `"-"`, `skip=1` will
|
|
138
|
+
convert `{"a-b": {"c-d": 1}}` to ``list(`a-b` = list(`c.d` = 1))``
|
|
139
|
+
_i: Current level of the keys. Used internally
|
|
133
140
|
|
|
134
141
|
Returns:
|
|
135
142
|
Then converted string representation of the object
|
|
@@ -165,31 +172,37 @@ def r(
|
|
|
165
172
|
wrapper = "c"
|
|
166
173
|
return "{}({})".format(
|
|
167
174
|
wrapper,
|
|
168
|
-
",".join(
|
|
175
|
+
", ".join(
|
|
176
|
+
[r(i, ignoreintkey, todot, sortkeys, skip, _i + 1) for i in obj]
|
|
177
|
+
),
|
|
169
178
|
)
|
|
170
179
|
if isinstance(obj, dict):
|
|
171
180
|
# list allow repeated names
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
181
|
+
items = []
|
|
182
|
+
keys = obj.keys()
|
|
183
|
+
if sortkeys:
|
|
184
|
+
keys = sorted(keys)
|
|
185
|
+
for k in keys:
|
|
186
|
+
v = obj[k]
|
|
187
|
+
if isinstance(k, int) and not ignoreintkey:
|
|
188
|
+
item = (
|
|
189
|
+
f"`{k}`={r(v, ignoreintkey, todot, sortkeys, skip, _i + 1)}"
|
|
190
|
+
)
|
|
191
|
+
elif isinstance(k, int) and ignoreintkey:
|
|
192
|
+
item = r(v, ignoreintkey, todot, sortkeys, skip, _i + 1)
|
|
193
|
+
else:
|
|
194
|
+
key = str(k)
|
|
195
|
+
if todot and _i >= skip:
|
|
196
|
+
key = key.replace(todot, ".")
|
|
197
|
+
item = (
|
|
198
|
+
f"`{key}`="
|
|
199
|
+
f"{r(v, ignoreintkey, todot, sortkeys, skip, _i + 1)}"
|
|
200
|
+
)
|
|
201
|
+
items.append(item)
|
|
202
|
+
|
|
203
|
+
return f"list({', '.join(items)})"
|
|
204
|
+
|
|
193
205
|
if isinstance(obj, Namespace):
|
|
194
|
-
return r(vars(obj), ignoreintkey, todot, sortkeys)
|
|
206
|
+
return r(vars(obj), ignoreintkey, todot, sortkeys, skip, _i)
|
|
207
|
+
|
|
195
208
|
return repr(obj)
|
|
@@ -82,7 +82,7 @@ class SampleInfo(Proc):
|
|
|
82
82
|
- on: The column name in the data for the stats.
|
|
83
83
|
Default is `Sample`.
|
|
84
84
|
If there are duplicated values in `on`, and you want to do stats
|
|
85
|
-
on the unique values, you can use `distinct:` prefix.
|
|
85
|
+
on the unique values, you can use `distinct:`/`unique:` prefix.
|
|
86
86
|
For example, `distinct:Patient` will keep only the first
|
|
87
87
|
duplicated value in `Patient` and do stats on the unique values.
|
|
88
88
|
- group: The column name in the data for the group ids.
|
|
@@ -253,50 +253,88 @@ class SeuratClusterStats(Proc):
|
|
|
253
253
|
outdir: The output directory
|
|
254
254
|
|
|
255
255
|
Envs:
|
|
256
|
+
stats_defaults (ns): The default parameters for `stats`.
|
|
257
|
+
The parameters from the cases can overwrite the default parameters.
|
|
258
|
+
- frac (flag): Whether to output the fraction of cells instead of number.
|
|
259
|
+
- pie (flag): Also output a pie chart?
|
|
260
|
+
- table (flag): Whether to output a table (in tab-delimited format) and in the report.
|
|
261
|
+
- ident: The column name in metadata to use as the identity.
|
|
262
|
+
- group-by: The column name in metadata to group the cells.
|
|
263
|
+
Does NOT support for pie charts.
|
|
264
|
+
- split-by: The column name in metadata to split the cells into
|
|
265
|
+
different plots.
|
|
266
|
+
- subset: An expression to subset the cells, will be passed to
|
|
267
|
+
`dplyr::filter()` on metadata.
|
|
268
|
+
- devpars (ns): The device parameters for the plots.
|
|
269
|
+
- res (type=int): The resolution of the plots.
|
|
270
|
+
- height (type=int): The height of the plots.
|
|
271
|
+
- width (type=int): The width of the plots.
|
|
256
272
|
stats (type=json): The number/fraction of cells to plot.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
`
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
273
|
+
Keys are the names of the plots and values are the dicts inherited from `env.stats_defaults`.
|
|
274
|
+
Here are some examples -
|
|
275
|
+
>>> {
|
|
276
|
+
>>> "nCells_All": {},
|
|
277
|
+
>>> "nCells_Sample": {"kind": "num", "group-by": "Sample"},
|
|
278
|
+
>>> "fracCells_Sample": {"kind": "frac", "group-by": "Sample"},
|
|
279
|
+
>>> }
|
|
280
|
+
features_defaults (ns): The default parameters for `features`.
|
|
281
|
+
- features: The features to plot.
|
|
282
|
+
It can be either a string with comma separated features, a list of features, a file path with `file://` prefix with features
|
|
283
|
+
(one per line), or an integer to use the top N features from `VariantFeatures(srtobj)`.
|
|
284
|
+
- ident: The column name in metadata to use as the identity.
|
|
285
|
+
- subset: An expression to subset the cells, will be passed to `tidyrseurat::filter()`.
|
|
286
|
+
- devpars (ns): The device parameters for the plots. Does not work for `table`.
|
|
287
|
+
- res (type=int): The resolution of the plots.
|
|
288
|
+
- height (type=int): The height of the plots.
|
|
289
|
+
- width (type=int): The width of the plots.
|
|
290
|
+
- plus: The extra elements to add to the `ggplot` object. Does not work for `table`.
|
|
291
|
+
- group-by: Group cells in different ways (for example, orig.ident). Works for `ridge`, `vln`, and `dot`.
|
|
292
|
+
It also works for `feature` as `shape.by` being passed to [`Seurat::FeaturePlot`](https://satijalab.org/seurat/reference/featureplot).
|
|
293
|
+
- split-by: The column name in metadata to split the cells into different plots.
|
|
294
|
+
It works for `vln`, `feature`, and `dot`.
|
|
295
|
+
- assay: The assay to use.
|
|
296
|
+
- slot: The slot to use.
|
|
297
|
+
- section: The section to put the plot in the report.
|
|
298
|
+
If not specified, the case title will be used.
|
|
299
|
+
- ncol: The number of columns for the plots.
|
|
300
|
+
- kind (choice): The kind of the plot or table.
|
|
301
|
+
- ridge: Use `Seurat::RidgePlot`.
|
|
302
|
+
- ridgeplot: Same as `ridge`.
|
|
303
|
+
- vln: Use `Seurat::VlnPlot`.
|
|
304
|
+
- vlnplot: Same as `vln`.
|
|
305
|
+
- violin: Same as `vln`.
|
|
306
|
+
- violinplot: Same as `vln`.
|
|
307
|
+
- feature: Use `Seurat::FeaturePlot`.
|
|
308
|
+
- featureplot: Same as `feature`.
|
|
309
|
+
- dot: Use `Seurat::DotPlot`.
|
|
310
|
+
- dotplot: Same as `dot`.
|
|
311
|
+
- heatmap: Use `Seurat::DoHeatmap`.
|
|
312
|
+
You can specify `average=True` to plot on the average of the expressions.
|
|
313
|
+
- table: The table for the features, only gene expressions are supported.
|
|
314
|
+
(supported keys: ident, subset, and features).
|
|
315
|
+
features (type=json): The plots for features, include gene expressions, and columns from metadata.
|
|
316
|
+
Keys are the titles of the cases and values are the dicts inherited from `env.features_defaults`. It can also have other parameters from
|
|
317
|
+
each Seurat function used by `kind`. Note that for argument name with `.`, you should use `-` instead.
|
|
318
|
+
dimplots_defaults (ns): The default parameters for `dimplots`.
|
|
319
|
+
- ident: The column name in metadata to use as the identity.
|
|
320
|
+
- group-by: Same as `ident`. How the points are colored.
|
|
321
|
+
- split-by: The column name in metadata to split the cells into different plots.
|
|
322
|
+
- shape-by: The column name in metadata to use as the shape.
|
|
323
|
+
- devpars (ns): The device parameters for the plots.
|
|
324
|
+
- res (type=int): The resolution of the plots.
|
|
325
|
+
- height (type=int): The height of the plots.
|
|
326
|
+
- width (type=int): The width of the plots.
|
|
327
|
+
- reduction (choice): Which dimensionality reduction to use.
|
|
328
|
+
- dim: Use `Seurat::DimPlot`.
|
|
329
|
+
First searches for `umap`, then `tsne`, then `pca`.
|
|
330
|
+
- auto: Same as `dim`
|
|
331
|
+
- umap: Use `Seurat::UMAPPlot`.
|
|
332
|
+
- tsne: Use `Seurat::TSNEPlot`.
|
|
333
|
+
- pca: Use `Seurat::PCAPlot`.
|
|
334
|
+
- <more>: See <https://satijalab.org/seurat/reference/dimplot>
|
|
293
335
|
dimplots (type=json): The dimensional reduction plots.
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
for the plots. `devpars` is a dictionary with keys `res`,
|
|
297
|
-
`height` and `width` to specify the resolution, height and
|
|
298
|
-
width of the plot. The hyphen (`-`) in the keys will be replaced
|
|
299
|
-
by `.`.
|
|
336
|
+
Keys are the titles of the plots and values are the dicts inherited from `env.dimplots_defaults`. It can also have other parameters from
|
|
337
|
+
[`Seurat::DimPlot`](https://satijalab.org/seurat/reference/dimplot).
|
|
300
338
|
|
|
301
339
|
Requires:
|
|
302
340
|
r-seurat:
|
|
@@ -306,17 +344,55 @@ class SeuratClusterStats(Proc):
|
|
|
306
344
|
output = "outdir:dir:{{in.srtobj | stem}}.cluster_stats"
|
|
307
345
|
lang = config.lang.rscript
|
|
308
346
|
envs = {
|
|
347
|
+
"stats_defaults": {
|
|
348
|
+
"frac": False,
|
|
349
|
+
"pie": False,
|
|
350
|
+
"table": False,
|
|
351
|
+
"ident": "seurat_clusters",
|
|
352
|
+
"group-by": None,
|
|
353
|
+
"split-by": None,
|
|
354
|
+
"subset": None,
|
|
355
|
+
"devpars": {"res": 100, "height": 800, "width": 1000},
|
|
356
|
+
},
|
|
309
357
|
"stats": {
|
|
310
|
-
"
|
|
311
|
-
|
|
312
|
-
|
|
358
|
+
"Number of cells in each cluster": {
|
|
359
|
+
"pie": True,
|
|
360
|
+
},
|
|
361
|
+
"Number of cells in each cluster by Sample": {
|
|
362
|
+
"group-by": "Sample",
|
|
363
|
+
"table": True,
|
|
364
|
+
"frac": True,
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
"features_defaults": {
|
|
368
|
+
"features": None,
|
|
369
|
+
"ident": "seurat_clusters",
|
|
370
|
+
"subset": None,
|
|
371
|
+
"devpars": {"res": 100},
|
|
372
|
+
"plus": None,
|
|
373
|
+
"group-by": None,
|
|
374
|
+
"split-by": None,
|
|
375
|
+
"assay": None,
|
|
376
|
+
"section": None,
|
|
377
|
+
"slot": None,
|
|
378
|
+
"kind": None,
|
|
379
|
+
"ncol": 2,
|
|
313
380
|
},
|
|
314
381
|
"features": {},
|
|
382
|
+
"dimplots_defaults": {
|
|
383
|
+
"ident": "seurat_clusters",
|
|
384
|
+
"group-by": None,
|
|
385
|
+
"split-by": None,
|
|
386
|
+
"shape-by": None,
|
|
387
|
+
"reduction": "dim",
|
|
388
|
+
"devpars": {"res": 100, "height": 800, "width": 1000},
|
|
389
|
+
},
|
|
315
390
|
"dimplots": {
|
|
316
|
-
"
|
|
317
|
-
"
|
|
318
|
-
"
|
|
319
|
-
|
|
391
|
+
"Dimensional reduction plot": {
|
|
392
|
+
"label": True,
|
|
393
|
+
"label-box": True,
|
|
394
|
+
"repel": True,
|
|
395
|
+
},
|
|
320
396
|
},
|
|
321
397
|
}
|
|
322
398
|
script = "file://../scripts/scrna/SeuratClusterStats.R"
|
|
@@ -691,6 +767,12 @@ class MarkersFinder(Proc):
|
|
|
691
767
|
`p_val_adj`. For example, `"p_val_adj < 0.05 & abs(avg_log2FC) > 1"`
|
|
692
768
|
to select markers with adjusted p-value < 0.05 and absolute log2
|
|
693
769
|
fold change > 1.
|
|
770
|
+
volcano_genes (type=auto): The genes to label in the volcano plot if they are
|
|
771
|
+
significant markers.
|
|
772
|
+
If `True`, all significant markers will be labeled. If `False`, no
|
|
773
|
+
genes will be labeled. Otherwise, specify the genes to label.
|
|
774
|
+
It could be either a string with comma separated genes, or a list
|
|
775
|
+
of genes.
|
|
694
776
|
section: The section name for the report.
|
|
695
777
|
Worked only when `each` is not specified and `ident-2` is specified.
|
|
696
778
|
Otherwise, the section name will be constructed from `each` and
|
|
@@ -728,6 +810,7 @@ class MarkersFinder(Proc):
|
|
|
728
810
|
"KEGG_2021_Human",
|
|
729
811
|
],
|
|
730
812
|
"sigmarkers": "p_val_adj < 0.05",
|
|
813
|
+
"volcano_genes": True,
|
|
731
814
|
"cases": {},
|
|
732
815
|
}
|
|
733
816
|
order = 5
|
|
@@ -1126,10 +1126,13 @@ class TESSA(Proc):
|
|
|
1126
1126
|
within_sample (flag): Whether the TCR networks are constructed only
|
|
1127
1127
|
within TCRs from the same sample/patient (True) or with all the
|
|
1128
1128
|
TCRs in the meta data matrix (False).
|
|
1129
|
+
assay: Which assay to use to extract the expression matrix.
|
|
1130
|
+
Only works if `in.srtobj` is an RDS file of a Seurat object and
|
|
1131
|
+
`envs.reduction` is not provided.
|
|
1129
1132
|
predefined_b (flag): Whether use the predefined `b` or not.
|
|
1130
1133
|
Please check the paper of tessa for more details about the b vector.
|
|
1131
1134
|
If True, the tessa will not update b in the MCMC iterations.
|
|
1132
|
-
max_iter (int): The maximum number of iterations for MCMC.
|
|
1135
|
+
max_iter (type=int): The maximum number of iterations for MCMC.
|
|
1133
1136
|
"""
|
|
1134
1137
|
input = "immdata:file,srtobj:file"
|
|
1135
1138
|
output = """outfile:file:
|
|
@@ -1143,6 +1146,7 @@ class TESSA(Proc):
|
|
|
1143
1146
|
envs = {
|
|
1144
1147
|
"python": config.lang.python,
|
|
1145
1148
|
"prefix": "{Sample}_",
|
|
1149
|
+
"assay": "RNA",
|
|
1146
1150
|
"within_sample": False,
|
|
1147
1151
|
"predefined_b": False,
|
|
1148
1152
|
"max_iter": 1000,
|
|
@@ -25,10 +25,21 @@
|
|
|
25
25
|
/>
|
|
26
26
|
{%- else -%}
|
|
27
27
|
<h{{h+1}}>Markers</h{{h+1}}>
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
<Tabs>
|
|
29
|
+
<Tab label="Markers" />
|
|
30
|
+
<Tab label="Volcano Plot" />
|
|
31
|
+
<svelte:fragment slot="content">
|
|
32
|
+
<TabContent>
|
|
33
|
+
<DataTable
|
|
34
|
+
src={{ casedir | joinpaths: "markers.txt" | quote }}
|
|
35
|
+
data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
|
|
36
|
+
/>
|
|
37
|
+
</TabContent>
|
|
38
|
+
<TabContent>
|
|
39
|
+
<Image src={{ casedir | joinpaths: "volcano.png" | quote }} />
|
|
40
|
+
</TabContent>
|
|
41
|
+
</svelte:fragment>
|
|
42
|
+
</Tabs>
|
|
32
43
|
|
|
33
44
|
<h{{h+1}}>Enrichment analysis</h{{h+1}}>
|
|
34
45
|
{{ enrichr_report(casedir) }}
|
|
@@ -49,10 +60,21 @@
|
|
|
49
60
|
/>
|
|
50
61
|
{%- else -%}
|
|
51
62
|
<h{{h+2}}>Markers</h{{h+2}}>
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
<Tabs>
|
|
64
|
+
<Tab label="Markers" />
|
|
65
|
+
<Tab label="Volcano Plot" />
|
|
66
|
+
<svelte:fragment slot="content">
|
|
67
|
+
<TabContent>
|
|
68
|
+
<DataTable
|
|
69
|
+
src={{ casedir | joinpaths: "markers.txt" | quote }}
|
|
70
|
+
data={ {{ casedir | joinpaths: "markers.txt" | datatable: sep="\t", nrows=100 }} }
|
|
71
|
+
/>
|
|
72
|
+
</TabContent>
|
|
73
|
+
<TabContent>
|
|
74
|
+
<Image src={{ casedir | joinpaths: "volcano.png" | quote }} />
|
|
75
|
+
</TabContent>
|
|
76
|
+
</svelte:fragment>
|
|
77
|
+
</Tabs>
|
|
56
78
|
|
|
57
79
|
<h{{h+2}}>Enrichment analysis</h{{h+2}}>
|
|
58
80
|
{{ enrichr_report(casedir) }}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{% from "utils/misc.liq" import report_jobs, table_of_images -%}
|
|
2
|
+
{% from_ os import path %}
|
|
3
|
+
<script>
|
|
4
|
+
import { DataTable, Image } from "$libs";
|
|
5
|
+
import { Tabs, Tab, TabContent } from "$ccs";
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
{%- macro report_job(job, h=1) -%}
|
|
9
|
+
{%- set stats_reports_file = job.out.outdir | joinpaths: "stats", "report_toc.json" -%}
|
|
10
|
+
{%- set features_reports_file = job.out.outdir | joinpaths: "features", "report_toc.json" -%}
|
|
11
|
+
{%- set dimplots_reports_file = job.out.outdir | joinpaths: "dimplots", "report_toc.json" -%}
|
|
12
|
+
|
|
13
|
+
{%- if stats_reports_file | exists -%}
|
|
14
|
+
{%- set stats = stats_reports_file | config: "json" -%}
|
|
15
|
+
{% for key, value in stats.items() -%}
|
|
16
|
+
<h{{h}}>{{key | escape}}</h{{h}}>
|
|
17
|
+
<Tabs>
|
|
18
|
+
{% if 'bar' in value -%}
|
|
19
|
+
<Tab label="Bar plot" />
|
|
20
|
+
{% endif -%}
|
|
21
|
+
{% if 'pie' in value -%}
|
|
22
|
+
<Tab label="Pie chart" />
|
|
23
|
+
{% endif -%}
|
|
24
|
+
{% if 'table' in value -%}
|
|
25
|
+
<Tab label="Table" />
|
|
26
|
+
{% endif -%}
|
|
27
|
+
<svelte:fragment slot="content">
|
|
28
|
+
{% if 'bar' in value -%}
|
|
29
|
+
<TabContent>
|
|
30
|
+
<Image src="{{job.out.outdir}}/stats/{{value.bar}}" />
|
|
31
|
+
</TabContent>
|
|
32
|
+
{% endif -%}
|
|
33
|
+
{% if 'pie' in value -%}
|
|
34
|
+
<TabContent>
|
|
35
|
+
<Image src="{{job.out.outdir}}/stats/{{value.pie}}" />
|
|
36
|
+
</TabContent>
|
|
37
|
+
{% endif -%}
|
|
38
|
+
{% if 'table' in value -%}
|
|
39
|
+
<TabContent>
|
|
40
|
+
<DataTable src="{{job.out.outdir}}/stats/{{value.table}}"
|
|
41
|
+
data={ {{job.out.outdir | joinpaths: "stats", value.table | datatable: sep="\t", nrows=100 }} }
|
|
42
|
+
/>
|
|
43
|
+
</TabContent>
|
|
44
|
+
{% endif -%}
|
|
45
|
+
</svelte:fragment>
|
|
46
|
+
</Tabs>
|
|
47
|
+
{%- endfor -%}
|
|
48
|
+
{%- endif -%}
|
|
49
|
+
|
|
50
|
+
{%- if features_reports_file | exists -%}
|
|
51
|
+
{%- set features = features_reports_file | config: "json" %}
|
|
52
|
+
{% for key, value in features.items() -%}
|
|
53
|
+
<h{{h}}>{{key | escape}}</h{{h}}>
|
|
54
|
+
{% for val in value -%}
|
|
55
|
+
{% if "name" in val -%}
|
|
56
|
+
<h{{h+1}}>{{val.name | escape}}</h{{h+1}}>
|
|
57
|
+
{%- endif -%}
|
|
58
|
+
{% if val.kind == "table" -%}
|
|
59
|
+
<DataTable src="{{job.out.outdir}}/features/{{val.file}}"
|
|
60
|
+
data={ {{job.out.outdir | joinpaths: "features", val.file | datatable: sep="\t", nrows=100 }} }
|
|
61
|
+
/>
|
|
62
|
+
{% else -%}
|
|
63
|
+
<Image src="{{job.out.outdir}}/features/{{val.file}}" />
|
|
64
|
+
{% endif -%}
|
|
65
|
+
{%- endfor -%}
|
|
66
|
+
{%- endfor -%}
|
|
67
|
+
{%- endif -%}
|
|
68
|
+
|
|
69
|
+
{%- if dimplots_reports_file | exists -%}
|
|
70
|
+
{%- set dimplots = dimplots_reports_file | config: "json" %}
|
|
71
|
+
{% for key, value in dimplots.items() -%}
|
|
72
|
+
<h{{h}}>{{key | escape}}</h{{h}}>
|
|
73
|
+
<Image src="{{job.out.outdir}}/dimplots/{{value}}" />
|
|
74
|
+
{%- endfor -%}
|
|
75
|
+
{%- endif -%}
|
|
76
|
+
{%- endmacro -%}
|
|
77
|
+
|
|
78
|
+
{%- macro head_job(job) -%}
|
|
79
|
+
<h1>{{job.in.srtobj | stem}}</h1>
|
|
80
|
+
{%- endmacro -%}
|
|
81
|
+
|
|
82
|
+
{{ report_jobs(jobs, head_job, report_job) }}
|
|
@@ -5,6 +5,7 @@ library(dplyr)
|
|
|
5
5
|
library(ggplot2)
|
|
6
6
|
library(ggprism)
|
|
7
7
|
library(ggsci)
|
|
8
|
+
library(ggrepel)
|
|
8
9
|
|
|
9
10
|
infile <- {{in.infile | r}}
|
|
10
11
|
outfile <- {{out.outfile | r}}
|
|
@@ -39,8 +40,9 @@ for (name in names(stats)) {
|
|
|
39
40
|
plotfile <- file.path(outdir, paste0(name, ".png"))
|
|
40
41
|
|
|
41
42
|
is_continuous <- FALSE
|
|
42
|
-
if (startsWith(stat$on, "distinct:")) {
|
|
43
|
-
stat$on <-
|
|
43
|
+
if (startsWith(stat$on, "distinct:") || startsWith(stat$on, "unique:")) {
|
|
44
|
+
stat$on <- gsub("distinct:", "", stat$on)
|
|
45
|
+
stat$on <- gsub("unique:", "", stat$on)
|
|
44
46
|
data <- mutdata %>% distinct(!!sym(stat$on), .keep_all = TRUE)
|
|
45
47
|
} else {
|
|
46
48
|
data <- mutdata
|
|
@@ -89,14 +91,14 @@ for (name in names(stats)) {
|
|
|
89
91
|
if (stat$plot == "boxplot" || stat$plot == "box") {
|
|
90
92
|
p <- ggplot(data, aes(x=!!group, y=!!sym(stat$on), fill=!!group)) +
|
|
91
93
|
geom_boxplot(position = "dodge") +
|
|
92
|
-
scale_fill_ucscgb() +
|
|
94
|
+
scale_fill_ucscgb(alpha = .8) +
|
|
93
95
|
xlab("")
|
|
94
96
|
} else if (stat$plot == "violin" ||
|
|
95
97
|
stat$plot == "violinplot" ||
|
|
96
98
|
stat$plot == "vlnplot") {
|
|
97
99
|
p <- ggplot(data, aes(x = !!group, y = !!sym(stat$on), fill=!!group)) +
|
|
98
100
|
geom_violin(position = "dodge") +
|
|
99
|
-
scale_fill_ucscgb() +
|
|
101
|
+
scale_fill_ucscgb(alpha = .8) +
|
|
100
102
|
xlab("")
|
|
101
103
|
} else if (
|
|
102
104
|
(grepl("violin", stat$plot) || grepl("vln", stat$plot)) &&
|
|
@@ -105,12 +107,12 @@ for (name in names(stats)) {
|
|
|
105
107
|
p <- ggplot(data, aes(x = !!group, y = !!sym(stat$on), fill = !!group)) +
|
|
106
108
|
geom_violin(position = "dodge") +
|
|
107
109
|
geom_boxplot(width = 0.1, position = position_dodge(0.9), fill="white") +
|
|
108
|
-
scale_fill_ucscgb() +
|
|
110
|
+
scale_fill_ucscgb(alpha = .8) +
|
|
109
111
|
xlab("")
|
|
110
112
|
} else if (stat$plot == "histogram" || stat$plot == "hist") {
|
|
111
113
|
p <- ggplot(data, aes(x = !!sym(stat$on), fill = !!group)) +
|
|
112
114
|
geom_histogram(bins = 10, position = "dodge", alpha = 0.8, color = "white") +
|
|
113
|
-
scale_fill_ucscgb()
|
|
115
|
+
scale_fill_ucscgb(alpha = .8)
|
|
114
116
|
} else if (stat$plot == "pie" || stat$plot == "piechart") {
|
|
115
117
|
if (is.null(stat$each)) {
|
|
116
118
|
data <- data %>% distinct(!!group, .keep_all = TRUE)
|
|
@@ -120,19 +122,20 @@ for (name in names(stats)) {
|
|
|
120
122
|
group_by(!!sym(stat$each))
|
|
121
123
|
}
|
|
122
124
|
p <- ggplot(
|
|
123
|
-
data %>%
|
|
124
|
-
|
|
125
|
-
..prop = !!sym(count_on) / sum(!!sym(count_on)),
|
|
126
|
-
..ypos = (cumsum(..prop) - 0.5 * ..prop) * sum(!!sym(count_on))
|
|
127
|
-
),
|
|
128
|
-
aes(x = "", y = !!sym(count_on), fill = !!group)
|
|
125
|
+
data %>% arrange(!!group),
|
|
126
|
+
aes(x = "", y = !!sym(count_on), fill = rev(!!group), label = !!sym(count_on))
|
|
129
127
|
) +
|
|
130
128
|
geom_bar(stat="identity", width=1, color="white") +
|
|
131
129
|
coord_polar("y", start = 0) +
|
|
132
130
|
theme_void() +
|
|
133
131
|
theme(plot.title = element_text(hjust = 0.5)) +
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
geom_label_repel(
|
|
133
|
+
position = position_stack(vjust = 0.5),
|
|
134
|
+
color="#333333",
|
|
135
|
+
fill="#EEEEEE",
|
|
136
|
+
size=4
|
|
137
|
+
) +
|
|
138
|
+
scale_fill_ucscgb(alpha = .8, name = group) +
|
|
136
139
|
ggtitle(paste0("# ", stat$on))
|
|
137
140
|
} else if (stat$plot == "bar" || stat$plot == "barplot") {
|
|
138
141
|
if (is.null(stat$each)) {
|
|
@@ -144,7 +147,7 @@ for (name in names(stats)) {
|
|
|
144
147
|
data,
|
|
145
148
|
aes(x = !!group, y = !!sym(count_on), fill = !!group)) +
|
|
146
149
|
geom_bar(stat = "identity") +
|
|
147
|
-
scale_fill_ucscgb() +
|
|
150
|
+
scale_fill_ucscgb(alpha = .8) +
|
|
148
151
|
ylab(paste0("# ", stat$on))
|
|
149
152
|
} else {
|
|
150
153
|
stop("Unknown plot type: ", stat$plot)
|