Browse code

add tidy_edge function

From: Shana White <vandersm@mail.uc.edu>

git-svn-id: file:///home/git/hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/KEGGlincs@130008 bc3139a8-67e5-0310-9ffc-ced21a209358

Shana White authored on 30/05/2017 20:07:01
Showing 5 changed files

... ...
@@ -16,6 +16,7 @@ export(node_mapping_info)
16 16
 export(overlap_info)
17 17
 export(path_genes_by_cell_type)
18 18
 export(refine_mappings)
19
+export(tidy_edge)
19 20
 export(toCytoscape)
20 21
 import(AnnotationDbi)
21 22
 import(KEGGREST)
... ...
@@ -34,8 +34,9 @@
34 34
 #'                                                       
35 35
 
36 36
 edge_mapping_info <-
37
-function(expanded_edges, data_added = FALSE, significance_markup = FALSE){
38
-    expanded_edges <- expanded_edges[,-c(1)]
37
+function(expanded_edges, data_added = FALSE, significance_markup = FALSE, 
38
+         tidy_edge = TRUE){
39
+    #expanded_edges <- expanded_edges[,-c(1)]
39 40
     for(i in 1:nrow(expanded_edges)){
40 41
         if (expanded_edges$subtype1[i] == "activation"){
41 42
             expanded_edges$color[i] = "#b20000"
... ...
@@ -145,6 +146,27 @@ function(expanded_edges, data_added = FALSE, significance_markup = FALSE){
145 146
             }
146 147
         }
147 148
     }
148
-    expanded_edges <- expanded_edges[,c(3:4, 1:2, 5:ncol(expanded_edges))]
149
+    #edge_map <- edge_map[,c(2,5,3,1,4:ncol(edge_map))]
150
+    expanded_edges<- cbind(expanded_edges[,c("entry1", "entry2","edgeID", 
151
+                                        "entry1accession", "entry2accession")],
152
+                          expanded_edges[,c(6:ncol(expanded_edges))])
153
+    expanded_edges <- expanded_edges[order(expanded_edges$edgeID),]
154
+
155
+    if (tidy_edge == TRUE) {
156
+      edge_IDs <- seq(min(expanded_edges$edgeID), max(expanded_edges$edgeID))
157
+      for (i in edge_IDs){
158
+        if(data_added == TRUE){
159
+          expanded_edges <- tidy_edge(edges = expanded_edges,
160
+                                      edge_id = edge_IDs[i], 
161
+                                      data_added = TRUE,
162
+                                      by_significance = TRUE)
163
+        }
164
+        if(data_added == FALSE){
165
+          expanded_edges <- tidy_edge(edges = expanded_edges,
166
+                                      edge_id = edge_IDs[i], 
167
+                                      data_added = FALSE)
168
+        }
169
+      }
170
+    }
149 171
     return(expanded_edges)
150 172
 }
151 173
new file mode 100644
... ...
@@ -0,0 +1,96 @@
1
+#' Tidy up pathway by combining edges inside of edge_mapping_info
2
+#' @description Combine edges that share nodes and have other commonalities
3
+#' @export
4
+#' @param edges The edge dataframe 
5
+#' @param edge_id The numeric value for the edge_id
6
+#' @param by_significance A logical indicator; option if data is added
7
+#' @param by_number A logical indicator; gives rough estimate of edge amount
8
+#' @return A data frame that has had the given edge condensed for viewing
9
+#' @examples \dontrun{
10
+#' if (tidy_edge == TRUE) {
11
+#'    edge_IDs <- seq(min(expanded_edges$edgeID), max(expanded_edges$edgeID))
12
+#'    for (i in edge_IDs){
13
+#'      if(data_added == TRUE){
14
+#'        expanded_edges <- tidy_edge(edges = expanded_edges,
15
+#'                                    edge_id = edge_IDs[i], 
16
+#'                                    data_added = TRUE,
17
+#'                                    by_significance = TRUE)
18
+#'      }
19
+#'      if(data_added == FALSE){
20
+#'        expanded_edges <- tidy_edge(edges = expanded_edges,
21
+#'                                    edge_id = edge_IDs[i], 
22
+#'                                    data_added = FALSE)
23
+#'      }
24
+#'    }
25
+#'
26
+#'}
27
+#'}
28
+
29
+tidy_edge <- function(edges, edge_id, data_added = TRUE, 
30
+                      by_significance = FALSE, by_number = TRUE){
31
+  edge <- edges[edges$edgeID == edge_id,]
32
+  edges_1 <- edges[edges$edgeID != edge_id,]
33
+  if (!data_added){
34
+    entry1accessions <- paste(unique(edge$entry1accession), collapse =",")
35
+    entry2accessions <- paste(unique(edge$entry2accession), collapse =",")
36
+    entry1symbols <- paste(unique(edge$entry1symbol), collapse = ",")
37
+    entry2symbols <- paste(unique(edge$entry2symbol), collapse = ",")
38
+    tooltip <- paste(entry1symbols, edge$value[1], entry2symbols)
39
+    edge$entry1symbol[1] <- entry1symbols
40
+    edge$entry2symbol[1] <- entry2symbols
41
+    edge$entry1accession[1] <- entry1accessions
42
+    edge$entry2accession[1] <- entry2accessions
43
+    edge$tooltip[1] <- tooltip
44
+    reduced_edge <- edge[1,]
45
+  }
46
+  if (data_added){
47
+    if (sum(edge$has_data) == 0){
48
+      entry1accessions <- paste(unique(edge$entry1accession), collapse =",")
49
+      entry2accessions <- paste(unique(edge$entry2accession), collapse =",")
50
+      entry1symbols <- paste(unique(edge$entry1symbol), collapse = ",")
51
+      entry2symbols <- paste(unique(edge$entry2symbol), collapse = ",")
52
+      tooltip <- paste(entry1symbols, edge$value[1], entry2symbols)
53
+      edge$entry1symbol[1] <- entry1symbols
54
+      edge$entry2symbol[1] <- entry2symbols
55
+      edge$entry1accession[1] <- entry1accessions
56
+      edge$entry2accession[1] <- entry2accessions
57
+      edge$tooltip[1] <- tooltip
58
+      reduced_edge <- edge[1,]
59
+    }
60
+    
61
+    if (sum(edge$has_data) != 0 ){
62
+      reduced_edge <- edge[edge$has_data != 0,]
63
+      if(by_significance == TRUE){
64
+        for (i in 1:length(unique(reduced_edge$color))){
65
+          rp <- reduced_edge[reduced_edge$color == unique(reduced_edge$color)[i],]
66
+          reduced_edge <- reduced_edge[reduced_edge$color != unique(reduced_edge$color)[i],]
67
+          entry1accessions <- paste(unique(rp$entry1accession), collapse =",")
68
+          entry2accessions <- paste(unique(rp$entry2accession), collapse =",")
69
+          entry1symbols <- paste(unique(rp$entry1symbol), collapse = ",")
70
+          entry2symbols <- paste(unique(rp$entry2symbol), collapse = ",")
71
+          tooltip <- paste(unique(rp$tooltip), collapse = " , ")
72
+          average_summary_score <- mean(rp$summary_score)
73
+          rp$entry1symbol[1] <- entry1symbols
74
+          rp$entry2symbol[1] <- entry2symbols
75
+          rp$entry1accession[1] <- entry1accessions
76
+          rp$entry2accession[1] <- entry2accessions
77
+          rp$tooltip[1] <- tooltip
78
+          rp$summary_score[1] <- average_summary_score
79
+          
80
+          if(by_number == TRUE) {
81
+            col <- rp$color[1]
82
+            thresh <- min(5, (nrow(rp)-1))
83
+            value <- 1-(0.1*thresh)
84
+            col1 <- round(value*(col2rgb(col)[1]))
85
+            col2 <- round(value*(col2rgb(col)[2]))
86
+            col3 <- round(value*(col2rgb(col)[3]))
87
+            rp$color[1] <- rgb(col1, col2, col3, maxColorValue = 255)
88
+          }    
89
+          reduced_edge <- rbind(rp[1,], reduced_edge)
90
+        }
91
+      }
92
+    }
93
+  }
94
+  edges <- rbind (edges_1, reduced_edge)
95
+  return(edges)
96
+}
0 97
\ No newline at end of file
... ...
@@ -5,7 +5,7 @@
5 5
 \title{Prepare edges for mapping}
6 6
 \usage{
7 7
 edge_mapping_info(expanded_edges, data_added = FALSE,
8
-  significance_markup = FALSE)
8
+  significance_markup = FALSE, tidy_edge = TRUE)
9 9
 }
10 10
 \arguments{
11 11
 \item{expanded_edges}{The data frame object generated via the function 
12 12
new file mode 100644
... ...
@@ -0,0 +1,45 @@
1
+% Generated by roxygen2: do not edit by hand
2
+% Please edit documentation in R/tidy_edge.R
3
+\name{tidy_edge}
4
+\alias{tidy_edge}
5
+\title{Tidy up pathway by combining edges inside of edge_mapping_info}
6
+\usage{
7
+tidy_edge(edges, edge_id, data_added = TRUE, by_significance = FALSE,
8
+  by_number = TRUE)
9
+}
10
+\arguments{
11
+\item{edges}{The edge dataframe}
12
+
13
+\item{edge_id}{The numeric value for the edge_id}
14
+
15
+\item{by_significance}{A logical indicator; option if data is added}
16
+
17
+\item{by_number}{A logical indicator; gives rough estimate of edge amount}
18
+}
19
+\value{
20
+A data frame that has had the given edge condensed for viewing
21
+}
22
+\description{
23
+Combine edges that share nodes and have other commonalities
24
+}
25
+\examples{
26
+\dontrun{
27
+if (tidy_edge == TRUE) {
28
+   edge_IDs <- seq(min(expanded_edges$edgeID), max(expanded_edges$edgeID))
29
+   for (i in edge_IDs){
30
+     if(data_added == TRUE){
31
+       expanded_edges <- tidy_edge(edges = expanded_edges,
32
+                                   edge_id = edge_IDs[i], 
33
+                                   data_added = TRUE,
34
+                                   by_significance = TRUE)
35
+     }
36
+     if(data_added == FALSE){
37
+       expanded_edges <- tidy_edge(edges = expanded_edges,
38
+                                   edge_id = edge_IDs[i], 
39
+                                   data_added = FALSE)
40
+     }
41
+   }
42
+
43
+}
44
+}
45
+}