Skip to main content

Gene Set Enrichment Analysis in Python

Project description

GSEAPY: Gene Set Enrichment Analysis in Python.

https://badge.fury.io/py/gseapy.svg https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg?style=flat-square https://travis-ci.org/BioNinja/GSEApy.svg?branch=master Documentation Status https://img.shields.io/badge/license-MIT-blue.svg https://img.shields.io/badge/python-3.6-blue.svg https://img.shields.io/badge/python-2.7-blue.svg

The main documentation for GSEAPY can be found at https://pythonhosted.org/gseapy

An example to use gseapy, please click here: Example

Release notes : https://github.com/BioNinja/gseapy/releases

GSEAPY is a python wrapper for GSEA and Enrichr.

It’s used for convenient GO enrichments and produce publishable quality figures in python.

GSEAPY could be used for RNA-seq, ChIP-seq, Microarry data.

Gene Set Enrichment Analysis (GSEA) is a computational method that determines whether an a priori defined set of genes shows statistically significant, concordant differences between two biological states (e.g. phenotypes).

The full GSEA is far too extensive to describe here; see GSEA documentation for more information.

Enrichr is open source and freely available online at: http://amp.pharm.mssm.edu/Enrichr .

If you use gseapy, you should cite the original ``GSEA`` and ``Enrichr`` paper.

Why GSEAPY

I would like to use Pandas to explore my data, but I did not find a convenient tool to do gene set enrichment analysis in python. So, here is my reason:

  • Running inside python interactive console without switch to R!!!

  • User friendly for both wet and dry lab usrers.

  • Produce pubilishable figures.

  • Perform batch jobs easy(using for loops).

  • Easy to use in bashshell or your data analysis workflow, e.g. snakemake.

GSEA Java version output:

This is an example of GSEA desktop application output

docs/GSEA_OCT4_KD.png

GSEAPY Prerank module output

Using the same data from GSEA, GSEAPY reproduce the example above.

Using replot module will reproduce the same figure for GSEA Java desktop outputs

docs/gseapy_OCT4_KD.png

Generated by GSEAPY

GSEAPY figures are supported by all matplotlib figures formats.

You can modify GSEA plots easily in .pdf files. Please Enjoy.

GSEAPY enrichr module

The powerfull module will enable you perform gene set enrichment analysis extreamly easily.

You Could submit batch jobs to Enrichr Server

docs/enrichr.PNG

The only thing you need to prepeare is a gene list file in txt format(one gene id per row), or a python list object.

Note: Enrichr uses a list of Entrez gene symbols as input. You should convert all gene names to uppercase.

For example, both a list object and txt file are supported for enrchr API

# if you perfer to run gseapy.enrchr() inside python console, you could assign a list object to
# gseapy like this.
gene_list = ['SCARA3', 'LOC100044683', 'CMBL', 'CLIC6', 'IL13RA1', 'TACSTD2', 'DKKL1',
                'CSF1', 'CITED1', 'SYNPO2L']
# an alternative way is that you could provide a gene list txt file which looks like this:
with open('data/gene_list.txt') as genes:
    print(genes.read())


CTLA2B
SCARA3
LOC100044683
CMBL
CLIC6
IL13RA1
TACSTD2
DKKL1
CSF1
CITED1
SYNPO2L
TINAGL1
PTX3

Installation

Install gseapy package from bioconda or pypi.
# if you have conda
$ conda install -c bioconda gseapy

# for  windows users
$ conda install -c bioninja gseapy

# or use pip
$ pip install gseapy
You may instead want to use the development version from Github, by running
$ pip install git+git://github.com/BioNinja/gseapy.git#egg=gseapy

Dependency

  • Python 2.7 or 3.4+

Mandatory

  • Numpy

  • Pandas

  • Matplotlib

  • Beautifulsoup4

  • Requests(for enrichr API)

You may also need to install lxml, html5lib, if you could not parse xml files.

Run GSEAPY

GSEAPY has four subcommands: replot, call, prerank, enrichr.

The replot module reproduce GSEA desktop version results. The only input for GSEAPY is the location to GSEA results.

The call module produce GSEAPY results. The input requries a txt file(FPKM, Expected Counts, TPM, et.al), a cls file, and gene_sets file in gmt format.

The prerank module produce GSEAPY results. The input expects a pre-ranked gene list dataset with correlation values, which in .rnk format, and gene_sets file in gmt format. prerank module is an API to GSEA pre-rank tools.

All input files’ formats are identical to GSEA desktop version. See GSEA documentation for more information.

The enrichr module will using enrichr API online. It runs very fast and generates results in txt format.

Before you start:

You should convert all gene symobl names to uppercase first.

For command line usage:

# An example to reproduce figures using replot module.
$ gseapy replot -i ./Gsea.reports -o test


# An example to compute using gseapy call module
$ gseapy call -d exptable.txt -c test.cls -g gene_sets.gmt -o test

# An example to compute using gseapy prerank module
$ gseapy prerank -r gsea_data.rnk -g gene_sets.gmt -o test

# An example to use enrichr api
# see details of -g parameter below, -d parmameter is optional
$ gseapy enrichr -i gene_list.txt -g KEGG_2016 -d pathway_enrichment -o test

Run gseapy inside python console:

  1. Prepare expression.txt, gene_sets.gmt and test.cls required by GSEA, you could do this

import gseapy
# An example to reproduce figures using replot module.
gseapy.replot(indir='./Gsea.reports',outdir='test')

# calculate es, nes, pval,fdrs, and produce figures using gseapy.
gseapy.call(data='expression.txt', gene_sets='gene_sets.gmt', cls='test.cls', outdir='test')

# using prerank tool
gseapy.prerank(rnk='gsea_data.rnk', gene_sets='gene_sets.gmt', outdir='test')
  1. If you perfer to use assign Dataframe, dict, list to gseapy, you could do this

# assign dataframe, and use enrichr libary data set 'KEGG_2016'
expression_dataframe = pd.DataFrame()

sample_name = ['A','A','A','B','B','B'] # always only two group,any names you like

# assign gene_sets parameter with enrichr library name or gmt file on your local computor.
gseapy.call(data=expression_dataframe, gene_sets='KEGG_2016', cls= sample_names, outdir='test')

# using prerank tool
gene_ranked_dataframe = pd.DataFrame()
gseapy.prerank(rnk=gene_ranked_dataframe, gene_sets='KEGG_2016', outdir='test')
  1. For enrichr , you could assign a list object or a txt file

# assign a list object to enrichr
l = ['SCARA3', 'LOC100044683', 'CMBL', 'CLIC6', 'IL13RA1', 'TACSTD2', 'DKKL1', 'CSF1',
     'SYNPO2L', 'TINAGL1', 'PTX3', 'BGN', 'HERC1', 'EFNA1', 'CIB2', 'PMP22', 'TMEM173']

gseapy.enrichr(gene_list=l, description='pathway', gene_sets='KEGG_2016', outdir='test')

# or a txt file path.
gseapy.enrichr(gene_list='gene_list.txt', description='pathway', gene_sets='KEGG_2016',
               outdir='test', cutoff=0.05, format='png' )

GSEAPY supported gene set libaries :

To see the full list of gseapy supported gene set librarys, please click here: Library

Or use get_library_name function inside python console.

 #see full list of latest enrichr library names, which will pass to -g parameter:
 names = gseapy.get_library_name()

 # show top 20 entries.
 print(names[:20])


['Genome_Browser_PWMs',
'TRANSFAC_and_JASPAR_PWMs',
'ChEA_2013',
'Drug_Perturbations_from_GEO_2014',
'ENCODE_TF_ChIP-seq_2014',
'BioCarta_2013',
'Reactome_2013',
'WikiPathways_2013',
'Disease_Signatures_from_GEO_up_2014',
'KEGG_2016',
'TF-LOF_Expression_from_GEO',
'TargetScan_microRNA',
'PPI_Hub_Proteins',
'GO_Molecular_Function_2015',
'GeneSigDB',
'Chromosome_Location',
'Human_Gene_Atlas',
'Mouse_Gene_Atlas',
'GO_Cellular_Component_2015',
'GO_Biological_Process_2015',
'Human_Phenotype_Ontology',]

Bug Report

If you would like to report any bugs when you running gseapy, don’t hesitate to create an issue on github here, or email me: fangzhuoqing@sibs.ac.cn

To get help of GSEAPY

Visit the document site at https://pythonhosted.org/gseapy

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gseapy-0.7.10.tar.gz (29.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gseapy-0.7.10-py2.7.egg (65.3 kB view details)

Uploaded Egg

File details

Details for the file gseapy-0.7.10.tar.gz.

File metadata

  • Download URL: gseapy-0.7.10.tar.gz
  • Upload date:
  • Size: 29.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gseapy-0.7.10.tar.gz
Algorithm Hash digest
SHA256 8cc008c254d33941b1d2b44acfb20ac4c21f570d2d9294534b257fb169706039
MD5 3ecc93d07197fbd490bda700d4968093
BLAKE2b-256 58485d04583e85f3453427c1800abe33ca8bc316a4ec3f78775c26804230e147

See more details on using hashes here.

File details

Details for the file gseapy-0.7.10-py2.7.egg.

File metadata

  • Download URL: gseapy-0.7.10-py2.7.egg
  • Upload date:
  • Size: 65.3 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gseapy-0.7.10-py2.7.egg
Algorithm Hash digest
SHA256 edb43d9f96f4d10a6a1e422bae05b818a1efc4aa44790415ea1f1cf0b48c9516
MD5 d182226ef2f8e6e414141fdcf79a9598
BLAKE2b-256 3f970a8371bf3449735901a3f5785dcfae24587876452f36161bf0a50a86c74c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page