## ----echo=TRUE,eval=FALSE-----------------------------------------------------
# require(STRINGdb)
# require(igraph)
# require(biomaRt)
# 
# # 1. getSTRINGdb for human
# string_db <- STRINGdb$new(species=9606)
# human_graph <- string_db$get_graph()
# 
# # 2. get edges with high confidence score
# edge.scores <- E(human_graph)$combined_score
# ninetyth.percentile <- quantile(edge.scores, 0.9)
# thresh <- data.frame(name='90th percentile',
#                      val=ninetyth.percentile)
# human_graph <- subgraph.edges(human_graph,
#                               E(human_graph)[combined_score > ninetyth.percentile])
# 
# # 3. create adjacency matrix
# adj_matrix <- as_adjacency_matrix(human_graph)
# 
# 
# # 4. map gene ids to protein ids
# 
# ### get gene/protein ids via Biomart
# mart=useMart(host = 'grch37.ensembl.org',
#              biomart='ENSEMBL_MART_ENSEMBL',
#              dataset='hsapiens_gene_ensembl')
# 
# ### extract protein ids from the human network
# protein_ids <- sapply(strsplit(rownames(adj_matrix), '\\.'),
#                       function(x) x[2])
# 
# ### get protein to gene id mappings
# mart_results <- getBM(attributes = c("ensembl_gene_id",
#                                      "ensembl_peptide_id"),
#                       filters = "ensembl_peptide_id", values = protein_ids,
#                       mart = mart)
# 
# ### replace protein ids with gene ids
# ix <- match(protein_ids, mart_results$ensembl_peptide_id)
# ix <- ix[!is.na(ix)]
# 
# newnames <- protein_ids
# newnames[match(mart_results[ix,'ensembl_peptide_id'], newnames)] <-
#     mart_results[ix, 'ensembl_gene_id']
# rownames(adj_matrix) <- newnames
# colnames(adj_matrix) <- newnames
# 
# ppi <- adj_matrix[!duplicated(newnames), !duplicated(newnames)]
# nullrows <- Matrix::rowSums(ppi)==0
# ppi <- ppi[!nullrows,!nullrows] ## ppi is the network with gene ids

## -----------------------------------------------------------------------------
sessionInfo()