Identifies statistically associated protein domain pairs connected by a disproportionally high number of protein-protein interactions.




An object of class graph storing the BioPlex PPIs. Typically obtained via bioplex2graph.


A data.frame containing all tested PFAM domain pairs ordered by association strength.


Given PFAM domain annotations for each node of the graph, the function assesses domain pairs connected by two or more interactions for significance using Fisher’s exact test based on 1) the number of interactions connecting both domains; 2) the numbers of interactions involving either domain individually; and 3) the number of interactions not involving either domain.

It is important to note that although the domain association analysis identifies pairs of PFAM domains whose parent proteins interact preferentially across the network, this does not necessarily mean that these domains themselves are responsible for the interaction. Many may simply be passengers that associate as a consequence of interactions mediated by contacts elsewhere in the protein sequence.


Huttlin et al. Dual proteome-scale networks reveal cell-specific remodeling of the human interactome. Cell, 184(11):3022-3040.e28, 2021.


  # (1) obtain BioPlex PPI network for 293T cells
  df <- getBioPlex(cell.line = "HCT116", version = "1.0")
#> Using cached version from 2023-01-14 23:49:23 <- bioplex2graph(df)
  # (2) annotate PFAM domains
#> Loading required package: BiocFileCache
#> Loading required package: dbplyr
#> Attaching package: ‘AnnotationHub’
#> The following object is masked from ‘package:Biobase’:
#>     cache
  ah <- AnnotationHub()
#> snapshotDate(): 2022-10-31
  orgdb <- query(ah, c("orgDb", "Homo sapiens"))
  orgdb <- orgdb[[1]]
#> loading from cache
#> Loading required package: AnnotationDbi
#> Attaching package: ‘AnnotationDbi’
#> The following object is masked from ‘package:sparklyr’:
#>     select <- annotatePFAM(, orgdb)

  # (3) domain-domain association analysis
  res <- testDomainAssociation(