Prioritizing candidate genes for complex noncommunicable diseases is critical to understanding their mechanisms and developing better diagnostics and treatments.
With the emergence of a great amount of biological data and molecular changes in the process of non-communicable diseases, more and more studies have been carried out on the identification and sequencing of disease-related genes by using the calculation method of protein-protein interaction (PPI) network. In gene sequencing methods, the topological features of PPI networks are often used, such as ToppNet and Razaghi Moghadam’s gene sequencing method.
In this study, a candidate gene prioritization method was proposed for non-communicable diseases considering disease risks transferred between genes in weighted disease PPI networks with weights for nodes and edges based on functional information.
In biological networks, nodes represented genes and edges represented interactions between products of these genes. Weights for nodes (genes) and edges (interactions) were calculated utilizing functional information represented by GO terms, respectively. For each gene g, the gene weight wg was defined as the proportion of GO terms annotated by g in all GO terms annotated by human genes. The interaction weight Wgh was defined as the functional similarity of two interacting genes g and h.
The prioritization of candidate genes was performed based on disease risk scores of each gene obtained from an iteration process considering disease risks transferred between genes.
library(prioGene)
#One-step interactions with known disease-causing genes are retained in networks
#'
#' net: a network
#' dise_gene: a matrix with one column of genes
#'
#' return: a matrix
net_disease <- deal_net(net,dise_gene)
#Get a one-to-many matrix of gene and GO term
#'
#'net_disease: a disease related network, matrix
#'GO_human: a matrix, gene and GO terms
#'
#' return: a matrix
genes_mat <- get_gene_mat(net_disease,GO_human)
#Get a one-to-many matrix of GO term and gene
#' net_disease: a disease related network, matrix
#' GO_human: a matrix, gene and GO terms
#'
#' return: a matrix
terms_mat <- get_term_mat(net_disease,GO_human)
#Get the GO term for each pair of nodes in the network
#' genes_mat: a one-to-many matrix of GO term and gene
#' net_disease: a disease related network, matrix
#'
#' return: a matrix
net_disease_term <- get_net_disease_term(genes_mat,net_disease)
#weighting gene
#' genes_mat: a one-to-many matrix of GO term and gene
#'
#' return: a matrix
node_weight <- get_node_weight(genes_mat)
#weighting edge
#' net_disease_term: GO terms for each pair of nodes in the network
#'
#' return: a matrix
edge_weight <- get_edge_weight(net_disease_term)
#Q is the disease risk transition probability matrix,
#which is composed of transition probabilities from one gene to another
Q <- get_Q()
#R_0 is the vector of initial disease risk scores for all genes
R_0<- get_R_0(dise_gene,node_weight,f=1)
#get the result the output number is the number of iterations
#' Q: the disease risk transition probability matrix
#' bet: a parameter to measure the importance of genes and interactions
#' R_0: the vector of initial disease risk scores for all genes
#' node_weight: a matrix, genes and their weights
#' threshold: a threshold for terminating iterations
#'
#' return: a matrix
result <- get_R(Q,0.5,R_0,node_weight,10^(-9))
#> 25
sessionInfo()
#> R version 3.6.1 (2019-07-05)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 7 x64 (build 7601) Service Pack 1
#>
#> Matrix products: default
#>
#> locale:
#> [1] LC_COLLATE=C
#> [2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936
#> [3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
#> [4] LC_NUMERIC=C
#> [5] LC_TIME=Chinese (Simplified)_People's Republic of China.936
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] prioGene_0.99.0
#>
#> loaded via a namespace (and not attached):
#> [1] compiler_3.6.1 magrittr_1.5 htmltools_0.3.6 tools_3.6.1
#> [5] yaml_2.2.0 Rcpp_1.0.1 stringi_1.4.3 rmarkdown_1.13
#> [9] knitr_1.23 stringr_1.4.0 digest_0.6.19 xfun_0.7
#> [13] evaluate_0.14