Human Protein Atlas in R



The HPA project

From the Human Protein Atlas [@Uhlen2005; @Uhlen2010] site:

The Swedish Human Protein Atlas project, funded by the Knut and Alice Wallenberg Foundation, has been set up to allow for a systematic exploration of the human proteome using Antibody-Based Proteomics. This is accomplished by combining high-throughput generation of affinity-purified antibodies with protein profiling in a multitude of tissues and cells assembled in tissue microarrays. Confocal microscopy analysis using human cell lines is performed for more detailed protein localisation. The program hosts the Human Protein Atlas portal with expression profiles of human proteins in tissues and cells.

The r Biocpkg("hpar") package provides access to HPA data from the R interface. It also distributes the following data sets:

HPA data usage policy

The use of data and images from the HPA in publications and presentations is permitted provided that the following conditions are met:


r Biocpkg("hpar") is available through the Bioconductor project. Details about the package and the installation procedure can be found on its landing page. To install using the dedicated Bioconductor infrastructure, run :

## install BiocManager only one
## install hpar

After installation, r Biocpkg("hpar") will have to be explicitly loaded with


so that all the package's functionality and data is available to the user.

The r Biocpkg("hpar") package

Data sets

The data sets described above can be loaded with the data function, as illustrated below for hpaNormalTissue below. Each data set is a data.frame and can be easily manipulated using standard R functionality. The code chunk below illustrates some of its properties.

## Number of genes
## Number of cell types
## Number of tissues

HPA interface

The package provides a interface to the HPA data. The getHpa allows to query the data sets described above. It takes three arguments, id, hpadata and type, that control the query, what data set to interrogate and how to report results respectively. The HPA data uses Ensembl gene identifiers and id must be a valid identifier. hpadata must be one of available dataset. type can be either "data" or "details". The former is the default and returns a data.frame containing the information relevant to id. It is also possible to obtained detailed information, (including cell images) as web pages, directly from the HPA web page, using "details".

We will illustrate this functionality with using the TSPAN6 (tetraspanin 6) gene (ENSG00000000003) as example.

id <- "ENSG00000000003"
head(getHpa(id, hpadata = "hpaNormalTissue"))
getHpa(id, hpadata = "hpaSubcellularLoc")
head(getHpa(id, hpadata = "rnaGeneCellLine"))

If we ask for "detail", a browser page pointing to the relevant page is open (see figure below)

getHpa(id, type = "details")

The HPA web page for the tetraspanin 6 gene (ENSG00000000003).

If a user is interested specifically in one data set, it is possible to set hpadata globally and omit it in getHpa. This is done by setting the hpar options hpardata with the setHparOptions function. The current default data set can be tested with getHparOptions.

setHparOptions(hpadata = "hpaSubcellularLoc")

HPA release information

Information about the HPA release used to build the installed

r Biocpkg("hpar") package can be accessed with getHpaVersion, getHpaDate and getHpaEnsembl. Full release details can be found on the HPA release history page.


A small use case

Let's compare the subcellular localisation annotation obtained from the HPA subcellular location data set and the information available in the Bioconductor annotation packages.

id <- "ENSG00000001460"
getHpa(id, "hpaSubcellularLoc")

Below, we first extract all cellular component GO terms available for id from the r Biocannopkg("") human annotation and then retrieve their term definitions using the r Biocannopkg("GO.db") database.

ans <- select(, keys = id,
              columns = c("ENSEMBL", "GO", "ONTOLOGY"),
              keytype = "ENSEMBL")
ans <- ans[ans$ONTOLOGY == "CC", ]
sapply(as.list(GOTERM[ans$GO]), slot, "Term")

Session information {-}


Try the hpar package in your browser

Any scripts or data that you put into this service are public.

hpar documentation built on Nov. 8, 2020, 8:32 p.m.