Skip to main content

CryEx

Paper Link:

CryEx is a Python-based pipeline designed to identify and quantify cryptic exons from RNA-Seq datasets. The pipeline leverages StringTie for transcript assembly and detects cryptic exons.

Highlights:

● A user-friendly python package for CryEx protocol to construct a comprehensive splicing landscape

● Identification and quantification of cryptic exons and annotated exons using RNA-Seq data

● Customizable filtering parameters to enable differential splicing analysis at different resolutions

● A framework for implementing data preprocessing, analysis, customization and visualization

CryEx Logo

Table of Contents 📚

Installation 🔧

Installation from the GitHub repository:

git clone https://github.com/giovanniquinones/CryEx
cd CryEx/Cryex_pkg

# create a virtual environment from yaml file
conda env create -f cryex_env.yaml
conda activate CryEx_env

# install the package
pip install .

Installation from PyPI:

pip install CryEx.v2

It is recommended to create a virtual environment before using pip install to obtain the dependencies.

Dependencies 📦

  • Python 3.10+
  • Python packages: NumPy, pandas, pysam, SciPy, and Statsmodels (installed with CryEx)
  • External tools: StringTie, bgzip, and tabix (provided by HTSlib)

subprocess and multiprocessing are part of Python’s standard library; they do not need to be installed separately.

Usage 🚀

After installation, you can use the CryEx command line tools. Below is an example of how to run the pipeline:

# Check if installed successfully
CryEx_stringtie --help 

# Set input/output paths (run from the Cryex_pkg directory)
FOFN="test_data/fofn.txt"
EXONS="out/exons.gtf"
JXN="out/jxn.bed"
PSI="out/psi.txt"
DIFF="out/diff.txt"
mkdir -p out

# Identify cryptic and annotated exons
CryEx_stringtie -f "$FOFN" -o "$EXONS"

# Calculate splice junction usage
CryEx_junctions -f "$FOFN" -o "$JXN"

# CryEx_junctions creates a sorted, bgzip-compressed "$JXN.gz" and tabix index.
# Calculate PSI
CryEx_psi_calculator -f "$FOFN" -e "$EXONS" -j "$JXN.gz" -o "$PSI"

# Calculate differential splicing
CryEx_diff -f "$FOFN" -p "$PSI" -o "$DIFF"

Set FOFN, EXONS, JXN, PSI, and DIFF to the paths you want to use before running these commands. An example pipeline is in test_data/run_pipeline.sh. Before running the example, update the BAM paths in test_data/fofn.txt to match your machine. Run the script from the test_data directory.

Input 📥

FOFN should be tab separated and have the following columns:

SAMPLE	    BAM	                    STAR_SJ_OUT	                    GROUP
sample1    /path/to/sample1.bam     /path/to/sample1.SJ.out.tab     CTRL
sample2    /path/to/sample2.bam     /path/to/sample2.SJ.out.tab     KD
sample3    /path/to/sample3.bam     /path/to/sample3.SJ.out.tab     CTRL
sample4	   /path/to/sample4.bam     /path/to/sample4.SJ.out.tab     KD

If STAR_SJ_OUT is not provided, fill in with na; CryEx then derives junctions from the BAM file. Keep the metadata header names exactly as shown. For differential splicing, Cryex will use the 'GROUP' column.

Output 📤

  • CryEx_stringtie will output a standard GTF file with the identified cryptic and annotated exons.
  • CryEx_junctions writes the plain-text junction table at the path given to -o, plus a sorted bgzip-compressed <output>.gz and tabix index <output>.gz.tbi. The PSI command reads the compressed table.
chr21	9826943	    9826984	    hte1,hte2,hte3,hte4     10,1,7,11	+
chr21	9827330	    9874067	    hte1,hte2,hte3,hte4     1,0,0,0     +
chr21	9907492	    9908277	    hte1,hte2,hte3,hte4     63,47,35,49	-
chr21	9907462	    9909046	    hte1,hte2,hte3,hte4     1,0,0,0     -
chr21	9908432	    9909046	    hte1,hte2,hte3,hte4     12,19,11,8	-
  • CryEx_psi_calculator will output a headered TSV file with 12 columns, including exon/junction coordinates, inclusion and exclusion counts, sample, and PSI.
exon_type	chrom	exon_3ss	exon_5ss	strand	inclusion_n	jxn_inc_n	exc_5ss	exc_3ss	exclusion_n	SAMPLE	PSI
  • CryEx_diff will output a TSV file with the differential splicing results.
exon_type	exon_coords	flanking_jxns	LLR	Pvalue	Sig	DeltaPSI	DIFF	PSIGroup1	PSIGroup2	CovGroup1	CovGroup2	Pvalue_Adj

Sig is true only when the LLR, absolute delta-PSI, and adjusted-p-value thresholds are all met.

Troubleshooting 🛠️

Please submit your issues to the GitHub repository directly (under the Issues tab).

  • Problem 1:

It fails to ‘pip install’ and return this error message “module ‘pip._vendor.platformdirs’ has no attribute ‘user_cache_dir’”.

Potential solution:

• Try ‘pip3 install’ instead of ‘pip install’

  • Problem 2:

If fails to ‘CryEx_stringtie -f fofn.txt -o exons.gtf’ and return this error message “Segmentation fault”.

Potential solution:

• Run stringtie on each bam file one by one instead of multiple files in one run and concat the output GTF files.

Metadata

Release files for CryEx.v2 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for CryEx.v2 2.0.4
File Size Uploaded
cryex_v2-2.0.4.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for CryEx.v2 2.0.4
File Interpreter ABI Platform
cryex_v2-2.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 27.2 kB

Release files / cryex_v2-2.0.4.tar.gz

Download URL cryex_v2-2.0.4.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a3ed138e0442ae71d3dca815e98558055425315ee1cdf718a448013f1e603b4
BLAKE2b-256 checksum
How to use checksums
aeb84286b10e303fd5c8eae16736d9745cccc76df3040f3d6a0920b1d703cc84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.13

Release files / cryex_v2-2.0.4-py3-none-any.whl

Download URL cryex_v2-2.0.4-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a6a85db3f89bcf1fbf8a8d51c4a4eb3d26f4cc8d7e53a8518352c3d3e1a52a9
BLAKE2b-256 checksum
How to use checksums
47867dd1635632128f08da48d1d55eef8b11ba6e89857e5b977dfa18d2f3ca10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.13

Release history Release notifications | RSS feed

This release

2.0.4 This release

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page