Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0d02fc6
first pass at visualization suite
jackfreeman88 May 20, 2024
e9ff3ad
save gene dict, added output dir, and made viz executable
jackfreeman88 Jul 17, 2024
2cde198
add pie charts and find_genes algo
jackfreeman88 Jul 21, 2024
03c1aa2
manual gtf parse to gffutils - plus name check
jackfreeman88 Jul 31, 2024
388eac0
Updated README and requirements.txt
jackfreeman88 Aug 1, 2024
26cf0fc
Update README.md
jackfreeman88 Aug 1, 2024
00c39e7
save genedb name in .params before conversion
andrewprzh Aug 1, 2024
348af00
thread db file into visuzalizer
andrewprzh Aug 1, 2024
2da050c
print usage if no args
andrewprzh Aug 1, 2024
c06c93f
make viz executive
andrewprzh Aug 1, 2024
ac2918d
support old isoquant runs
andrewprzh Aug 1, 2024
082516e
Completed docs
jackfreeman88 Aug 4, 2024
098ad38
Merge branch 'visualize_results' of https://github.com/AbLab/IsoQuant…
jackfreeman88 Aug 4, 2024
8ffa4a8
Issue #222 yaml support
jackfreeman88 Aug 7, 2024
c49ebff
restructured output and fized combined viz
jackfreeman88 Aug 14, 2024
11bdbd9
GFF3 checker
andrewprzh Sep 20, 2024
a7e1593
import exon information from reference annotation
andrewprzh Sep 20, 2024
51d39e3
get rid of side-effect
andrewprzh Sep 25, 2024
fbbc1a2
Merge branch 'master' of https://github.com/AbLab/IsoQuant into yaml_viz
jackfreeman88 Nov 14, 2024
b127021
Fixed dictionary building and caching
jackfreeman88 Jan 28, 2025
8e699fc
Added DESEQ2 method
jackfreeman88 Jan 28, 2025
bfff4b3
DE at both levels and plotting work
jackfreeman88 Jan 28, 2025
0d9ad97
working multilevel PCA
jackfreeman88 Jan 29, 2025
b6202ea
Fixed labels for figures
jackfreeman88 Jan 30, 2025
57ac5e0
Removed point labels
jackfreeman88 Jan 30, 2025
bcdd193
gsea works with refactor
jackfreeman88 Feb 3, 2025
2a37a76
added logger level debug and GSEA for top level script
jackfreeman88 Feb 3, 2025
d7d9ab4
create exon table and fixed counts to TPM for expr assignment
jackfreeman88 Feb 4, 2025
172cdaa
Cleaned up for testing, tested ref only, didnt test GSEA, validated o…
jackfreeman88 Feb 18, 2025
d855c0f
Modified GSEA approach
jackfreeman88 Feb 27, 2025
ac0f6df
New plotter that inherits filtering
jackfreeman88 Apr 1, 2025
862c4b8
working system
jackfreeman88 Apr 1, 2025
b9f3858
Working with new dict
jackfreeman88 Apr 1, 2025
2afaa0b
remove old man part
andrewprzh Apr 17, 2025
66cd110
update requirements
andrewprzh Apr 17, 2025
ead79a0
cleaned up exons bounds
jackfreeman88 May 4, 2025
39e1e11
Merge branch 'yaml_viz' of https://github.com/AbLab/IsoQuant into yam…
jackfreeman88 May 4, 2025
b276b12
First cut at no bio reps
jackfreeman88 Jul 31, 2025
52f5a2e
read assignment versus length + robust DE
jackfreeman88 Aug 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,3 @@ You can leave your comments and bug reports at our [GitHub repository tracker](h
--data_type (assembly|pacbio|nanopore) -o OUTPUT_FOLDER

* If multiple files are provided, IsoQuant will create a single output annotation and a single set of gene/transcript expression tables.

28 changes: 17 additions & 11 deletions docs/visualization.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,41 @@ IsoQuant provides a visualization tool to help interpret and explore the output

## Running the visualization tool

To run the visualization tool, use the following command:
To run the visualization tool, use one of the following commands:

```bash

# Visualize a predefined list of genes
python visualize.py <output_directory> --gene_list <gene_list> [options]

# Automatically find the top N most differentially expressed genes
python visualize.py <output_directory> --find_genes [N] [options]
```

## Command line options

* `output_directory` (required): Directory containing IsoQuant output files.
* * `--gene_list` (required): Path to a .txt file containing a list of genes, each on its own line.
* `--viz_output`: Optional directory to save visualization output files. Defaults to the main output directory if not specified.
* `--gene_list`: Path to a .txt file containing a list of genes, each on its own line. Mutually exclusive with `--find_genes`.
* `--find_genes [N]`: Automatically select the top **N** genes with the highest combined differential-expression rank between chosen conditions (default 100 if *N* is omitted).
* `--viz_output`: Optional directory to save visualization output files. Defaults to `<output_directory>/visualization`.
* `--gtf`: Optional path to a GTF file if it cannot be extracted from the IsoQuant log.
* `--counts`: Use counts instead of TPM files for visualization.
* `--ref_only`: Use only reference transcript quantification instead of transcript model quantification.
* `--filter_transcripts`: Filter transcripts by minimum value occurring in at least one condition.
* `--filter_transcripts <float>`: Minimum expression value a transcript must reach in at least one condition to be included in plots (default 1.0).
* `--gsea`: Perform Gene Set Enrichment Analysis on differential expression results (requires `--find_genes`).
* `--technical_replicates`: Specify technical replicate groupings as a file (`sample,group`) or inline (`sample1:group1,sample2:group1`).


## Output

The visualization tool generates the following plots based on the IsoQuant output:
The visualization tool can generate the following outputs:

1. Transcript usage profiles: For each gene specified in the gene list, a plot showing the relative usage of different transcripts across conditions or samples.
1. Transcript usage profiles: For each gene, a plot showing the relative usage of different transcripts across conditions or samples.

2. Gene-specific transcript maps: Visual representation of the different splicing patterns of transcripts for each gene, allowing easy comparison of exon usage and alternative splicing events.

3. Global read assignment consistency: A summary plot showing the overall consistency of read assignments across all genes and transcripts analyzed.
3. Global read assignment consistency: A summary plot showing the overall consistency of read assignments across all genes and transcripts analyzed (enabled interactively).

4. Global transcript alignment classifications: A chart representing the distribution of different transcript alignment categories (e.g., full splice match, incomplete splice match, novel isoforms) across the entire dataset.

4. Global transcript alignment classifications: A chart or plot representing the distribution of different transcript alignment categories (e.g., full splice match, incomplete splice match, novel isoforms) across the entire dataset.
5. Differential expression tables and volcano plots when `--find_genes` is used, with optional GSEA pathway visualizations if `--gsea` is supplied.

These visualizations provide valuable insights into transcript diversity, splicing patterns, and the overall quality of the IsoQuant analysis.
These visualizations and reports provide valuable insights into transcript diversity, splicing patterns, differential expression, and the overall quality of the IsoQuant analysis.
26 changes: 26 additions & 0 deletions install_r_packages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env python3

import rpy2.robjects.packages as rpackages
from rpy2.robjects.vectors import StrVector

# List of R packages to install
r_package_names = ('DESeq2', 'ggplot2', 'ggrepel', 'RColorBrewer', 'clusterProfiler', 'org.Hs.eg.db')

# Get R's utility package
utils = rpackages.importr('utils')

# Select CRAN mirror (optional, but recommended for reproducibility)
utils.chooseCRANmirror(ind=1) # Select the first mirror in the list

# Function to check if R package is installed
def is_installed(package_name):
return package_name in rpackages.packages()

# Install R packages if not already installed
packages_to_install = [pkg for pkg in r_package_names if not is_installed(pkg)]

if packages_to_install:
print(f"Installing R packages: {', '.join(packages_to_install)}")
utils.install_packages(StrVector(packages_to_install))
else:
print("All required R packages are already installed.")
Loading