Introduction to PANTHER.db

The PANTHER.db package provides a select interface to the compiled PANTHER ontology residing within a SQLite database.

This update uses PANTHER 19.0 and pathway associations 3.6.8. Entrez mappings reuse the UniProt-to-Entrez snapshot downloaded on 2023-09-20. Source releases, the mapping snapshot date, and checksums are recorded in the database metadata.

PANTHER.db can be installed from Bioconductor using

if (!requireNamespace("BiocManager")) install.packages("BiocManager")
BiocManager::install("PANTHER.db")

The size of the underlying SQLite database is currently about 500MB and has to be pre downloaded using AnnotationHub as follows

if (!requireNamespace("AnnotationHub")) BiocManager::install("AnnotationHub")
library(AnnotationHub)
ah <- AnnotationHub()
query(ah, "PANTHER.db")[[1]]

Finally PANTHER.db can be loaded with

library(PANTHER.db)

If you already know about the select interface, you can immediately learn about the various methods for this object by just looking at the help page.

help("PANTHER.db")

When you load the PANTHER.db package, it creates a PANTHER.db object. If you look at the object you will see some helpful information about it.

PANTHER.db
## PANTHER.db object:
## | ORGANISMS: AMBTC|ANOCA|ANOPHELES|AQUAE|ARABIDOPSIS|ASHGO|ASPFU|BACCR|BACSU|BACTN|BATDJ|BOVINE|BRACM|BRADI|BRADU|BRAFL|BRANA|CAEBR|CANAL|CANINE|CAPAN|CHICKEN|CHIMP|CHLAA|CHLRE|CHLTR|CIOIN|CITSI|CLOBH|COELICOLOR|COXBU|CRYNJ|CUCSA|DAPPU|DEIRA|DICDI|DICPU|DICTD|ECOLI|EMENI|ENTH1|ERYGU|EUCGR|FELCA|FLY|FUSNN|GEOSL|GIAIC|GLOVI|GORGO|GOSHI|HAEIN|HALSA|HELAN|HELPY|HELRO|HORSE|HORVV|HUMAN|IXOSC|JUGRE|KLENI|KORCO|LACSA|LEIMA|LEPIN|LEPOC|LISMO|MAIZE|MALARIA|MANES|MARPO|MEDTR|METAC|METJA|MONBE|MONDO|MOUSE|MUSAM|MYCGE|MYCTU|NEIMB|NELNU|NEMVE|NEUCR|NITMS|ORNAN|ORYLA|ORYSJ|PARTE|PHANO|PHYPA|PHYRM|PIG|POPTR|PRIPA|PRUPE|PSEAE|PUCGT|PYRAE|RAT|RHESUS|RHOBA|RICCO|SACS2|SALTY|SCHJY|SCHPO|SCLS1|SELML|SETIT|SHEON|SOLLC|SOLTU|SORBI|SOYBN|SPIOL|STAA8|STRPU|STRR6|SYNY3|THAPS|THECC|THEKO|THEMA|THEYD|TOBAC|TRIAD|TRICA|TRIV3|TRYB2|USTMA|VIBCH|VITVI|WHEAT|WORM|XANCP|XENLA|XENOPUS|YARLI|YEAST|YERPE|ZEBRAFISH|ZOSMR
## | PANTHERVERSION: 19.0
## | PANTHERSOURCEURL: https://data.pantherdb.org
## | UNIPROT_MAPPING_SNAPSHOT: 2023-09-20
## | PATHWAYVERSION: 3.6.8
## | REFERENCE_PROTEOME_VERSIONS: 2023_03|2023_05
## | PROTEIN_CLASS_HEADER_VERSION: 17.0 (distributed in PANTHER19.0)
## | SOURCE_MANIFEST_SHA256: 2d76903606faa628eaae15ff96f7fa8f0c918fc3e7b4812491f54aa2117a164c
## | PANTHERSOURCEDATE: 2026-Sep10
## | package: AnnotationDbi
## | Db type: PANTHER.db
## | DBSCHEMA: PANTHER_DB
## | DBSCHEMAVERSION: 2.1
## | UNIPROT to ENTREZ mapping: 2023-09-20
## | UNIPROT_MAPPING_SHA256: 910d15c601b5df23890942107a4e21b1b52b97ece2f57ac012c248ff1a839e5a

By default, you can see that the PANTHER.db object is set to retrieve records from the various organisms supported by http://pantherdb.org. Methods are provided to restrict all queries to a specific organism. In order to change it, you first need to look up the appropriate organism identifier for the organism that you are interested in. The PANTHER gene ontology is based on the Uniprot reference proteome set. In order to display the choices, we have provided the helper function availablePthOrganisms which will list all the supported organisms along with their Uniprot organism name and taxonomy ids:

availablePthOrganisms(PANTHER.db)[1:5,]
##   AnnotationDbi Species PANTHER Species      Genome Source Genome Date
## 1                 HUMAN           HUMAN Reference Proteome     2023_03
## 2                 MOUSE           MOUSE Reference Proteome     2023_03
## 3                   RAT             RAT Reference Proteome     2023_03
## 4               CHICKEN           CHICK Reference Proteome     2023_03
## 5             ZEBRAFISH           DANRE Reference Proteome     2023_03
##   UNIPROT Species ID UNIPROT Species Name UNIPROT Taxon ID
## 1              HUMAN         Homo sapiens             9606
## 2              MOUSE         Mus musculus            10090
## 3                RAT    Rattus norvegicus            10116
## 4              CHICK        Gallus gallus             9031
## 5              DANRE          Danio rerio             7955

Once you have learned the PANTHER organism name for the organism of interest, you can then change the organism for the PANTHER.db object:

pthOrganisms(PANTHER.db) <- "HUMAN"
PANTHER.db
## PANTHER.db object:
## | ORGANISMS: HUMAN
## | PANTHERVERSION: 19.0
## | PANTHERSOURCEURL: https://data.pantherdb.org
## | UNIPROT_MAPPING_SNAPSHOT: 2023-09-20
## | PATHWAYVERSION: 3.6.8
## | REFERENCE_PROTEOME_VERSIONS: 2023_03|2023_05
## | PROTEIN_CLASS_HEADER_VERSION: 17.0 (distributed in PANTHER19.0)
## | SOURCE_MANIFEST_SHA256: 2d76903606faa628eaae15ff96f7fa8f0c918fc3e7b4812491f54aa2117a164c
## | PANTHERSOURCEDATE: 2026-Sep10
## | package: AnnotationDbi
## | Db type: PANTHER.db
## | DBSCHEMA: PANTHER_DB
## | DBSCHEMAVERSION: 2.1
## | UNIPROT to ENTREZ mapping: 2023-09-20
## | UNIPROT_MAPPING_SHA256: 910d15c601b5df23890942107a4e21b1b52b97ece2f57ac012c248ff1a839e5a
resetPthOrganisms(PANTHER.db)
PANTHER.db
## PANTHER.db object:
## | ORGANISMS: AMBTC|ANOCA|ANOPHELES|AQUAE|ARABIDOPSIS|ASHGO|ASPFU|BACCR|BACSU|BACTN|BATDJ|BOVINE|BRACM|BRADI|BRADU|BRAFL|BRANA|CAEBR|CANAL|CANINE|CAPAN|CHICKEN|CHIMP|CHLAA|CHLRE|CHLTR|CIOIN|CITSI|CLOBH|COELICOLOR|COXBU|CRYNJ|CUCSA|DAPPU|DEIRA|DICDI|DICPU|DICTD|ECOLI|EMENI|ENTH1|ERYGU|EUCGR|FELCA|FLY|FUSNN|GEOSL|GIAIC|GLOVI|GORGO|GOSHI|HAEIN|HALSA|HELAN|HELPY|HELRO|HORSE|HORVV|HUMAN|IXOSC|JUGRE|KLENI|KORCO|LACSA|LEIMA|LEPIN|LEPOC|LISMO|MAIZE|MALARIA|MANES|MARPO|MEDTR|METAC|METJA|MONBE|MONDO|MOUSE|MUSAM|MYCGE|MYCTU|NEIMB|NELNU|NEMVE|NEUCR|NITMS|ORNAN|ORYLA|ORYSJ|PARTE|PHANO|PHYPA|PHYRM|PIG|POPTR|PRIPA|PRUPE|PSEAE|PUCGT|PYRAE|RAT|RHESUS|RHOBA|RICCO|SACS2|SALTY|SCHJY|SCHPO|SCLS1|SELML|SETIT|SHEON|SOLLC|SOLTU|SORBI|SOYBN|SPIOL|STAA8|STRPU|STRR6|SYNY3|THAPS|THECC|THEKO|THEMA|THEYD|TOBAC|TRIAD|TRICA|TRIV3|TRYB2|USTMA|VIBCH|VITVI|WHEAT|WORM|XANCP|XENLA|XENOPUS|YARLI|YEAST|YERPE|ZEBRAFISH|ZOSMR
## | PANTHERVERSION: 19.0
## | PANTHERSOURCEURL: https://data.pantherdb.org
## | UNIPROT_MAPPING_SNAPSHOT: 2023-09-20
## | PATHWAYVERSION: 3.6.8
## | REFERENCE_PROTEOME_VERSIONS: 2023_03|2023_05
## | PROTEIN_CLASS_HEADER_VERSION: 17.0 (distributed in PANTHER19.0)
## | SOURCE_MANIFEST_SHA256: 2d76903606faa628eaae15ff96f7fa8f0c918fc3e7b4812491f54aa2117a164c
## | PANTHERSOURCEDATE: 2026-Sep10
## | package: AnnotationDbi
## | Db type: PANTHER.db
## | DBSCHEMA: PANTHER_DB
## | DBSCHEMAVERSION: 2.1
## | UNIPROT to ENTREZ mapping: 2023-09-20
## | UNIPROT_MAPPING_SHA256: 910d15c601b5df23890942107a4e21b1b52b97ece2f57ac012c248ff1a839e5a

As you can see, organisms are now restricted to Homo sapiens. To display all data which can be returned from a select query, the columns method can be used:

columns(PANTHER.db)
##  [1] "CLASS_ID"        "CLASS_TERM"      "COMPONENT_ID"    "COMPONENT_TERM" 
##  [5] "CONFIDENCE_CODE" "ENTREZ"          "EVIDENCE"        "EVIDENCE_TYPE"  
##  [9] "FAMILY_ID"       "FAMILY_TERM"     "GOSLIM_ID"       "GOSLIM_TERM"    
## [13] "PATHWAY_ID"      "PATHWAY_TERM"    "SPECIES"         "SUBFAMILY_TERM" 
## [17] "UNIPROT"

Some of these fields can also be used as keytypes:

keytypes(PANTHER.db)
## [1] "CLASS_ID"     "COMPONENT_ID" "ENTREZ"       "FAMILY_ID"    "GOSLIM_ID"   
## [6] "PATHWAY_ID"   "SPECIES"      "UNIPROT"

It is also possible to display all possible keys of a table for any keytype. If keytype is unspecified, the FAMILY_ID will be returned.

go_ids <- head(keys(PANTHER.db,keytype="GOSLIM_ID"))
go_ids
## [1] "GO:0000002" "GO:0000003" "GO:0000018" "GO:0000027" "GO:0000030"
## [6] "GO:0000041"

Finally, you can loop up whatever combinations of columns, keytypes and keys that you need when using select or mapIds.

cols <- "CLASS_ID"
res <- mapIds(PANTHER.db, keys=go_ids, column=cols, keytype="GOSLIM_ID", multiVals="list")
lengths(res)
## GO:0000002 GO:0000003 GO:0000018 GO:0000027 GO:0000030 GO:0000041 
##          6         52          8          8          4         12
res_inner <- select(PANTHER.db, keys=go_ids, columns=cols, keytype="GOSLIM_ID")
nrow(res_inner)
## [1] 90
tail(res_inner)
##       GOSLIM_ID CLASS_ID
## 1098 GO:0000041  PC00219
## 1214 GO:0000041  PC00175
## 1215 GO:0000041  PC00176
## 1266 GO:0000041  PC00198
## 1267 GO:0000041  PC00262
## 1280 GO:0000041  PC00068

By default, all tables will be joined using the central table with PANTHER family IDs by an inner join. Therefore all rows without an associated PANTHER family ID will be removed from the output. To include all results with an associated PANTHER family ID, the argument jointype of the select function must be set to left.

res_left <- select(PANTHER.db, keys=go_ids, columns=cols,keytype="GOSLIM_ID", jointype="left")
nrow(res_left)
## [1] 1812
tail(res_left)
##       GOSLIM_ID     FAMILY_ID CLASS_ID
## 1807 GO:0000041 PTHR45820:SF8     <NA>
## 1808 GO:0000041 PTHR45820:SF9     <NA>
## 1809 GO:0000041     PTHR46365     <NA>
## 1810 GO:0000041 PTHR46365:SF1     <NA>
## 1811 GO:0000041     PTHR46531  PC00227
## 1812 GO:0000041 PTHR46531:SF1  PC00227

To access the PANTHER Protein Class ontology tree structure, the method traverseClassTree can be used:

term <- "PC00209"
select(PANTHER.db,term, "CLASS_TERM","CLASS_ID")
## [1] CLASS_ID   CLASS_TERM
## <0 rows> (or 0-length row.names)
ancestors <- traverseClassTree(PANTHER.db,term,scope="ANCESTOR")
select(PANTHER.db,ancestors, "CLASS_TERM","CLASS_ID")
## [1] CLASS_ID   CLASS_TERM
## <0 rows> (or 0-length row.names)
parents <- traverseClassTree(PANTHER.db,term,scope="PARENT")
select(PANTHER.db,parents, "CLASS_TERM","CLASS_ID")
## [1] CLASS_ID   CLASS_TERM
## <0 rows> (or 0-length row.names)
children <- traverseClassTree(PANTHER.db,term,scope="CHILD")
select(PANTHER.db,children, "CLASS_TERM","CLASS_ID")
## [1] CLASS_ID   CLASS_TERM
## <0 rows> (or 0-length row.names)
offspring <- traverseClassTree(PANTHER.db,term,scope="OFFSPRING")
select(PANTHER.db,offspring, "CLASS_TERM","CLASS_ID")
## [1] CLASS_ID   CLASS_TERM
## <0 rows> (or 0-length row.names)

SessionInfo

sessionInfo()
## R version 4.6.1 (2026-06-24)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.5 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.24-bioc/R/lib/libRblas.so 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_GB              LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] PANTHER.db_1.0.13    RSQLite_3.53.3       AnnotationHub_4.3.2 
##  [4] BiocFileCache_3.3.0  dbplyr_2.6.0         AnnotationDbi_1.75.2
##  [7] IRanges_2.47.5       S4Vectors_0.51.10    Biobase_2.73.2      
## [10] BiocGenerics_0.59.12 generics_0.1.4       BiocStyle_2.41.0    
## 
## loaded via a namespace (and not attached):
##  [1] rappdirs_0.3.4       sass_0.4.10          BiocVersion_3.24.0  
##  [4] digest_0.6.39        magrittr_2.0.5       evaluate_1.0.5      
##  [7] bookdown_0.48        fastmap_1.2.0        blob_1.3.0          
## [10] jsonlite_2.0.0       DBI_1.3.0            BiocManager_1.30.27 
## [13] httr_1.4.9           purrr_1.2.2          Biostrings_2.81.9   
## [16] httr2_1.3.0          jquerylib_0.1.4      cli_3.6.6           
## [19] rlang_1.3.0          crayon_1.5.3         XVector_0.53.0      
## [22] bit64_4.8.6          withr_3.0.3          cachem_1.1.0        
## [25] yaml_2.3.12          otel_0.2.0           BiocBaseUtils_1.15.1
## [28] tools_4.6.1          memoise_2.0.1        dplyr_1.2.1         
## [31] filelock_1.0.3       curl_8.0.0           vctrs_0.7.3         
## [34] R6_2.6.1             png_0.1-9            lifecycle_1.0.5     
## [37] KEGGREST_1.53.6      Seqinfo_1.3.2        bit_4.6.0           
## [40] pkgconfig_2.0.3      bslib_0.12.0         pillar_1.11.1       
## [43] glue_1.8.1           xfun_0.61            tibble_3.3.1        
## [46] tidyselect_1.2.1     knitr_1.52           htmltools_0.5.9     
## [49] rmarkdown_2.32       compiler_4.6.1