{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Vignette\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This vignette extends the [vignette for the R-version of tximport](https://bioconductor.org/packages/release/bioc/vignettes/tximport/inst/doc/tximport.html). If you are unfamiliar with `tximport` or curious about the motivation behind it, please check it out.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are looking for a full-featured end-to-end workflow for Pythonic bulk RNA-sequencing analysis, check out our [Snakemake workflow](https://github.com/complextissue/snakemake-bulk-rna-seq-workflow/) based on pytximport.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating your transcript to gene map\n", "\n", "Here, we will show you how to generate a transcript-to-gene mapping based on the Ensembl reference or a gene transfer format file.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Build it from Ensembl\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example requires `pybiomart` which is installed together with `pytximport`. Providing a host is optional, for a list of available archives that correspond to Ensembl releases, please consult [https://www.ensembl.org/info/website/archives/index.html](https://www.ensembl.org/info/website/archives/index.html). By default, the transcript ids will be mapped to the `ensembl_gene_id` field. If you prefer to use gene names, choose `external_gene_name`. Be aware that not all proposed transcripts have been assigned a name yet and thus will not be included if you use gene names. The first time you run this function, it may take a few seconds to download the data.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idgene_id
0ENST00000387314MT-TF
1ENST00000389680MT-RNR1
2ENST00000387342MT-TV
3ENST00000387347MT-RNR2
4ENST00000386347MT-TL1
\n", "
" ], "text/plain": [ " transcript_id gene_id\n", "0 ENST00000387314 MT-TF\n", "1 ENST00000389680 MT-RNR1\n", "2 ENST00000387342 MT-TV\n", "3 ENST00000387347 MT-RNR2\n", "4 ENST00000386347 MT-TL1" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pytximport.utils import create_transcript_gene_map\n", "\n", "transcript_gene_map_human = create_transcript_gene_map(\n", " species=\"human\",\n", " target_field=\"external_gene_name\",\n", ")\n", "transcript_gene_map_human.head(5)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idgene_id
0ENSMUST00000082387ENSMUSG00000064336
1ENSMUST00000082388ENSMUSG00000064337
2ENSMUST00000082389ENSMUSG00000064338
3ENSMUST00000082390ENSMUSG00000064339
4ENSMUST00000082391ENSMUSG00000064340
\n", "
" ], "text/plain": [ " transcript_id gene_id\n", "0 ENSMUST00000082387 ENSMUSG00000064336\n", "1 ENSMUST00000082388 ENSMUSG00000064337\n", "2 ENSMUST00000082389 ENSMUSG00000064338\n", "3 ENSMUST00000082390 ENSMUSG00000064339\n", "4 ENSMUST00000082391 ENSMUSG00000064340" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transcript_gene_map_mouse = create_transcript_gene_map(species=\"mouse\")\n", "transcript_gene_map_mouse.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also provide a list of mapping targets as the target_field argument. For example, to map transcripts to both gene names and gene biotypes, you can use the following code:\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idgene_idgene_biotype
94ENST00000632454LINC01784lncRNA
118ENST00000707308LINC02688lncRNA
119ENST00000707309LINC02688lncRNA
164ENST00000631340LINC02735lncRNA
181ENST00000672718AGAP12PlncRNA
\n", "
" ], "text/plain": [ " transcript_id gene_id gene_biotype\n", "94 ENST00000632454 LINC01784 lncRNA\n", "118 ENST00000707308 LINC02688 lncRNA\n", "119 ENST00000707309 LINC02688 lncRNA\n", "164 ENST00000631340 LINC02735 lncRNA\n", "181 ENST00000672718 AGAP12P lncRNA" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transcript_gene_map_human_biotype = create_transcript_gene_map(\n", " species=\"human\",\n", " target_field=[\"external_gene_name\", \"gene_biotype\"],\n", ")\n", "transcript_gene_map_human_biotype = transcript_gene_map_human_biotype[\n", " transcript_gene_map_human_biotype[\"gene_biotype\"] == \"lncRNA\"\n", "]\n", "transcript_gene_map_human_biotype.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Use a gene transfer format file\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you already have an annotation file in .gtf format (e.g. from the GENCODE or Ensembl references), you can use the `create_transcript_gene_map_from_annotation` function contained in `pytximport.utils` to generate a transcript to gene map. Using an annotation file is considered best practice, as it ensures that your annotation and alignment reference are the same if you download them from the same source, e.g., an Ensembl release.\n", "\n", "Set `target_field` to `gene_name` to map transcript ids to gene names instead of gene ids. If the transcript does not have a corresponding gene name in the annotation file, it will be mapped to the gene id.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idgene_id
0ENST00000424215ENSG00000228037
1ENST00000511072PRDM16
2ENST00000607632PRDM16
3ENST00000378391PRDM16
4ENST00000514189PRDM16
\n", "
" ], "text/plain": [ " transcript_id gene_id\n", "0 ENST00000424215 ENSG00000228037\n", "1 ENST00000511072 PRDM16\n", "2 ENST00000607632 PRDM16\n", "3 ENST00000378391 PRDM16\n", "4 ENST00000514189 PRDM16" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pytximport.utils import create_transcript_gene_map_from_annotation\n", "\n", "transcript_gene_map_from_gtf = create_transcript_gene_map_from_annotation(\n", " \"../../test/data/annotation.gtf\",\n", " target_field=\"gene_name\",\n", ")\n", "transcript_gene_map_from_gtf.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Map transcript names to gene names\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also optionally map transcript names to either gene names or gene ids if your data requires it.\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_namegene_id
0MT-TF-201MT-TF
1MT-RNR1-201MT-RNR1
2MT-TV-201MT-TV
3MT-RNR2-201MT-RNR2
4MT-TL1-201MT-TL1
\n", "
" ], "text/plain": [ " transcript_name gene_id\n", "0 MT-TF-201 MT-TF\n", "1 MT-RNR1-201 MT-RNR1\n", "2 MT-TV-201 MT-TV\n", "3 MT-RNR2-201 MT-RNR2\n", "4 MT-TL1-201 MT-TL1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transcript_name_gene_map_human = create_transcript_gene_map(\n", " \"human\",\n", " source_field=\"external_transcript_name\",\n", " target_field=\"external_gene_name\",\n", ")\n", "transcript_name_gene_map_human.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing transcript quantification files\n", "\n", "You can easily import quantification files from tools like `salmon` with `pytximport`.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from pytximport import tximport" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 2it [00:00, 101.58it/s]\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 28kB\n",
       "Dimensions:    (gene_id: 496, file: 2, file_path: 2)\n",
       "Coordinates:\n",
       "  * gene_id    (gene_id) object 4kB 'ENSMUSG00000083355' ... 'ENSMUSG00000067...\n",
       "  * file_path  (file_path) <U43 344B '../../test/data/salmon/multiple/Sample_...\n",
       "Dimensions without coordinates: file\n",
       "Data variables:\n",
       "    abundance  (gene_id, file) float64 8kB 0.08291 0.0 0.09854 ... 0.4618 0.0\n",
       "    counts     (gene_id, file) float64 8kB 1.005 0.0 1.086 ... 1.957 6.208 0.0\n",
       "    length     (gene_id, file) float64 8kB 509.1 509.1 445.8 ... 564.6 564.6
" ], "text/plain": [ " Size: 28kB\n", "Dimensions: (gene_id: 496, file: 2, file_path: 2)\n", "Coordinates:\n", " * gene_id (gene_id) object 4kB 'ENSMUSG00000083355' ... 'ENSMUSG00000067...\n", " * file_path (file_path) \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idtranscript_name
0ENST00000387314MT-TF-201
1ENST00000389680MT-RNR1-201
2ENST00000387342MT-TV-201
3ENST00000387347MT-RNR2-201
4ENST00000386347MT-TL1-201
\n", "" ], "text/plain": [ " transcript_id transcript_name\n", "0 ENST00000387314 MT-TF-201\n", "1 ENST00000389680 MT-RNR1-201\n", "2 ENST00000387342 MT-TV-201\n", "3 ENST00000387347 MT-RNR2-201\n", "4 ENST00000386347 MT-TL1-201" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transcript_name_map_human = create_transcript_gene_map(\"human\", target_field=\"external_transcript_name\")\n", "transcript_name_map_human.head(5)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
../../test/data/salmon/quant.sf
HOXC8-2014486.940412
UGT3A2-2011307.314695
HOXC9-201886.909534
HOXC4-202749.069369
HOXC12-201544.817685
\n", "
" ], "text/plain": [ " ../../test/data/salmon/quant.sf\n", "HOXC8-201 4486.940412\n", "UGT3A2-201 1307.314695\n", "HOXC9-201 886.909534\n", "HOXC4-202 749.069369\n", "HOXC12-201 544.817685" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "txi = replace_transcript_ids_with_names(txi, transcript_name_map_human)\n", "pd.DataFrame(txi.X.T, index=txi.var.index, columns=txi.obs.index).sort_values(\n", " by=txi.obs.index[0],\n", " ascending=False,\n", ").head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same data summarized to genes:\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 1it [00:00, 231.92it/s]\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
../../test/data/salmon/quant.sf
HOXC84486.940412
UGT3A21506.597257
HOXC41152.964133
HOXC9886.909534
HOXC12544.817685
\n", "
" ], "text/plain": [ " ../../test/data/salmon/quant.sf\n", "HOXC8 4486.940412\n", "UGT3A2 1506.597257\n", "HOXC4 1152.964133\n", "HOXC9 886.909534\n", "HOXC12 544.817685" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "txi = tximport(\n", " [\"../../test/data/salmon/quant.sf\"],\n", " \"salmon\",\n", " transcript_gene_map_human,\n", " counts_from_abundance=\"scaled_tpm\",\n", " output_type=\"xarray\",\n", " return_transcript_data=False,\n", ")\n", "pd.DataFrame(txi[\"counts\"], index=txi.coords[\"gene_id\"], columns=txi.coords[\"file_path\"]).sort_values(\n", " by=txi.coords[\"file_path\"].data[0],\n", " ascending=False,\n", ").head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the top transcript corresponds to the top expressed gene in this case.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exporting AnnData files\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`pytximport` integrates well with other packages from the `scverse` through its `AnnData` export option.\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 1it [00:00, 309.11it/s]\n" ] }, { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 1 × 10\n", " uns: 'counts_from_abundance'\n", " obsm: 'length', 'abundance'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "txi_ad = tximport(\n", " [\"../../test/data/salmon/quant.sf\"],\n", " \"salmon\",\n", " transcript_gene_map_human,\n", " output_type=\"anndata\",\n", " # the output can optionally be saved to a file by uncommenting the following lines\n", " # output_format=\"h5ad\",\n", " # output_path=\"txi_ad.h5ad\",\n", ")\n", "txi_ad" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exporting SummarizedExperiment files\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Experiment support for SummarizedExperiment files is available through the [BiocPy](https://github.com/biocpy) ecosystem (unaffiliated). While not part of the core functionality of `pytximport`, this output type/format may be useful for interacting with other R software packages. The optional dependencies necessary to support SummarizedExperiment files can be installed via `pip install pytximport[biocpy]`.\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 1it [00:00, 291.19it/s]\n", "WARNING:root:Support for the SummarizedExperiment output type is experimental.\n" ] }, { "data": { "text/plain": [ "(['counts'],\n", " Names(['UGT3A2', 'HOXC6', 'HOXC9', 'HOXC11', 'HOXC4', 'HOXC10', 'HOXC13', 'HOXC5', 'HOXC8', 'HOXC12']),\n", " Names(['../../test/data/salmon/quant.sf']))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "txi_se = tximport(\n", " [\"../../test/data/salmon/quant.sf\"],\n", " \"salmon\",\n", " transcript_gene_map_human,\n", " output_type=\"summarizedexperiment\",\n", " # the output can optionally be saved to disk by uncommenting the following lines\n", " # output_format=\"summarizedexperiment\",\n", " # output_path=\"txi_se\",\n", ")\n", "txi_se.assay_names, txi_se.get_row_names(), txi_se.get_column_names()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use from the command line\n", "\n", "You can run `pytximport` from the command line, too. Available options can be viewed via the `pytximport --help` command.\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2025-10-23 23:53:31,869: Starting the import.\n", "Reading quantification files: 1it [00:00, 65.95it/s]\n", "2025-10-23 23:53:32,208: Converting transcript-level expression to gene-level expression.\n", "2025-10-23 23:53:32,269: Matching gene_ids.\n", "2025-10-23 23:53:32,298: Creating gene abundance.\n", "2025-10-23 23:53:32,520: Creating gene counts.\n", "2025-10-23 23:53:32,520: Creating lengths.\n", "2025-10-23 23:53:32,521: Replacing missing lengths.\n", "2025-10-23 23:53:32,528: Creating gene expression dataset.\n", "2025-10-23 23:53:32,530: Saving the gene-level expression to: ../../test/data/salmon/quant.h5ad.\n", "2025-10-23 23:53:32,539: Finished the import in 0.67 seconds.\n" ] } ], "source": [ "!pytximport -i ../../test/data/salmon/quant.sf -t \"salmon\" -m ../../test/data/gencode.v46.metadata.HGNC.tsv -of \"h5ad\" -ow -o ../../test/data/salmon/quant.h5ad" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also create a transcript-to-gene mapping via the `pytximport create-map` command.\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2025-10-23 23:53:33,997: Creating a transcript-to-gene mapping file.\n", "2025-10-23 23:53:34,009: Created the transcript-to-gene mapping file. Saving the file...\n", "2025-10-23 23:53:34,012: Saved the transcript-to-gene mapping file to ./transcript_gene_map.tsv.\n" ] } ], "source": [ "!pytximport create-map -i ../../test/data/annotation.gtf -o ./transcript_gene_map.tsv -ow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inferential replicates\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`pytximport` can handle bootstraping replicates provided by `salmon` and `kallisto`. When `inferential_replicate_transformer` is set, the provided function is used to recalculate the counts and abundances for each sample based on the bootstraps.\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 4it [00:01, 2.11it/s]\n", "WARNING:root:Not all transcripts are present in the mapping. 29618 out of 253181 missing. Removing the missing transcripts.\n" ] }, { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 4 × 41127\n", " uns: 'counts_from_abundance', 'inferential_replicates'\n", " obsm: 'length', 'abundance', 'variance'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = tximport(\n", " [\n", " \"../../test/data/fabry_disease/SRR16504309_wt/\",\n", " \"../../test/data/fabry_disease/SRR16504310_wt/\",\n", " \"../../test/data/fabry_disease/SRR16504311_ko/\",\n", " \"../../test/data/fabry_disease/SRR16504312_ko/\",\n", " ],\n", " \"salmon\",\n", " transcript_gene_map_human,\n", " inferential_replicates=True,\n", " inferential_replicate_variance=True, # whether to calculate the variance of the inferential replicates\n", " inferential_replicate_transformer=lambda x: np.median(x, axis=1),\n", " counts_from_abundance=\"length_scaled_tpm\",\n", ")\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Biotype filtering\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For some use cases, it may be of interest to restrict the results to certain gene_biotypes, e.g., protein-coding only. First, generate a transcript-to-gene mapping from an annotation GTF file that includes the gene biotype.\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transcript_idgene_idgene_biotype
0ENST00000424215ENSG00000228037lncRNA
1ENST00000511072PRDM16protein_coding
2ENST00000607632PRDM16protein_coding
3ENST00000378391PRDM16protein_coding
4ENST00000514189PRDM16protein_coding
\n", "
" ], "text/plain": [ " transcript_id gene_id gene_biotype\n", "0 ENST00000424215 ENSG00000228037 lncRNA\n", "1 ENST00000511072 PRDM16 protein_coding\n", "2 ENST00000607632 PRDM16 protein_coding\n", "3 ENST00000378391 PRDM16 protein_coding\n", "4 ENST00000514189 PRDM16 protein_coding" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transcript_gene_map_from_gtf_with_biotype = create_transcript_gene_map_from_annotation(\n", " \"../../test/data/annotation.gtf\",\n", " target_field=[\"gene_name\", \"gene_biotype\"],\n", ")\n", "transcript_gene_map_from_gtf_with_biotype.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, import quantification files using the transcript-to-gene mapping and filter the counts by biotype.\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Reading quantification files: 1it [00:00, 2.60it/s]\n", "WARNING:root:Not all transcripts are present in the mapping. 253161 out of 253181 missing. Removing the missing transcripts.\n" ] }, { "data": { "text/plain": [ "(12, 4)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pytximport.utils import filter_by_biotype\n", "\n", "result_small = tximport(\n", " [\"../../test/data/fabry_disease/SRR16504309_wt/\"],\n", " \"salmon\",\n", " transcript_gene_map_from_gtf_with_biotype,\n", " counts_from_abundance=\"length_scaled_tpm\",\n", ")\n", "\n", "result_small_filtered = filter_by_biotype(\n", " result_small,\n", " transcript_gene_map_from_gtf_with_biotype,\n", " biotype_filter=[\"protein_coding\"],\n", " # Since the data is already at the gene level, we have to use the gene_id from the transcript_gene_map\n", " id_column=\"gene_id\",\n", ")\n", "\n", "len(result_small.var_names), len(result_small_filtered.var_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Downstream analysis with PyDESeq2\n", "\n", "The output from `pytximport` can easily be used for downstream analysis with `PyDESeq2`. For more information on `PyDESeq2`, please consult its [documentation](https://pydeseq2.readthedocs.io/en/latest/).\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/malte/pytximport/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] } ], "source": [ "import decoupler as dc\n", "from pydeseq2.dds import DeseqDataSet\n", "from pydeseq2.default_inference import DefaultInference\n", "from pydeseq2.ds import DeseqStats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load the .csv file generated by `pytximport` via the `output_path` argument or create it directly from the output of `pytximport`. In this case, we are working with the salmon quantification files from a public bulk RNA sequencing dataset: [Podocyte injury in Fabry nephropathy](https://www.ebi.ac.uk/ena/browser/view/PRJNA773084)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Round count estimates (required by PyDESeq2) and add the corresponding metadata.\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 4 × 41127\n", " obs: 'condition'\n", " uns: 'counts_from_abundance', 'inferential_replicates'\n", " obsm: 'length', 'abundance', 'variance'" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.X = result.X.round().astype(int)\n", "result.obs[\"condition\"] = [\"Control\", \"Control\", \"Disease\", \"Disease\"]\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Filter genes with low counts out.\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 4 × 14776\n", " obs: 'condition'\n", " uns: 'counts_from_abundance', 'inferential_replicates'\n", " obsm: 'length', 'abundance', 'variance'" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = result[:, result.X.max(axis=0) > 10].copy()\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now perform your `PyDESeq2` analysis.\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "dds = DeseqDataSet(\n", " adata=result,\n", " design=\"~condition\",\n", " refit_cooks=True,\n", " inference=DefaultInference(n_cpus=8),\n", " quiet=True,\n", ")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/malte/pytximport/.venv/lib/python3.13/site-packages/pydeseq2/dds.py:541: UserWarning: As the residual degrees of freedom is less than 3, the distribution of log dispersions is especially asymmetric and likely to be poorly estimated by the MAD.\n", " self.fit_dispersion_prior()\n" ] } ], "source": [ "dds.deseq2()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "stat_result = DeseqStats(dds, contrast=[\"condition\", \"Disease\", \"Control\"], quiet=True)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "stat_result.summary()\n", "stat_result.lfc_shrink(coeff=\"condition[T.Disease]\")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA1SNJREFUeJzs3Qd4U2UXB/CTpHsXWkah7L33VEC2ICJDWSIiiCIOtqIiblEUJygowwUIn4DiQATZe4PsvQoUSvduku/5vyUxbZMuWpqk/9/zXEkz701rm3PPec/RGI1GoxARERERERFRgdMW/FMSEREREREREYNuIiIiIiIiokLETDcRERERERFRIWHQTURERERERFRIGHQTERERERERFRIG3URERERERESFhEE3ERERERERUSFh0E1ERERERERUSFykmDEYDBIWFia+vr6i0WiKeneIiIiIiIjIARmNRomNjZWQkBDRam3ns4td0I2AOzQ0tKh3g4iIiIiIiJzApUuXpHz58jZvL3ZBNzLcpjfGz8+vqHeHiIioUMTHx6sz76YTzt7e3g75TjvLcRARkfOJiYlRCV1TjGlLsQu6TSXlCLgZdBMRkbPS6XTmy/h756jBqrMcBxEROa+cli2zkRoRERERERFRIWHQTURERERERFRIGHQTERERERERFRIG3URERERERESFhEE3ERHl2o0bN2T06NFSoUIFcXd3lzJlyki3bt1k69at6vZKlSqpZiLY0PCqSZMmsmzZMvPjX3/9dfPtLi4u6v7jxo2TuLg4832ef/55adq0qXr+Ro0a8buTT25ubvLFF1+oDZcdlbMcBxERFV/Frns5ERHlX79+/SQlJUW+/fZbqVKlily/fl3WrVsnERER5vu8+eab8uSTT6oxGh999JEMGDBAypUrJ23atFG3161bV9auXStpaWkqWH/iiSckISFB5syZY34OXLdz5045dOgQv1355OrqKmPGjHH4989ZjoOIiIovBt1ERJQrUVFRsnnzZtmwYYO0b99eXVexYkVp0aJFhvthViUy4NhmzZolP/zwg6xatcocdCPDjdsAATmC9l9//dUcdH/22WfmrDqDbiIiInJ0LC8nIqJc8fHxUdvKlSslOTk5V49BgI1MJbLjtnh6emZ7O+WPXq9XJ0iw4bKjcpbjICKi4otBNxER5TqAXrhwoSotDwgIkLZt28rLL79sMxuNQPq9996T6Oho6dixo9X77N27VxYtWmTzdsq/pKQkue+++9SGy47KWY6DiIiKLwbdRESUpzXdYWFhqhy8e/fuKvuIZmkIxk1efPFFlRH38vKS999/X6ZPny49e/Y033748GF1OzLcKE1v3bq1apJFRERE5Iy4ppuIiPLEw8NDunTporapU6fKyJEjZdq0afL444+r2ydNmqQuI7AuXbq06lRuqWbNmipoR+Y8JCSEHamJiIjIqTHTTUREd6ROnToSHx9v/jooKEiqVaummqVlDrgBY59wO8aFcQQUEREROTtmuomIyCqj0Si7z0fK2RtxUqGEl1T3R7fxR9Q4rwYNGqgu5Xv27JEPPvhAevfuXWDv4unTp9Xc7mvXrkliYqIcOHDAHNwzSCciIiJHw6CbiIiyCI9JkuELd8uRsBjzdZUDXaVOgyby8ccfy5kzZyQ1NVVCQ0PVTG40VCsoKFffuHGj+evGjRurf8+dO6ey40RERESORGNEKqMYiYmJEX9/f9VN18/Pr6h3h4jILg2cu11lufWG//5E6LQaqVHaR/54/l6rZeNkX1Dyj3X1gMoBb29vcUTOchxERFR8Y0tmuomIKINzN+Nlx9lbWd4VBODHrsbKocvR0jA0gO+ancN8dJT+my47Kmc5DiIiKr4YdBMRUQZXoxOzfUeuRidJw1C+afYO69/RSd7ROctxEBFR8cXu5URElEG1YB/RZlM9XrOML98xIiIiolxi0E1ERBmU8vOQ/k3LZwm88XW3uqWlchDX1DoCvV4vu3fvVhsuOypnOQ4iIiq+WF5ORERZvPVQPXFz0cqS3ZckTW9UTdQeahSirifHkJSUJC1atHD4BmTOchxERFR8MegmIqIs3F108vZD9WVSt1pyJTJRyvp7SKC3G98pIiIiojxi0E1ERDb5e7qqjYiIiIjyh2u6iYiIiIiIiAoJg24iIiIiIiKiQsKgm4iIiIiIiKiQMOgmIiIiIiIiKiRspEZEROSEXF1dZdq0aebLjspZjoOIiIovjdFoNEoxEhMTI/7+/hIdHS1+fn5FvTtERERERETkxLEly8uJiIiIiIiICgnLy4mIiJyQwWCQY8eOqcu1a9cWrdYxz7M7y3EQEVHxxaCbiIjICSUmJkq9evXU5bi4OPH29hZH5CzHQURExRdPFxMREREREREVh6D79ddfF41Gk2GrVauW+fakpCQZM2aMlCxZUnx8fKRfv35y/fr1It1nIiIiIiIiIocIuqFu3bpy9epV87ZlyxbzbePGjZNVq1bJsmXLZOPGjRIWFiZ9+/Yt0v0lIiIiIiIicpg13S4uLlKmTJks16MN+7x582TRokXSsWNHdd2CBQtUU5UdO3ZIq1atimBviYiIiIiIiBwo033q1CkJCQmRKlWqyJAhQ+TixYvq+r1790pqaqp07tzZfF+UnleoUEG2b99u8/mSk5PV/DTLjYiIiIiIiKjYBd0tW7aUhQsXyurVq+XLL7+Uc+fOyb333iuxsbFy7do1cXNzk4CAgAyPKV26tLrNlvfee08NLDdtoaGhd+FIiIiIiIiIiOysvPz+++83X27QoIEKwitWrChLly4VT0/PfD3nlClTZPz48eavkelm4E1ERM7O1dVVJk6caL7sqJzlOIiIqPiyq6A7M2S1a9SoIadPn5YuXbpISkqKREVFZch2o3u5tTXgJu7u7mojIiIqTlAdNmPGDHF0znIcRERUfNlVeXlmcXFxcubMGSlbtqw0bdpUneFet26d+fYTJ06oNd+tW7cu0v0kIiIiIiIisvtMN8rHevXqpUrKMQ5s2rRpotPpZNCgQWo99ogRI1SpeIkSJcTPz0+ee+45FXCzczkREVFGBoPB3IwUTUe1Wrs+z+70x0FERMWXXQXdly9fVgF2RESEBAcHyz333KPGgeEyfPzxx+qPbb9+/VRX8m7dusns2bOLereJiIjsTmJiolSuXNlcOebt7S2OyFmOg4iIii+N0Wg0SjGCRmrImmPuN7LlREREzig+Pl58fHwcPlh1luMgIqLiG1uyRouIiIiIiIiokDDoJiIiIiIiIiokDLqJiIiIiIiICgmDbiIiIiIiIqJCwqCbiIiIiIiIqDiMDCMiIqKC4eLiIs8884z5sqNyluMgIqLiiyPDiIiIiIiIiPKII8OIiIiIiIiIihjrtIiIiJyQ0WiUmzdvqstBQUGi0WjEETnLcRARUfHFoJuIiMgJJSQkSKlSpdTluLg48fb2FkfkLMdBRETFF7uXExERERERERUSBt1EREREREREhYRBNxEREREREVEhYdBNREREREREVEgYdBMREREREREVEgbdRERERERERIWEI8OIiIickIuLiwwbNsx82VE5y3EQEVHxpTEajUYpRmJiYsTf31+io6PFz8+vqHeHiIiIiIiInDi2ZHk5ERERERERUSFhnRYREZETQiFbQkKCuuzl5SUajUYckbMcBxERFV/MdBMRETkhBKo+Pj5qMwWtjshZjoOIiIovBt1EREREREREhYRBNxEREREREVEhYdBNREREREREVEgYdBMREREREREVEgbdRERERERERIWEQTcRERERERFRIeGcbiIiIiek0+mkf//+5suOylmOg4iIii+N0Wg0SjESExMj/v7+Eh0dLX5+fkW9O0REREREROTEsSXLy4mIiIiIiIgKCYNuIiIiIiIiokLCoJuIiMgJxcfHi0ajURsuOypnOQ4iIiq+GHQTERERERERFRIG3URERERERESFhEE3ERERERERUSFh0E1ERERERERUSBh0ExERERERERUSBt1EREREREREhcSlsJ6YiIiIio5Op5MePXqYLzsqZzkOIiIqvjRGo9EoxUhMTIz4+/tLdHS0+Pn5FfXuEBERERERkRPHliwvJyIiIiIiIiokDLqJiIiIiIiICgmDbiIiIicUHx8v3t7easNlR+Usx0FERMUXG6kRERE5qYSEBHEGznIcRERUPDHTTURERERERFRIGHQTERERERERFRIG3URERERERESFhEE3ERERERERUSFh0E1ERERERERUSNi9nIiIyAlptVpp3769+bKjcpbjICKi4ktjNBqNUozExMSIv7+/REdHi5+fX1HvDhERERERETlxbMlTxkRERERERESFhEE3ERERERERUSFh0E1EROSE4uPjJTg4WG247Kic5TiIiKj4YiM1IiIiJ3Xz5k1xBs5yHEREVDwx001ERERERERUSBh0ExERERERERUSBt1EREREREREhYRBNxEREREREVEhYdBNREREREREVEjYvZyIiMgJabVaadasmfmyo3KW4yAiouJLYzQajVKMxMTEiL+/v0RHR4ufn19R7w4RERERERE5cWxpt6eMp0+fLhqNRsaOHWu+LikpScaMGSMlS5YUHx8f6devn1y/fr1I95OIiIiIiIjIoYLu3bt3y5w5c6RBgwYZrh83bpysWrVKli1bJhs3bpSwsDDp27dvke0nERERERERkUMF3XFxcTJkyBD5+uuvJTAw0Hw9Uvbz5s2TmTNnSseOHaVp06ayYMEC2bZtm+zYsaNI95mIiMjeJCQkSKVKldSGy47KWY6DiIiKL7sLulE+3rNnT+ncuXOG6/fu3SupqakZrq9Vq5ZUqFBBtm/fXgR7SkREZL/QsuXChQtqc+T2Lc5yHEREVHzZVffyJUuWyL59+1R5eWbXrl0TNzc3CQgIyHB96dKl1W22JCcnq81ysTsRERERERFRscp0X7p0SV544QX58ccfxcPDo8Ce97333lMd5UxbaGhogT03ERERERERkUME3SgfDw8PlyZNmoiLi4va0Czts88+U5eR0U5JSZGoqKgMj0P38jJlyth83ilTpqj14KYNwT0RERERERFRsSov79Spkxw+fDjDdcOHD1frtl988UWVoXZ1dZV169apUWFw4sQJuXjxorRu3drm87q7u6uNiIiIiIiIqNgG3b6+vlKvXr0M13l7e6uZ3KbrR4wYIePHj5cSJUqo4ePPPfecCrhbtWpVRHtNRERERERE5ABBd258/PHHotVqVaYbzdG6desms2fPLurdIiIisjsajUbq1KljvuyonOU4iIio+NIYi9n8DXQvR0M1rO9GtpyIiIiIiIiosGJLu2mkRkRERERERORsGHQTERERERERFRIG3URERE4oISFB6tatqzZcdlTOchxERFR8OVQjNSIiIsodtGw5evSo+bKjcpbjICKi4ouZbiIiIiIiIqJCwqCbiIiIiIiIqJAw6CYiIiIiIiIqJAy6iYiIiIiIiAoJg24iIiIiIiKiQsLu5URERE5Io9FIxYoVzZcdlbMcBxERFV8MuomIiJyQl5eXnD9/XhydsxwHEREVXywvJyIiIiIiIiokDLqJiIiIiIiICgmDbiIiIieUmJgozZs3VxsuOypnOQ4iIiq+uKabiIjICRkMBtmzZ4/5sqNyluMgIqLii5luIiIiIiIiokLCoJuIiIiIiIiokDDoJiIiIiIiIiokDLqJiIiIiIiICgmDbiIiIiIiIqJCwu7lRERETiooKEicgbMcBxERFU8MuomIiJyQt7e33LhxQxydsxwHEREVXywvJyIiIiIiIiokDLqJiIiIiIiICgmDbiIiIieUmJgoHTp0UBsuOypnOQ4iIiq+uKabiIjICRkMBtm4caP5sqNyluMgIqLii5luIiIiIiIiokLCoJuIiIiIiIiokDDoJiIiIiIiIiokDLqJiIiIiIiICgmDbiIiIiIiIqJCwu7lRERETsrLy0ucgbMc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h+3ZsGFD7eabb1Z/p6am2h72ZXiM+6avvvpKq1y5svbZZ59pu3fv1h555BEtMjJSO3HihHr//vvv18aMGWMrv3btWtWdZNKkSep8j+zIaJK6Y8eOK7gUVByPPfaYykS+evVqh+P44sWLtjIFt/f48eO1pUuXqvP95s2btb///e9acHCwtmvXLq50H/D000+r7Y1rLRy73bp106Kjo1XmeuDxXfFgBApcb6ELWUE8vj2HQTeVm0GDBmldunRx+h5O9gjIV61apZ4nJSWpALt69erqYg8X9OhDeO7cOW4xL4eLLgwPhAs3XHg1bdpUmzBhgkN/7oLbG7Kzs7URI0Zo1apV00JDQ7X+/fs7BG3kvTCkiKs+3zoe475typQp6iINuRfQl/vXX391GPpt8ODBDuXnzJmjNWrUSJVv3ry5tmjRoisw1+QuV8cxjnFX23vUqFG2fSM2Nlbr1auXtmXLFq58HzFw4ECtVq1aavvVrl1bPbfPncPju+LBTTIc1/v27Sv0Ho9vzzHhn9LUlBMRERERERGRcxynm4iIiIiIiMhDGHQTEREREREReQiDbiIiIiIiIiIPYdBNRERERERE5CEMuomIiIiIiIg8hEE3ERERERERkYcw6CYiIiIiIiLyEAbdRERERERERB7CoJuIiKgUbrjhBhk1alSFm+e6devK5MmT3Zru6tWrxWQySUZGRinnkIiIqOJg0E1ERORFvv32W+nevbvUqFFDwsPDpXPnzrJ06VKHMkOGDFHBbcHHwYMHPTpvW7dulQEDBkhsbKwEBwfLVVddJQ8//LDs37/fo99LRETkyxh0ExEReZGffvpJBd2LFy+WzZs3y4033ii33367Cnjt9ezZU1JTUx0e9erV89h8LVy4UDp16iSXLl2S2bNny549e2TWrFkSEREhL774ose+l4iIyNcx6CYiIiojZ8+elQceeECqVasmoaGhcuutt8qBAwccynz00UdSp04d9X7//v3lnXfekcjISNv7aNL93HPPSfv27VVN8oQJE9T/P/zwg8N0KleuLDVr1nR4mM1m9d6aNWukQ4cOqkytWrVkzJgxkp+f73K+09LSVGAfEhKiAncE1fYuXrwoQ4cOlV69esmCBQukW7duqlzHjh1l0qRJMn36dIfyuFnQrl07tYxdunSRffv22d47dOiQ9O3bV9WWV6lSRS3n8uXL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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dc.pl.volcano(\n", " stat_result.results_df,\n", " x=\"log2FoldChange\",\n", " y=\"padj\",\n", " thr_sign=0.01,\n", " top=20,\n", " figsize=(10, 5),\n", ")" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "collectri = dc.op.collectri(organism=\"human\", remove_complexes=False)\n", "data = stat_result.results_df[[\"stat\"]].T.rename(index={\"stat\": \"disease.vs.control\"})\n", "tf_acts, tf_pvals = dc.mt.ulm(data=data, net=collectri, tmin=5)\n", "dc.pl.barplot(data=tf_acts, name=\"disease.vs.control\", top=10, vertical=True, figsize=(5, 3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also evaluate known pathways.\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "progeny = dc.op.progeny(organism=\"human\", top=500)\n", "pathway_acts, pathway_pvals = dc.mt.ulm(data=data, net=progeny, tmin=5)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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nzBhgv1dOvReFhYW1ri5vw/K2rVrnWuuucbZYYcdqn0+P3bddVfn1VdfTXyX9b2TYcOGOT179gzk+EeOHOlce+21zjPPPGPv33rrrU5paak99m7dujnLly8P5HlyUc4XRfdyyy232F7Tv/71L/Pss8+aU045xQ4HqaK+ejL/93//Z373u9+Z3//+92k/x/Tp082UKVPMXnvtZeqjPfbYo8bf6bVLd2j00UcfNVdccYVp0KCB/dnL9ddfb/y68cYb7Zzrvffeaxo1amSC8uGHH9rPjXoUei0OOugg89e//tWcfvrpdqhSvYGLL77Y93zuCSecYJo1a2Z69eqVeFzDjkcffbR9fOzYsWnv//7777e9l3feecd07tw58bh69OpJfvTRR+bdd9/19Tdst9121Q6v6rFtt9027f3+4x//sH9/Jtx0003mvffeM3/84x/NhRdeaIeM//vf/5rHH3/c3Hfffb72rfdyv/32sz9vvfXWtlcp+mz179/f97HrPKbtsMMOM3/729/s53bMmDFm0KBBtteq7+Add9xh/zZUw8ljLVu2dCZOnGh//uGHH+wV6DvvvJP4/bhx4+yVnh8HHXRQtVfSfukqUD0Zl65Cv/7660CfQ6/HP//5T+f999/33NKx8847J65g9XNN2y677BLI36JeS9A9bunatau94p8xY4bTt2/fxEjECy+8EOjzqLehnt/f//53e//777939tprL6dTp07O6tWrfe9/wIABTrNmzZyZM2cmepJnnXWW7T3pb/Pr8ccft70WHbdLPx9//PHOiBEjAhlVCVubNm2c9957z/6s0Yk5c+bYn0eNGuWceOKJvvatz8wnn3xif9bowODBg+3Pzz33nH0P/Np9992dv/3tb/bnf//73/b88Y9//CPxe414tW3b1vfz5Kq8bigbNGjgLFy4MHF/q622Snz45ZtvvnEaNmzo6znU2Hbp0sV+wdQwBDVsqZPESSedZIfFtBUXF9uTjnvf3fzI9IkoTHotRo8eHfh+1bh8/vnn9ud169bZE9CYMWOcMDz77LP2M/vXv/7V+eUvf2kvwlauXBnY/jUs16pVK2f27NnOr371K2f77bd3Pv3007T316FDB+eAAw5IbLqYKykpcXbbbTe76Wc9pt+F9fl0h8KDoPODzgmy0047OZMmTbI/6wJVv/PjlltucX73u98lGkd9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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dc.pl.barplot(\n", " data=pathway_acts,\n", " name=\"disease.vs.control\",\n", " top=40,\n", " vertical=True,\n", " figsize=(5, 3),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please refer to the `PyDESeq2` and the `decoupler` documentation for additional analyses.\n" ] } ], "metadata": { "kernelspec": { "display_name": "pytximport", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 2 }