okata commited on
Commit
bd8cdd3
·
verified ·
1 Parent(s): 7278ad2

Upload 42 files

Browse files
Dockerfile CHANGED
@@ -1,14 +1,67 @@
1
- FROM rocker/r-base:latest
2
-
3
- WORKDIR /code
4
-
5
- RUN install2.r --error \
6
- shiny \
7
- dplyr \
8
- ggplot2 \
9
- readr \
10
- ggExtra
11
-
12
- COPY . .
13
-
14
- CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM bioconductor/bioconductor_docker:RELEASE_3_19
2
+
3
+ # Update apt-get and install necessary libraries
4
+ RUN apt-get update \
5
+ && apt-get install -y \
6
+ libcurl4-openssl-dev \
7
+ libxml2-dev \
8
+ openjdk-11-jdk \
9
+ libcairo2-dev \
10
+ libxt-dev \
11
+ nginx \
12
+ && apt-get clean \
13
+ && rm -rf /var/lib/apt/lists/*
14
+
15
+ # Install R packages
16
+ RUN R -e "install.packages(c('shinyjqui','BiocManager','bslib','rstatix','ggpubr','remotes', 'devtools', 'shiny','shinyscreenshot', 'readr', 'shinyAce', 'ggplot2', 'dplyr', 'shinythemes', 'openintro', 'plotly', 'DT', 'ggprism', 'ggbeeswarm', 'shinyFiles', 'stringr', 'shinyBS', 'shinydashboard', 'shinyWidgets', 'tidyr', 'pheatmap', 'grid', 'gridExtra', 'ggeasy', 'ggtext', 'colorspace', 'shinyjqui', 'tidyverse', 'gprofiler2', 'colourpicker', 'shinydashboardPlus', 'jsonlite', 'reshape2','shinyalert'))"
17
+
18
+ RUN R -e 'BiocManager::install("graph")'
19
+ RUN R -e "source('https://install-github.me/dreamRs/esquisse')"
20
+
21
+ # Install plumber and cyjshiny
22
+ RUN R -e "install.packages(c('plumber','cyjShiny','svglite'))"
23
+
24
+ RUN mkdir -p /srv/app/modules \
25
+ && mkdir -p /srv/app/pathwaymap \
26
+ && mkdir -p /srv/app/svg \
27
+ && mkdir -p /srv/app/www \
28
+ && mkdir -p /srv/app/data
29
+
30
+ RUN rm /etc/nginx/sites-enabled/default \
31
+ && mkdir -p /var/cache/nginx \
32
+ && mkdir -p /var/log/nginx \
33
+ && mkdir -p /var/lib/nginx \
34
+ && mkdir -p /var/lib/nginx/body \
35
+ #&& chown -R www-data:www-data /var/log/nginx \
36
+ #&& chown -R www-data:www-data /var/lib/nginx \
37
+ #&& chown -R www-data:www-data /var/cache/nginx \
38
+ && chmod -R 777 /var/log/nginx \
39
+ && chmod -R 777 /var/lib/nginx \
40
+ && chmod -R 777 /var/cache/nginx \
41
+ && touch /var/run/nginx.pid \
42
+ && chmod 777 /var/run/nginx.pid
43
+ #&& chown -R www-data:www-data /var/run/nginx.pid
44
+
45
+ COPY nginx.conf /etc/nginx/nginx.conf
46
+ RUN chmod 666 /etc/nginx/nginx.conf
47
+
48
+ COPY ./app/ui.R /srv/app/
49
+ COPY ./app/server.R /srv/app/
50
+ COPY ./app/plumber.R /srv/app/
51
+ COPY ./app/R /srv/app/modules/
52
+ COPY ./app/data /srv/app/pathwaymap/
53
+ COPY ./app/svg /srv/app/svg/
54
+ COPY ./app/www /srv/app/www/
55
+ COPY ./scripts/start.sh /usr/local/bin/start.sh
56
+
57
+
58
+ RUN chmod +x /usr/local/bin/start.sh
59
+
60
+ RUN chmod -R 777 /srv/app \
61
+ && chmod -R 777 /srv/app/data
62
+
63
+ EXPOSE 7860
64
+ EXPOSE 8000
65
+ EXPOSE 9000
66
+
67
+ CMD ["sh", "/usr/local/bin/start.sh"]
LICENCE ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2024, Takaki OKA
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
README.md CHANGED
@@ -1,10 +1,11 @@
1
- ---
2
- title: Test
3
- emoji: 📚
4
- colorFrom: blue
5
- colorTo: yellow
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
 
10
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: msdial2cytoscape-for-lipidomics
3
+ emoji: 📚
4
+ colorFrom: blue
5
+ colorTo: yellow
6
+ sdk: docker
7
+ pinned: false
8
+ license: mit
9
+ ---
10
+
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app/R/data_processing.R ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##' Checking duplicated metabolites from alignment table
2
+ ##'
3
+ ##' @title Checking duplicated metabolites from alignment table
4
+ ##' @param data Lipidomics alignment file form MS-DIAL analysis
5
+ ##' @return The alignment table with duplicated metabolites removed.
6
+ ##' @examples
7
+ ##' data <- read.csv("D:/100cells/20240222/lipid_metabolome.csv",header = F)
8
+ ##' result <- Metabolite_duplicate_check(data)
9
+ ##' @references
10
+ ##' @author Takaki Oka
11
+ ##' @export
12
+ Metabolite_duplicate_check <- function(data){
13
+ # convert rownames to column for row index
14
+
15
+ ontology_column <- 12
16
+ batch_id_row <- 2
17
+ peakinfo_column <- 1:35
18
+ header_row <- 5
19
+ peaktable <- data[, !data[batch_id_row, ] %in% NA, drop = FALSE]
20
+ originalcolnum <- colnames(peaktable)
21
+ peaktable <- peaktable %>%
22
+ setNames(peaktable[5,]) %>%
23
+ rownames_to_column()
24
+
25
+ # Find rows with max 'Fill %' for each 'Metabolite name'
26
+ check_duplicates <- peaktable %>%
27
+ group_by(`Metabolite name`) %>%
28
+ slice_max(`Fill %`,n=1) %>%
29
+ ungroup()
30
+
31
+ id <- check_duplicates$rowname
32
+ datav2 <- peaktable %>%
33
+ filter(rowname %in% c(id, 1:5)) %>%
34
+ dplyr::select(-rowname)
35
+ colnames(datav2) <- originalcolnum
36
+ return(datav2)
37
+ }
38
+
39
+ ##' Converting alignment file
40
+ ##'
41
+ ##' @title Converting alignment file to dataframe
42
+ ##' @param data alignment file form MS-DIAL analysis
43
+ ##' @return dataframe of alignment file
44
+ ##' @examples
45
+ ##' process_alignment_file(data)
46
+ ##' @references
47
+ ##' @author Takaki OKA
48
+ ##' @export
49
+ process_alignment_file <- function(data) {
50
+ ontology_column <- 12
51
+ batch_id_row <- 2
52
+ peakinfo_column <- 1:35
53
+ header_row <- 5
54
+ data <- Metabolite_duplicate_check(data)
55
+ #data <- Median_normalize_to_alignment_format(data)
56
+ peaktable <- data[, !data[batch_id_row, ] %in% NA, drop = FALSE]
57
+ peaktable <- peaktable[, peaktable[batch_id_row, ] == "Sample", drop = FALSE]
58
+ sample_info <- data.frame(name = unlist(peaktable[5, ]),
59
+ Class = unlist(peaktable[1, ]))
60
+
61
+ peaktable <- cbind(data[, peakinfo_column], peaktable)
62
+ colnames(peaktable) <- peaktable[header_row, ]
63
+ peaktable <- peaktable[-c(1:header_row), ]
64
+
65
+ peaktable[, -peakinfo_column] <- data.frame(lapply(peaktable[, -peakinfo_column], as.numeric))
66
+ peaktable <- distinct(peaktable,`Metabolite name`,.keep_all = TRUE)
67
+ lipid_info <- peaktable[, colnames(peaktable) %in% c("Metabolite name","Ontology",sample_info$name)]
68
+ peak_info <- peaktable[, !colnames(peaktable) %in% c("Metabolite name", sample_info$name)]
69
+
70
+ return(list(lipid_info,sample_info,peak_info))
71
+ }
72
+
73
+ ##' Median normalizeing of alignment table wuth retaining alignment format
74
+ ##'
75
+ ##' @title Median normalizeing of alignment table
76
+ ##' @param data Lipidomics alignment file form MS-DIAL analysis
77
+ ##' @return Median normalized data with alignment format
78
+ ##' @examples
79
+ ##' data <- read.csv("D:/100cells/20240222/lipid_metabolome.csv",header = F)
80
+ ##' result <- Median_normalize(data)
81
+ ##' @references
82
+ ##' @author Nami Sakamoto, Takaki Oka
83
+ ##' @export
84
+ Median_normalize_to_alignment_format <- function(data){
85
+
86
+ # Extract lipidontinf
87
+ peakinfo <- data[5:nrow(data), c(1:35)]
88
+ lipidontinf <- data[5:nrow(data), c(4, 12)]
89
+ colnames(lipidontinf) <- lipidontinf[1,]
90
+ lipidontinf <- lipidontinf[-1,]
91
+ rownames(lipidontinf) <- NULL
92
+
93
+ # Extract sample information
94
+ sampleinf <- t(data[1:4, 35:ncol(data)])
95
+ sampledata <- t(data[5:nrow(data), 36:ncol(data)])
96
+ Metabolitename <- t(data[-c(1:4), 4])
97
+
98
+ # Combine sample information
99
+ colnames(sampledata) <- colnames(Metabolitename)
100
+ datav2_v2 <- cbind(data.frame(sampleinf, rbind(data.frame(Metabolitename), data.frame(sampledata))))
101
+ colnames(datav2_v2) <- datav2_v2[1,]
102
+ datav2_v2 <- datav2_v2[-1,]
103
+ rownames(datav2_v2) <- NULL
104
+ names(datav2_v2)[5] <- "name"
105
+
106
+ # Filter out 'Batch ID' values and process numeric data
107
+ lipidmetabolomedata_all <- datav2_v2 %>%
108
+ filter(!`Batch ID` %in% c('Average', 'Stdev'))
109
+ numericdata <- lipidmetabolomedata_all[, -c(1:4)]
110
+ rownames(numericdata) <- NULL
111
+ numericdatax <- as.data.frame(sapply(numericdata[, -1], as.numeric))
112
+ rownames(numericdatax) <- lipidmetabolomedata_all$name
113
+ numericdatax2 <- numericdatax %>%
114
+ tibble::rownames_to_column() %>%
115
+ dplyr::rename(sampleid = rowname) %>%
116
+ pivot_longer(!sampleid, names_to = "lipidname", values_to = "value")
117
+
118
+ log2value <- numericdatax2 %>%
119
+ mutate(log2value = log2(value)) %>%
120
+ dplyr::select(-value) %>%
121
+ pivot_wider(names_from = "lipidname", values_from = "log2value") %>%
122
+ column_to_rownames(var = "sampleid")
123
+
124
+ samplemedian <- log2value %>% apply(1,median) %>% as.data.frame()
125
+ colnames(samplemedian) <- "median"
126
+
127
+ mean_forsamplemedian <- mean(samplemedian$median)
128
+
129
+ log2mediannormalizedata <- rownames_to_column(log2value) %>%
130
+ dplyr::rename(sampleid = rowname) %>%
131
+ left_join(rownames_to_column(samplemedian), by = c("sampleid" = "rowname")) %>%
132
+ pivot_longer(!c(sampleid, median), names_to = "lipidname", values_to = "log2value") %>%
133
+ mutate(mediannormvalue = log2value - median + mean_forsamplemedian) %>%
134
+ dplyr::select(-c(log2value, median)) %>%
135
+ pivot_wider(names_from = "lipidname", values_from = "mediannormvalue") %>%
136
+ column_to_rownames(var = "sampleid")
137
+
138
+ log2_2xmediannormalizedata <- 2^log2mediannormalizedata
139
+ log2_2xmediannormalizedata_0 <- lipidmetabolomedata_all[, c(1:5)] %>%
140
+ left_join(rownames_to_column(log2_2xmediannormalizedata), by = c("name" = "rowname")) %>% t() %>% data.frame()%>% rownames_to_column("V0")
141
+ aligntable <- right_join(peakinfo,log2_2xmediannormalizedata_0,by = c("V4" = "V0"))
142
+ headerrow <- tail(aligntable,n = 5)
143
+ aligntable <- rbind(headerrow,aligntable)
144
+ aligntable[1:5,1:35] <- data[1:5,1:35]
145
+ aligntable <- filter(aligntable,is.na(V1)==F)
146
+ return(aligntable)
147
+ }
148
+ ##' Converting alignment file to expression data of lipid class
149
+ ##'
150
+ ##' @title Converting alignment file to dataframe
151
+ ##' @param data alignment file form MS-DIAL analysis
152
+ ##' @return Expression data of lipid class and sample meta data
153
+ ##' @examples
154
+ ##' convert_msdial_export_to_lipid_class_dataframe(data)
155
+ ##' @references
156
+ ##' @author Takaki OKA
157
+ ##' @export
158
+ convert_msdial_export_to_lipid_class_dataframe <- function(data) {
159
+ data_frame <- process_alignment_file(data)
160
+ lipid_info <- data_frame[[1]]
161
+ sample_info <- data_frame[[2]]
162
+
163
+ lipidtable <- lipid_info[,colnames(lipid_info) %in% c("Metabolite name","Ontology", sample_info$name)] %>% pivot_longer(cols = -(1:2))
164
+ lipidtable <- lipidtable %>%
165
+ group_by(name, Ontology) %>%
166
+ mutate(mean = mean(value)) %>%
167
+ ungroup() %>%
168
+ distinct(name, Ontology, .keep_all = TRUE) %>%
169
+ select(-c("Metabolite name", value)) %>%
170
+ pivot_wider(values_from = mean, names_from = Ontology)
171
+ return(list(lipidtable,sample_info))
172
+ }
173
+
174
+ ##' Converting alignment file to expression data of lipid molecules
175
+ ##'
176
+ ##' @title Converting alignment file to dataframe
177
+ ##' @param data alignment file form MS-DIAL analysis
178
+ ##' @return Expression data of lipid molecules and sample meta data
179
+ ##' @examples
180
+ ##' convert_msdial_export_to_lipid_molecules_dataframe(data)
181
+ ##' @references
182
+ ##' @author Takaki OKA
183
+ ##' @export
184
+ convert_msdial_export_to_lipid_molecules_dataframe <- function(data) {
185
+ data_frame <- process_alignment_file(data)
186
+ lipid_info <- data_frame[[1]]
187
+ sample_info <- data_frame[[2]]
188
+
189
+ lipidtable <- lipid_info[,colnames(lipid_info) %in% c("Metabolite name", sample_info$name)] %>% pivot_longer(cols = -(1)) %>% pivot_wider(names_from = `Metabolite name`,values_from = value)
190
+ return(list(lipidtable,sample_info))
191
+ }
192
+
193
+ ##' Updating select input with file upload
194
+ ##'
195
+ ##' @title Updating select input with file upload
196
+ ##' @param data alignment file form MS-DIAL analysis
197
+ ##' @return Expression data of lipid molecules and sample meta data
198
+ ##' @examples
199
+ ##' convert_msdial_export_to_lipid_molecules_dataframe(data)
200
+ ##' @references
201
+ ##' @author Takaki OKA
202
+ ##' @export
203
+ processAndUpdateInputs <- function(data, session, metadata, metainfocol) {
204
+ shiny::updateSelectInput(session, "y", selected = paste(colnames(data)[c(metainfocol + 1)]), choices = colnames(data)[-c(1:metainfocol)])
205
+ shiny::updateSelectInput(session, "w", selected = "Class", choices = colnames(data)[c(2:metainfocol)])
206
+ shiny::updateSelectInput(session, "z", selected = "Class", choices = colnames(data)[c(2:metainfocol)])
207
+ }
208
+
209
+ processAndUpdateInputs2 <- function(data, session, metadata, metainfocol) {
210
+ #shiny::updateSelectInput(session, "y", selected = paste(colnames(data)[c(metainfocol + 1)]), choices = colnames(data)[-c(1:metainfocol)])
211
+ shiny::updateSelectInput(session, "X1", selected = paste(colnames(data)[c(metainfocol + 1)]), choices = colnames(data)[-c(1:metainfocol)])
212
+ shiny::updateSelectInput(session, "X2", selected = paste(colnames(data)[c(metainfocol + 1)]), choices = colnames(data)[-c(1:metainfocol)])
213
+ #shiny::updateSelectInput(session, "z", selected = "Class", choices = colnames(data)[c(2:metainfocol)])
214
+ }
215
+ # update_select_input <- function(input,session) {
216
+ #
217
+ #
218
+ #
219
+ # }
220
+
221
+ scale_rows <- function(x) {
222
+ t(apply(x, 1, function(row) scales::rescale(row, to = c(-2, 2))))
223
+ }
224
+
225
+ lipidmeancalforgroupnode <- function(data, metadata, selectclass) {
226
+ Ontology_column <- 12
227
+ BatchID_row <- 2
228
+ peakinfo_column <- 1:35
229
+ header_row <- 5
230
+ processed_data <- process_alignment_file(data)
231
+ lipid_data_classmean <- processed_data[[1]]
232
+ sampleinfo <- processed_data[[2]]
233
+ lipid_data_lipidclassmean <- pivot_longer(lipid_data_classmean, cols = -c(1:2)) %>%
234
+ select(`Metabolite name`, Ontology, name, value) %>%
235
+ inner_join(metadata, by = "name") %>%
236
+ select(`Metabolite name`,Ontology ,selectclass, name, value) %>%
237
+ group_by(`Metabolite name`, across(all_of(selectclass))) %>%
238
+ mutate(mean = mean(value)) %>%
239
+ ungroup() %>%
240
+ distinct(`Metabolite name`,across(all_of(selectclass)), .keep_all = TRUE) %>%
241
+ select(`Metabolite name`, Ontology, selectclass, mean) %>%
242
+ pivot_wider(names_from = selectclass, values_from = mean)
243
+ return(lipid_data_lipidclassmean)
244
+ }
245
+
246
+ processSampleInRows <- function(originaldata, session, input) {
247
+ colnames(originaldata) <- originaldata[1,]
248
+ originaldata <- originaldata[-1,]
249
+ originaldata[, -c(1:2)] <- apply(originaldata[, -c(1:2)], 2, as.numeric)
250
+ lipidont <- read.csv(input$ontfile$datapath, check.names = FALSE)
251
+ colnames(lipidont)[1] <- "lipid"
252
+ colnames(originaldata)[1] <- "name"
253
+ if (length(input$file2) != 0) {
254
+ metadata <- read.csv(input$file2$datapath)
255
+ colnames(metadata)[1] <- "name"
256
+ data <- originaldata %>%
257
+ pivot_longer(cols = -c(1:2), names_to = "lipid") %>%
258
+ inner_join(lipidont, by = c("lipid")) %>%
259
+ group_by(name, Ontology) %>%
260
+ mutate(mean = mean(value)) %>%
261
+ ungroup() %>%
262
+ distinct(name, Ontology, .keep_all = TRUE) %>%
263
+ select(1, 2, 5, 6) %>%
264
+ pivot_wider(names_from = "Ontology", values_from = "mean")
265
+ data <- inner_join(metadata, data, by = c("name" = "name"))
266
+ } else {
267
+ metadata <- data.frame(name = originaldata[,1],Class = originaldata[,2])
268
+ data <- originaldata %>%
269
+ pivot_longer(cols = -c(1:2), names_to = "lipid") %>%
270
+ inner_join(lipidont, by = c("lipid")) %>%
271
+ group_by(name, Ontology) %>%
272
+ mutate(mean = mean(value)) %>%
273
+ ungroup() %>%
274
+ distinct(name, Ontology, .keep_all = TRUE) %>%
275
+ select(1, 5, 6) %>%
276
+ pivot_wider(names_from = "Ontology", values_from = "mean")
277
+ data <- inner_join(metadata, data, by = c("name" = "name"))
278
+ }
279
+ return(list(data,metadata))
280
+ }
281
+
282
+ processMSDIALExport <- function(originaldata, session, input) {
283
+ if (length(input$file2) != 0) {
284
+ tablelist <- originaldata %>% convert_msdial_export_to_lipid_class_dataframe()
285
+ data <- tablelist[[1]]
286
+ metadata <- read.csv(input$file2$datapath)
287
+ colnames(metadata)[1] <- "name"
288
+ metadata <- inner_join(tablelist[[2]], metadata, by = c("name"))
289
+ data <- inner_join(metadata, data, by = c("name" = "name"))
290
+ metainfocol <- ncol(metadata)
291
+ print(data)
292
+ } else {
293
+ tablelist <- originaldata %>% convert_msdial_export_to_lipid_class_dataframe()
294
+ data <- tablelist[[1]]
295
+ metadata <- tablelist[[2]]
296
+ metainfocol <- ncol(metadata)
297
+ data <- inner_join(metadata, data, by = c("name" = "name"))
298
+ }
299
+ return(list(data,metadata))
300
+ }
301
+
302
+ processMSDIALExporttomoldata <- function(originaldata, session, input) {
303
+ if (length(input$file2) != 0) {
304
+ tablelist <- originaldata %>% convert_msdial_export_to_lipid_molecules_dataframe()
305
+ data <- tablelist[[1]]
306
+ metadata <- read.csv(input$file2$datapath)
307
+ colnames(metadata)[1] <- "name"
308
+ metadata <- inner_join(tablelist[[2]], metadata, by = c("name"))
309
+ data <- inner_join(metadata, data, by = c("name" = "name"))
310
+ metainfocol <- ncol(metadata)
311
+ } else {
312
+ tablelist <- originaldata %>% convert_msdial_export_to_lipid_molecules_dataframe()
313
+ data <- tablelist[[1]]
314
+ metadata <- tablelist[[2]]
315
+ metainfocol <- ncol(metadata)
316
+ data <- inner_join(metadata, data, by = c("name" = "name"))
317
+ }
318
+ return(list(data,metadata))
319
+ }
320
+
321
+ processSampleInRowstomoldata <- function(originaldata, session, input) {
322
+ moldata <- originaldata
323
+ colnames(moldata) <- moldata[1,]
324
+ moldata <- moldata[, !duplicated(colnames(moldata))]
325
+ moldata <- moldata[-1,]
326
+ moldata[,-c(1,2)] <- apply(moldata[,-c(1,2)],2,as.numeric) %>% data.frame()
327
+ colnames(moldata)[1] <- "name"
328
+ if (length(input$file2) != 0) {
329
+ metadata <- read.csv(input$file2$datapath)
330
+ colnames(metadata)[1] <- "name"
331
+ data <- inner_join(metadata, moldata, by = c("name" = "name"))
332
+ } else {
333
+ metadata <- data.frame(name = originaldata[,1],Class = originaldata[,2])
334
+ data <- moldata
335
+ }
336
+ return(list(data,metadata))
337
+ }
338
+
339
+ read_graph_json <- function(file_path) {
340
+ tryCatch({
341
+ paste(readLines(file_path), collapse = "")
342
+ }, error = function(e) {
343
+ message("Error reading graph JSON file: ", e$message)
344
+ return(NULL)
345
+ })
346
+ }
347
+
348
+
349
+ pvaluecheckbox =reactiveVal()
350
+ pvaluecheckbox <<- ""
app/R/heatmap_utils.R ADDED
@@ -0,0 +1,568 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ groupnodeheatmap <- function(lipidclassproperties,data,metadata,class,levels,inputclass,input){
2
+ # lipidclassproperties
3
+ if(input$filetype == "MS-DIAL export"){
4
+ lipid_data_classmean <<- right_join(lipidclassproperties,lipidmeancalforgroupnode(data,metadata,input$w) ,by = c("LbmClass"="Ontology"))
5
+ }
6
+
7
+ if(input$filetype == "Sample in rows"){
8
+ colnames(data) <- data[1,]
9
+ data <- data[-1,]
10
+ data[, -c(1:2)] <- apply(data[, -c(1:2)], 2, as.numeric)
11
+ colnames(data)[1] <- "name"
12
+ colnames(metadata)[1] <- "name"
13
+ lipid <- data %>% pivot_longer(cols = -c(1:2),names_to = "Metabolite name") %>%
14
+ inner_join(metadata,by = c("name","Class")) %>%
15
+ select(c(paste(input$w,"",sep=""),`Metabolite name`,name,value)) %>%
16
+ group_by_at(c("Metabolite name",input$w)) %>%
17
+ mutate(mean = mean(value)) %>%
18
+ ungroup() %>%
19
+ distinct(`Metabolite name`,!!as.symbol(input$w),.keep_all = T) %>%
20
+ select(c(1,2,5)) %>%
21
+ pivot_wider(names_from = paste(input$w,"",sep=""),values_from = mean)
22
+ lipidont <- read.csv(input$ontfile$datapath,check.names = F)
23
+ lipid <- inner_join(lipidont,lipid,by =c("lipid" = "Metabolite name"))
24
+ lipid <- rename(lipid,`Metabolite name` = lipid)
25
+ lipid_data_classmean <- right_join(lipidclassproperties,lipid,by = c("LbmClass"="Ontology")) %>% filter(TotalChain != 0)# %>% filter(`Annotation tag (VS1.0)` == "410")
26
+ }
27
+
28
+ #lipid_data_classmean <- right_join(lipidclassproperties,lipidmeancalforgroupnode(data,metadata,paste(class,"",sep="")) ,by = c("LbmClass"="Ontology")) # %>% filter(`Annotation tag (VS1.0)` == "410")
29
+ lipid_data_classmean <- filter(lipid_data_classmean,LbmClass == inputclass)
30
+ if(unique(lipid_data_classmean$TotalChain) == "1"){
31
+ targetmonoacylchain <- c("16:0","16:1","18:0","18:1","18:2","18:3","20:3","20:4","20:5","22:4","22:5","22:6")
32
+ monoacyl <- lipid_data_classmean %>% filter(TotalChain == "1") %>% filter(!LbmClass %in% c("AHexCS","AHexSTS"))
33
+ targetlipidclass <- monoacyl$LbmClass %>% unique()
34
+ monoacyl <- monoacyl[,-c(2:7)]
35
+ if(input$acylfilter == T){
36
+
37
+ acyllist <- list()
38
+ for (i in 1:nrow(monoacyl)) {
39
+ a <- unlist(str_split(monoacyl$`Metabolite name`[i],pattern = " "))[2]
40
+
41
+ if (str_detect(a,pattern = ";") == TRUE){
42
+ acyl <- a %>% str_split(pattern = ";") %>% unlist()
43
+ if(str_detect(acyl[1],pattern = "-")){
44
+ acyl <- acyl[1] %>% str_split(pattern = "-") %>% unlist()
45
+ acyllist[i] <- a[2]
46
+ }else{
47
+ acyllist[i] <- acyl[1]
48
+ }
49
+
50
+ }else if(str_detect(a,pattern = "/")==TRUE){
51
+ acyl <- a %>% str_split(pattern = "/") %>% unlist()
52
+ acyllist[i] <- acyl[2]
53
+ }else{
54
+ if(str_detect(a,pattern = "-")){
55
+ acyl <- a %>% str_split(pattern = "-") %>% unlist()
56
+ acyllist[i] <- acyl[2]
57
+ }else{
58
+ acyllist[i] <- a
59
+ }
60
+ }
61
+ }
62
+
63
+
64
+
65
+ monoacyl$acyl <- unlist(acyllist)
66
+ #
67
+ targetmonoacyllipid <- monoacyl %>% filter(acyl %in% targetmonoacylchain) %>% select(-c(acyl))
68
+ }
69
+ else{
70
+ targetmonoacyllipid <- monoacyl
71
+ }
72
+ targetlipidclass <- unique(targetmonoacyllipid$LbmClass)
73
+ monoacyl <- targetmonoacyllipid
74
+
75
+ Lipidclassdata<- filter(monoacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
76
+ if(length(Lipidclassdata$LbmClass) != 0){
77
+ d <- Lipidclassdata
78
+ rowname <- as.matrix((d$`Metabolite name`))
79
+ d <- select(d,-c(LbmClass))
80
+ n <- nrow(d)
81
+ BreaksList <- seq(-2,2, by = 0.5)
82
+ height <- n*0.9
83
+ list <- c(-2,0,2)
84
+ lipid <- d
85
+ lipid <- lipid[,-1]
86
+ rownames(lipid) <- rowname
87
+ lipid <- scale_rows(lipid) %>% as.data.frame()
88
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
89
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
90
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
91
+
92
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
93
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
94
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
95
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 0),axis.text = element_text(size = input$Fontsize))
96
+ print(ghm)
97
+ }}
98
+ if(unique(lipid_data_classmean$TotalChain) == "2"&& unique(lipid_data_classmean$Categories) != "Sphingolipids" && unique(lipid_data_classmean$Categories) != "Sterol Lipids"){
99
+ targetdiacylchain <- c("16:0","16:1","18:0","18:1","18:2","18:3","20:3","20:4","20:5","22:4","22:5","22:6")
100
+ diacyl <- lipid_data_classmean %>% filter(TotalChain == "2", Categories != "Sphingolipids")
101
+ targetlipidclass <- diacyl$LbmClass %>% unique()
102
+ diacyl <- diacyl[,-c(3:7)]
103
+ if(input$acylfilter == T){
104
+ acyl1list <- list()
105
+ acyl2list <- list()
106
+ for (i in 1:nrow(diacyl) ) {
107
+ if(str_detect(diacyl$`Metabolite name`[i],pattern = "\\|") == TRUE){
108
+ a <- unlist(str_split(diacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ") %>% unlist()
109
+ if(str_detect(a[2],pattern = "_") == TRUE){
110
+ a <- a[2] %>% str_split(pattern = "_") %>% unlist()
111
+ if(str_detect(a[1],pattern = "-") == TRUE){
112
+ acyl1 <- a[1] %>% str_split(pattern = "-") %>% unlist()
113
+ acyl1list[i] <- acyl1[2]
114
+ }else{
115
+ acyl1list[i] <- a[1]
116
+ }
117
+ if(str_detect(a[2],pattern = ";") == TRUE){
118
+ acyl2 <- a[2] %>% str_split(pattern = ";") %>% unlist()
119
+ acyl2list[i] <- acyl2[1]
120
+ }else{
121
+ acyl2list[i] <- a[2]
122
+ }
123
+ }else{
124
+ a <- unlist(a)[2] %>% str_split(pattern = "\\)") %>% unlist()
125
+ acyl1 <- a[1] %>% str_split(pattern = " ") %>% unlist()
126
+ acyl1list[i] <- acyl1[2]
127
+ acyl2list[i] <- a[2]
128
+ }
129
+ }
130
+ else{
131
+ acyl1list[i] <- NA
132
+ acyl2list[i] <- NA
133
+ }
134
+ }
135
+
136
+ diacyl$acyl1 <- unlist(acyl1list)
137
+ diacyl$acyl2 <- unlist(acyl2list)
138
+
139
+ targetdiacyllipid <- diacyl %>% filter(acyl1 %in% targetdiacylchain, acyl2 %in% targetdiacylchain)
140
+
141
+ # if(input$sn == T){
142
+ # targetdiacyllipid$acyl1 <- paste(targetdiacyllipid$LbmClass," ",targetdiacyllipid$acyl1," (sn-1)",sep ="")
143
+ # targetdiacyllipid$acyl2 <- paste(targetdiacyllipid$LbmClass," ",targetdiacyllipid$acyl2," (sn-2)",sep ="")
144
+ # targetdiacyllipid <- targetdiacyllipid %>% select( `Metabolite name`,LbmClass,acyl1,acyl2,everything()) %>% pivot_longer(cols = -c(1:4)) %>% group_by(name,acyl1) %>% mutate(mean1 = mean(value)) %>% ungroup() %>% group_by(name,acyl2) %>% mutate(mean2 = mean(value)) %>% ungroup()
145
+ # sn1 <- select(targetdiacyllipid,c(LbmClass,name,acyl1,mean1)) %>% distinct(name,acyl1,.keep_all = T)
146
+ # colnames(sn1) <- c("LbmClass","name","Metabolite name","value")
147
+ # sn2 <- select(targetdiacyllipid,c(LbmClass,name,acyl2,mean2))%>% distinct(name,acyl2,.keep_all = T)
148
+ # colnames(sn2) <- c("LbmClass","name","Metabolite name","value")
149
+ # diacyl <- rbind(sn1,sn2) %>% pivot_wider(names_from = "name",values_from = "value") #%>% data.frame()
150
+ # }
151
+
152
+
153
+ diacyl <- targetdiacyllipid %>% select(-c(acyl1,acyl2))
154
+
155
+ }
156
+ else{}
157
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
158
+ if(length(Lipidclassdata$LbmClass) != 0){
159
+ d <- Lipidclassdata
160
+ rowname <- as.matrix((d$`Metabolite name`))
161
+ d <- select(d,-c(`Metabolite name`,LbmClass))
162
+ BreaksList <- seq(-2,2, by = 0.5)
163
+ # print(d)
164
+ n <- nrow(d)
165
+ height <- n/10*3
166
+ list <- c(-2,0,2)
167
+ lipid <- d
168
+ lipid <- lipid[,-1]
169
+ rownames(lipid) <- rowname
170
+ lipid <- scale_rows(lipid) %>% as.data.frame()
171
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
172
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
173
+
174
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
175
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
176
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
177
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
178
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
179
+ print(ghm)
180
+ }}
181
+
182
+ if(unique(lipid_data_classmean$TotalChain) == "2"&& unique(lipid_data_classmean$Categories) == "Sterol Lipids" && unique(lipid_data_classmean$LbmClass) != "WE"){
183
+ targetdiacylchain <- c("16:0","16:1","18:0","18:1","18:2","18:3","20:3","20:4","20:5","22:4","22:5","22:6")
184
+ diacyl <- lipid_data_classmean %>% filter(TotalChain == "2", LbmClass != "WE")# %>%
185
+ targetlipidclass <- diacyl$LbmClass %>% unique()
186
+ diacyl <- diacyl[,-c(3:7)]
187
+ if(input$acylfilter == T){
188
+ acyl1list <- list()
189
+ acyl2list <- list()
190
+ for (i in 1:nrow(diacyl) ) {
191
+
192
+ if(str_detect(diacyl$`Metabolite name`[i],pattern = "\\|") == TRUE){
193
+ a <- unlist(str_split(diacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ") %>% unlist()
194
+ if(str_detect(a[2],pattern = "/") == TRUE){
195
+ a <- a[2] %>% str_split(pattern = "/") %>% unlist()
196
+ acyl1list[i] <- a[1]
197
+ acyl2list[i] <- a[2]
198
+ }
199
+ }
200
+ else{
201
+ acyl1list[i] <- NA
202
+ acyl2list[i] <- NA
203
+ }
204
+ }
205
+ diacyl$acyl1 <- unlist(acyl1list)
206
+ diacyl$acyl2 <- unlist(acyl2list)
207
+
208
+ targetdiacyllipid <- diacyl %>% filter(acyl1 %in% targetdiacylchain, acyl2 %in% targetdiacylchain)
209
+
210
+ # if(input$sn == T){
211
+ # targetdiacyllipid$acyl1 <- paste(targetdiacyllipid$LbmClass," ",targetdiacyllipid$acyl1," (sn-1)",sep ="")
212
+ # targetdiacyllipid$acyl2 <- paste(targetdiacyllipid$LbmClass," ",targetdiacyllipid$acyl2," (sn-2)",sep ="")
213
+ # targetdiacyllipid <- targetdiacyllipid %>% select( `Metabolite name`,LbmClass,acyl1,acyl2,everything()) %>% pivot_longer(cols = -c(1:4)) %>% group_by(name,acyl1) %>% mutate(mean1 = mean(value)) %>% ungroup() %>% group_by(name,acyl2) %>% mutate(mean2 = mean(value)) %>% ungroup()
214
+ # sn1 <- select(targetdiacyllipid,c(LbmClass,name,acyl1,mean1)) %>% distinct(name,acyl1,.keep_all = T)
215
+ # colnames(sn1) <- c("LbmClass","name","Metabolite name","value")
216
+ # sn2 <- select(targetdiacyllipid,c(LbmClass,name,acyl2,mean2))%>% distinct(name,acyl2,.keep_all = T)
217
+ # colnames(sn2) <- c("LbmClass","name","Metabolite name","value")
218
+ # diacyl <- rbind(sn1,sn2) %>% pivot_wider(names_from = "name",values_from = "value") #%>% data.frame()
219
+ # }
220
+
221
+
222
+ diacyl <- targetdiacyllipid %>% select(-c(acyl1,acyl2))
223
+
224
+ }
225
+ else{}
226
+
227
+
228
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
229
+ if(length(Lipidclassdata$LbmClass) != 0){
230
+ d <- Lipidclassdata
231
+ rowname <- as.matrix((d$`Metabolite name`))
232
+ d <- select(d,-c(`Metabolite name`,LbmClass))
233
+
234
+ BreaksList <- seq(-2,2, by = 0.5)
235
+ n <- nrow(d)
236
+ height <- n/10*3
237
+ list <- c(-2,0,2)
238
+ lipid <- d
239
+ lipid <- lipid[,-1]
240
+ rownames(lipid) <- rowname
241
+ lipid <- scale_rows(lipid) %>% as.data.frame()
242
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
243
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
244
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
245
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
246
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
247
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
248
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
249
+ print(ghm)
250
+ }}
251
+
252
+ if(unique(lipid_data_classmean$TotalChain) == "2"&&unique(lipid_data_classmean$Categories) == "Sphingolipids"&&unique(lipid_data_classmean$LbmClass) != "ASM"){
253
+ targetSphingoidBase <- c("18:0;O2","18:1;O2","18:2;O2","18:0;O3","18:0;2O","18:1;2O","18:2;2O","18:0;3O")
254
+ targetnacylchain <- c("16:0","16:1","18:0", "20:0", "22:0", "24:0", "24:1", "26:0", "26:1")
255
+ epidermalacylceramide <- c("Cer_EODS","Cer_EOS","Cer_EBDS","HexCer_EOS")
256
+ epidermalacylceramidetargetacylchain <- c("18:2")
257
+ diacyl <- lipid_data_classmean %>% filter(TotalChain == "2",Categories == "Sphingolipids",LbmClass != "ASM")
258
+ targetlipidclass <- diacyl$LbmClass %>% unique()
259
+ diacyl <- diacyl[,-c(3:7)]
260
+
261
+ if(input$acylfilter == T){
262
+ acyl1list <- list()
263
+ acyl2list <- list()
264
+ for (i in 1:nrow(diacyl)) {
265
+ if(str_detect(diacyl$`Metabolite name`[i],pattern = "\\|") == TRUE){
266
+ a <- unlist(str_split(diacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ")
267
+ if(str_detect(unlist(a)[2],pattern = "/") == TRUE){
268
+ a <- unlist(a)[2] %>% str_split(pattern = "/") %>% unlist()
269
+ acyl1list[i] <- a[1]
270
+ if(str_detect(a[2],pattern = ";") == TRUE){
271
+
272
+ acyl2 <- a[2] %>% str_split(pattern = ";") %>% unlist()
273
+ acyl2list[i] <- acyl2[1]
274
+ }
275
+ else if(str_detect(a[2],pattern = "\\(") == TRUE){
276
+ acyl2 <- a[2] %>% str_split(pattern = "\\(") %>% unlist()
277
+ acyl2list[i] <- acyl2[1]
278
+ }
279
+ else{
280
+ acyl2list[i] <- a[2]
281
+ }
282
+ }
283
+ else{
284
+ acyl1list[i] <- NA
285
+ acyl2list[i] <- NA
286
+ }
287
+ }
288
+ else{
289
+ acyl1list[i] <- NA
290
+ acyl2list[i] <- NA
291
+ }
292
+ }
293
+ diacyl$acyl1 <- unlist(acyl1list)
294
+ diacyl$acyl2 <- unlist(acyl2list)
295
+ targetdiacyllipidnotEOS <- diacyl %>% filter(!Categories %in% epidermalacylceramide) %>% filter(acyl1 %in% targetSphingoidBase, acyl2 %in% targetnacylchain)
296
+ targetdiacyllipidEOS <- diacyl %>% filter(Categories %in% epidermalacylceramide) %>% filter(acyl1 %in% targetSphingoidBase, acyl2 %in% epidermalacylceramidetargetacylchain)
297
+ targetdiacyllipid <- rbind(targetdiacyllipidEOS,targetdiacyllipidnotEOS)
298
+ targetlipidclass <- unique(targetdiacyllipid$LbmClass)
299
+
300
+ # if(input$sn == T){
301
+ # targetdiacyllipid$acyl1 <- paste(targetdiacyllipid$LbmClass," C",targetdiacyllipid$acyl1,sep ="")
302
+ # targetdiacyllipid$acyl2 <- paste(targetdiacyllipid$LbmClass," C",targetdiacyllipid$acyl2,sep ="")
303
+ # targetdiacyllipid <- targetdiacyllipid %>% select( `Metabolite name`,LbmClass,acyl1,acyl2,everything()) %>% pivot_longer(cols = -c(1:4)) %>% group_by(name,acyl1) %>% mutate(mean1 = mean(value)) %>% ungroup() %>% group_by(name,acyl2) %>% mutate(mean2 = mean(value)) %>% ungroup()
304
+ # sn1 <- select(targetdiacyllipid,c(LbmClass,name,acyl1,mean1)) %>% distinct(name,acyl1,.keep_all = T)
305
+ # colnames(sn1) <- c("LbmClass","name","Metabolite name","value")
306
+ # sn2 <- select(targetdiacyllipid,c(LbmClass,name,acyl2,mean2))%>% distinct(name,acyl2,.keep_all = T)
307
+ # colnames(sn2) <- c("LbmClass","name","Metabolite name","value")
308
+ # diacyl <- sn2 %>% pivot_wider(names_from = "name",values_from = "value")
309
+ # }
310
+
311
+
312
+ diacyl <- targetdiacyllipid %>% select(-c(acyl1,acyl2))
313
+
314
+
315
+ }
316
+ else{
317
+ }
318
+
319
+
320
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
321
+ if(length(Lipidclassdata$LbmClass) != 0){
322
+ d <- Lipidclassdata
323
+ rowname <- as.matrix((d$`Metabolite name`))
324
+ d <- select(d,-c(`Metabolite name`,LbmClass))
325
+ n <- nrow(d)
326
+ BreaksList <- seq(-2,2, by = 0.5)
327
+ n <- nrow(d)
328
+ height <- n/10*3
329
+ list <- c(-2,0,2)
330
+ lipid <- d
331
+ lipid <- lipid[,-1]
332
+ rownames(lipid) <- rowname
333
+ lipid <- scale_rows(lipid) %>% as.data.frame()
334
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
335
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
336
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
337
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
338
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
339
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
340
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
341
+ print(ghm)
342
+
343
+ }}
344
+
345
+ if(unique(lipid_data_classmean$LbmClass) == "ASM"){
346
+ targetnacylchain <- c("16:0","16:1","18:0", "20:0", "22:0", "24:0", "24:1", "26:0", "26:1")
347
+ diacyl <- lipid_data_classmean %>% filter(LbmClass == "ASM")# %>%
348
+ targetlipidclass <- diacyl$LbmClass %>% unique()
349
+ diacyl <- diacyl[,-c(3:7)]
350
+
351
+ if(input$acylfilter == T){
352
+
353
+ acyl1list <- list()
354
+ for (i in 1:nrow(diacyl)) {
355
+ if(str_detect(diacyl$`Metabolite name`[i],pattern = "\\(") == TRUE){
356
+ a <- str_split(diacyl$`Metabolite name`[i],pattern = "\\(") %>% unlist()
357
+ a1 <- a[2] %>% str_split(pattern = "\\)") %>% unlist()
358
+ a2 <- a1[1] %>% str_split(pattern = " ") %>% unlist()
359
+ acyl1list[i] <- a2[2]
360
+ }
361
+ else{
362
+ acyl1list[i] <- NA
363
+ }
364
+ }
365
+
366
+ diacyl$acyl1 <- unlist(acyl1list)
367
+ targetdiacyllipid <- diacyl %>% filter(acyl1 %in% targetnacylchain) %>% select(-c(Categories))
368
+
369
+ targetlipidclass <- unique(targetdiacyllipid$LbmClass)
370
+
371
+
372
+
373
+ diacyl <- targetdiacyllipid %>% select(-c(acyl1))
374
+
375
+
376
+
377
+ }
378
+ else{
379
+
380
+ }
381
+
382
+
383
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
384
+ if(length(Lipidclassdata$LbmClass) != 0){
385
+ d <- Lipidclassdata
386
+ rowname <- as.matrix((d$`Metabolite name`))
387
+ d <- select(d,-c(`Metabolite name`,LbmClass))
388
+ n <- nrow(d)
389
+ BreaksList <- seq(-2,2, by = 0.5)
390
+ n <- nrow(d)
391
+ height <- n/10*3
392
+ list <- c(-2,0,2)
393
+ lipid <- d
394
+ lipid <- lipid[,-1]
395
+ rownames(lipid) <- rowname
396
+ lipid <- scale_rows(lipid) %>% as.data.frame()
397
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
398
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
399
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
400
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
401
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
402
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
403
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
404
+ print(ghm)
405
+
406
+ }
407
+ }
408
+ if(unique(lipid_data_classmean$TotalChain) == "0"){
409
+ targetnacylchain <- c("16:0","16:1","18:0", "20:0", "22:0", "24:0", "24:1", "26:0", "26:1")
410
+ diacyl <- lipid_data_classmean %>% filter(TotalChain == "0")# %>%
411
+ targetlipidclass <- diacyl$LbmClass %>% unique()
412
+ diacyl <- diacyl[,-c(3:7)]
413
+ if(input$acylfilter == T){
414
+
415
+ acyl1list <- list()
416
+ acyl2list <- list()
417
+
418
+ for (i in 1:nrow(diacyl)) {
419
+ acyl1list[i] <- NA
420
+ }
421
+
422
+ diacyl$acyl1 <- unlist(acyl1list)
423
+ targetdiacyllipid <- diacyl %>% filter(acyl1 %in% targetnacylchain) %>% select(-c(Categories))
424
+ targetlipidclass <- unique(targetdiacyllipid$LbmClass)
425
+
426
+ namelist <- list()
427
+ pathlist <- list()
428
+
429
+ diacyl <- targetdiacyllipid %>% select(-c(acyl1))
430
+
431
+
432
+
433
+ }
434
+ else{
435
+
436
+ }
437
+
438
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
439
+ if(length(Lipidclassdata$LbmClass) != 0){
440
+ d <- Lipidclassdata
441
+ rowname <- as.matrix((d$`Metabolite name`))
442
+ d <- select(d,-c(`Metabolite name`,LbmClass))
443
+ n <- nrow(d)
444
+ BreaksList <- seq(-2,2, by = 0.5)
445
+ n <- nrow(d)
446
+ height <- n/10*3
447
+ list <- c(-2,0,2)
448
+ lipid <- d
449
+ lipid <- lipid[,-1]
450
+ rownames(lipid) <- rowname
451
+ lipid <- scale_rows(lipid) %>% as.data.frame()
452
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
453
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
454
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
455
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
456
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
457
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
458
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
459
+ print(ghm)
460
+
461
+ }}
462
+ if(unique(lipid_data_classmean$TotalChain) > 2 && unique(lipid_data_classmean$LbmClass) %in% c("TG","OxTG","HBMP","EtherTG")){
463
+ targettriacylchain <- c("16:0","16:1","18:0","18:1","18:2","18:3","20:3","20:4","20:5","22:4","22:5","22:6")
464
+ Triacyl <- lipid_data_classmean %>% filter(TotalChain > 2, LbmClass %in% c("TG","OxTG","HBMP","EtherTG"))
465
+ targetlipidclass <- Triacyl$LbmClass %>% unique()
466
+ Triacyl <- Triacyl[,-c(3:7)]
467
+ if(input$acylfilter == T){
468
+ acyllist1 <- list()
469
+ acyllist2 <- list()
470
+ acyllist3 <- list()
471
+ for (i in 1:nrow(Triacyl)) {
472
+ if(Triacyl$LbmClass[i] == "TG"){
473
+
474
+ a <- unlist(str_split(Triacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ")
475
+ a <- unlist(a)[2] %>% str_split(pattern = "_") %>% unlist()
476
+ acyllist1[i] <- a[1]
477
+ acyllist2[i] <- a[2]
478
+ acyllist3[i] <- a[3]
479
+ }else if(Triacyl$LbmClass[i] =="OxTG"){
480
+
481
+ a <- unlist(str_split(Triacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ")
482
+ a <- unlist(a)[2] %>% str_split(pattern = "_") %>% unlist()
483
+ acyllist1[i] <- a[1]
484
+ acyllist2[i] <- a[2]
485
+ b <- a[3] %>% str_split(pattern = ";") %>% unlist()
486
+ acyllist3[i] <- b[1]
487
+ }else if(Triacyl$LbmClass[i] =="HBMP"){
488
+ a <- unlist(str_split(Triacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ")
489
+ a <- unlist(a)[2] %>% str_split(pattern = "_") %>% unlist()
490
+ b <- a[1] %>% str_split(pattern = "/") %>% unlist()
491
+ acyllist1[i] <- b[1]
492
+ acyllist2[i] <- b[2]
493
+ acyllist3[i] <- a[2]
494
+ }else if(Triacyl$LbmClass[i] =="EtherTG"){
495
+ a <- unlist(str_split(Triacyl$`Metabolite name`[i],pattern = "\\|"))[2] %>% str_split(pattern = " ")
496
+ a <- unlist(a)[2] %>% str_split(pattern = "_") %>% unlist()
497
+ acyl <- a[1] %>% str_split(pattern = "-") %>% unlist()
498
+ acyllist1[i] <- acyl[2]
499
+ acyllist2[i] <- a[2]
500
+ acyllist3[i]<- a[3]
501
+ }
502
+ }
503
+
504
+ Triacyl$acyl1 <- unlist(acyllist1)
505
+ Triacyl$acyl2 <- unlist(acyllist2)
506
+ Triacyl$acyl3 <- unlist(acyllist3)
507
+
508
+ targettriacyllipid <- Triacyl %>% filter(acyl1 %in% targettriacylchain, acyl2 %in% targettriacylchain,acyl3 %in% targettriacylchain) %>% select(-c(acyl1,acyl2,acyl3,Categories))
509
+ }
510
+ else{
511
+ targettriacyllipid <- Triacyl
512
+ }
513
+ Triacyl <- targettriacyllipid
514
+ # i <-
515
+ Lipidclassdata<- filter(Triacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
516
+ if(length(Lipidclassdata$LbmClass) != 0){
517
+ d <- Lipidclassdata
518
+ rowname <- as.matrix((d$`Metabolite name`))
519
+ d <- select(d,-c(`Metabolite name`,LbmClass))
520
+ BreaksList <- seq(-2,2, by = 0.5)
521
+ n <- nrow(d)
522
+ height <- n/10*3
523
+ list <- c(-2,0,2)
524
+ lipid <- d
525
+ lipid <- lipid[,-1]
526
+ rownames(lipid) <- rowname
527
+ lipid <- scale_rows(lipid) %>% as.data.frame()
528
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
529
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
530
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
531
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
532
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
533
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
534
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
535
+ print(ghm)
536
+
537
+ }}
538
+ if(unique(lipid_data_classmean$TotalChain) > 2 && ! unique(lipid_data_classmean$LbmClass) %in% c("TG","OxTG","HBMP","EtherTG")){
539
+ Triacyl <- lipid_data_classmean %>% filter(TotalChain > 2, ! LbmClass %in% c("TG","OxTG","HBMP","EtherTG"))
540
+ targetlipidclass <- Triacyl$LbmClass %>% unique()
541
+ Triacyl <- Triacyl[,-c(3:7)]
542
+ diacyl <- Triacyl
543
+ Lipidclassdata<- filter(diacyl , LbmClass == inputclass) %>% distinct(`Metabolite name`,.keep_all = TRUE)
544
+ if(length(Lipidclassdata$LbmClass) != 0){
545
+ d <- Lipidclassdata
546
+ rowname <- as.matrix((d$`Metabolite name`))
547
+ d <- d <- select(d,-c(`Metabolite name`,LbmClass))
548
+ n <- nrow(d)
549
+ BreaksList <- seq(-2,2, by = 0.5)
550
+ n <- nrow(d)
551
+ height <- n/10*3
552
+ list <- c(-2,0,2)
553
+ lipid <- d
554
+ lipid <- lipid[,-1]
555
+ rownames(lipid) <- rowname
556
+ lipid <- scale_rows(lipid) %>% as.data.frame()
557
+ lipid <- tibble::rownames_to_column(lipid, "Metabolite name")
558
+ lipid <- pivot_longer(lipid,cols = -c(`Metabolite name`))
559
+ lipid <- mutate(lipid, name = name %>% factor(levels = input$levels))
560
+ ghm <- ggplot(lipid, aes(x = name, y =`Metabolite name` , fill = value))
561
+ ghm <- ghm + geom_tile(color = "black") + scale_fill_gradientn(
562
+ colors=c("navy","white","red"),limits=c(min(lipid$value), max(lipid$value))
563
+ ) + theme(axis.text.x = element_text(angle = 90, hjust = 1),axis.text = element_text(size = input$Fontsize))
564
+ print(ghm)
565
+
566
+ }}
567
+
568
+ }
app/R/librarys.R ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ library(shiny)
2
+ library(readr)
3
+ library(shinyAce)
4
+ library(ggplot2)
5
+ library(dplyr)
6
+ library(shinythemes)
7
+ library(openintro)
8
+ library(plotly)
9
+ library(DT)
10
+ library(ggprism)
11
+ library(ggbeeswarm)
12
+ library(reshape2)
13
+ library(shinyFiles)
14
+ library(stringr)
15
+ library(shinyBS)
16
+ library(shinyjs)
17
+ library(shinydashboard)
18
+ library(shinyWidgets)
19
+ library(svglite)
20
+ library(tidyr)
21
+ library(pheatmap)
22
+ library(grid)
23
+ library(gridExtra)
24
+ #library(RCy3)
25
+ # library(rcdk)
26
+ library(ggeasy)
27
+ library(ggtext)
28
+ library(colorspace)
29
+ library(shinyjqui)
30
+ library(tidyverse)
31
+ library(gprofiler2)
32
+ library(colourpicker)
33
+ library(shinydashboardPlus)
34
+ library(shiny)
35
+ library(cyjShiny)
36
+ library(graph)
37
+ library(jsonlite)
38
+ library(dplyr)
39
+ library(reshape2)
40
+ library(shinyjqui)
41
+ library(shinyalert)
42
+ library(bslib)
43
+ library(rstatix)
44
+ library(ggpubr)
app/R/modaldialog_utils.R ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ShowtestModaldialog = function(data,input,col){
2
+ showModal(modalDialog(
3
+ h2("Appearance setting"),
4
+
5
+ div( class = "dynamicSI",
6
+ lapply(1:length(names(col)), function(i){
7
+ column(3,
8
+ colorPickr(paste0(names(col)[i],"_selectcolor"),theme = "monolith",label = paste0(names(col)[i],""), selected = col[i],interaction = list(
9
+ clear = T,
10
+ save = T,
11
+ RGBA = TRUE,
12
+ input=TRUE,
13
+ hex =TRUE
14
+
15
+ ))
16
+
17
+ )})),
18
+ br(),
19
+ br(),
20
+ br(),
21
+ br(),
22
+ br(),
23
+ easyClose = TRUE,
24
+ footer = NULL
25
+ ))
26
+ }
27
+
28
+ ShowtestModaldialog2 = function(data,input,col){
29
+ showModal(modalDialog(
30
+ title = "Plot in Dialog",
31
+ plotOutput("mappingraph"),
32
+ actionButton("actionplottest","pathway mapping",onclick = "$(tab).removeClass('disabled')"),
33
+ easyClose = TRUE,
34
+ footer = NULL
35
+ ))
36
+ }
37
+
38
+
39
+ ShowtestModaldialog4 = function(data,input,col){
40
+ showModal(modalDialog(
41
+ h2("Appearance setting"),
42
+
43
+ div( class = "dynamicSI",
44
+ lapply(1:length(names(col)), function(i){
45
+ column(3,
46
+ colorPickr(paste0(names(col)[i],"_selectcolor"),theme = "monolith",label = paste0(names(col)[i],""), selected = col[i],interaction = list(
47
+ clear = T,
48
+ save = T,
49
+ RGBA = TRUE,
50
+ input=TRUE,
51
+ hex =TRUE
52
+
53
+ ))
54
+
55
+ )})),
56
+ br(),
57
+ br(),
58
+ br(),
59
+ br(),
60
+ br(),
61
+ easyClose = TRUE,
62
+ footer = NULL
63
+ ))
64
+ }
app/R/plot_utils.R ADDED
@@ -0,0 +1,860 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ perform_statistical_test <- function(data, comparisons, test_method, y_var, w_var, p_adjust_method = "bonferroni") {
2
+ # 入力チェック
3
+ if (missing(data) || missing(comparisons) || missing(test_method) ||
4
+ missing(y_var) || missing(w_var)) {
5
+ stop("Required arguments are missing")
6
+ }
7
+
8
+ # 検定関数の取得
9
+ test_func <- tryCatch({
10
+ get(test_method, asNamespace("rstatix"))
11
+ }, error = function(e) {
12
+ stop(paste("Invalid test method:", test_method))
13
+ })
14
+
15
+ # 変数名を文字列からシンボルに変換
16
+ #y_sym <- sym(y_var)
17
+ w_sym <- sym(w_var)
18
+
19
+ # 結果を格納するデータフレーム
20
+ results <- data.frame()
21
+
22
+ # 各比較対についてループ
23
+ for(comp in comparisons) {
24
+ # グループを分割
25
+ print(comparisons)
26
+ print(comp)
27
+ groups <- strsplit(comp, "vs")[[1]]
28
+ print(as.formula(paste0("`", y_var, "` ~ `", w_var, "`")))
29
+
30
+ # データのサブセット作成
31
+ subset_data <- data %>%
32
+ dplyr::filter(!!w_sym %in% groups)
33
+
34
+ print((subset_data$Class) %>% unique())
35
+
36
+
37
+ # 検定実行
38
+ tryCatch({
39
+ test_result <- subset_data %>%
40
+ test_func(
41
+ formula = as.formula(paste0("`", y_var, "` ~ `", w_var, "`"))
42
+ ) %>%
43
+ adjust_pvalue(method = p_adjust_method) %>%
44
+ add_significance()
45
+
46
+ results <- bind_rows(results, test_result)
47
+
48
+ }, error = function(e) {
49
+ warning(sprintf(
50
+ "Error in comparison %s: %s",
51
+ comp,
52
+ as.character(e)
53
+ ))
54
+ })
55
+ }
56
+
57
+ # 結果が空の場合の処理
58
+ if (nrow(results) == 0) {
59
+ warning("No valid comparisons could be performed")
60
+ return(NULL)
61
+ }
62
+
63
+ return(results)
64
+ }
65
+
66
+
67
+
68
+
69
+
70
+ create_boxplot <- function(data, x_var, y_var, col, alpha, size, xlab_text, ylab_text, ggtitle_text) {
71
+ p <- ggplot(data) +
72
+ geom_boxplot(aes_string(x = x_var, y = y_var, fill = x_var),color = "black", lwd = 1, alpha = alpha) +
73
+ ggbeeswarm::geom_beeswarm(aes_string(x = x_var, y = y_var, fill = x_var), dodge.width = 0.1,
74
+ cex = 0.1,
75
+ shape = 21,
76
+ size = size) +
77
+ xlab(xlab_text) +
78
+ ylab(ylab_text) +
79
+ ggtitle(paste(ggtitle_text, "", sep = "")) +
80
+ scale_fill_manual(values = unlist(col))
81
+ p
82
+
83
+ }
84
+
85
+ process_boxplot <- function(input, yval, dataa, col,stat_test) {
86
+
87
+ y <- yval %>% as.character() %>% gsub("`", "", .)
88
+ p <- create_boxplot(dataa, input$w, yval, col, input$alpha, input$size,
89
+ input$xAxisLabel, input$yAxisLabel, yval)
90
+
91
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
92
+ stat_results <- stat_test
93
+
94
+ y_range <- diff(range(select(dataa,y)))
95
+ y_max <- max(select(dataa,y), na.rm = TRUE)
96
+ step_size <- y_range * 0.15
97
+ y_positions <- y_max +
98
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
99
+
100
+ p <- p + stat_pvalue_manual(
101
+ stat_results,
102
+ label.size = input$pvaluefontsize,
103
+ label = "p.adj.signif",
104
+ y.position = y_positions,
105
+ bracket.size = 0.5,
106
+ bracket.shorten = 0.1
107
+ )
108
+ }
109
+
110
+ p <- p +
111
+ theme_classic() +
112
+ theme(
113
+ axis.text.x = element_text(
114
+ angle = input$x_rotation,
115
+ size = input$Fontsize
116
+ ),
117
+ text = element_text(size = input$Fontsize)
118
+ )
119
+
120
+ plot(p)
121
+ }
122
+
123
+
124
+ process_boxplot_diagram <- function(input,yval,dataa,col,stat_test) {
125
+
126
+ y <- yval %>% as.character() %>% gsub("`", "", .)
127
+ p <- create_boxplot(dataa, input$w, yval, col, input$alpha, input$size,
128
+ input$xAxisLabel, input$yAxisLabel, yval)
129
+ p <- p + theme_prism(
130
+ base_fontface = "plain",
131
+ base_line_size = 0.9,
132
+ base_family = "Arial"
133
+ ) +
134
+ theme(
135
+ legend.position = "none",
136
+ axis.text.x = element_text(angle = input$x_rotation,
137
+ size = input$Fontsize),
138
+ axis.title.x = element_blank(),
139
+ aspect.ratio = 1.0,
140
+ text = element_text(size = input$Fontsize)
141
+ )
142
+ #if (input$q != "" && input$pvaluecheck == TRUE) {
143
+ # tukey_result <- process_tukey_result(input,y,input$q,p,dataa,0.05,input$Fontsize)
144
+ # p <- p + add_pvalue(tukey_result, remove.bracket = TRUE, bracket.size = 0.000001, label = "{symbol}", tip.length = 0,
145
+ # label.size = tukey_result$size, inherit.aes = FALSE,y.position = tukey_result$y.position_boxplot) + scale_y_continuous(
146
+ # limits = c(min(dataa[[y]]), (max(tukey_result$y.position_boxplot) + max(tukey_result$y.position_boxplot) / 30))
147
+ # )
148
+ #}
149
+
150
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
151
+ stat_results <- stat_test
152
+
153
+ y_range <- diff(range(select(dataa,y)))
154
+ y_max <- max(select(dataa,y), na.rm = TRUE)
155
+ step_size <- y_range * 0.15
156
+ y_positions <- y_max +
157
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
158
+
159
+ p <- p + stat_pvalue_manual(
160
+ stat_results,
161
+ label.size = input$pvaluefontsize,
162
+ label = "p.adj.signif",
163
+ y.position = y_positions,
164
+ bracket.size = 0.5,
165
+ bracket.shorten = 0.1
166
+ )
167
+ }
168
+
169
+ p
170
+ }
171
+
172
+ process_action_boxplot <- function(input,dataa,metainfocol,svg_path,col,output,data) {
173
+
174
+ withProgress(message = 'Calculation in progress', detail = 'This may take a while...', value = 1, {
175
+ startnum <- 1 + metainfocol
176
+ for (i in startnum:ncol(dataa)) {
177
+ yval <- colnames(dataa)[i]
178
+ p <- create_boxplot(dataa, input$w, dataa[[yval]], col, input$alpha, input$size,input$xAxisLabel, input$yAxisLabel, "")
179
+ p <- p + theme_prism(
180
+ base_fontface = "plain",
181
+ base_line_size = 0.9,
182
+ base_family = "Arial"
183
+ ) +
184
+ theme(
185
+ legend.position = "none",
186
+ axis.text.x = element_text(angle = input$x_rotation,
187
+ size = input$Fontsize),
188
+ axis.title.x = element_blank(),
189
+ aspect.ratio = 1.0,
190
+ text = element_text(size = input$Fontsize)
191
+ )
192
+ # if (input$q != "" && input$pvaluecheck == TRUE) {
193
+ # tukey_result <- process_tukey_result(input,yval,input$q,p,dataa,0.05,input$Fontsize)
194
+ # p <- p + add_pvalue(tukey_result, remove.bracket = TRUE, bracket.size = 0.000001, label = "{symbol}", tip.length = 0,
195
+ # label.size = tukey_result$size, inherit.aes = FALSE,y.position = tukey_result$y.position_boxplot) + scale_y_continuous(
196
+ # limits = c(min(dataa[[yval]]), (max(tukey_result$y.position_boxplot) + max(tukey_result$y.position_boxplot) / 30))
197
+ # )
198
+ # }
199
+
200
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
201
+ # 検定関数の選択
202
+ test_func <- get(input$test_method, asNamespace("rstatix"))
203
+
204
+ # 結果を格納するデータフレーム
205
+ results <- data.frame()
206
+ for(comp in input$comparisons) {
207
+ # グループを分割
208
+ groups <- strsplit(comp, "vs")[[1]]
209
+
210
+ # データのサブセット作成
211
+ subset_data <- data %>%
212
+ dplyr::filter(!!sym(input$w) %in% groups)
213
+
214
+ # 検定実行
215
+ test_result <- test_func(subset_data, as.formula(paste(yval, "~", input$w)),paired = FALSE) %>%
216
+ adjust_pvalue(method = input$p_adjust) %>%
217
+ add_significance()
218
+ results <- rbind(results, test_result)
219
+ }
220
+
221
+ stat_results <- results
222
+
223
+ #stat_results <- perform_statistical_test(
224
+ # data = dataa,
225
+ # comparisons = input$comparisons,
226
+ # test_method = input$test_method, # または "t_test" など
227
+ # y_var = yval,
228
+ # w_var = input$w,
229
+ # p_adjust_method = input$p_adjust
230
+ #)
231
+ y_range <- diff(range(select(dataa,yval)))
232
+ y_max <- max(select(dataa,yval), na.rm = TRUE)
233
+ step_size <- y_range * 0.15
234
+ y_positions <- y_max +
235
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
236
+
237
+ p <- p + stat_pvalue_manual(
238
+ stat_results,
239
+ label.size = input$pvaluefontsize,
240
+ label = "p.adj.signif",
241
+ y.position = y_positions,
242
+ bracket.size = 0.5,
243
+ bracket.shorten = 0.1
244
+ )
245
+ }
246
+
247
+
248
+ svg(paste("./svg/",colnames(dataa)[i], ".svg", sep = ""))
249
+ plot(p)
250
+ dev.off()
251
+ incProgress(1 / ncol(dataa))
252
+ Sys.sleep(0.25)
253
+ }
254
+ })
255
+ data.frame(name = colnames(dataa)[-c(1:metainfocol)], path = paste("file:/", svg_path, "/", colnames(dataa)[-c(1:metainfocol)], ".svg", sep = "")) %>% write.csv("./svg/path.csv")
256
+ output$testtext1 <- renderText({
257
+ "Finish"
258
+ })
259
+ }
260
+
261
+ create_barplot <- function(data, x_var, y_var, col, alpha, size, xlab_text, ylab_text, ggtitle_text) {
262
+ p <- ggplot(data) +
263
+ geom_bar(aes_string(x = x_var, y = y_var, fill = x_var),color = "black", stat = "summary",fun = "mean",lwd = 1.2,width = 0.6) +
264
+ xlab(xlab_text) +
265
+ ylab(ylab_text) +
266
+ ggtitle(paste(ggtitle_text, "", sep = "")) +
267
+ scale_fill_manual(values = unlist(col))
268
+
269
+ p
270
+ }
271
+
272
+
273
+ process_barplot <- function(input, yval, dataa, col,stat_test) {
274
+
275
+ y <- yval %>% as.character() %>% gsub("`", "", .)
276
+ p <- create_barplot(dataa, input$w, yval, col, input$alpha, input$size,
277
+ input$xAxisLabel, input$yAxisLabel, yval)
278
+
279
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
280
+ stat_results <- stat_test
281
+
282
+ y_range <- diff(range(select(dataa,y)))
283
+ y_max <- dataa %>%
284
+ select(1,!!sym(input$w),!!sym(y)) %>%
285
+ group_by(!!sym(input$w)) %>%
286
+ summarise(mean_value = mean(!!sym(y))) %>%
287
+ summarise(max_mean = max(mean_value)) %>%
288
+ pull(max_mean)
289
+ #y_max <- max(select(dataa,y), na.rm = TRUE)
290
+ print(y_max)
291
+ step_size <- y_range * 0.15
292
+ y_positions <- y_max +
293
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
294
+
295
+ p <- p + stat_pvalue_manual(
296
+ stat_results,
297
+ label.size = input$pvaluefontsize,
298
+ label = "p.adj.signif",
299
+ y.position = y_positions,
300
+ bracket.size = 0.5,
301
+ bracket.shorten = 0.1
302
+ )
303
+ }
304
+
305
+ p <- p +
306
+ theme_classic() +
307
+ theme(
308
+ axis.text.x = element_text(
309
+ angle = input$x_rotation,
310
+ size = input$Fontsize
311
+ ),
312
+ text = element_text(size = input$Fontsize)
313
+ )
314
+
315
+ plot(p)
316
+ }
317
+
318
+
319
+ process_barplot_diagram <- function(input,yval,dataa,col,stat_test) {
320
+
321
+ y <- yval %>% as.character()
322
+ p <- create_barplot(dataa, input$w, y, col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, y)
323
+ p <- p + theme_prism(
324
+ base_fontface = "plain",
325
+ base_line_size = 0.9,
326
+ base_family = "Arial") +
327
+ theme(
328
+ legend.position = "none",
329
+ axis.text.x = element_text(angle = input$x_rotation,
330
+ size = input$Fontsize),
331
+ aspect.ratio = 1.0,
332
+ text = element_text(size = input$Fontsize))
333
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
334
+ stat_results <- stat_test
335
+
336
+ y_range <- diff(range(select(dataa,y)))
337
+ y_max <- max(select(dataa,y), na.rm = TRUE)
338
+ step_size <- y_range * 0.15
339
+ y_positions <- y_max +
340
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
341
+
342
+ p <- p + stat_pvalue_manual(
343
+ stat_results,
344
+ label.size = input$pvaluefontsize,
345
+ label = "p.adj.signif",
346
+ y.position = y_positions,
347
+ bracket.size = 0.5,
348
+ bracket.shorten = 0.1
349
+ )
350
+ }
351
+ p
352
+ }
353
+
354
+
355
+
356
+ process_action_barplot <- function(input,dataa,metainfocol,svg_path,col,output,data) {
357
+ withProgress(message = 'Calculation in progress', detail = 'This may take a while...', value = 1, {
358
+ startnum <- 1 + metainfocol
359
+ for (i in startnum:ncol(dataa)) {
360
+ yval <- colnames(dataa)[i]
361
+ p <- create_barplot(dataa, input$w, dataa[[yval]], col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, "")
362
+ p <- p + theme_prism(
363
+ base_fontface = "plain",
364
+ base_line_size = 0.9,
365
+ base_family = "Arial") +
366
+ theme(
367
+ legend.position = "none",
368
+ axis.title.x = element_blank(),
369
+ aspect.ratio = 1.0,
370
+ axis.text.x = element_text(angle = input$x_rotation,
371
+ size = input$Fontsize),
372
+ text = element_text(size = input$Fontsize))
373
+ # if (input$q!= "" && input$pvaluecheck == TRUE) {
374
+ # tukey_result <- process_tukey_result(input,yval,input$q,p,dataa,0.05,input$Fontsize)
375
+ # p <- p + add_pvalue(tukey_result,remove.bracket = TRUE,
376
+ # bracket.size = 0.000001,
377
+ # label = "{symbol}",
378
+ # tip.length = 0,
379
+ # label.size = tukey_result$size,inherit.aes = FALSE,y.position = tukey_result$y.position_barplot)
380
+ # }
381
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
382
+ # 検定関数の選択
383
+ test_func <- get(input$test_method, asNamespace("rstatix"))
384
+
385
+ # 結果を格納するデータフレーム
386
+ results <- data.frame()
387
+ for(comp in input$comparisons) {
388
+ # グループを分割
389
+ groups <- strsplit(comp, "vs")[[1]]
390
+
391
+ # データのサブセット作成
392
+ subset_data <- data %>%
393
+ dplyr::filter(!!sym(input$w) %in% groups)
394
+
395
+ # 検定実行
396
+ test_result <- test_func(subset_data, as.formula(paste(yval, "~", input$w)),paired = FALSE) %>%
397
+ adjust_pvalue(method = input$p_adjust) %>%
398
+ add_significance()
399
+ results <- rbind(results, test_result)
400
+ }
401
+
402
+ stat_results <- results
403
+
404
+ #stat_results <- perform_statistical_test(
405
+ # data = dataa,
406
+ # comparisons = input$comparisons,
407
+ # test_method = input$test_method, # または "t_test" など
408
+ # y_var = yval,
409
+ # w_var = input$w,
410
+ # p_adjust_method = input$p_adjust
411
+ #)
412
+ y_range <- diff(range(select(dataa,yval)))
413
+ y_max <- max(select(dataa,yval), na.rm = TRUE)
414
+ step_size <- y_range * 0.15
415
+ y_positions <- y_max +
416
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
417
+
418
+ p <- p + stat_pvalue_manual(
419
+ stat_results,
420
+ label.size = input$pvaluefontsize,
421
+ label = "p.adj.signif",
422
+ y.position = y_positions,
423
+ bracket.size = 0.5,
424
+ bracket.shorten = 0.1
425
+ )
426
+ }
427
+ svg(paste("./svg/",colnames(dataa)[i], ".svg", sep = ""))
428
+ plot(p)
429
+ dev.off()
430
+ }
431
+ incProgress(1 / ncol(dataa))
432
+ Sys.sleep(0.25)
433
+ })
434
+ data.frame(name = colnames(dataa)[-c(1:metainfocol)], path = paste("file:/", svg_path, "/", colnames(dataa)[-c(1:metainfocol)], ".svg", sep = "")) %>% write.csv("./svg/path.csv")
435
+ output$testtext1 <- renderText({
436
+ "Finish"
437
+ })
438
+ }
439
+
440
+ process_violinplot <- function(input, yval, dataa, col,stat_test) {
441
+
442
+ y <- yval %>% as.character() %>% gsub("`", "", .)
443
+ p <- create_violinplot(dataa, input$w, yval, col, input$alpha, input$size,
444
+ input$xAxisLabel, input$yAxisLabel, yval)
445
+
446
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
447
+ stat_results <- stat_test
448
+
449
+ y_range <- diff(range(select(dataa,y)))
450
+ y_max <- max(select(dataa,y), na.rm = TRUE)
451
+ step_size <- y_range * 0.15
452
+ y_positions <- y_max +
453
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
454
+
455
+ p <- p + stat_pvalue_manual(
456
+ stat_results,
457
+ label.size = input$pvaluefontsize,
458
+ label = "p.adj.signif",
459
+ y.position = y_positions,
460
+ bracket.size = 0.5,
461
+ bracket.shorten = 0.1
462
+ )
463
+ }
464
+
465
+ p <- p +
466
+ theme_classic() +
467
+ theme(
468
+ axis.text.x = element_text(
469
+ angle = input$x_rotation,
470
+ size = input$Fontsize
471
+ ),
472
+ text = element_text(size = input$Fontsize)
473
+ )
474
+
475
+ plot(p)
476
+ }
477
+
478
+ create_violinplot <- function(data, x_var, y_var, col, alpha, size, xlab_text, ylab_text, ggtitle_text) {
479
+ p <- ggplot(data,aes_string(y = y_var)) +
480
+ geom_violin(aes_string(x = x_var,fill = x_var), adjust = 2,trim = FALSE) +
481
+ xlab(xlab_text) +
482
+ ylab(ylab_text) +
483
+ ggtitle(paste(ggtitle_text, "", sep = "")) +
484
+ scale_fill_manual(values = unlist(col))
485
+
486
+ p
487
+ }
488
+
489
+ process_violinplot_diagram <- function(input,yval,dataa,col,stat_test) {
490
+
491
+ y <- yval %>% as.character()
492
+ p <- create_violinplot(dataa, input$w, y, col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, y)
493
+ p <- p + theme_prism(
494
+ base_fontface = "plain",
495
+ base_line_size = 0.9,
496
+ base_family = "Arial") +
497
+ theme(
498
+ legend.position = "none",
499
+ axis.title.x = element_blank(),
500
+ aspect.ratio = 1.0,
501
+ axis.text.x = element_text(angle = input$x_rotation,
502
+ size = input$Fontsize),
503
+ text = element_text(size = input$Fontsize))
504
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
505
+ stat_results <- stat_test
506
+
507
+ y_range <- diff(range(select(dataa,y)))
508
+ y_max <- max(select(dataa,y), na.rm = TRUE)
509
+ step_size <- y_range * 0.15
510
+ y_positions <- y_max +
511
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
512
+
513
+ p <- p + stat_pvalue_manual(
514
+ stat_results,
515
+ label.size = input$pvaluefontsize,
516
+ label = "p.adj.signif",
517
+ y.position = y_positions,
518
+ bracket.size = 0.5,
519
+ bracket.shorten = 0.1
520
+ )
521
+ }
522
+ p
523
+ }
524
+
525
+ process_action_violinplot <- function(input,dataa,metainfocol,svg_path,col,output,data) {
526
+ withProgress(message = 'Calculation in progress', detail = 'This may take a while...', value = 1, {
527
+ startnum <- 1 + metainfocol
528
+ for (i in startnum:ncol(dataa)) {
529
+ yval <- colnames(dataa)[i]
530
+ p <- create_violinplot(dataa, input$w, dataa[[yval]], col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, "")
531
+ p <- p + theme_prism(
532
+ base_fontface = "plain",
533
+ base_line_size = 0.9,
534
+ base_family = "Arial") +
535
+ theme(
536
+ legend.position = "none",
537
+ axis.title.x = element_blank(),
538
+ aspect.ratio = 1.0,
539
+ axis.text.x = element_text(angle = input$x_rotation,
540
+ size = input$Fontsize),
541
+ text = element_text(size = input$Fontsize))
542
+ #if (input$q!= "" && input$pvaluecheck == TRUE) {
543
+ # tukey_result <- process_tukey_result(input,yval,input$q,p,dataa,0.05,input$Fontsize)
544
+ # p <- p + add_pvalue(tukey_result, remove.bracket = TRUE, bracket.size = 0.000001, label = "{symbol}", tip.length = 0,
545
+ # label.size = tukey_result$size, inherit.aes = FALSE,y.position = tukey_result$y.position_boxplot) + scale_y_continuous(
546
+ # limits = c(min(dataa[[yval]]), (max(tukey_result$y.position_boxplot) + max(tukey_result$y.position_boxplot) / 30))
547
+ # )
548
+ #}
549
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
550
+ # 検定関数の選択
551
+ test_func <- get(input$test_method, asNamespace("rstatix"))
552
+
553
+ # 結果を格納するデータフレーム
554
+ results <- data.frame()
555
+ for(comp in input$comparisons) {
556
+ # グ��ープを分割
557
+ groups <- strsplit(comp, "vs")[[1]]
558
+
559
+ # データのサブセット作成
560
+ subset_data <- data %>%
561
+ dplyr::filter(!!sym(input$w) %in% groups)
562
+
563
+ # 検定実行
564
+ test_result <- test_func(subset_data, as.formula(paste(yval, "~", input$w)),paired = FALSE) %>%
565
+ adjust_pvalue(method = input$p_adjust) %>%
566
+ add_significance()
567
+ results <- rbind(results, test_result)
568
+ }
569
+
570
+ stat_results <- results
571
+
572
+ #stat_results <- perform_statistical_test(
573
+ # data = dataa,
574
+ # comparisons = input$comparisons,
575
+ # test_method = input$test_method, # または "t_test" など
576
+ # y_var = yval,
577
+ # w_var = input$w,
578
+ # p_adjust_method = input$p_adjust
579
+ #)
580
+ y_range <- diff(range(select(dataa,yval)))
581
+ y_max <- max(select(dataa,yval), na.rm = TRUE)
582
+ step_size <- y_range * 0.15
583
+ y_positions <- y_max +
584
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
585
+
586
+ p <- p + stat_pvalue_manual(
587
+ stat_results,
588
+ label.size = input$pvaluefontsize,
589
+ label = "p.adj.signif",
590
+ y.position = y_positions,
591
+ bracket.size = 0.5,
592
+ bracket.shorten = 0.1
593
+ )
594
+ }
595
+ svg(paste("./svg/",colnames(dataa)[i], ".svg", sep = ""))
596
+ plot(p)
597
+ dev.off()
598
+ }
599
+ incProgress(1 / ncol(dataa))
600
+ Sys.sleep(0.25)
601
+ })
602
+ data.frame(name = colnames(dataa)[-c(1:metainfocol)], path = paste("file:/", svg_path, "/", colnames(dataa)[-c(1:metainfocol)], ".svg", sep = "")) %>% write.csv("./svg/path.csv")
603
+ output$testtext1 <- renderText({
604
+ "Finish"
605
+ })
606
+ }
607
+ process_polarplot <- function(input,yval,dataa,col) {
608
+
609
+ # if(is.na(unique(select(dataa,input$w))) != TRUE){
610
+ y <- yval %>% as.character()
611
+ p <- create_polarplot(dataa, input$w, y, col, input$alpha, input$size, input$yAxisLabel, y, input$Fontsize)
612
+ if (input$q != "" && input$pvaluecheck == TRUE) {
613
+ tukey_result <- process_tukey_result(input,y,input$q,p,dataa,0.05,input$Fontsize)
614
+ p <- p + add_pvalue(tukey_result,remove.bracket = TRUE,
615
+ bracket.size = 0.000001,
616
+ label = "{symbol}",
617
+ tip.length = 0,
618
+ label.size = tukey_result$size,inherit.aes = FALSE,y.position = tukey_result$y.position_barplot)
619
+ }
620
+ plot(p)
621
+ # }
622
+ }
623
+
624
+ create_polarplot <- function(data, x_var, y_var, col, alpha, size, ylab_text, ggtitle_text, Fontsize) {
625
+ p <- ggplot(data, aes_string(x = x_var, y = y_var, fill = x_var)) +
626
+ geom_bar(color = "black", stat = "summary",fun = "mean",lwd = 1.2,width = 0.6) +
627
+ coord_polar()+
628
+ scale_fill_manual(values = unlist(col))+
629
+ labs(
630
+ x="",
631
+ y="")+
632
+ theme_minimal(10) +
633
+ theme(
634
+ axis.text.x = element_text(size = Fontsize, angle = 360,hjust=0.8),
635
+ axis.title.x = element_blank(),
636
+ panel.grid.minor = element_blank(),
637
+ axis.ticks.y = element_blank())+
638
+ easy_remove_axes()
639
+
640
+ return(p)
641
+ }
642
+
643
+
644
+ process_dotplot <- function(input, yval, dataa, col,stat_test) {
645
+
646
+ y <- yval %>% as.character() %>% gsub("`", "", .)
647
+ p <- create_dotplot(dataa, input$w, yval, col, input$alpha, input$size,
648
+ input$xAxisLabel, input$yAxisLabel, yval)
649
+
650
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
651
+ stat_results <- stat_test
652
+ y_range <- diff(range(select(dataa,y)))
653
+ y_max <- max(select(dataa,y), na.rm = TRUE)
654
+ step_size <- y_range * 0.15
655
+ y_positions <- y_max +
656
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
657
+
658
+ p <- p + stat_pvalue_manual(
659
+ stat_results,
660
+ label.size = input$pvaluefontsize,
661
+ label = "p.adj.signif",
662
+ y.position = y_positions,
663
+ bracket.size = 0.5,
664
+ bracket.shorten = 0.1
665
+ )
666
+ }
667
+
668
+ p <- p +
669
+ theme_classic() +
670
+ theme(
671
+ axis.text.x = element_text(
672
+ angle = input$x_rotation,
673
+ size = input$Fontsize
674
+ ),
675
+ text = element_text(size = input$Fontsize)
676
+ )
677
+
678
+ plot(p)
679
+ }
680
+
681
+ create_dotplot <- function(data, x_var, y_var, col, alpha, size, xlab_text, ylab_text, ggtitle_text) {
682
+ p <- ggplot(data,aes_string(y = y_var)) +
683
+ ggbeeswarm::geom_beeswarm(aes_string(x = x_var,fill = x_var),
684
+ cex = 0.1,
685
+ shape = 21,
686
+ size = size)+
687
+ xlab(xlab_text) +
688
+ ylab(ylab_text) +
689
+ ggtitle(paste(ggtitle_text, "", sep = "")) +
690
+ scale_fill_manual(values = unlist(col))
691
+ p
692
+ }
693
+
694
+ process_dotplot_diagram <- function(input,yval,dataa,col,stat_test) {
695
+
696
+
697
+ y <- yval %>% as.character()
698
+ p <- create_dotplot(dataa, input$w, y, col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, y)
699
+ p <- p + theme_prism(
700
+ base_fontface = "plain",
701
+ base_line_size = 0.9,
702
+ base_family = "Arial"
703
+ ) +
704
+ theme(
705
+ legend.position = "none",
706
+ axis.title.x = element_blank(),
707
+ aspect.ratio = 1.0,
708
+ axis.text.x = element_text(angle = input$x_rotation,
709
+ size = input$Fontsize),
710
+ text = element_text(size = input$Fontsize)
711
+ )
712
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
713
+ stat_results <- stat_test
714
+
715
+ y_range <- diff(range(select(dataa,y)))
716
+ y_max <- max(select(dataa,y), na.rm = TRUE)
717
+ step_size <- y_range * 0.15
718
+ y_positions <- y_max +
719
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
720
+
721
+ p <- p + stat_pvalue_manual(
722
+ stat_results,
723
+ label.size = input$pvaluefontsize,
724
+ label = "p.adj.signif",
725
+ y.position = y_positions,
726
+ bracket.size = 0.5,
727
+ bracket.shorten = 0.1
728
+ )
729
+ }
730
+ p
731
+ }
732
+
733
+ process_action_dotplot <- function(input,dataa,metainfocol,svg_path,col,output,data) {
734
+
735
+ withProgress(message = 'Calculation in progress', detail = 'This may take a while...', value = 1, {
736
+ startnum <- 1 + metainfocol
737
+ for (i in startnum:ncol(dataa)) {
738
+ yval <- colnames(dataa)[i]
739
+ p <- create_dotplot(dataa, input$w, dataa[[yval]], col, input$alpha, input$size, input$xAxisLabel, input$yAxisLabel, "")
740
+ p <- p + theme_prism(
741
+ base_fontface = "plain",
742
+ base_line_size = 0.9,
743
+ base_family = "Arial"
744
+ ) +
745
+ theme(
746
+ legend.position = "none",
747
+ axis.title.x = element_blank(),
748
+ aspect.ratio = 1.0,
749
+ axis.text.x = element_text(angle = input$x_rotation,
750
+ size = input$Fontsize),
751
+ text = element_text(size = input$Fontsize)
752
+ )
753
+ # if (input$q != "" && input$pvaluecheck == TRUE) {
754
+ # tukey_result <- process_tukey_result(input,yval,input$q,p,dataa,0.05,input$Fontsize)
755
+ # p <- p + add_pvalue(tukey_result, remove.bracket = TRUE, bracket.size = 0.000001, label = "{symbol}", tip.length = 0,
756
+ # label.size = tukey_result$size, inherit.aes = FALSE,y.position = tukey_result$y.position_boxplot) + scale_y_continuous(
757
+ # limits = c(min(dataa[[yval]]), (max(tukey_result$y.position_boxplot) + max(tukey_result$y.position_boxplot) / 30))
758
+ # )
759
+ # }
760
+ if (input$pvaluecheck == TRUE && input$test_method != "anova_test") {
761
+ # 検定関数の選択
762
+ test_func <- get(input$test_method, asNamespace("rstatix"))
763
+
764
+ # 結果を格納するデータフレーム
765
+ results <- data.frame()
766
+ for(comp in input$comparisons) {
767
+ # グループを分割
768
+ groups <- strsplit(comp, "vs")[[1]]
769
+
770
+ # データのサブセット作成
771
+ subset_data <- data %>%
772
+ dplyr::filter(!!sym(input$w) %in% groups)
773
+
774
+ # 検定実行
775
+ test_result <- test_func(subset_data, as.formula(paste(yval, "~", input$w)),paired = FALSE) %>%
776
+ adjust_pvalue(method = input$p_adjust) %>%
777
+ add_significance()
778
+ results <- rbind(results, test_result)
779
+ }
780
+
781
+ stat_results <- results
782
+
783
+ #stat_results <- perform_statistical_test(
784
+ # data = dataa,
785
+ # comparisons = input$comparisons,
786
+ # test_method = input$test_method, # または "t_test" など
787
+ # y_var = yval,
788
+ # w_var = input$w,
789
+ # p_adjust_method = input$p_adjust
790
+ #)
791
+ y_range <- diff(range(select(dataa,yval)))
792
+ y_max <- max(select(dataa,yval), na.rm = TRUE)
793
+ step_size <- y_range * 0.15
794
+ y_positions <- y_max +
795
+ seq(step_size, by = step_size, length.out = nrow(stat_results))
796
+
797
+ p <- p + stat_pvalue_manual(
798
+ stat_results,
799
+ label.size = input$pvaluefontsize,
800
+ label = "p.adj.signif",
801
+ y.position = y_positions,
802
+ bracket.size = 0.5,
803
+ bracket.shorten = 0.1
804
+ )
805
+ }
806
+ svg(paste("./svg/",colnames(dataa)[i], ".svg", sep = ""))
807
+ plot(p)
808
+ dev.off()
809
+ incProgress(1 / ncol(dataa))
810
+ Sys.sleep(0.25)
811
+ }
812
+ })
813
+ data.frame(name = colnames(dataa)[-c(1:metainfocol)], path = paste("file:/", svg_path, "/", colnames(dataa)[-c(1:metainfocol)], ".svg", sep = "")) %>% write.csv("./svg/path.csv")
814
+ output$testtext1 <- renderText({
815
+ "Finish"
816
+ })
817
+ }
818
+
819
+ process_select_color_input <- function(input,data) {
820
+ if (length(grep(paste0(unique(as.matrix(select(data, input$w)))[1], "_selectcolor"), names(input), value = TRUE)) != 0) {
821
+ inputlist <- grep("selectcolor", names(input), value = TRUE)
822
+ for (input_name in inputlist) {
823
+ collist[str_remove_all(input_name, pattern = "_selectcolor")] <- input[[input_name]]
824
+ }
825
+ cola <<- unlist(collist)
826
+ cola <- cola[c(unique(data[[input$w]]))]
827
+ return(cola)
828
+ }
829
+ }
830
+
831
+
832
+
833
+ process_tukey_result <- function(input,yval, q,plot_obj, dataa, p_adj_threshold, Fontsize) {
834
+ yval <- gsub("`","",yval)
835
+ y <- dataa %>% pull(as.symbol(yval))
836
+ w <- dataa %>% pull(as.symbol(input$w))
837
+ tukey_result <- TukeyHSD(aov(y ~ w, data = dataa))
838
+ tukey_result <- data.frame(tukey_result$w)
839
+ a <- str_split_fixed(rownames(tukey_result), "-", 2)
840
+ colnames(a) <- c("Class1", "Class2")
841
+
842
+ tukey_result <- cbind(a, tukey_result)
843
+ maxvalue <- select(dataa,input$w,yval) %>%
844
+ group_by_(input$w) %>%
845
+ mutate(Mean = mean(!!as.symbol(yval))) %>%
846
+ ungroup() %>%
847
+ distinct(!!as.symbol(input$w),.keep_all = TRUE )
848
+
849
+ maxvalue <- max(maxvalue$Mean)
850
+ tukey_result <- filter(tukey_result, Class1 %in% q | Class2 %in% q) %>%
851
+ mutate(group2 = ifelse(Class1 == q, Class2, Class1)) %>%
852
+ mutate(group1 = paste0(q)) %>%
853
+ mutate(symbol = ifelse(p.adj < p_adj_threshold, "*", "")) %>%
854
+ select(group1, group2, p.adj, symbol) %>%
855
+ mutate(y.position_boxplot = max(dataa[[yval]])) %>%
856
+ mutate(y.position_barplot = maxvalue-maxvalue/15 ) %>%
857
+ mutate(y.min.position = min(dataa[[yval]])) %>%
858
+ mutate(size = ifelse(symbol != "*", 0, Fontsize))
859
+ return(tukey_result)
860
+ }
app/R/runShinyApp.R ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ shiny::runApp(appDir = getwd())
2
+
app/R/runplumber.R ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ library(plumber)
2
+ # 'plumber.R' is the location of the file shown above
3
+ #
4
+ # RUN = "TRUE"
5
+ # while(RUN == "TRUE"){
6
+ # a <- readLines("./runShinyApp.Rout")
7
+ # b <- grepl("Close the program", a)
8
+ # if(TRUE %in% b) {
9
+ # RUN = "FALSE"
10
+ # stop()
11
+ # }
12
+ # }
13
+ pr("./shiny/plumber.R") %>%
14
+ pr_run()
15
+
16
+
17
+ # library(plumbplumb)
18
+ # library(plumber)
19
+ #
20
+ # .state <- new.env(parent = emptyenv()) #create .state when package is first loaded
21
+ #
22
+ # start_plumber3 <- function(path) {
23
+ # trml <- rstudioapi::terminalCreate(show = FALSE)
24
+ # rstudioapi::terminalSend(trml, "R\n")
25
+ # Sys.sleep(2)
26
+ # cmd <- sprintf('plumber::plumb("%s")$run()\n', path)
27
+ # rstudioapi::terminalSend(trml, cmd)
28
+ #
29
+ # .state[["trml"]] <- trml #store terminal name
30
+ # invisible(trml)
31
+ # }
32
+ #
33
+ # kill_plumber <- function() {
34
+ # rstudioapi::terminalKill(.state[["trml"]]) #access terminal name
35
+ # }
36
+ #
37
+ #
38
+ #
39
+ # plumber_path <- system.file("./shiny/plumber.R", package = "plumbplumb")
40
+ # start_plumber3(plumber_path)
41
+
42
+ # while (TRUE) {
43
+ # a <- readLines("./runShinyApp.Rout")
44
+ # b <- grepl("Close the program", a)
45
+ # print("ccccc")
46
+ # if (TRUE %in% b) {
47
+ # message("Stopping the loop...")
48
+ # future::plan("sequential")
49
+ # quit()
50
+ # }
51
+ # Sys.sleep(1)
52
+ # }
app/R/selectcolor_utils.R ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ collist <- list()
2
+ colset <- function(input,col){
3
+ if(length(grep("selectcolor", names(input), value = TRUE)) != 0){
4
+ inputlist<- grep("selectcolor", names(input), value = TRUE)
5
+ for (input_name in inputlist) {
6
+
7
+ collist[str_remove_all(input_name,pattern = "_selectcolor")] <- input[[input_name]]
8
+
9
+ }
10
+ col <<- unlist(collist)
11
+ col <<- col[c(unique(data[[input$x]]))]
12
+ }}
app/R/ui_modules.R ADDED
@@ -0,0 +1,580 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ library(shinyjs)
2
+ plotTabAppearanceUI <- function(title, imgSrc, width, height, outputId, outputId2, textOutputId) {
3
+ card(
4
+ h3(title),
5
+
6
+ # コンテナ領域の設定
7
+ div(
8
+ style = "position: relative; height: 1500px;",
9
+
10
+ # 1つ目のプロット
11
+ jqui_draggable(
12
+ jqui_resizable(
13
+ div(style = "width: 600px; position: absolute; left: 0px; top: 20px;",
14
+ wellPanel(
15
+ style = "border: 2px solid #ddd; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.12);",
16
+ plotOutput(outputId, width = "100%", height = "600px")
17
+ )
18
+ ),
19
+ options = list(
20
+ handles = "e, w",
21
+ minWidth = 200,
22
+ maxWidth = 2000,
23
+ grid = 50,
24
+ animate = FALSE
25
+ )
26
+ ),
27
+ options = list(
28
+ grid = c(50, 50),
29
+ containment = "parent",
30
+ snap = TRUE,
31
+ snapTolerance = 20
32
+ )
33
+ ),
34
+
35
+ jqui_draggable(
36
+ jqui_resizable(
37
+ div(style = "width: 600px; position: absolute; left: 1300px; top: 20px;",
38
+ wellPanel(
39
+ style = "border: 2px solid #ddd; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.12);",
40
+ verbatimTextOutput("stat_results"),
41
+ tableOutput("summary_stats")
42
+ )
43
+ ),
44
+ options = list(
45
+ handles = "e, w",
46
+ minWidth = 200,
47
+ maxWidth = 2000,
48
+ grid = 50,
49
+ animate = FALSE
50
+ )
51
+ ),
52
+ options = list(
53
+ grid = c(50, 50),
54
+ containment = "parent",
55
+ snap = TRUE,
56
+ snapTolerance = 20
57
+ )
58
+ ),
59
+
60
+ # 2つ目のプロット
61
+ jqui_draggable(
62
+ jqui_resizable(
63
+ div(style = "width: 600px; position: absolute; left: 650px; top: 20px;",
64
+ wellPanel(
65
+ style = "border: 2px solid #ddd; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.12);",
66
+ plotOutput(outputId2, width = "100%", height = "600px")
67
+ )
68
+ ),
69
+ options = list(
70
+ handles = "e, w",
71
+ minWidth = 200,
72
+ maxWidth = 2000,
73
+ grid = 50,
74
+ animate = FALSE
75
+ )
76
+ ),
77
+ options = list(
78
+ grid = c(50, 50),
79
+ containment = "parent",
80
+ snap = TRUE,
81
+ snapTolerance = 20
82
+ )
83
+ )
84
+ ),
85
+ br(), br(), br(), br()
86
+ )
87
+ }
88
+
89
+
90
+
91
+ createCustomSidebar <- function(y_id, w_id, z_id, alpha_id, size_id, fontsize_id,orderInputId, pValueCheckId, qInputId) {
92
+ card(
93
+ full_screen = TRUE,
94
+ card_header(""),
95
+ card_body(
96
+ # カスタムCSSの追加
97
+ # CSSの修正
98
+ tags$head(
99
+ tags$style(HTML("
100
+ .plot-type-container {
101
+ display: flex;
102
+ align-items: center; /* 中央揃えに変更 */
103
+ justify-content: flex-start; /* 左寄せに変更 */
104
+ width: 100%;
105
+ margin-bottom: 20px;
106
+ padding: 10px 0;
107
+ }
108
+
109
+ .plot-buttons-container {
110
+ display: flex;
111
+ gap: 40px; /* ボタン間の間隔を調整 */
112
+ margin-left: 40px; /* dropInputとの間隔 */
113
+ }
114
+
115
+ .round-button {
116
+ border-radius: 50%;
117
+ width: 55px;
118
+ height: 55px;
119
+ padding: 0;
120
+ border: 2px solid #007bff;
121
+ background-color: white;
122
+ color: #007bff;
123
+ transition: all 0.3s;
124
+ }
125
+
126
+ .button-with-label {
127
+ display: flex;
128
+ flex-direction: column;
129
+ align-items: center;
130
+ width: 70px; /* 幅を固定 */
131
+ }
132
+
133
+ .button-label {
134
+ text-align: center;
135
+ font-size: 12px; /* フォントサイズを小さく */
136
+ margin-top: 8px; /* ボタンとの間隔 */
137
+ line-height: 1.3; /* 行間を調整 */
138
+ color: #666;
139
+ }
140
+ "))
141
+ ),
142
+
143
+ # HTML構造の修正
144
+ div(
145
+ class = "plot-type-container",
146
+ # dropInput
147
+ esquisse::dropInput(
148
+ inputId = "mydrop",
149
+ choicesNames = tagList(
150
+ list(img(
151
+ src = "./boxplot.png",
152
+ style = "margin-left: 5px; margin-bottom: 4px; margin-top: 0px; width: 50px; height: 50px;"
153
+ ), style = "width: 100px;"),
154
+ list(img(
155
+ src = "./barplot.png",
156
+ style = "margin-left: 5px; margin-bottom: 4px; margin-top: 0px; width: 50px; height: 50px;"
157
+ ), style = "width: 100px;"),
158
+ list(img(
159
+ src = "./violin2.png",
160
+ style = "margin-left: 5px; margin-bottom: 4px; margin-top: 0px; width: 50px; height: 50px;"
161
+ ), style = "width: 100px;"),
162
+ list(img(
163
+ src = "./dotplot.png",
164
+ style = "margin-left: 5px; margin-bottom: 4px; margin-top: 0px; width: 50px; height: 50px;"
165
+ ), style = "width: 100px;")
166
+ ),
167
+ choicesValues = c("box", "bar", "violin", "coding"),
168
+ dropWidth = "220px"
169
+ ),
170
+
171
+ # ボタンコンテナ
172
+ div(
173
+ class = "plot-buttons-container",
174
+ # 保存ボタン
175
+ div(
176
+ class = "button-with-label",
177
+ actionButton("Colorpicker",
178
+ label = icon("palette", class = "fa-lg"), # アイコンサイズ調整
179
+ class = "round-button"),
180
+ div(
181
+ class = "button-label",
182
+ "Color",
183
+ tags$br(),
184
+ "setting"
185
+ )
186
+ ),
187
+
188
+ # ダウンロードボタン
189
+ div(
190
+ class = "button-with-label",
191
+ actionButton("exportgraph",
192
+ label = icon("diagram-project", class = "fa-lg"), # アイコンサイズ調整
193
+ class = "round-button"),
194
+ div(
195
+ class = "button-label",
196
+ "Pathway",
197
+ tags$br(),
198
+ "mapping"
199
+ )
200
+ )
201
+ )
202
+ ),
203
+ accordion(
204
+ accordion_panel(
205
+ "Plot Settings",
206
+ selectInput(inputId = y_id, label = "Y-axis:", choices = NULL),
207
+ selectInput(
208
+ inputId = "mol",
209
+ label = "molecule:",
210
+ choices = NULL
211
+ ),
212
+ selectInput(inputId = w_id, label = "X-axis:", choices = c("Class"), selected = "Class"),
213
+ numericInput("x_rotation", "X-axis Label Rotation:",
214
+ value = 0, min = -90, max = 90),
215
+ sliderInput(inputId = alpha_id, label = "Transparency:", min = 0, max = 1, value = 1),
216
+ chooseSliderSkin("Round", color = "DarkTurquoise"),
217
+ sliderInput(inputId = size_id, label = "Size:", min = 0, max = 10, value = 5),
218
+ numericInput(inputId = fontsize_id, label = "Fontsize:", value = 20, min = 1, max = 30),
219
+ textInput("AxisLabel", "Enter x-axis label:", ""),
220
+ textInput("yAxisLabel", "Enter y-axis label:", "Normalized expression"),
221
+ orderInput(
222
+ inputId = orderInputId,
223
+ label = "Factor level order",
224
+ items = c(""),
225
+ width = "100%"
226
+ ),
227
+ selectInput(
228
+ inputId = qInputId,
229
+ label = "p-value (Tukey-Kramer test) from:",
230
+ choices = c(""),
231
+ selected = ""
232
+ )),
233
+ accordion_panel(
234
+ "Statistical Test Settings",
235
+ checkboxInput(
236
+ inputId = pValueCheckId,
237
+ label = "Add p-value",
238
+ value = FALSE
239
+ ),
240
+ selectInput("test_method", "Statistical Test:",
241
+ choices = c("t-test" = "t_test",
242
+ "Wilcoxon" = "wilcox_test",
243
+ "ANOVA" = "anova_test")),
244
+
245
+ conditionalPanel(
246
+ condition = "input.test_method == 'anova_test'",
247
+ selectInput("post_hoc", "Post-hoc test:",
248
+ choices = c("Tukey" = "tukey",
249
+ "Bonferroni" = "bonferroni"))
250
+ ),
251
+
252
+ conditionalPanel(
253
+ condition = "input.test_method != 'anova_test'",
254
+ selectInput("p_adjust", "P-value adjustment:",
255
+ choices = c("Bonferroni" = "bonferroni",
256
+ "Holm" = "holm",
257
+ "BH" = "BH",
258
+ "Hochberg" = "hochberg",
259
+ "None" = "none"),
260
+ selected = "bonferroni")
261
+ ),
262
+
263
+ numericInput("significance", "Significance Level:",
264
+ value = 0.05, min = 0.01, max = 0.1, step = 0.01),
265
+ numericInput("pvaluefontsize", "Fontsize for pvalue symbol:",
266
+ value = 10, min = 1, max = 30),
267
+ br(),
268
+ div(
269
+ class = "d-grid gap-2 d-md-flex",
270
+ actionButton("select_all", "Select All",
271
+ class = "btn-secondary"),
272
+ actionButton("clear_all", "Clear All",
273
+ class = "btn-secondary")),
274
+ uiOutput("comparison_choices"))
275
+
276
+ ),
277
+ br(),
278
+ h5("Ver 1.20241114"),
279
+ br()
280
+ )
281
+ )
282
+ }
283
+
284
+ transcriptomeuploadpanel <-
285
+ div(
286
+ class = "input-panel",
287
+ style = "
288
+ background: white;
289
+ padding: 25px;
290
+ border-radius: 12px;
291
+ box-shadow: 0 4px 15px rgba(0,0,0,0.08);
292
+ ",
293
+ div(
294
+ class = "section-title",
295
+ style = "
296
+ margin-bottom: 25px;
297
+ padding-bottom: 15px;
298
+ border-bottom: 2px solid #2b2b2b;
299
+ ",
300
+ h3("Other Omics Data",
301
+ style = "
302
+ color: #2b2b2b;
303
+ font-weight: 500;
304
+ margin: 0;
305
+ ")
306
+ ),
307
+ selectInput(
308
+ inputId = "transcriptomefiletype",
309
+ label = "Input format:",
310
+ choices = c("Sample in cols"),
311
+ selected = "Sample in cols"
312
+ ),
313
+ fileInput(
314
+ inputId = "transcriptomefile",
315
+ label = "Input transcriptome data:",
316
+ accept = c("text/csv", "text/comma-separated-values,text/plain", ".csv")
317
+ ),
318
+ hr(),
319
+ div(
320
+ class = "section-title",
321
+ style = "
322
+ margin-bottom: 25px;
323
+ padding-bottom: 15px;
324
+ border-bottom: 2px solid #2b2b2b;
325
+ ",
326
+ h3("Input Meta Data",
327
+ style = "
328
+ color: #2b2b2b;
329
+ font-weight: 500;
330
+ margin: 0;
331
+ ")
332
+ ),
333
+ h5("If necessary, you can add class information.", style = "font-style: italic; color: #7f8c8d;"),
334
+ fileInput(
335
+ inputId = "file2",
336
+ label = "Input meta data file:",
337
+ accept = c("text/csv", "text/comma-separated-values,text/plain", ".csv")
338
+ )
339
+ )
340
+
341
+ uploadpanel <- tabPanel(
342
+ value = "uploadtab",
343
+ tagList(
344
+ div(
345
+ style = "display: flex; align-items: center; justify-content: center; margin-bottom: 15px;",
346
+ img(src = "./upload.png", style = "width: 50px; height: 50px; margin-right: 10px;"),
347
+ div(style = "font-size: 18px; color: #000000; font-weight: bold;", "Data Upload")
348
+ )
349
+ ),
350
+ fluidRow(
351
+ # メタボローム入力パネル
352
+ column(
353
+ width = 3,
354
+ div(
355
+ class = "input-panel",
356
+ style = "
357
+ background: white;
358
+ padding: 25px;
359
+ border-radius: 12px;
360
+ box-shadow: 0 4px 15px rgba(0,0,0,0.08);
361
+ ",
362
+
363
+ # メタボロームテーブル入力セクション
364
+ div(
365
+ class = "section-title",
366
+ style = "
367
+ margin-bottom: 25px;
368
+ padding-bottom: 15px;
369
+ border-bottom: 2px solid #2b2b2b;
370
+ ",
371
+ h3("Input Metabolome Table (.csv)",
372
+ style = "
373
+ color: #2b2b2b;
374
+ font-weight: 500;
375
+ margin: 0;
376
+ ")
377
+ ),
378
+
379
+ # 入力フォーマット選択
380
+ div(
381
+ class = "input-group",
382
+ style = "margin-bottom: 20px;",
383
+ selectInput(
384
+ inputId = "filetype",
385
+ label = tags$span(
386
+ style = "color: #5f6368; font-weight: 500;",
387
+ "Input format:"
388
+ ),
389
+ choices = c("MS-DIAL export", "Sample in rows"),
390
+ selected = "MS-DIAL export"
391
+ )
392
+ ),
393
+
394
+ # ファイル入力フィールド
395
+ div(
396
+ class = "file-input-group",
397
+ style = "margin-bottom: 20px;",
398
+ fileInput(
399
+ inputId = "file1",
400
+ label = tags$span(
401
+ style = "color: #5f6368; font-weight: 500;",
402
+ "Input peak table:"
403
+ ),
404
+ accept = c("text/csv",
405
+ "text/comma-separated-values,text/plain",
406
+ ".csv"),
407
+ width = "100%"
408
+ )
409
+ ),
410
+
411
+ fileInput(
412
+ inputId = "ontfile",
413
+ label = tags$span(
414
+ style = "color: #5f6368; font-weight: 500;",
415
+ "Input ontology file:"
416
+ ),
417
+ accept = c("text/csv",
418
+ "text/comma-separated-values,text/plain",
419
+ ".csv"),
420
+ width = "100%"
421
+ ),
422
+
423
+ tags$hr(style = "
424
+ border: 0;
425
+ height: 1px;
426
+ background: #e0e0e0;
427
+ margin: 25px 0;
428
+ "),
429
+
430
+ # テストデータセクション
431
+ div(
432
+ class = "section-title",
433
+ style = "margin-bottom: 25px;",
434
+ h3("Try Our Test Data",
435
+ style = "
436
+ color: #2b2b2b;
437
+ font-weight: 500;
438
+ border-bottom: 2px solid #2b2b2b;
439
+ padding-bottom: 15px;
440
+ ")
441
+ ),
442
+
443
+ div(
444
+ style = "text-align: left; margin: 20px;",
445
+ downloadButton(
446
+ outputId = "downloadData",
447
+ label = "Download Demo Data",
448
+ style = "
449
+ background: transparent;
450
+ color: #1a1a1a;
451
+ border: 2px solid #1a1a1a;
452
+ border-radius: 6px;
453
+ font-size: 16px;
454
+ font-weight: 500;
455
+ padding: 10px 30px;
456
+ transition: all 0.3s ease;
457
+ &:hover {
458
+ background: #1a1a1a;
459
+ color: #f5f5f5;
460
+ box-shadow: 0 2px 8px rgba(26,115,232,0.2);
461
+ }
462
+ "
463
+ )
464
+ ),
465
+ div(
466
+ class = "section-title",
467
+ style = "
468
+ margin-bottom: 25px;
469
+ padding-bottom: 15px;
470
+ border-bottom: 2px solid #2b2b2b;
471
+ ",
472
+ h3("Submit",
473
+ style = "
474
+ color: #2b2b2b;
475
+ font-weight: 500;
476
+ margin: 0;
477
+ ")
478
+ ),
479
+
480
+ # 送信ボタン
481
+ div(
482
+ style = "margin: 20px; text-align: left;",
483
+ actionButton(
484
+ inputId = "submit",
485
+ label = "Submit Data",
486
+ class = "btn-submit",
487
+ style = "
488
+ background: transparent;
489
+ color: #1a1a1a;
490
+ border: 2px solid #1a1a1a;
491
+ border-radius: 6px;
492
+ font-size: 16px;
493
+ font-weight: 500;
494
+ padding: 10px 30px;
495
+ transition: all 0.3s ease;
496
+ &:hover {
497
+ background: #1a1a1a;
498
+ color: #f5f5f5;
499
+ box-shadow: 0 2px 8px rgba(26,115,232,0.2);
500
+ }
501
+ "
502
+ )
503
+ )
504
+ )
505
+ ),
506
+
507
+ # トランスクリプトームアップロードパネル
508
+ column(
509
+ width = 3,
510
+ transcriptomeuploadpanel
511
+ )
512
+ )
513
+ )
514
+
515
+ originalplotTabAppearanceUI <- tabPanel(
516
+ value = "test",
517
+ tagList(
518
+ img(
519
+ src = "./cord.png",
520
+ style = "margin-left: 5px; margin-bottom: 4px; margin-top: 0px; width: 50px; height: 50px;"
521
+ ),
522
+ div(
523
+ style = "font-size: 10px; color: #000000; text-align: center;",
524
+ HTML(' '), "coding", HTML(' ')
525
+ )
526
+ ),
527
+ mainPanel(
528
+ width = 10,
529
+ h3("original"),
530
+ fluidRow(
531
+ column(
532
+ width = 6,
533
+ aceEditor(
534
+ "code",
535
+ value = "p <- ggplot(data = data, aes(y = Yvariable, x = Class)) +
536
+ ggbeeswarm::geom_beeswarm(aes(fill = Class),
537
+ dodge.width = 0.1,
538
+ shape = 21,
539
+ size = 3,
540
+ cex = 1
541
+ ) +
542
+ stat_summary(
543
+ geom = \"crossbar\",
544
+ aes(fill = Class),
545
+ fun = mean,
546
+ position = position_dodge(0.9),
547
+ colour = \"red\",
548
+ linewidth = 0.5, width = 0.7,
549
+ show.legend = FALSE
550
+ ) +
551
+ theme_prism(
552
+ base_fontface = \"plain\",
553
+ base_line_size = 0.9,
554
+ base_family = \"Arial\"
555
+ ) +
556
+ scale_x_discrete(
557
+ guide = guide_prism_bracket(width = 0.1),
558
+ labels = scales::wrap_format(5)
559
+ ) +
560
+ theme(aspect.ratio = 1.0)
561
+ p"
562
+ ),
563
+ actionButton("runButton", "Run Code")
564
+ ),
565
+ column(
566
+ width = 6,
567
+ plotOutput("plot"),
568
+ downloadButton("downloadPlot", "Download Plot")
569
+ )
570
+ )
571
+ )
572
+ )
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
app/data/background.svg ADDED
app/data/ceramidepathway.cyjs ADDED
@@ -0,0 +1,2528 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version" : "1.0",
3
+ "generated_by" : "cytoscape-3.10.0",
4
+ "target_cytoscapejs_version" : "~2.1",
5
+ "data" : {
6
+ "shared_name" : "Network(1)",
7
+ "name" : "Network(1)",
8
+ "SUID" : 51687,
9
+ "__Annotations" : [ "" ],
10
+ "selected" : true
11
+ },
12
+ "elements" : {
13
+ "nodes" : [ {
14
+ "data" : {
15
+ "id" : "60361",
16
+ "Shape" : "Ellipse",
17
+ "Fillcolor" : "#ffffff",
18
+ "Color" : "",
19
+ "label" : " ",
20
+ "Label_size" : 1,
21
+ "shared_name" : "Node 18",
22
+ "LabelFont" : "",
23
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
24
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
25
+ "name" : "Node 18",
26
+ "Ensembl_ID" : "",
27
+ "SUID" : 60361,
28
+ "Height" : 1,
29
+ "Width" : 1,
30
+ "selected" : false
31
+ },
32
+ "position" : {
33
+ "x" : -772.3715110031136,
34
+ "y" : -442.24842702277897
35
+ },
36
+ "selected" : false
37
+ }, {
38
+ "data" : {
39
+ "id" : "59880",
40
+ "Shape" : "Ellipse",
41
+ "Fillcolor" : "#ffffff",
42
+ "Color" : "",
43
+ "label" : " ",
44
+ "Label_size" : 1,
45
+ "shared_name" : "Node 13",
46
+ "LabelFont" : "",
47
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
48
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
49
+ "name" : "Node 13",
50
+ "Ensembl_ID" : "",
51
+ "SUID" : 59880,
52
+ "Height" : 1,
53
+ "Width" : 1,
54
+ "selected" : false
55
+ },
56
+ "position" : {
57
+ "x" : -1180.4239308066317,
58
+ "y" : -358.0486505034973
59
+ },
60
+ "selected" : false
61
+ }, {
62
+ "data" : {
63
+ "id" : "59874",
64
+ "Shape" : "Ellipse",
65
+ "Fillcolor" : "#ffffff",
66
+ "Color" : "",
67
+ "label" : " ",
68
+ "Label_size" : 1,
69
+ "shared_name" : "Node 2",
70
+ "LabelFont" : "",
71
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
72
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
73
+ "name" : "Node 2",
74
+ "Ensembl_ID" : "",
75
+ "SUID" : 59874,
76
+ "Height" : 1,
77
+ "Width" : 1,
78
+ "selected" : false
79
+ },
80
+ "position" : {
81
+ "x" : -1182.4911756886006,
82
+ "y" : 111.7836490135568
83
+ },
84
+ "selected" : false
85
+ }, {
86
+ "data" : {
87
+ "id" : "59832",
88
+ "Shape" : "Ellipse",
89
+ "Fillcolor" : "#ffffff",
90
+ "Color" : "",
91
+ "label" : " ",
92
+ "Label_size" : 1,
93
+ "shared_name" : "Node 6",
94
+ "LabelFont" : "",
95
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
96
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
97
+ "name" : "Node 6",
98
+ "Ensembl_ID" : "",
99
+ "SUID" : 59832,
100
+ "Height" : 1,
101
+ "Width" : 1,
102
+ "selected" : false
103
+ },
104
+ "position" : {
105
+ "x" : -937.4993548517596,
106
+ "y" : -50.61982027825535
107
+ },
108
+ "selected" : false
109
+ }, {
110
+ "data" : {
111
+ "id" : "59829",
112
+ "Shape" : "Ellipse",
113
+ "Fillcolor" : "#ffffff",
114
+ "Color" : "",
115
+ "label" : " ",
116
+ "Label_size" : 1,
117
+ "shared_name" : "Node 4",
118
+ "LabelFont" : "",
119
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
120
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
121
+ "name" : "Node 4",
122
+ "Ensembl_ID" : "",
123
+ "SUID" : 59829,
124
+ "Height" : 1,
125
+ "Width" : 1,
126
+ "selected" : false
127
+ },
128
+ "position" : {
129
+ "x" : -937.6842371049761,
130
+ "y" : 59.53152187837176
131
+ },
132
+ "selected" : false
133
+ }, {
134
+ "data" : {
135
+ "id" : "59826",
136
+ "Shape" : "Ellipse",
137
+ "Fillcolor" : "#ffffff",
138
+ "Color" : "",
139
+ "label" : " ",
140
+ "Label_size" : 1,
141
+ "shared_name" : "Node 5",
142
+ "LabelFont" : "",
143
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
144
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
145
+ "name" : "Node 5",
146
+ "Ensembl_ID" : "",
147
+ "SUID" : 59826,
148
+ "Height" : 1,
149
+ "Width" : 1,
150
+ "selected" : false
151
+ },
152
+ "position" : {
153
+ "x" : -937.8691193581923,
154
+ "y" : 1.6323068569296595
155
+ },
156
+ "selected" : false
157
+ }, {
158
+ "data" : {
159
+ "id" : "59782",
160
+ "Shape" : "Ellipse",
161
+ "Fillcolor" : "#ffffff",
162
+ "Color" : "",
163
+ "label" : " ",
164
+ "Label_size" : 1,
165
+ "shared_name" : "Node 10",
166
+ "LabelFont" : "",
167
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
168
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
169
+ "name" : "Node 10",
170
+ "Ensembl_ID" : "",
171
+ "SUID" : 59782,
172
+ "Height" : 1,
173
+ "Width" : 1,
174
+ "selected" : false
175
+ },
176
+ "position" : {
177
+ "x" : -935.98675672944,
178
+ "y" : -244.3174653425818
179
+ },
180
+ "selected" : false
181
+ }, {
182
+ "data" : {
183
+ "id" : "59768",
184
+ "Shape" : "Ellipse",
185
+ "Fillcolor" : "#ffffff",
186
+ "Color" : "",
187
+ "label" : " ",
188
+ "Label_size" : 1,
189
+ "shared_name" : "Node 11",
190
+ "LabelFont" : "",
191
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
192
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
193
+ "name" : "Node 11",
194
+ "Ensembl_ID" : "",
195
+ "SUID" : 59768,
196
+ "Height" : 1,
197
+ "Width" : 1,
198
+ "selected" : false
199
+ },
200
+ "position" : {
201
+ "x" : -937.4993548517598,
202
+ "y" : -189.8132110722118
203
+ },
204
+ "selected" : false
205
+ }, {
206
+ "data" : {
207
+ "id" : "59754",
208
+ "Shape" : "Ellipse",
209
+ "Fillcolor" : "#ffffff",
210
+ "Color" : "",
211
+ "label" : " ",
212
+ "Label_size" : 1,
213
+ "shared_name" : "Node 9",
214
+ "LabelFont" : "",
215
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
216
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
217
+ "name" : "Node 9",
218
+ "Ensembl_ID" : "",
219
+ "SUID" : 59754,
220
+ "Height" : 1,
221
+ "Width" : 1,
222
+ "selected" : false
223
+ },
224
+ "position" : {
225
+ "x" : -939.0119529740795,
226
+ "y" : -301.6620336043749
227
+ },
228
+ "selected" : false
229
+ }, {
230
+ "data" : {
231
+ "id" : "59731",
232
+ "Shape" : "Ellipse",
233
+ "Fillcolor" : "#ffffff",
234
+ "Color" : "",
235
+ "label" : " ",
236
+ "Label_size" : 1,
237
+ "shared_name" : "Node 1",
238
+ "LabelFont" : "",
239
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
240
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
241
+ "name" : "Node 1",
242
+ "Ensembl_ID" : "",
243
+ "SUID" : 59731,
244
+ "Height" : 1,
245
+ "Width" : 1,
246
+ "selected" : false
247
+ },
248
+ "position" : {
249
+ "x" : -826.1533756487528,
250
+ "y" : 321.0374351715994
251
+ },
252
+ "selected" : false
253
+ }, {
254
+ "data" : {
255
+ "id" : "59711",
256
+ "Shape" : "Ellipse",
257
+ "Fillcolor" : "#ffffff",
258
+ "Color" : "",
259
+ "label" : " ",
260
+ "Label_size" : 1,
261
+ "shared_name" : "Node 21",
262
+ "LabelFont" : "",
263
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
264
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
265
+ "name" : "Node 21",
266
+ "Ensembl_ID" : "",
267
+ "SUID" : 59711,
268
+ "Height" : 1,
269
+ "Width" : 1,
270
+ "selected" : false
271
+ },
272
+ "position" : {
273
+ "x" : -85.86704966181715,
274
+ "y" : -408.69424405568736
275
+ },
276
+ "selected" : false
277
+ }, {
278
+ "data" : {
279
+ "id" : "59691",
280
+ "Shape" : "Ellipse",
281
+ "Fillcolor" : "#ffffff",
282
+ "Color" : "",
283
+ "label" : " ",
284
+ "Label_size" : 1,
285
+ "shared_name" : "Node 32",
286
+ "LabelFont" : "",
287
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
288
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
289
+ "name" : "Node 32",
290
+ "Ensembl_ID" : "",
291
+ "SUID" : 59691,
292
+ "Height" : 1,
293
+ "Width" : 1,
294
+ "selected" : false
295
+ },
296
+ "position" : {
297
+ "x" : 842.8395980096204,
298
+ "y" : 226.348298648013
299
+ },
300
+ "selected" : false
301
+ }, {
302
+ "data" : {
303
+ "id" : "51860",
304
+ "Shape" : "Rectangle",
305
+ "Fillcolor" : "#ffffff",
306
+ "Color" : "Black",
307
+ "label" : "UGCG",
308
+ "Label_size" : 30,
309
+ "shared_name" : "UGCG",
310
+ "LabelFont" : "",
311
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000028381.svg",
312
+ "pathpng" : "http://localhost:9000/png?str2=(UGCG).png",
313
+ "name" : "UGCG",
314
+ "Ensembl_ID" : "ENSMUSG00000028381",
315
+ "SUID" : 51860,
316
+ "Height" : 140,
317
+ "Width" : 140,
318
+ "selected" : false
319
+ },
320
+ "position" : {
321
+ "x" : -128.31694440868472,
322
+ "y" : 98.3709826174738
323
+ },
324
+ "selected" : false
325
+ }, {
326
+ "data" : {
327
+ "id" : "51858",
328
+ "Shape" : "Rectangle",
329
+ "Fillcolor" : "#ffffff",
330
+ "Color" : "Black",
331
+ "label" : "UGT8a",
332
+ "Label_size" : 30,
333
+ "shared_name" : "UGT8a",
334
+ "LabelFont" : "",
335
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000032854.svg",
336
+ "pathpng" : "http://localhost:9000/png?str2=(UGT8a).png",
337
+ "name" : "UGT8a",
338
+ "Ensembl_ID" : "ENSMUSG00000032854",
339
+ "SUID" : 51858,
340
+ "Height" : 140,
341
+ "Width" : 140,
342
+ "selected" : false
343
+ },
344
+ "position" : {
345
+ "x" : -838.4846509098612,
346
+ "y" : -520.2093054254817
347
+ },
348
+ "selected" : false
349
+ }, {
350
+ "data" : {
351
+ "id" : "51856",
352
+ "Shape" : "",
353
+ "Fillcolor" : "",
354
+ "Color" : "",
355
+ "label" : "St3gal3",
356
+ "Label_size" : 30,
357
+ "shared_name" : "St3gal3",
358
+ "LabelFont" : "",
359
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000028538.svg",
360
+ "pathpng" : "http://localhost:9000/png?str2=(St3gal3).png",
361
+ "name" : "St3gal3",
362
+ "Ensembl_ID" : "ENSMUSG00000028538",
363
+ "SUID" : 51856,
364
+ "Height" : 140,
365
+ "Width" : 140,
366
+ "selected" : false
367
+ },
368
+ "position" : {
369
+ "x" : 918.0,
370
+ "y" : 227.45683602223994
371
+ },
372
+ "selected" : false
373
+ }, {
374
+ "data" : {
375
+ "id" : "51854",
376
+ "Shape" : "Rectangle",
377
+ "Fillcolor" : "#ffffff",
378
+ "Color" : "Black",
379
+ "label" : "St3gal2",
380
+ "Label_size" : 30,
381
+ "shared_name" : "St3gal2",
382
+ "LabelFont" : "",
383
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000031749.svg",
384
+ "pathpng" : "http://localhost:9000/png?str2=(St3gal2).png",
385
+ "name" : "St3gal2",
386
+ "Ensembl_ID" : "ENSMUSG00000031749",
387
+ "SUID" : 51854,
388
+ "Height" : 140,
389
+ "Width" : 140,
390
+ "selected" : false
391
+ },
392
+ "position" : {
393
+ "x" : 1066.0,
394
+ "y" : 227.45683602223994
395
+ },
396
+ "selected" : false
397
+ }, {
398
+ "data" : {
399
+ "id" : "51852",
400
+ "Shape" : "Ellipse",
401
+ "Fillcolor" : "#ffffff",
402
+ "Color" : "",
403
+ "label" : " ",
404
+ "Label_size" : 1,
405
+ "shared_name" : "Node 30",
406
+ "LabelFont" : "",
407
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
408
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
409
+ "name" : "Node 30",
410
+ "Ensembl_ID" : "",
411
+ "SUID" : 51852,
412
+ "Height" : 1,
413
+ "Width" : 1,
414
+ "selected" : false
415
+ },
416
+ "position" : {
417
+ "x" : 712.2568469936117,
418
+ "y" : 30.87794773775253
419
+ },
420
+ "selected" : false
421
+ }, {
422
+ "data" : {
423
+ "id" : "51850",
424
+ "Shape" : "",
425
+ "Fillcolor" : "",
426
+ "Color" : "",
427
+ "label" : "GM2",
428
+ "Label_size" : 30,
429
+ "shared_name" : "GM2",
430
+ "LabelFont" : "",
431
+ "path" : "http://localhost:9000/plot?str1=GM2.svg",
432
+ "pathpng" : "http://localhost:9000/png?str2=(GM2).png",
433
+ "name" : "GM2",
434
+ "Ensembl_ID" : "",
435
+ "SUID" : 51850,
436
+ "Height" : 140,
437
+ "Width" : 140,
438
+ "selected" : false
439
+ },
440
+ "position" : {
441
+ "x" : 710.8013297662593,
442
+ "y" : -58.53729771875898
443
+ },
444
+ "selected" : false
445
+ }, {
446
+ "data" : {
447
+ "id" : "51848",
448
+ "Shape" : "",
449
+ "Fillcolor" : "",
450
+ "Color" : "",
451
+ "label" : "ACER3",
452
+ "Label_size" : 30,
453
+ "shared_name" : "ACER3",
454
+ "LabelFont" : "",
455
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000030760.svg",
456
+ "pathpng" : "http://localhost:9000/png?str2=(ACER3).png",
457
+ "name" : "ACER3",
458
+ "Ensembl_ID" : "ENSMUSG00000030760",
459
+ "SUID" : 51848,
460
+ "Height" : 140,
461
+ "Width" : 140,
462
+ "selected" : false
463
+ },
464
+ "position" : {
465
+ "x" : -28.602905499490483,
466
+ "y" : -410.3040365280741
467
+ },
468
+ "selected" : false
469
+ }, {
470
+ "data" : {
471
+ "id" : "51846",
472
+ "Shape" : "Rectangle",
473
+ "Fillcolor" : "#ffffff",
474
+ "Color" : "Black",
475
+ "label" : "ACER2",
476
+ "Label_size" : 30,
477
+ "shared_name" : "ACER2",
478
+ "LabelFont" : "",
479
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000038007.svg",
480
+ "pathpng" : "http://localhost:9000/png?str2=(ACER2).png",
481
+ "name" : "ACER2",
482
+ "Ensembl_ID" : "ENSMUSG00000038007",
483
+ "SUID" : 51846,
484
+ "Height" : 140,
485
+ "Width" : 140,
486
+ "selected" : false
487
+ },
488
+ "position" : {
489
+ "x" : -27.350146993003058,
490
+ "y" : -558.8546303570583
491
+ },
492
+ "selected" : false
493
+ }, {
494
+ "data" : {
495
+ "id" : "51844",
496
+ "Shape" : "",
497
+ "Fillcolor" : "",
498
+ "Color" : "",
499
+ "label" : "ACER1",
500
+ "Label_size" : 30,
501
+ "shared_name" : "ACER1",
502
+ "LabelFont" : "",
503
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000045019.svg",
504
+ "pathpng" : "http://localhost:9000/png?str2=(ACER1).png",
505
+ "name" : "ACER1",
506
+ "Ensembl_ID" : "ENSMUSG00000045019",
507
+ "SUID" : 51844,
508
+ "Height" : 140,
509
+ "Width" : 140,
510
+ "selected" : false
511
+ },
512
+ "position" : {
513
+ "x" : -27.768898554351985,
514
+ "y" : -702.0171272343605
515
+ },
516
+ "selected" : false
517
+ }, {
518
+ "data" : {
519
+ "id" : "51842",
520
+ "Shape" : "",
521
+ "Fillcolor" : "",
522
+ "Color" : "",
523
+ "label" : "ASAH2",
524
+ "Label_size" : 30,
525
+ "shared_name" : "ASAH2",
526
+ "LabelFont" : "",
527
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000024887.svg",
528
+ "pathpng" : "http://localhost:9000/png?str2=(ASAH2).png",
529
+ "name" : "ASAH2",
530
+ "Ensembl_ID" : "ENSMUSG00000024887",
531
+ "SUID" : 51842,
532
+ "Height" : 140,
533
+ "Width" : 140,
534
+ "selected" : false
535
+ },
536
+ "position" : {
537
+ "x" : 121.93133234060159,
538
+ "y" : -410.56913517883123
539
+ },
540
+ "selected" : false
541
+ }, {
542
+ "data" : {
543
+ "id" : "51840",
544
+ "Shape" : "",
545
+ "Fillcolor" : "",
546
+ "Color" : "",
547
+ "label" : "CerS6",
548
+ "Label_size" : 30,
549
+ "shared_name" : "CerS6",
550
+ "LabelFont" : "",
551
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000027035.svg",
552
+ "pathpng" : "http://localhost:9000/png?str2=(CerS6).png",
553
+ "name" : "CerS6",
554
+ "Ensembl_ID" : "ENSMUSG00000027035",
555
+ "SUID" : 51840,
556
+ "Height" : 140,
557
+ "Width" : 140,
558
+ "selected" : false
559
+ },
560
+ "position" : {
561
+ "x" : -454.0,
562
+ "y" : 393.45683602223994
563
+ },
564
+ "selected" : false
565
+ }, {
566
+ "data" : {
567
+ "id" : "51838",
568
+ "Shape" : "",
569
+ "Fillcolor" : "",
570
+ "Color" : "",
571
+ "label" : "CerS3",
572
+ "Label_size" : 30,
573
+ "shared_name" : "CerS3",
574
+ "LabelFont" : "",
575
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000030510.svg",
576
+ "pathpng" : "http://localhost:9000/png?str2=(CerS3).png",
577
+ "name" : "CerS3",
578
+ "Ensembl_ID" : "ENSMUSG00000030510",
579
+ "SUID" : 51838,
580
+ "Height" : 140,
581
+ "Width" : 140,
582
+ "selected" : false
583
+ },
584
+ "position" : {
585
+ "x" : -901.0,
586
+ "y" : 394.45683602223994
587
+ },
588
+ "selected" : false
589
+ }, {
590
+ "data" : {
591
+ "id" : "51836",
592
+ "Shape" : "",
593
+ "Fillcolor" : "",
594
+ "Color" : "",
595
+ "label" : "CerS5",
596
+ "Label_size" : 30,
597
+ "shared_name" : "CerS5",
598
+ "LabelFont" : "",
599
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000023021.svg",
600
+ "pathpng" : "http://localhost:9000/png?str2=(CerS5).png",
601
+ "name" : "CerS5",
602
+ "Ensembl_ID" : "ENSMUSG00000023021",
603
+ "SUID" : 51836,
604
+ "Height" : 140,
605
+ "Width" : 140,
606
+ "selected" : false
607
+ },
608
+ "position" : {
609
+ "x" : -604.0,
610
+ "y" : 395.45683602223994
611
+ },
612
+ "selected" : false
613
+ }, {
614
+ "data" : {
615
+ "id" : "51834",
616
+ "Shape" : "",
617
+ "Fillcolor" : "",
618
+ "Color" : "",
619
+ "label" : "CerS4",
620
+ "Label_size" : 30,
621
+ "shared_name" : "CerS4",
622
+ "LabelFont" : "",
623
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000008206.svg",
624
+ "pathpng" : "http://localhost:9000/png?str2=(Cers4).png",
625
+ "name" : "CerS4",
626
+ "Ensembl_ID" : "ENSMUSG00000008206",
627
+ "SUID" : 51834,
628
+ "Height" : 140,
629
+ "Width" : 140,
630
+ "selected" : false
631
+ },
632
+ "position" : {
633
+ "x" : -754.0,
634
+ "y" : 396.45683602223994
635
+ },
636
+ "selected" : false
637
+ }, {
638
+ "data" : {
639
+ "id" : "51832",
640
+ "Shape" : "",
641
+ "Fillcolor" : "",
642
+ "Color" : "",
643
+ "label" : "CerS1",
644
+ "Label_size" : 30,
645
+ "shared_name" : "CerS1",
646
+ "LabelFont" : "",
647
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000087408.svg",
648
+ "pathpng" : "http://localhost:9000/png?str2=(Cers1).png",
649
+ "name" : "CerS1",
650
+ "Ensembl_ID" : "ENSMUSG00000087408",
651
+ "SUID" : 51832,
652
+ "Height" : 140,
653
+ "Width" : 140,
654
+ "selected" : false
655
+ },
656
+ "position" : {
657
+ "x" : -1193.0,
658
+ "y" : 393.45683602223994
659
+ },
660
+ "selected" : false
661
+ }, {
662
+ "data" : {
663
+ "id" : "51830",
664
+ "NumChildren" : 2,
665
+ "Shape" : "",
666
+ "Fillcolor" : "",
667
+ "Color" : "",
668
+ "label" : "DHSph",
669
+ "Label_size" : 30,
670
+ "shared_name" : "DHSph",
671
+ "LabelFont" : "",
672
+ "path" : "http://localhost:9000/plot?str1=DHSph.svg",
673
+ "NumDescendents" : 2,
674
+ "pathpng" : "http://localhost:9000/png?str2=(DHSph).png",
675
+ "name" : "DHSph",
676
+ "Ensembl_ID" : "",
677
+ "SUID" : 51830,
678
+ "Height" : 140,
679
+ "Width" : 140,
680
+ "selected" : false
681
+ },
682
+ "position" : {
683
+ "x" : -1037.0,
684
+ "y" : -127.0
685
+ },
686
+ "selected" : false
687
+ }, {
688
+ "data" : {
689
+ "id" : "51828",
690
+ "NumChildren" : 2,
691
+ "Shape" : "",
692
+ "Fillcolor" : "",
693
+ "Color" : "",
694
+ "label" : "HexCer_HS",
695
+ "Label_size" : 30,
696
+ "shared_name" : "HexCer_HS",
697
+ "LabelFont" : "",
698
+ "path" : "http://localhost:9000/plot?str1=HexCer_HS.svg",
699
+ "NumDescendents" : 2,
700
+ "pathpng" : "http://localhost:9000/png?str2=(HexCer_HS).png",
701
+ "name" : "HexCer_HS",
702
+ "Ensembl_ID" : "",
703
+ "SUID" : 51828,
704
+ "Height" : 140,
705
+ "Width" : 140,
706
+ "selected" : false
707
+ },
708
+ "position" : {
709
+ "x" : 51.0,
710
+ "y" : -6.0
711
+ },
712
+ "selected" : false
713
+ }, {
714
+ "data" : {
715
+ "id" : "51826",
716
+ "NumChildren" : 2,
717
+ "Shape" : "",
718
+ "Fillcolor" : "",
719
+ "Color" : "",
720
+ "label" : "SHexCer",
721
+ "Label_size" : 30,
722
+ "shared_name" : "SHexCer",
723
+ "LabelFont" : "",
724
+ "path" : "http://localhost:9000/plot?str1=SHexCer.svg",
725
+ "NumDescendents" : 2,
726
+ "pathpng" : "http://localhost:9000/png?str2=(SHexCer).png",
727
+ "name" : "SHexCer",
728
+ "Ensembl_ID" : "",
729
+ "SUID" : 51826,
730
+ "Height" : 140,
731
+ "Width" : 140,
732
+ "selected" : false
733
+ },
734
+ "position" : {
735
+ "x" : 374.0,
736
+ "y" : -5.0
737
+ },
738
+ "selected" : false
739
+ }, {
740
+ "data" : {
741
+ "id" : "51824",
742
+ "NumChildren" : 2,
743
+ "Shape" : "",
744
+ "Fillcolor" : "",
745
+ "Color" : "",
746
+ "label" : "GM1",
747
+ "Label_size" : 30,
748
+ "shared_name" : "GM1",
749
+ "LabelFont" : "",
750
+ "path" : "http://localhost:9000/plot?str1=GM1.svg",
751
+ "NumDescendents" : 2,
752
+ "pathpng" : "http://localhost:9000/png?str2=(GM1).png",
753
+ "name" : "GM1",
754
+ "Ensembl_ID" : "",
755
+ "SUID" : 51824,
756
+ "Height" : 140,
757
+ "Width" : 140,
758
+ "selected" : false
759
+ },
760
+ "position" : {
761
+ "x" : 712.0,
762
+ "y" : 134.0
763
+ },
764
+ "selected" : false
765
+ }, {
766
+ "data" : {
767
+ "id" : "51822",
768
+ "NumChildren" : 2,
769
+ "Shape" : "",
770
+ "Fillcolor" : "",
771
+ "Color" : "",
772
+ "label" : "Cer_NDS",
773
+ "Label_size" : 30,
774
+ "shared_name" : "Cer_NDS",
775
+ "LabelFont" : "",
776
+ "path" : "http://localhost:9000/plot?str1=Cer_NDS.svg",
777
+ "NumDescendents" : 2,
778
+ "pathpng" : "http://localhost:9000/png?str2=(Cer_NDS).png",
779
+ "name" : "Cer_NDS",
780
+ "Ensembl_ID" : "",
781
+ "SUID" : 51822,
782
+ "Height" : 140,
783
+ "Width" : 140,
784
+ "selected" : false
785
+ },
786
+ "position" : {
787
+ "x" : -633.0,
788
+ "y" : -246.0
789
+ },
790
+ "selected" : false
791
+ }, {
792
+ "data" : {
793
+ "id" : "51820",
794
+ "Shape" : "Ellipse",
795
+ "Fillcolor" : "#ffffff",
796
+ "Color" : "",
797
+ "label" : " ",
798
+ "Label_size" : 1,
799
+ "shared_name" : "Node 28",
800
+ "LabelFont" : "",
801
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
802
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
803
+ "name" : "Node 28",
804
+ "Ensembl_ID" : "",
805
+ "SUID" : 51820,
806
+ "Height" : 1,
807
+ "Width" : 1,
808
+ "selected" : false
809
+ },
810
+ "position" : {
811
+ "x" : 537.4846159314478,
812
+ "y" : -248.25741099855094
813
+ },
814
+ "selected" : false
815
+ }, {
816
+ "data" : {
817
+ "id" : "51818",
818
+ "Shape" : "Rectangle",
819
+ "Fillcolor" : "#ffffff",
820
+ "Color" : "Black",
821
+ "label" : "St3gal5",
822
+ "Label_size" : 30,
823
+ "shared_name" : "St3gal5",
824
+ "LabelFont" : "",
825
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000056091.svg",
826
+ "pathpng" : "http://localhost:9000/png?str2=(St3gal5).png",
827
+ "name" : "St3gal5",
828
+ "Ensembl_ID" : "ENSMUSG00000056091",
829
+ "SUID" : 51818,
830
+ "Height" : 140,
831
+ "Width" : 140,
832
+ "selected" : false
833
+ },
834
+ "position" : {
835
+ "x" : 536.1206531286184,
836
+ "y" : -422.89211563760074
837
+ },
838
+ "selected" : false
839
+ }, {
840
+ "data" : {
841
+ "id" : "51816",
842
+ "Shape" : "Ellipse",
843
+ "Fillcolor" : "#ffffff",
844
+ "Color" : "",
845
+ "label" : " ",
846
+ "Label_size" : 1,
847
+ "shared_name" : "Node 31",
848
+ "LabelFont" : "",
849
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
850
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
851
+ "name" : "Node 31",
852
+ "Ensembl_ID" : "",
853
+ "SUID" : 51816,
854
+ "Height" : 1,
855
+ "Width" : 1,
856
+ "selected" : false
857
+ },
858
+ "position" : {
859
+ "x" : 715.7134520976327,
860
+ "y" : 224.83570052569328
861
+ },
862
+ "selected" : false
863
+ }, {
864
+ "data" : {
865
+ "id" : "51814",
866
+ "Shape" : "Ellipse",
867
+ "Fillcolor" : "#ffffff",
868
+ "Color" : "",
869
+ "label" : " ",
870
+ "Label_size" : 1,
871
+ "shared_name" : "Node 29",
872
+ "LabelFont" : "",
873
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
874
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
875
+ "name" : "Node 29",
876
+ "Ensembl_ID" : "",
877
+ "SUID" : 51814,
878
+ "Height" : 1,
879
+ "Width" : 1,
880
+ "selected" : false
881
+ },
882
+ "position" : {
883
+ "x" : 711.0171129468636,
884
+ "y" : -158.08177102153573
885
+ },
886
+ "selected" : false
887
+ }, {
888
+ "data" : {
889
+ "id" : "51812",
890
+ "Shape" : "Ellipse",
891
+ "Fillcolor" : "#ffffff",
892
+ "Color" : "",
893
+ "label" : " ",
894
+ "Label_size" : 1,
895
+ "shared_name" : "Node 26",
896
+ "LabelFont" : "",
897
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
898
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
899
+ "name" : "Node 26",
900
+ "Ensembl_ID" : "",
901
+ "SUID" : 51812,
902
+ "Height" : 1,
903
+ "Width" : 1,
904
+ "selected" : false
905
+ },
906
+ "position" : {
907
+ "x" : 205.8461959794227,
908
+ "y" : -128.45541144886855
909
+ },
910
+ "selected" : false
911
+ }, {
912
+ "data" : {
913
+ "id" : "51810",
914
+ "Shape" : "Ellipse",
915
+ "Fillcolor" : "#ffffff",
916
+ "Color" : "",
917
+ "label" : " ",
918
+ "Label_size" : 1,
919
+ "shared_name" : "Node 20",
920
+ "LabelFont" : "",
921
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
922
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
923
+ "name" : "Node 20",
924
+ "Ensembl_ID" : "",
925
+ "SUID" : 51810,
926
+ "Height" : 1,
927
+ "Width" : 1,
928
+ "selected" : false
929
+ },
930
+ "position" : {
931
+ "x" : -245.28290671112362,
932
+ "y" : -381.4074033568216
933
+ },
934
+ "selected" : false
935
+ }, {
936
+ "data" : {
937
+ "id" : "51808",
938
+ "Shape" : "Ellipse",
939
+ "Fillcolor" : "#ffffff",
940
+ "Color" : "",
941
+ "label" : " ",
942
+ "Label_size" : 1,
943
+ "shared_name" : "Node 19",
944
+ "LabelFont" : "",
945
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
946
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
947
+ "name" : "Node 19",
948
+ "Ensembl_ID" : "",
949
+ "SUID" : 51808,
950
+ "Height" : 1,
951
+ "Width" : 1,
952
+ "selected" : false
953
+ },
954
+ "position" : {
955
+ "x" : -351.640839725702,
956
+ "y" : -380.60267525686004
957
+ },
958
+ "selected" : false
959
+ }, {
960
+ "data" : {
961
+ "id" : "51806",
962
+ "Shape" : "Ellipse",
963
+ "Fillcolor" : "#ffffff",
964
+ "Color" : "",
965
+ "label" : " ",
966
+ "Label_size" : 1,
967
+ "shared_name" : "Node 17",
968
+ "LabelFont" : "",
969
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
970
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
971
+ "name" : "Node 17",
972
+ "Ensembl_ID" : "",
973
+ "SUID" : 51806,
974
+ "Height" : 1,
975
+ "Width" : 1,
976
+ "selected" : false
977
+ },
978
+ "position" : {
979
+ "x" : -634.2277691381489,
980
+ "y" : -379.7197200680567
981
+ },
982
+ "selected" : false
983
+ }, {
984
+ "data" : {
985
+ "id" : "51804",
986
+ "Shape" : "Ellipse",
987
+ "Fillcolor" : "#ffffff",
988
+ "Color" : "",
989
+ "label" : " ",
990
+ "Label_size" : 1,
991
+ "shared_name" : "Node 27",
992
+ "LabelFont" : "",
993
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
994
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
995
+ "name" : "Node 27",
996
+ "Ensembl_ID" : "",
997
+ "SUID" : 51804,
998
+ "Height" : 1,
999
+ "Width" : 1,
1000
+ "selected" : false
1001
+ },
1002
+ "position" : {
1003
+ "x" : 207.30374036030787,
1004
+ "y" : -248.03144762034643
1005
+ },
1006
+ "selected" : false
1007
+ }, {
1008
+ "data" : {
1009
+ "id" : "51802",
1010
+ "Shape" : "Ellipse",
1011
+ "Fillcolor" : "#ffffff",
1012
+ "Color" : "",
1013
+ "label" : " ",
1014
+ "Label_size" : 1,
1015
+ "shared_name" : "Node 24",
1016
+ "LabelFont" : "",
1017
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1018
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1019
+ "name" : "Node 24",
1020
+ "Ensembl_ID" : "",
1021
+ "SUID" : 51802,
1022
+ "Height" : 1,
1023
+ "Width" : 1,
1024
+ "selected" : false
1025
+ },
1026
+ "position" : {
1027
+ "x" : -129.7286610550886,
1028
+ "y" : 234.4914630047503
1029
+ },
1030
+ "selected" : false
1031
+ }, {
1032
+ "data" : {
1033
+ "id" : "51800",
1034
+ "NumChildren" : 2,
1035
+ "Shape" : "",
1036
+ "Fillcolor" : "",
1037
+ "Color" : "",
1038
+ "label" : "HexCer_AP",
1039
+ "Label_size" : 30,
1040
+ "shared_name" : "HexCer_AP",
1041
+ "LabelFont" : "",
1042
+ "path" : "http://localhost:9000/plot?str1=HexCer_AP.svg",
1043
+ "NumDescendents" : 2,
1044
+ "pathpng" : "http://localhost:9000/png?str2=(HexCer_AP).png",
1045
+ "name" : "HexCer_AP",
1046
+ "Ensembl_ID" : "",
1047
+ "SUID" : 51800,
1048
+ "Height" : 140,
1049
+ "Width" : 140,
1050
+ "selected" : false
1051
+ },
1052
+ "position" : {
1053
+ "x" : 53.0,
1054
+ "y" : 236.0
1055
+ },
1056
+ "selected" : false
1057
+ }, {
1058
+ "data" : {
1059
+ "id" : "51798",
1060
+ "Shape" : "Rectangle",
1061
+ "Fillcolor" : "#ffffff",
1062
+ "Color" : "Black",
1063
+ "label" : "B4galt5",
1064
+ "Label_size" : 30,
1065
+ "shared_name" : "B4galt5",
1066
+ "LabelFont" : "",
1067
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000017929.svg",
1068
+ "pathpng" : "http://localhost:9000/png?str2=(B4galt5).png",
1069
+ "name" : "B4galt5",
1070
+ "Ensembl_ID" : "ENSMUSG00000017929",
1071
+ "SUID" : 51798,
1072
+ "Height" : 140,
1073
+ "Width" : 140,
1074
+ "selected" : false
1075
+ },
1076
+ "position" : {
1077
+ "x" : 299.71569534150717,
1078
+ "y" : -417.0840363882634
1079
+ },
1080
+ "selected" : false
1081
+ }, {
1082
+ "data" : {
1083
+ "id" : "51794",
1084
+ "Shape" : "Rectangle",
1085
+ "Fillcolor" : "#ffffff",
1086
+ "Color" : "Black",
1087
+ "label" : "Gal3st1",
1088
+ "Label_size" : 30,
1089
+ "shared_name" : "Gal3st1",
1090
+ "LabelFont" : "",
1091
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000049721.svg",
1092
+ "pathpng" : "http://localhost:9000/png?str2=(Gal3st1).png",
1093
+ "name" : "Gal3st1",
1094
+ "Ensembl_ID" : "ENSMUSG00000049721",
1095
+ "SUID" : 51794,
1096
+ "Height" : 140,
1097
+ "Width" : 140,
1098
+ "selected" : false
1099
+ },
1100
+ "position" : {
1101
+ "x" : 207.8254163374965,
1102
+ "y" : 109.52609444387052
1103
+ },
1104
+ "selected" : false
1105
+ }, {
1106
+ "data" : {
1107
+ "id" : "51792",
1108
+ "NumChildren" : 2,
1109
+ "Shape" : "",
1110
+ "Fillcolor" : "",
1111
+ "Color" : "",
1112
+ "label" : "Cer_AS",
1113
+ "Label_size" : 30,
1114
+ "shared_name" : "Cer_AS",
1115
+ "LabelFont" : "",
1116
+ "path" : "http://localhost:9000/plot?str1=Cer_AS.svg",
1117
+ "NumDescendents" : 2,
1118
+ "pathpng" : "http://localhost:9000/png?str2=(Cer_AS).png",
1119
+ "name" : "Cer_AS",
1120
+ "Ensembl_ID" : "",
1121
+ "SUID" : 51792,
1122
+ "Height" : 140,
1123
+ "Width" : 140,
1124
+ "selected" : false
1125
+ },
1126
+ "position" : {
1127
+ "x" : -290.0,
1128
+ "y" : -3.0
1129
+ },
1130
+ "selected" : false
1131
+ }, {
1132
+ "data" : {
1133
+ "id" : "51790",
1134
+ "Shape" : "Ellipse",
1135
+ "Fillcolor" : "#ffffff",
1136
+ "Color" : "",
1137
+ "label" : "",
1138
+ "Label_size" : 1,
1139
+ "shared_name" : "Node 22",
1140
+ "LabelFont" : "",
1141
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1142
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1143
+ "name" : "Node 22",
1144
+ "Ensembl_ID" : "",
1145
+ "SUID" : 51790,
1146
+ "Height" : 1,
1147
+ "Width" : 1,
1148
+ "selected" : false
1149
+ },
1150
+ "position" : {
1151
+ "x" : -132.25481786636925,
1152
+ "y" : -250.48009122993926
1153
+ },
1154
+ "selected" : false
1155
+ }, {
1156
+ "data" : {
1157
+ "id" : "51788",
1158
+ "Shape" : "Rectangle",
1159
+ "Fillcolor" : "#ffffff",
1160
+ "Color" : "Black",
1161
+ "label" : "UGT8a",
1162
+ "Label_size" : 30,
1163
+ "shared_name" : "UGT8a",
1164
+ "LabelFont" : "",
1165
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000032854.svg",
1166
+ "pathpng" : "http://localhost:9000/png?str2=(UGT8a).png",
1167
+ "name" : "UGT8a",
1168
+ "Ensembl_ID" : "ENSMUSG00000032854",
1169
+ "SUID" : 51788,
1170
+ "Height" : 140,
1171
+ "Width" : 140,
1172
+ "selected" : false
1173
+ },
1174
+ "position" : {
1175
+ "x" : -131.58652339306036,
1176
+ "y" : -128.9895133819647
1177
+ },
1178
+ "selected" : false
1179
+ }, {
1180
+ "data" : {
1181
+ "id" : "51786",
1182
+ "Shape" : "Ellipse",
1183
+ "Fillcolor" : "#ffffff",
1184
+ "Color" : "",
1185
+ "label" : "",
1186
+ "Label_size" : 1,
1187
+ "shared_name" : "Node 14",
1188
+ "LabelFont" : "",
1189
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1190
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1191
+ "name" : "Node 14",
1192
+ "Ensembl_ID" : "",
1193
+ "SUID" : 51786,
1194
+ "Height" : 1,
1195
+ "Width" : 1,
1196
+ "selected" : false
1197
+ },
1198
+ "position" : {
1199
+ "x" : -467.2544855814592,
1200
+ "y" : 117.53585173280345
1201
+ },
1202
+ "selected" : false
1203
+ }, {
1204
+ "data" : {
1205
+ "id" : "51784",
1206
+ "NumChildren" : 2,
1207
+ "Shape" : "",
1208
+ "Fillcolor" : "",
1209
+ "Color" : "",
1210
+ "label" : "Sph",
1211
+ "Label_size" : 30,
1212
+ "shared_name" : "Sph",
1213
+ "LabelFont" : "",
1214
+ "path" : "http://localhost:9000/plot?str1=Sph.svg",
1215
+ "NumDescendents" : 2,
1216
+ "pathpng" : "http://localhost:9000/png?str2=(Sph).png",
1217
+ "name" : "Sph",
1218
+ "Ensembl_ID" : "",
1219
+ "SUID" : 51784,
1220
+ "Height" : 140,
1221
+ "Width" : 140,
1222
+ "selected" : false
1223
+ },
1224
+ "position" : {
1225
+ "x" : -195.0,
1226
+ "y" : -540.0
1227
+ },
1228
+ "selected" : false
1229
+ }, {
1230
+ "data" : {
1231
+ "id" : "51782",
1232
+ "Shape" : "Ellipse",
1233
+ "Fillcolor" : "#ffffff",
1234
+ "Color" : "",
1235
+ "label" : "",
1236
+ "Label_size" : 1,
1237
+ "shared_name" : "Node 15",
1238
+ "LabelFont" : "",
1239
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1240
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1241
+ "name" : "Node 15",
1242
+ "Ensembl_ID" : "",
1243
+ "SUID" : 51782,
1244
+ "Height" : 1,
1245
+ "Width" : 1,
1246
+ "selected" : false
1247
+ },
1248
+ "position" : {
1249
+ "x" : -464.9905742180447,
1250
+ "y" : -7.607705371300975
1251
+ },
1252
+ "selected" : false
1253
+ }, {
1254
+ "data" : {
1255
+ "id" : "51780",
1256
+ "NumChildren" : 2,
1257
+ "Shape" : "",
1258
+ "Fillcolor" : "",
1259
+ "Color" : "",
1260
+ "label" : "GM3",
1261
+ "Label_size" : 30,
1262
+ "shared_name" : "GM3",
1263
+ "LabelFont" : "",
1264
+ "path" : "http://localhost:9000/plot?str1=GM3.svg",
1265
+ "NumDescendents" : 2,
1266
+ "pathpng" : "http://localhost:9000/png?str2=(GM3).png",
1267
+ "name" : "GM3",
1268
+ "Ensembl_ID" : "",
1269
+ "SUID" : 51780,
1270
+ "Height" : 140,
1271
+ "Width" : 140,
1272
+ "selected" : false
1273
+ },
1274
+ "position" : {
1275
+ "x" : 710.0,
1276
+ "y" : -249.0
1277
+ },
1278
+ "selected" : false
1279
+ }, {
1280
+ "data" : {
1281
+ "id" : "51778",
1282
+ "Shape" : "Ellipse",
1283
+ "Fillcolor" : "#ffffff",
1284
+ "Color" : "",
1285
+ "label" : "",
1286
+ "Label_size" : 1,
1287
+ "shared_name" : "Node 16",
1288
+ "LabelFont" : "",
1289
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1290
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1291
+ "name" : "Node 16",
1292
+ "Ensembl_ID" : "",
1293
+ "SUID" : 51778,
1294
+ "Height" : 1,
1295
+ "Width" : 1,
1296
+ "selected" : false
1297
+ },
1298
+ "position" : {
1299
+ "x" : -463.4940895638944,
1300
+ "y" : -249.3506164628149
1301
+ },
1302
+ "selected" : false
1303
+ }, {
1304
+ "data" : {
1305
+ "id" : "51776",
1306
+ "NumChildren" : 2,
1307
+ "Shape" : "",
1308
+ "Fillcolor" : "",
1309
+ "Color" : "",
1310
+ "label" : "Cer_NS",
1311
+ "Label_size" : 30,
1312
+ "shared_name" : "Cer_NS",
1313
+ "LabelFont" : "",
1314
+ "path" : "http://localhost:9000/plot?str1=Cer_NS.svg",
1315
+ "NumDescendents" : 2,
1316
+ "pathpng" : "http://localhost:9000/png?str2=(Cer_NS).png",
1317
+ "name" : "Cer_NS",
1318
+ "Ensembl_ID" : "",
1319
+ "SUID" : 51776,
1320
+ "Height" : 140,
1321
+ "Width" : 140,
1322
+ "selected" : false
1323
+ },
1324
+ "position" : {
1325
+ "x" : -290.0,
1326
+ "y" : -246.0
1327
+ },
1328
+ "selected" : false
1329
+ }, {
1330
+ "data" : {
1331
+ "id" : "51774",
1332
+ "Shape" : "Ellipse",
1333
+ "Fillcolor" : "#ffffff",
1334
+ "Color" : "",
1335
+ "label" : "",
1336
+ "Label_size" : 1,
1337
+ "shared_name" : "Node 7",
1338
+ "LabelFont" : "",
1339
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1340
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1341
+ "name" : "Node 7",
1342
+ "Ensembl_ID" : "",
1343
+ "SUID" : 51774,
1344
+ "Height" : 1,
1345
+ "Width" : 1,
1346
+ "selected" : false
1347
+ },
1348
+ "position" : {
1349
+ "x" : -827.9922261951708,
1350
+ "y" : 2.887864566243465
1351
+ },
1352
+ "selected" : false
1353
+ }, {
1354
+ "data" : {
1355
+ "id" : "51772",
1356
+ "Shape" : "Rectangle",
1357
+ "Fillcolor" : "#ffffff",
1358
+ "Color" : "Black",
1359
+ "label" : "SGMS1",
1360
+ "Label_size" : 30,
1361
+ "shared_name" : "SGMS1",
1362
+ "LabelFont" : "",
1363
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000040451.svg",
1364
+ "pathpng" : "http://localhost:9000/png?str2=(SGMS1).png",
1365
+ "name" : "SGMS1",
1366
+ "Ensembl_ID" : "ENSMUSG00000040451",
1367
+ "SUID" : 51772,
1368
+ "Height" : 140,
1369
+ "Width" : 140,
1370
+ "selected" : false
1371
+ },
1372
+ "position" : {
1373
+ "x" : -478.3970198679425,
1374
+ "y" : -376.4290322995306
1375
+ },
1376
+ "selected" : false
1377
+ }, {
1378
+ "data" : {
1379
+ "id" : "51770",
1380
+ "Shape" : "Ellipse",
1381
+ "Fillcolor" : "#ffffff",
1382
+ "Color" : "",
1383
+ "label" : "",
1384
+ "Label_size" : 1,
1385
+ "shared_name" : "Node 8",
1386
+ "LabelFont" : "",
1387
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1388
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1389
+ "name" : "Node 8",
1390
+ "Ensembl_ID" : "",
1391
+ "SUID" : 51770,
1392
+ "Height" : 1,
1393
+ "Width" : 1,
1394
+ "selected" : false
1395
+ },
1396
+ "position" : {
1397
+ "x" : -826.7933659354836,
1398
+ "y" : -243.76281858293285
1399
+ },
1400
+ "selected" : false
1401
+ }, {
1402
+ "data" : {
1403
+ "id" : "51768",
1404
+ "Shape" : "Rectangle",
1405
+ "Fillcolor" : "#ffffff",
1406
+ "Color" : "Black",
1407
+ "label" : "DEGS2",
1408
+ "Label_size" : 30,
1409
+ "shared_name" : "DEGS2",
1410
+ "LabelFont" : "",
1411
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000021263.svg",
1412
+ "pathpng" : "http://localhost:9000/png?str2=(DEGS2).png",
1413
+ "name" : "DEGS2",
1414
+ "Ensembl_ID" : "ENSMUSG00000021263",
1415
+ "SUID" : 51768,
1416
+ "Height" : 140,
1417
+ "Width" : 140,
1418
+ "selected" : false
1419
+ },
1420
+ "position" : {
1421
+ "x" : -636.4474900692869,
1422
+ "y" : 229.24947575028722
1423
+ },
1424
+ "selected" : false
1425
+ }, {
1426
+ "data" : {
1427
+ "id" : "51764",
1428
+ "Shape" : "Rectangle",
1429
+ "Fillcolor" : "#ffffff",
1430
+ "Color" : "Black",
1431
+ "label" : "DEGS1",
1432
+ "Label_size" : 30,
1433
+ "shared_name" : "DEGS1",
1434
+ "LabelFont" : "",
1435
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000038633.svg",
1436
+ "pathpng" : "http://localhost:9000/png?str2=(DEGS1).png",
1437
+ "name" : "DEGS1",
1438
+ "Ensembl_ID" : "ENSMUSG00000038633",
1439
+ "SUID" : 51764,
1440
+ "Height" : 140,
1441
+ "Width" : 140,
1442
+ "selected" : false
1443
+ },
1444
+ "position" : {
1445
+ "x" : -464.5168443455404,
1446
+ "y" : -132.41313881546006
1447
+ },
1448
+ "selected" : false
1449
+ }, {
1450
+ "data" : {
1451
+ "id" : "51760",
1452
+ "Shape" : "Ellipse",
1453
+ "Fillcolor" : "#ffffff",
1454
+ "Color" : "",
1455
+ "label" : "",
1456
+ "Label_size" : 1,
1457
+ "shared_name" : "Node 3",
1458
+ "LabelFont" : "",
1459
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1460
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1461
+ "name" : "Node 3",
1462
+ "Ensembl_ID" : "",
1463
+ "SUID" : 51760,
1464
+ "Height" : 1,
1465
+ "Width" : 1,
1466
+ "selected" : false
1467
+ },
1468
+ "position" : {
1469
+ "x" : -1181.129760559344,
1470
+ "y" : -132.5450208053768
1471
+ },
1472
+ "selected" : false
1473
+ }, {
1474
+ "data" : {
1475
+ "id" : "51758",
1476
+ "Shape" : "Rectangle",
1477
+ "Fillcolor" : "#ffffff",
1478
+ "Color" : "Black",
1479
+ "label" : "CerS2",
1480
+ "Label_size" : 30,
1481
+ "shared_name" : "CerS2",
1482
+ "LabelFont" : "",
1483
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000015714.svg",
1484
+ "pathpng" : "http://localhost:9000/png?str2=(CerS2).png",
1485
+ "name" : "CerS2",
1486
+ "Ensembl_ID" : "ENSMUSG00000015714",
1487
+ "SUID" : 51758,
1488
+ "Height" : 140,
1489
+ "Width" : 140,
1490
+ "selected" : false
1491
+ },
1492
+ "position" : {
1493
+ "x" : -1046.0,
1494
+ "y" : 395.45683602223994
1495
+ },
1496
+ "selected" : false
1497
+ }, {
1498
+ "data" : {
1499
+ "id" : "51756",
1500
+ "Shape" : "Rectangle",
1501
+ "Fillcolor" : "#ffffff",
1502
+ "Color" : "Black",
1503
+ "label" : "FA2H",
1504
+ "Label_size" : 30,
1505
+ "shared_name" : "FA2H",
1506
+ "LabelFont" : "",
1507
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000033579.svg",
1508
+ "pathpng" : "http://localhost:9000/png?str2=(FA2H).png",
1509
+ "name" : "FA2H",
1510
+ "Ensembl_ID" : "ENSMUSG00000033579",
1511
+ "SUID" : 51756,
1512
+ "Height" : 140,
1513
+ "Width" : 140,
1514
+ "selected" : false
1515
+ },
1516
+ "position" : {
1517
+ "x" : -1337.0106724152988,
1518
+ "y" : -132.149749673229
1519
+ },
1520
+ "selected" : false
1521
+ }, {
1522
+ "data" : {
1523
+ "id" : "51754",
1524
+ "NumChildren" : 2,
1525
+ "Shape" : "",
1526
+ "Fillcolor" : "",
1527
+ "Color" : "",
1528
+ "label" : "2OH-FA",
1529
+ "Label_size" : 30,
1530
+ "shared_name" : "2OH-FA",
1531
+ "LabelFont" : "",
1532
+ "path" : "http://localhost:9000/plot?str1=2OH-FA.svg",
1533
+ "NumDescendents" : 2,
1534
+ "pathpng" : "http://localhost:9000/png?str2=(2OH-FA).png",
1535
+ "name" : "2OH-FA",
1536
+ "Ensembl_ID" : "",
1537
+ "SUID" : 51754,
1538
+ "Height" : 140,
1539
+ "Width" : 140,
1540
+ "selected" : false
1541
+ },
1542
+ "position" : {
1543
+ "x" : -1036.0,
1544
+ "y" : 113.0
1545
+ },
1546
+ "selected" : false
1547
+ }, {
1548
+ "data" : {
1549
+ "id" : "51752",
1550
+ "NumChildren" : 2,
1551
+ "Shape" : "",
1552
+ "Fillcolor" : "",
1553
+ "Color" : "",
1554
+ "label" : "Cer_AP",
1555
+ "Label_size" : 30,
1556
+ "shared_name" : "Cer_AP",
1557
+ "LabelFont" : "",
1558
+ "path" : "http://localhost:9000/plot?str1=Cer_AP.svg",
1559
+ "NumDescendents" : 2,
1560
+ "pathpng" : "http://localhost:9000/png?str2=(Cer_AP).png",
1561
+ "name" : "Cer_AP",
1562
+ "Ensembl_ID" : "",
1563
+ "SUID" : 51752,
1564
+ "Height" : 140,
1565
+ "Width" : 140,
1566
+ "selected" : false
1567
+ },
1568
+ "position" : {
1569
+ "x" : -288.0,
1570
+ "y" : 235.0
1571
+ },
1572
+ "selected" : false
1573
+ }, {
1574
+ "data" : {
1575
+ "id" : "51750",
1576
+ "NumChildren" : 2,
1577
+ "Shape" : "",
1578
+ "Fillcolor" : "",
1579
+ "Color" : "",
1580
+ "label" : "Cer_ADS",
1581
+ "Label_size" : 30,
1582
+ "shared_name" : "Cer_ADS",
1583
+ "LabelFont" : "",
1584
+ "path" : "http://localhost:9000/plot?str1=Cer_ADS.svg",
1585
+ "NumDescendents" : 2,
1586
+ "pathpng" : "http://localhost:9000/png?str2=(Cer_ADS).png",
1587
+ "name" : "Cer_ADS",
1588
+ "Ensembl_ID" : "",
1589
+ "SUID" : 51750,
1590
+ "Height" : 140,
1591
+ "Width" : 140,
1592
+ "selected" : false
1593
+ },
1594
+ "position" : {
1595
+ "x" : -638.0,
1596
+ "y" : -4.0
1597
+ },
1598
+ "selected" : false
1599
+ }, {
1600
+ "data" : {
1601
+ "id" : "51748",
1602
+ "NumChildren" : 2,
1603
+ "Shape" : "",
1604
+ "Fillcolor" : "",
1605
+ "Color" : "",
1606
+ "label" : "SM",
1607
+ "Label_size" : 30,
1608
+ "shared_name" : "SM",
1609
+ "LabelFont" : "",
1610
+ "path" : "http://localhost:9000/plot?str1=SM.svg",
1611
+ "NumDescendents" : 2,
1612
+ "pathpng" : "http://localhost:9000/png?str2=(SM).png",
1613
+ "name" : "SM",
1614
+ "Ensembl_ID" : "",
1615
+ "SUID" : 51748,
1616
+ "Height" : 140,
1617
+ "Width" : 140,
1618
+ "selected" : false
1619
+ },
1620
+ "position" : {
1621
+ "x" : -424.0,
1622
+ "y" : -538.0
1623
+ },
1624
+ "selected" : false
1625
+ }, {
1626
+ "data" : {
1627
+ "id" : "51746",
1628
+ "NumChildren" : 2,
1629
+ "Shape" : "",
1630
+ "Fillcolor" : "",
1631
+ "Color" : "",
1632
+ "label" : "HexCer_NS",
1633
+ "Label_size" : 30,
1634
+ "shared_name" : "HexCer_NS",
1635
+ "LabelFont" : "",
1636
+ "path" : "http://localhost:9000/plot?str1=HexCer_NS.svg",
1637
+ "NumDescendents" : 2,
1638
+ "pathpng" : "http://localhost:9000/png?str2=(HexCer_NS).png",
1639
+ "name" : "HexCer_NS",
1640
+ "Ensembl_ID" : "",
1641
+ "SUID" : 51746,
1642
+ "Height" : 140,
1643
+ "Width" : 140,
1644
+ "selected" : false
1645
+ },
1646
+ "position" : {
1647
+ "x" : 50.0,
1648
+ "y" : -247.0
1649
+ },
1650
+ "selected" : false
1651
+ }, {
1652
+ "data" : {
1653
+ "id" : "51437",
1654
+ "Shape" : "Rectangle",
1655
+ "Fillcolor" : "#ffffff",
1656
+ "Color" : "Black",
1657
+ "label" : "B3galt4",
1658
+ "Label_size" : 30,
1659
+ "shared_name" : "B3galt4",
1660
+ "LabelFont" : "",
1661
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000067370.svg",
1662
+ "pathpng" : "http://localhost:9000/png?str2=(B3galt4).png",
1663
+ "name" : "B3galt4",
1664
+ "Ensembl_ID" : "ENSMUSG00000067370",
1665
+ "SUID" : 51437,
1666
+ "Height" : 140,
1667
+ "Width" : 140,
1668
+ "selected" : false
1669
+ },
1670
+ "position" : {
1671
+ "x" : 925.982401222997,
1672
+ "y" : 31.398956004524972
1673
+ },
1674
+ "selected" : false
1675
+ }, {
1676
+ "data" : {
1677
+ "id" : "51435",
1678
+ "Shape" : "Rectangle",
1679
+ "Fillcolor" : "#ffffff",
1680
+ "Color" : "Black",
1681
+ "label" : "B4galnt1",
1682
+ "Label_size" : 30,
1683
+ "shared_name" : "B4galnt1",
1684
+ "LabelFont" : "",
1685
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000006731.svg",
1686
+ "pathpng" : "http://localhost:9000/png?str2=(B4galnt1).png",
1687
+ "name" : "B4galnt1",
1688
+ "Ensembl_ID" : "ENSMUSG00000006731",
1689
+ "SUID" : 51435,
1690
+ "Height" : 140,
1691
+ "Width" : 140,
1692
+ "selected" : false
1693
+ },
1694
+ "position" : {
1695
+ "x" : 925.3093465824652,
1696
+ "y" : -158.82396183751564
1697
+ },
1698
+ "selected" : false
1699
+ }, {
1700
+ "data" : {
1701
+ "id" : "51738",
1702
+ "NumChildren" : 2,
1703
+ "Shape" : "",
1704
+ "Fillcolor" : "",
1705
+ "Color" : "",
1706
+ "label" : "FA",
1707
+ "Label_size" : 30,
1708
+ "shared_name" : "FA",
1709
+ "LabelFont" : "",
1710
+ "path" : "http://localhost:9000/plot?str1=FA.svg",
1711
+ "NumDescendents" : 2,
1712
+ "pathpng" : "http://localhost:9000/png?str2=(FA).png",
1713
+ "name" : "FA",
1714
+ "Ensembl_ID" : "",
1715
+ "SUID" : 51738,
1716
+ "Height" : 140,
1717
+ "Width" : 140,
1718
+ "selected" : false
1719
+ },
1720
+ "position" : {
1721
+ "x" : -1042.0,
1722
+ "y" : -361.0
1723
+ },
1724
+ "selected" : false
1725
+ }, {
1726
+ "data" : {
1727
+ "id" : "51736",
1728
+ "NumChildren" : 2,
1729
+ "Shape" : "",
1730
+ "Fillcolor" : "",
1731
+ "Color" : "",
1732
+ "label" : "AHexCer",
1733
+ "Label_size" : 30,
1734
+ "shared_name" : "AHexCer",
1735
+ "LabelFont" : "",
1736
+ "path" : "http://localhost:9000/plot?str1=AHexCer.svg",
1737
+ "NumDescendents" : 2,
1738
+ "pathpng" : "http://localhost:9000/png?str2=(AHexCer).png",
1739
+ "name" : "AHexCer",
1740
+ "Ensembl_ID" : "",
1741
+ "SUID" : 51736,
1742
+ "Height" : 140,
1743
+ "Width" : 140,
1744
+ "selected" : false
1745
+ },
1746
+ "position" : {
1747
+ "x" : 372.0,
1748
+ "y" : 251.0
1749
+ },
1750
+ "selected" : false
1751
+ }, {
1752
+ "data" : {
1753
+ "id" : "51734",
1754
+ "NumChildren" : 2,
1755
+ "Shape" : "",
1756
+ "Fillcolor" : "",
1757
+ "Color" : "",
1758
+ "label" : "GD1a",
1759
+ "Label_size" : 30,
1760
+ "shared_name" : "GD1a",
1761
+ "LabelFont" : "",
1762
+ "path" : "http://localhost:9000/plot?str1=GD1a.svg",
1763
+ "NumDescendents" : 2,
1764
+ "pathpng" : "http://localhost:9000/png?str2=(GD1a).png",
1765
+ "name" : "GD1a",
1766
+ "Ensembl_ID" : "",
1767
+ "SUID" : 51734,
1768
+ "Height" : 140,
1769
+ "Width" : 140,
1770
+ "selected" : false
1771
+ },
1772
+ "position" : {
1773
+ "x" : 713.0,
1774
+ "y" : 329.0
1775
+ },
1776
+ "selected" : false
1777
+ }, {
1778
+ "data" : {
1779
+ "id" : "51732",
1780
+ "NumChildren" : 2,
1781
+ "Shape" : "",
1782
+ "Fillcolor" : "",
1783
+ "Color" : "",
1784
+ "label" : "HexCer_NDS",
1785
+ "Label_size" : 30,
1786
+ "shared_name" : "HexCer_NDS",
1787
+ "LabelFont" : "",
1788
+ "path" : "http://localhost:9000/plot?str1=HexCer_NDS.svg",
1789
+ "NumDescendents" : 2,
1790
+ "pathpng" : "http://localhost:9000/png?str2=(HexCer_NDS).png",
1791
+ "name" : "HexCer_NDS",
1792
+ "Ensembl_ID" : "",
1793
+ "SUID" : 51732,
1794
+ "Height" : 140,
1795
+ "Width" : 140,
1796
+ "selected" : false
1797
+ },
1798
+ "position" : {
1799
+ "x" : -633.0,
1800
+ "y" : -524.0
1801
+ },
1802
+ "selected" : false
1803
+ }, {
1804
+ "data" : {
1805
+ "id" : "51730",
1806
+ "NumChildren" : 2,
1807
+ "Shape" : "",
1808
+ "Fillcolor" : "",
1809
+ "Color" : "",
1810
+ "label" : "Hex2Cer",
1811
+ "Label_size" : 30,
1812
+ "shared_name" : "Hex2Cer",
1813
+ "LabelFont" : "",
1814
+ "path" : "http://localhost:9000/plot?str1=Hex2Cer.svg",
1815
+ "NumDescendents" : 2,
1816
+ "pathpng" : "http://localhost:9000/png?str2=(Hex2Cer).png",
1817
+ "name" : "Hex2Cer",
1818
+ "Ensembl_ID" : "",
1819
+ "SUID" : 51730,
1820
+ "Height" : 140,
1821
+ "Width" : 140,
1822
+ "selected" : false
1823
+ },
1824
+ "position" : {
1825
+ "x" : 373.0,
1826
+ "y" : -247.0
1827
+ },
1828
+ "selected" : false
1829
+ }, {
1830
+ "data" : {
1831
+ "id" : "51728",
1832
+ "Shape" : "Rectangle",
1833
+ "Fillcolor" : "#ffffff",
1834
+ "Color" : "Black",
1835
+ "label" : "UGCG",
1836
+ "Label_size" : 30,
1837
+ "shared_name" : "UGCG",
1838
+ "LabelFont" : "",
1839
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000028381.svg",
1840
+ "pathpng" : "http://localhost:9000/png?str2=(UGCG).png",
1841
+ "name" : "UGCG",
1842
+ "Ensembl_ID" : "ENSMUSG00000028381",
1843
+ "SUID" : 51728,
1844
+ "Height" : 140,
1845
+ "Width" : 140,
1846
+ "selected" : false
1847
+ },
1848
+ "position" : {
1849
+ "x" : -837.0,
1850
+ "y" : -369.48940274874997
1851
+ },
1852
+ "selected" : false
1853
+ }, {
1854
+ "data" : {
1855
+ "id" : "51726",
1856
+ "Shape" : "Rectangle",
1857
+ "Fillcolor" : "#ffffff",
1858
+ "Color" : "Black",
1859
+ "label" : "ASAH1",
1860
+ "Label_size" : 30,
1861
+ "shared_name" : "ASAH1",
1862
+ "LabelFont" : "",
1863
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000031591.svg",
1864
+ "pathpng" : "http://localhost:9000/png?str2=(ASAH1).png",
1865
+ "name" : "ASAH1",
1866
+ "Ensembl_ID" : "ENSMUSG00000031591",
1867
+ "SUID" : 51726,
1868
+ "Height" : 140,
1869
+ "Width" : 140,
1870
+ "selected" : false
1871
+ },
1872
+ "position" : {
1873
+ "x" : 123.47956988670943,
1874
+ "y" : -559.1189983803392
1875
+ },
1876
+ "selected" : false
1877
+ }, {
1878
+ "data" : {
1879
+ "id" : "51716",
1880
+ "Shape" : "Ellipse",
1881
+ "Fillcolor" : "#ffffff",
1882
+ "Color" : "",
1883
+ "label" : "",
1884
+ "Label_size" : 1,
1885
+ "shared_name" : "Node 25",
1886
+ "LabelFont" : "",
1887
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1888
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1889
+ "name" : "Node 25",
1890
+ "Ensembl_ID" : "",
1891
+ "SUID" : 51716,
1892
+ "Height" : 1,
1893
+ "Width" : 1,
1894
+ "selected" : false
1895
+ },
1896
+ "position" : {
1897
+ "x" : 206.57790990647788,
1898
+ "y" : -4.027725702126798
1899
+ },
1900
+ "selected" : false
1901
+ } ],
1902
+ "edges" : [ {
1903
+ "data" : {
1904
+ "id" : "60367",
1905
+ "source" : "60361",
1906
+ "target" : "51806",
1907
+ "shared_name" : "Node 17 (interacts with) Node 17",
1908
+ "shared_interaction" : "interacts with",
1909
+ "name" : "Node 17 (interacts with) Node 17",
1910
+ "interaction" : "interacts with",
1911
+ "SUID" : 60367,
1912
+ "selected" : false
1913
+ },
1914
+ "selected" : false
1915
+ }, {
1916
+ "data" : {
1917
+ "id" : "59899",
1918
+ "source" : "59880",
1919
+ "target" : "59874",
1920
+ "shared_name" : "Node 1 (interacts with) Node 1",
1921
+ "shared_interaction" : "interacts with",
1922
+ "name" : "Node 1 (interacts with) Node 1",
1923
+ "interaction" : "interacts with",
1924
+ "SUID" : 59899,
1925
+ "selected" : false
1926
+ },
1927
+ "selected" : false
1928
+ }, {
1929
+ "data" : {
1930
+ "id" : "59905",
1931
+ "source" : "59874",
1932
+ "target" : "51754",
1933
+ "shared_name" : "Node 1 (interacts with) 2OH-FA",
1934
+ "shared_interaction" : "interacts with",
1935
+ "name" : "Node 1 (interacts with) 2OH-FA",
1936
+ "interaction" : "interacts with",
1937
+ "SUID" : 59905,
1938
+ "selected" : false
1939
+ },
1940
+ "selected" : false
1941
+ }, {
1942
+ "data" : {
1943
+ "id" : "59862",
1944
+ "source" : "59832",
1945
+ "target" : "59826",
1946
+ "shared_name" : "Node 1 (interacts with) Node 1",
1947
+ "shared_interaction" : "interacts with",
1948
+ "name" : "Node 1 (interacts with) Node 1",
1949
+ "interaction" : "interacts with",
1950
+ "SUID" : 59862,
1951
+ "selected" : false
1952
+ },
1953
+ "selected" : false
1954
+ }, {
1955
+ "data" : {
1956
+ "id" : "59856",
1957
+ "source" : "59829",
1958
+ "target" : "59826",
1959
+ "shared_name" : "Node 1 (interacts with) Node 1",
1960
+ "shared_interaction" : "interacts with",
1961
+ "name" : "Node 1 (interacts with) Node 1",
1962
+ "interaction" : "interacts with",
1963
+ "SUID" : 59856,
1964
+ "selected" : false
1965
+ },
1966
+ "selected" : false
1967
+ }, {
1968
+ "data" : {
1969
+ "id" : "59868",
1970
+ "source" : "59826",
1971
+ "target" : "51750",
1972
+ "shared_name" : "Node 1 (interacts with) Cer_ADS",
1973
+ "shared_interaction" : "interacts with",
1974
+ "name" : "Node 1 (interacts with) Cer_ADS",
1975
+ "interaction" : "interacts with",
1976
+ "SUID" : 59868,
1977
+ "selected" : false
1978
+ },
1979
+ "selected" : false
1980
+ }, {
1981
+ "data" : {
1982
+ "id" : "59812",
1983
+ "source" : "59782",
1984
+ "target" : "51822",
1985
+ "shared_name" : "Node 1 (interacts with) Cer_NDS",
1986
+ "shared_interaction" : "interacts with",
1987
+ "name" : "Node 1 (interacts with) Cer_NDS",
1988
+ "interaction" : "interacts with",
1989
+ "SUID" : 59812,
1990
+ "selected" : false
1991
+ },
1992
+ "selected" : false
1993
+ }, {
1994
+ "data" : {
1995
+ "id" : "59806",
1996
+ "source" : "59768",
1997
+ "target" : "59782",
1998
+ "shared_name" : "Node 1 (interacts with) Node 1",
1999
+ "shared_interaction" : "interacts with",
2000
+ "name" : "Node 1 (interacts with) Node 1",
2001
+ "interaction" : "interacts with",
2002
+ "SUID" : 59806,
2003
+ "selected" : false
2004
+ },
2005
+ "selected" : false
2006
+ }, {
2007
+ "data" : {
2008
+ "id" : "59794",
2009
+ "source" : "59754",
2010
+ "target" : "59782",
2011
+ "shared_name" : "Node 1 (interacts with) Node 1",
2012
+ "shared_interaction" : "interacts with",
2013
+ "name" : "Node 1 (interacts with) Node 1",
2014
+ "interaction" : "interacts with",
2015
+ "SUID" : 59794,
2016
+ "selected" : false
2017
+ },
2018
+ "selected" : false
2019
+ }, {
2020
+ "data" : {
2021
+ "id" : "59743",
2022
+ "source" : "59731",
2023
+ "target" : "51770",
2024
+ "shared_name" : "Node 1 (interacts with) Node 1",
2025
+ "shared_interaction" : "interacts with",
2026
+ "name" : "Node 1 (interacts with) Node 1",
2027
+ "interaction" : "interacts with",
2028
+ "SUID" : 59743,
2029
+ "selected" : false
2030
+ },
2031
+ "selected" : false
2032
+ }, {
2033
+ "data" : {
2034
+ "id" : "59737",
2035
+ "source" : "59731",
2036
+ "target" : "51774",
2037
+ "shared_name" : "Node 1 (interacts with) Node 1",
2038
+ "shared_interaction" : "interacts with",
2039
+ "name" : "Node 1 (interacts with) Node 1",
2040
+ "interaction" : "interacts with",
2041
+ "SUID" : 59737,
2042
+ "selected" : false
2043
+ },
2044
+ "selected" : false
2045
+ }, {
2046
+ "data" : {
2047
+ "id" : "59725",
2048
+ "source" : "59711",
2049
+ "target" : "51810",
2050
+ "shared_name" : "Node 1 (interacts with) Node 1",
2051
+ "shared_interaction" : "interacts with",
2052
+ "name" : "Node 1 (interacts with) Node 1",
2053
+ "interaction" : "interacts with",
2054
+ "SUID" : 59725,
2055
+ "selected" : false
2056
+ },
2057
+ "selected" : false
2058
+ }, {
2059
+ "data" : {
2060
+ "id" : "59705",
2061
+ "source" : "59691",
2062
+ "target" : "51816",
2063
+ "shared_name" : "Node 1 (interacts with) Node 1",
2064
+ "shared_interaction" : "interacts with",
2065
+ "name" : "Node 1 (interacts with) Node 1",
2066
+ "interaction" : "interacts with",
2067
+ "SUID" : 59705,
2068
+ "selected" : false
2069
+ },
2070
+ "selected" : false
2071
+ }, {
2072
+ "data" : {
2073
+ "id" : "51942",
2074
+ "source" : "51850",
2075
+ "target" : "51824",
2076
+ "shared_name" : "GM2 (interacts with) GM1",
2077
+ "shared_interaction" : "interacts with",
2078
+ "name" : "GM2 (interacts with) GM1",
2079
+ "interaction" : "interacts with",
2080
+ "SUID" : 51942,
2081
+ "selected" : false
2082
+ },
2083
+ "selected" : false
2084
+ }, {
2085
+ "data" : {
2086
+ "id" : "59844",
2087
+ "source" : "51830",
2088
+ "target" : "59832",
2089
+ "shared_name" : "DHSph (interacts with) Node 1",
2090
+ "shared_interaction" : "interacts with",
2091
+ "name" : "DHSph (interacts with) Node 1",
2092
+ "interaction" : "interacts with",
2093
+ "SUID" : 59844,
2094
+ "selected" : false
2095
+ },
2096
+ "selected" : false
2097
+ }, {
2098
+ "data" : {
2099
+ "id" : "59800",
2100
+ "source" : "51830",
2101
+ "target" : "59768",
2102
+ "shared_name" : "DHSph (interacts with) Node 1",
2103
+ "shared_interaction" : "interacts with",
2104
+ "name" : "DHSph (interacts with) Node 1",
2105
+ "interaction" : "interacts with",
2106
+ "SUID" : 59800,
2107
+ "selected" : false
2108
+ },
2109
+ "selected" : false
2110
+ }, {
2111
+ "data" : {
2112
+ "id" : "51938",
2113
+ "source" : "51828",
2114
+ "target" : "51736",
2115
+ "shared_name" : "HexCer_HS (interacts with) AHexCer",
2116
+ "shared_interaction" : "interacts with",
2117
+ "name" : "HexCer_HS (interacts with) AHexCer",
2118
+ "interaction" : "interacts with",
2119
+ "SUID" : 51938,
2120
+ "selected" : false
2121
+ },
2122
+ "selected" : false
2123
+ }, {
2124
+ "data" : {
2125
+ "id" : "51936",
2126
+ "source" : "51828",
2127
+ "target" : "51826",
2128
+ "shared_name" : "HexCer_HS (interacts with) SHexCer",
2129
+ "shared_interaction" : "interacts with",
2130
+ "name" : "HexCer_HS (interacts with) SHexCer",
2131
+ "interaction" : "interacts with",
2132
+ "SUID" : 51936,
2133
+ "selected" : false
2134
+ },
2135
+ "selected" : false
2136
+ }, {
2137
+ "data" : {
2138
+ "id" : "51934",
2139
+ "source" : "51824",
2140
+ "target" : "51734",
2141
+ "shared_name" : "GM1 (interacts with) GD1a",
2142
+ "shared_interaction" : "interacts with",
2143
+ "name" : "GM1 (interacts with) GD1a",
2144
+ "interaction" : "interacts with",
2145
+ "SUID" : 51934,
2146
+ "selected" : false
2147
+ },
2148
+ "selected" : false
2149
+ }, {
2150
+ "data" : {
2151
+ "id" : "51932",
2152
+ "source" : "51822",
2153
+ "target" : "51776",
2154
+ "shared_name" : "Cer_NDS (interacts with) Cer_NS",
2155
+ "shared_interaction" : "interacts with",
2156
+ "name" : "Cer_NDS (interacts with) Cer_NS",
2157
+ "interaction" : "interacts with",
2158
+ "SUID" : 51932,
2159
+ "selected" : false
2160
+ },
2161
+ "selected" : false
2162
+ }, {
2163
+ "data" : {
2164
+ "id" : "51930",
2165
+ "source" : "51822",
2166
+ "target" : "51732",
2167
+ "shared_name" : "Cer_NDS (interacts with) HexCer_NDS",
2168
+ "shared_interaction" : "interacts with",
2169
+ "name" : "Cer_NDS (interacts with) HexCer_NDS",
2170
+ "interaction" : "interacts with",
2171
+ "SUID" : 51930,
2172
+ "selected" : false
2173
+ },
2174
+ "selected" : false
2175
+ }, {
2176
+ "data" : {
2177
+ "id" : "51928",
2178
+ "source" : "51818",
2179
+ "target" : "51820",
2180
+ "shared_name" : "St3gal5 (interacts with) Node 1",
2181
+ "shared_interaction" : "interacts with",
2182
+ "name" : "St3gal5 (interacts with) Node 1",
2183
+ "interaction" : "interacts with",
2184
+ "SUID" : 51928,
2185
+ "selected" : false
2186
+ },
2187
+ "selected" : false
2188
+ }, {
2189
+ "data" : {
2190
+ "id" : "51926",
2191
+ "source" : "51798",
2192
+ "target" : "51804",
2193
+ "shared_name" : "B4galt5 (interacts with) Node 1",
2194
+ "shared_interaction" : "interacts with",
2195
+ "name" : "B4galt5 (interacts with) Node 1",
2196
+ "interaction" : "interacts with",
2197
+ "SUID" : 51926,
2198
+ "selected" : false
2199
+ },
2200
+ "selected" : false
2201
+ }, {
2202
+ "data" : {
2203
+ "id" : "51924",
2204
+ "source" : "51794",
2205
+ "target" : "51812",
2206
+ "shared_name" : "Gal3st1 (interacts with) Node 1",
2207
+ "shared_interaction" : "interacts with",
2208
+ "name" : "Gal3st1 (interacts with) Node 1",
2209
+ "interaction" : "interacts with",
2210
+ "SUID" : 51924,
2211
+ "selected" : false
2212
+ },
2213
+ "selected" : false
2214
+ }, {
2215
+ "data" : {
2216
+ "id" : "51922",
2217
+ "source" : "51794",
2218
+ "target" : "51716",
2219
+ "shared_name" : "Gal3st1 (interacts with) Node 1",
2220
+ "shared_interaction" : "interacts with",
2221
+ "name" : "Gal3st1 (interacts with) Node 1",
2222
+ "interaction" : "interacts with",
2223
+ "SUID" : 51922,
2224
+ "selected" : false
2225
+ },
2226
+ "selected" : false
2227
+ }, {
2228
+ "data" : {
2229
+ "id" : "51920",
2230
+ "source" : "51792",
2231
+ "target" : "51828",
2232
+ "shared_name" : "Cer_AS (interacts with) HexCer_HS",
2233
+ "shared_interaction" : "interacts with",
2234
+ "name" : "Cer_AS (interacts with) HexCer_HS",
2235
+ "interaction" : "interacts with",
2236
+ "SUID" : 51920,
2237
+ "selected" : false
2238
+ },
2239
+ "selected" : false
2240
+ }, {
2241
+ "data" : {
2242
+ "id" : "51918",
2243
+ "source" : "51788",
2244
+ "target" : "51790",
2245
+ "shared_name" : "UGT8a (interacts with) Node 1",
2246
+ "shared_interaction" : "interacts with",
2247
+ "name" : "UGT8a (interacts with) Node 1",
2248
+ "interaction" : "interacts with",
2249
+ "SUID" : 51918,
2250
+ "selected" : false
2251
+ },
2252
+ "selected" : false
2253
+ }, {
2254
+ "data" : {
2255
+ "id" : "51914",
2256
+ "source" : "51788",
2257
+ "target" : "51802",
2258
+ "shared_name" : "UGT8a (interacts with) Node 1",
2259
+ "shared_interaction" : "interacts with",
2260
+ "name" : "UGT8a (interacts with) Node 1",
2261
+ "interaction" : "interacts with",
2262
+ "SUID" : 51914,
2263
+ "selected" : false
2264
+ },
2265
+ "selected" : false
2266
+ }, {
2267
+ "data" : {
2268
+ "id" : "51912",
2269
+ "source" : "51780",
2270
+ "target" : "51850",
2271
+ "shared_name" : "GM3 (interacts with) GM2",
2272
+ "shared_interaction" : "interacts with",
2273
+ "name" : "GM3 (interacts with) GM2",
2274
+ "interaction" : "interacts with",
2275
+ "SUID" : 51912,
2276
+ "selected" : false
2277
+ },
2278
+ "selected" : false
2279
+ }, {
2280
+ "data" : {
2281
+ "id" : "51910",
2282
+ "source" : "51776",
2283
+ "target" : "51784",
2284
+ "shared_name" : "Cer_NS (interacts with) Sph",
2285
+ "shared_interaction" : "interacts with",
2286
+ "name" : "Cer_NS (interacts with) Sph",
2287
+ "interaction" : "interacts with",
2288
+ "SUID" : 51910,
2289
+ "selected" : false
2290
+ },
2291
+ "selected" : false
2292
+ }, {
2293
+ "data" : {
2294
+ "id" : "51908",
2295
+ "source" : "51776",
2296
+ "target" : "51746",
2297
+ "shared_name" : "Cer_NS (interacts with) HexCer_NS",
2298
+ "shared_interaction" : "interacts with",
2299
+ "name" : "Cer_NS (interacts with) HexCer_NS",
2300
+ "interaction" : "interacts with",
2301
+ "SUID" : 51908,
2302
+ "selected" : false
2303
+ },
2304
+ "selected" : false
2305
+ }, {
2306
+ "data" : {
2307
+ "id" : "51906",
2308
+ "source" : "51776",
2309
+ "target" : "51748",
2310
+ "shared_name" : "Cer_NS (interacts with) SM",
2311
+ "shared_interaction" : "interacts with",
2312
+ "name" : "Cer_NS (interacts with) SM",
2313
+ "interaction" : "interacts with",
2314
+ "SUID" : 51906,
2315
+ "selected" : false
2316
+ },
2317
+ "selected" : false
2318
+ }, {
2319
+ "data" : {
2320
+ "id" : "51904",
2321
+ "source" : "51772",
2322
+ "target" : "51808",
2323
+ "shared_name" : "SMS (interacts with) Node 1",
2324
+ "shared_interaction" : "interacts with",
2325
+ "name" : "SMS (interacts with) Node 1",
2326
+ "interaction" : "interacts with",
2327
+ "SUID" : 51904,
2328
+ "selected" : false
2329
+ },
2330
+ "selected" : false
2331
+ }, {
2332
+ "data" : {
2333
+ "id" : "51902",
2334
+ "source" : "51768",
2335
+ "target" : "51786",
2336
+ "shared_name" : "DEGS2 (interacts with) Node 1",
2337
+ "shared_interaction" : "interacts with",
2338
+ "name" : "DEGS2 (interacts with) Node 1",
2339
+ "interaction" : "interacts with",
2340
+ "SUID" : 51902,
2341
+ "selected" : false
2342
+ },
2343
+ "selected" : false
2344
+ }, {
2345
+ "data" : {
2346
+ "id" : "51898",
2347
+ "source" : "51764",
2348
+ "target" : "51778",
2349
+ "shared_name" : "DEGS1 (interacts with) Node 1",
2350
+ "shared_interaction" : "interacts with",
2351
+ "name" : "DEGS1 (interacts with) Node 1",
2352
+ "interaction" : "interacts with",
2353
+ "SUID" : 51898,
2354
+ "selected" : false
2355
+ },
2356
+ "selected" : false
2357
+ }, {
2358
+ "data" : {
2359
+ "id" : "51896",
2360
+ "source" : "51764",
2361
+ "target" : "51782",
2362
+ "shared_name" : "DEGS1 (interacts with) Node 1",
2363
+ "shared_interaction" : "interacts with",
2364
+ "name" : "DEGS1 (interacts with) Node 1",
2365
+ "interaction" : "interacts with",
2366
+ "SUID" : 51896,
2367
+ "selected" : false
2368
+ },
2369
+ "selected" : false
2370
+ }, {
2371
+ "data" : {
2372
+ "id" : "51892",
2373
+ "source" : "51756",
2374
+ "target" : "51760",
2375
+ "shared_name" : "FA2H (interacts with) Node 1",
2376
+ "shared_interaction" : "interacts with",
2377
+ "name" : "FA2H (interacts with) Node 1",
2378
+ "interaction" : "interacts with",
2379
+ "SUID" : 51892,
2380
+ "selected" : false
2381
+ },
2382
+ "selected" : false
2383
+ }, {
2384
+ "data" : {
2385
+ "id" : "59850",
2386
+ "source" : "51754",
2387
+ "target" : "59829",
2388
+ "shared_name" : "2OH-FA (interacts with) Node 1",
2389
+ "shared_interaction" : "interacts with",
2390
+ "name" : "2OH-FA (interacts with) Node 1",
2391
+ "interaction" : "interacts with",
2392
+ "SUID" : 59850,
2393
+ "selected" : false
2394
+ },
2395
+ "selected" : false
2396
+ }, {
2397
+ "data" : {
2398
+ "id" : "51890",
2399
+ "source" : "51752",
2400
+ "target" : "51800",
2401
+ "shared_name" : "Cer_AP (interacts with) HexCer_AP",
2402
+ "shared_interaction" : "interacts with",
2403
+ "name" : "Cer_AP (interacts with) HexCer_AP",
2404
+ "interaction" : "interacts with",
2405
+ "SUID" : 51890,
2406
+ "selected" : false
2407
+ },
2408
+ "selected" : false
2409
+ }, {
2410
+ "data" : {
2411
+ "id" : "51888",
2412
+ "source" : "51750",
2413
+ "target" : "51752",
2414
+ "shared_name" : "Cer_ADS (interacts with) Cer_AP",
2415
+ "shared_interaction" : "interacts with",
2416
+ "name" : "Cer_ADS (interacts with) Cer_AP",
2417
+ "interaction" : "interacts with",
2418
+ "SUID" : 51888,
2419
+ "selected" : false
2420
+ },
2421
+ "selected" : false
2422
+ }, {
2423
+ "data" : {
2424
+ "id" : "51886",
2425
+ "source" : "51750",
2426
+ "target" : "51792",
2427
+ "shared_name" : "Cer_ADS (interacts with) Cer_AS",
2428
+ "shared_interaction" : "interacts with",
2429
+ "name" : "Cer_ADS (interacts with) Cer_AS",
2430
+ "interaction" : "interacts with",
2431
+ "SUID" : 51886,
2432
+ "selected" : false
2433
+ },
2434
+ "selected" : false
2435
+ }, {
2436
+ "data" : {
2437
+ "id" : "51884",
2438
+ "source" : "51746",
2439
+ "target" : "51730",
2440
+ "shared_name" : "HexCer_NS (interacts with) Hex2Cer",
2441
+ "shared_interaction" : "interacts with",
2442
+ "name" : "HexCer_NS (interacts with) Hex2Cer",
2443
+ "interaction" : "interacts with",
2444
+ "SUID" : 51884,
2445
+ "selected" : false
2446
+ },
2447
+ "selected" : false
2448
+ }, {
2449
+ "data" : {
2450
+ "id" : "51882",
2451
+ "source" : "51746",
2452
+ "target" : "51826",
2453
+ "shared_name" : "HexCer_NS (interacts with) SHexCer",
2454
+ "shared_interaction" : "interacts with",
2455
+ "name" : "HexCer_NS (interacts with) SHexCer",
2456
+ "interaction" : "interacts with",
2457
+ "SUID" : 51882,
2458
+ "selected" : false
2459
+ },
2460
+ "selected" : false
2461
+ }, {
2462
+ "data" : {
2463
+ "id" : "51880",
2464
+ "source" : "51437",
2465
+ "target" : "51852",
2466
+ "shared_name" : "B3galt4 (interacts with) Node 1",
2467
+ "shared_interaction" : "interacts with",
2468
+ "name" : "B3galt4 (interacts with) Node 1",
2469
+ "interaction" : "interacts with",
2470
+ "SUID" : 51880,
2471
+ "selected" : false
2472
+ },
2473
+ "selected" : false
2474
+ }, {
2475
+ "data" : {
2476
+ "id" : "51878",
2477
+ "source" : "51435",
2478
+ "target" : "51814",
2479
+ "shared_name" : "B4galnt1 (interacts with) Node 1",
2480
+ "shared_interaction" : "interacts with",
2481
+ "name" : "B4galnt1 (interacts with) Node 1",
2482
+ "interaction" : "interacts with",
2483
+ "SUID" : 51878,
2484
+ "selected" : false
2485
+ },
2486
+ "selected" : false
2487
+ }, {
2488
+ "data" : {
2489
+ "id" : "59893",
2490
+ "source" : "51738",
2491
+ "target" : "59880",
2492
+ "shared_name" : "FA (interacts with) Node 1",
2493
+ "shared_interaction" : "interacts with",
2494
+ "name" : "FA (interacts with) Node 1",
2495
+ "interaction" : "interacts with",
2496
+ "SUID" : 59893,
2497
+ "selected" : false
2498
+ },
2499
+ "selected" : false
2500
+ }, {
2501
+ "data" : {
2502
+ "id" : "59788",
2503
+ "source" : "51738",
2504
+ "target" : "59754",
2505
+ "shared_name" : "FA (interacts with) Node 1",
2506
+ "shared_interaction" : "interacts with",
2507
+ "name" : "FA (interacts with) Node 1",
2508
+ "interaction" : "interacts with",
2509
+ "SUID" : 59788,
2510
+ "selected" : false
2511
+ },
2512
+ "selected" : false
2513
+ }, {
2514
+ "data" : {
2515
+ "id" : "51872",
2516
+ "source" : "51730",
2517
+ "target" : "51780",
2518
+ "shared_name" : "Hex2Cer (interacts with) GM3",
2519
+ "shared_interaction" : "interacts with",
2520
+ "name" : "Hex2Cer (interacts with) GM3",
2521
+ "interaction" : "interacts with",
2522
+ "SUID" : 51872,
2523
+ "selected" : false
2524
+ },
2525
+ "selected" : false
2526
+ } ]
2527
+ }
2528
+ }
app/data/demodata.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f7b03ae39fb13252efa16890abb7bdf09a9d532cd22e71fb8369851d9062291
3
+ size 3735341
app/data/globalpathway.cyjs ADDED
The diff for this file is too large to render. See raw diff
 
app/data/lipidclassproperties.csv ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LbmClass,Categories,AcylChain,AlkylChain,SphingoChain,ExtraAcylChain,TotalChain
2
+ FA,Fatty acyls,1,0,0,0,1
3
+ FAHFA,Fatty acyls,1,0,0,1,1
4
+ OxFA,Fatty acyls,1,0,0,0,1
5
+ CAR,Fatty acyls,1,0,0,0,1
6
+ NAE,Fatty acyls,1,0,0,0,1
7
+ NAGly,Fatty acyls,1,0,0,1,1
8
+ NAGlySer,Fatty acyls,1,0,0,1,1
9
+ NAOrn,Fatty acyls,1,0,0,1,1
10
+ NATau,Fatty acyls,1,0,0,1,1
11
+ PA,Glycerophospholipids,2,0,0,0,2
12
+ PC,Glycerophospholipids,2,0,0,0,2
13
+ PE,Glycerophospholipids,2,0,0,0,2
14
+ PG,Glycerophospholipids,2,0,0,0,2
15
+ PI,Glycerophospholipids,2,0,0,0,2
16
+ PS,Glycerophospholipids,2,0,0,0,2
17
+ BMP,Glycerophospholipids,2,0,0,0,2
18
+ HBMP,Glycerophospholipids,3,0,0,0,3
19
+ EtherPC,Glycerophospholipids,1,1,0,0,2
20
+ EtherPE,Glycerophospholipids,1,1,0,0,2
21
+ EtherPI,Glycerophospholipids,1,1,0,0,2
22
+ EtherPS,Glycerophospholipids,1,1,0,0,2
23
+ EtherPG,Glycerophospholipids,1,1,0,0,2
24
+ OxPC,Glycerophospholipids,2,0,0,0,2
25
+ OxPS,Glycerophospholipids,2,0,0,0,2
26
+ OxPE,Glycerophospholipids,2,0,0,0,2
27
+ OxPG,Glycerophospholipids,2,0,0,0,2
28
+ OxPI,Glycerophospholipids,2,0,0,0,2
29
+ EtherOxPC,Glycerophospholipids,1,1,0,0,2
30
+ EtherOxPE,Glycerophospholipids,1,1,0,0,2
31
+ LPC,Glycerophospholipids,1,0,0,0,1
32
+ LPE,Glycerophospholipids,1,0,0,0,1
33
+ LPA,Glycerophospholipids,1,0,0,0,1
34
+ LPS,Glycerophospholipids,1,0,0,0,1
35
+ LPI,Glycerophospholipids,1,0,0,0,1
36
+ LPG,Glycerophospholipids,1,0,0,0,1
37
+ PMeOH,Glycerophospholipids,2,0,0,0,2
38
+ PEtOH,Glycerophospholipids,2,0,0,0,2
39
+ EtherLPC,Glycerophospholipids,0,1,0,0,1
40
+ EtherLPE,Glycerophospholipids,0,1,0,0,1
41
+ EtherLPG,Glycerophospholipids,0,1,0,0,1
42
+ LNAPE,Glycerophospholipids,2,0,0,0,2
43
+ LNAPS,Glycerophospholipids,2,0,0,0,2
44
+ MLCL,Glycerophospholipids,3,0,0,0,3
45
+ DLCL,Glycerophospholipids,2,0,0,0,2
46
+ CL,Glycerophospholipids,4,0,0,0,4
47
+ MG,Glycerolipids,1,0,0,0,1
48
+ DG,Glycerolipids,2,0,0,0,2
49
+ TG,Glycerolipids,3,0,0,0,3
50
+ MGDG,Glycerolipids,2,0,0,0,2
51
+ DGDG,Glycerolipids,2,0,0,0,2
52
+ SQDG,Glycerolipids,2,0,0,0,2
53
+ DGTS,Glycerolipids,2,0,0,0,2
54
+ DGTA,Glycerolipids,2,0,0,0,2
55
+ DGGA,Glycerolipids,2,0,0,0,2
56
+ ADGGA,Glycerolipids,3,0,0,0,3
57
+ LDGTS,Glycerolipids,1,0,0,0,1
58
+ LDGTA,Glycerolipids,1,0,0,0,1
59
+ LDGCC,Glycerolipids,1,0,0,0,1
60
+ DGCC,Glycerolipids,2,0,0,0,2
61
+ EtherMGDG,Glycerolipids,1,1,0,0,2
62
+ EtherDGDG,Glycerolipids,1,1,0,0,2
63
+ EtherTG,Glycerolipids,2,1,0,0,3
64
+ EtherDG,Glycerolipids,1,1,0,0,2
65
+ EtherSMGDG,Glycerolipids,1,1,0,0,2
66
+ SMGDG,Glycerolipids,2,0,0,0,2
67
+ Sph,Sphingolipids,1,0,0,0,1
68
+ DHSph,Sphingolipids,1,0,0,0,1
69
+ PhytoSph,Sphingolipids,1,0,0,0,1
70
+ SM,Sphingolipids,2,0,0,0,2
71
+ CerP,Sphingolipids,1,0,1,0,2
72
+ Cer_ADS,Sphingolipids,1,0,1,0,2
73
+ Cer_AS,Sphingolipids,1,0,1,0,2
74
+ Cer_BDS,Sphingolipids,1,0,1,0,2
75
+ Cer_BS,Sphingolipids,1,0,1,0,2
76
+ Cer_EODS,Sphingolipids,1,0,1,1,2
77
+ Cer_EOS,Sphingolipids,1,0,1,1,2
78
+ Cer_NDS,Sphingolipids,1,0,1,0,2
79
+ Cer_NS,Sphingolipids,1,0,1,0,2
80
+ Cer_NP,Sphingolipids,1,0,1,0,2
81
+ Cer_AP,Sphingolipids,1,0,1,0,2
82
+ Cer_EBDS,Sphingolipids,1,0,1,1,2
83
+ Cer_HS,Sphingolipids,1,0,1,0,2
84
+ Cer_HDS,Sphingolipids,1,0,1,0,2
85
+ HexCer_NS,Sphingolipids,1,0,1,0,2
86
+ HexCer_NDS,Sphingolipids,1,0,1,0,2
87
+ HexCer_AP,Sphingolipids,1,0,1,0,2
88
+ HexCer_HS,Sphingolipids,1,0,1,0,2
89
+ HexCer_HDS,Sphingolipids,1,0,1,0,2
90
+ HexCer_EOS,Sphingolipids,1,0,1,1,2
91
+ Hex2Cer,Sphingolipids,1,0,1,0,2
92
+ Hex3Cer,Sphingolipids,1,0,1,0,2
93
+ SHexCer,Sphingolipids,1,0,1,0,2
94
+ GM3,Sphingolipids,1,0,1,0,2
95
+ AHexCer,Sphingolipids,2,0,1,0,3
96
+ ASM,Sphingolipids,1,0,1,1,8
97
+ PE_Cer,Sphingolipids,2,0,0,0,2
98
+ PI_Cer,Sphingolipids,2,0,0,0,2
99
+ SL,Sphingolipids,2,0,0,0,2
100
+ Ac2PIM1,Glycerophospholipids,2,0,0,0,2
101
+ Ac2PIM2,Glycerophospholipids,2,0,0,0,2
102
+ Ac3PIM2,Glycerophospholipids,3,0,0,0,2
103
+ Ac4PIM2,Glycerophospholipids,4,0,0,0,2
104
+ LipidA,Saccharolipids,4,0,0,2,4
105
+ Vitamin_E,Prenol Lipids,0,0,0,0,0
106
+ Vitamin_D,Sterol Lipids,0,0,0,0,0
107
+ CoQ,Prenol Lipids,0,0,0,0,0
108
+ CE,Sterol Lipids,1,0,0,0,1
109
+ DCAE,Sterol Lipids,1,0,0,0,1
110
+ GDCAE,Sterol Lipids,1,0,0,0,1
111
+ GLCAE,Sterol Lipids,1,0,0,0,1
112
+ TDCAE,Sterol Lipids,1,0,0,0,1
113
+ TLCAE,Sterol Lipids,1,0,0,0,1
114
+ BileAcid,Sterol Lipids,0,0,0,0,0
115
+ VAE,Prenol Lipids,1,0,0,0,1
116
+ BRSE,Sterol Lipids,1,0,0,0,1
117
+ CASE,Sterol Lipids,1,0,0,0,1
118
+ SISE,Sterol Lipids,1,0,0,0,1
119
+ STSE,Sterol Lipids,1,0,0,0,1
120
+ AHexBRS,Sterol Lipids,1,0,0,0,1
121
+ AHexCAS,Sterol Lipids,1,0,0,0,1
122
+ AHexCS,Sterol Lipids,1,0,0,0,1
123
+ AHexSIS,Sterol Lipids,1,0,0,0,1
124
+ AHexSTS,Sterol Lipids,1,0,0,0,1
125
+ SHex,Sterol Lipids,0,0,0,0,0
126
+ SSulfate,Sterol Lipids,0,0,0,0,0
127
+ BASulfate,Sterol Lipids,0,0,0,0,0
128
+ LCAE,Sterol Lipids,1,0,0,0,1
129
+ KLCAE,Sterol Lipids,1,0,0,0,1
130
+ KDCAE,Sterol Lipids,1,0,0,0,1
131
+ MMPE,Glycerophospholipids,2,0,0,0,2
132
+ DMPE,Glycerophospholipids,2,0,0,0,2
133
+ MIPC,Unknown,2,0,0,0,2
134
+ EGSE,Sterol Lipids,1,0,0,0,1
135
+ DEGSE,Sterol Lipids,1,0,0,0,1
136
+ DSMSE,Sterol Lipids,1,0,0,0,1
137
+ OxTG,Glycerolipids,3,0,0,0,3
138
+ TG_EST,Glycerolipids,3,0,0,1,3
139
+ GPNAE,Glycerophospholipids,1,0,0,0,1
140
+ DGMG,Glycerolipids,2,0,0,0,2
141
+ MGMG,Glycerolipids,2,0,0,0,2
142
+ GD1a,Sphingolipids,2,0,0,0,2
143
+ GD1b,Sphingolipids,2,0,0,0,2
144
+ GD2,Sphingolipids,2,0,0,0,2
145
+ GD3,Sphingolipids,2,0,0,0,2
146
+ GM1,Sphingolipids,2,0,0,0,2
147
+ GQ1b,Sphingolipids,2,0,0,0,2
148
+ GT1b,Sphingolipids,2,0,0,0,2
149
+ NGcGM3,Sphingolipids,2,0,0,0,2
150
+ ST,Sterol Lipids,0,0,0,0,0
app/data/nodestyle1.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {"selector":"node", "css": {
3
+ "border-width": "1px",
4
+ "content": "data(id)",
5
+ "background-color": "gray",
6
+ "background-fit": "cover cover",
7
+ "shape" : "rectangle",
8
+ "background-image": "data(path)",
9
+ "label" : "data(shared_name)",
10
+ "height": "data(Height)",
11
+ "z-index" : 1,
12
+ "width": "data(Width)",
13
+ "background-fit": "cover cover",
14
+ "font-size" : "data(Label_size)"
15
+ }
16
+ },
17
+ {"selector":"node:selected", "css": {
18
+ "background-color": "white",
19
+ "width": 700,
20
+ "height": 700,
21
+ "background-image": "data(path)",
22
+ "background-fit": "contain",
23
+ "z-index" : 4,
24
+ "font-size" : 50
25
+
26
+ }
27
+ },
28
+ {"selector": "node[NumChildren<=1]", "css": {
29
+ "height": "10",
30
+ "width": "10"
31
+ }},
32
+ {"selector": "edge", "css": {
33
+ "line-color": "gray",
34
+ "label": "data(label)"
35
+ }}
36
+ ]
app/data/nodestyle2.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {"selector":"node", "css": {
3
+ "border-width": "1px",
4
+ "content": "data(id)",
5
+ "background-color": "data(color)",
6
+ "background-fit": "cover cover",
7
+ "shape" : "rectangle",
8
+ "background-image": "data(path)",
9
+ "label" : "data(shared_name)",
10
+ "height": "data(Height)",
11
+ "z-index" : 1,
12
+ "width": "data(Width)",
13
+ "background-fit": "cover cover",
14
+ "font-size" : "data(Label_size)"
15
+ }
16
+ },
17
+ {"selector":"node:selected", "css": {
18
+ "overlay-color": "white",
19
+ "border-width": "5px",
20
+ "overlay-opacity": 0.1,
21
+ "z-index" : 4
22
+ }
23
+ },
24
+ {"selector": "node[NumChildren<=1]", "css": {
25
+ "height": "10",
26
+ "width": "10"
27
+ }},
28
+ {"selector": "edge", "css": {
29
+ "line-color": "gray",
30
+ "label": "data(label)"
31
+ }}
32
+ ]
app/data/remodeling.cyjs ADDED
@@ -0,0 +1,2194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version" : "1.0",
3
+ "generated_by" : "cytoscape-3.10.0",
4
+ "target_cytoscapejs_version" : "~2.1",
5
+ "data" : {
6
+ "shared_name" : "Network",
7
+ "name" : "Network",
8
+ "SUID" : 1813,
9
+ "__Annotations" : [ "" ],
10
+ "selected" : true
11
+ },
12
+ "elements" : {
13
+ "nodes" : [ {
14
+ "data" : {
15
+ "id" : "9718",
16
+ "Shape" : "Ellipse",
17
+ "Fillcolor" : "#ffffff",
18
+ "Color" : "",
19
+ "label" : "",
20
+ "Label_size" : 1,
21
+ "shared_name" : "Node1",
22
+ "LabelFont" : "",
23
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
24
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
25
+ "name" : "Node1",
26
+ "Ensembl_ID" : "",
27
+ "SUID" : 9718,
28
+ "Height" : 1,
29
+ "Width" : 1,
30
+ "selected" : false
31
+ },
32
+ "position" : {
33
+ "x" : -273.9915188357254,
34
+ "y" : 234.15540471996576
35
+ },
36
+ "selected" : false
37
+ }, {
38
+ "data" : {
39
+ "id" : "9712",
40
+ "Shape" : "Ellipse",
41
+ "Fillcolor" : "#ffffff",
42
+ "Color" : "",
43
+ "label" : "",
44
+ "Label_size" : 1,
45
+ "shared_name" : "Node1",
46
+ "LabelFont" : "",
47
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
48
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
49
+ "name" : "Node1",
50
+ "Ensembl_ID" : "",
51
+ "SUID" : 9712,
52
+ "Height" : 1,
53
+ "Width" : 1,
54
+ "selected" : false
55
+ },
56
+ "position" : {
57
+ "x" : -576.9410734551657,
58
+ "y" : 236.94796169024704
59
+ },
60
+ "selected" : false
61
+ }, {
62
+ "data" : {
63
+ "id" : "2766",
64
+ "Shape" : "",
65
+ "Fillcolor" : "",
66
+ "Color" : "",
67
+ "label" : "CDP-DAG",
68
+ "Label_size" : 30,
69
+ "shared_name" : "CDP-DAG",
70
+ "LabelFont" : "",
71
+ "path" : "http://localhost:9000/plot?str1=CDP-DAG.svg",
72
+ "pathpng" : "http://localhost:9000/png?str2=(CDP-DAG).png",
73
+ "name" : "CDP-DAG",
74
+ "Ensembl_ID" : "",
75
+ "SUID" : 2766,
76
+ "Height" : 140,
77
+ "Width" : 140,
78
+ "selected" : false
79
+ },
80
+ "position" : {
81
+ "x" : 474.81548861645194,
82
+ "y" : 100.68548506718597
83
+ },
84
+ "selected" : false
85
+ }, {
86
+ "data" : {
87
+ "id" : "2733",
88
+ "NumChildren" : 2,
89
+ "Shape" : "",
90
+ "Fillcolor" : "",
91
+ "Color" : "",
92
+ "label" : "G3P",
93
+ "Label_size" : 30,
94
+ "shared_name" : "G3P",
95
+ "LabelFont" : "",
96
+ "path" : "http://localhost:9000/plot?str1=G3P.svg",
97
+ "NumDescendents" : 2,
98
+ "pathpng" : "http://localhost:9000/png?str2=(G3P).png",
99
+ "name" : "G3P",
100
+ "Ensembl_ID" : "",
101
+ "SUID" : 2733,
102
+ "Height" : 140,
103
+ "Width" : 140,
104
+ "selected" : false
105
+ },
106
+ "position" : {
107
+ "x" : -101.0,
108
+ "y" : -484.0
109
+ },
110
+ "selected" : false
111
+ }, {
112
+ "data" : {
113
+ "id" : "2700",
114
+ "NumChildren" : 2,
115
+ "Shape" : "",
116
+ "Fillcolor" : "",
117
+ "Color" : "",
118
+ "label" : "LPA",
119
+ "Label_size" : 30,
120
+ "shared_name" : "LPA",
121
+ "LabelFont" : "",
122
+ "path" : "http://localhost:9000/plot?str1=LPA.svg",
123
+ "NumDescendents" : 2,
124
+ "pathpng" : "http://localhost:9000/png?str2=(LPA).png",
125
+ "name" : "LPA",
126
+ "Ensembl_ID" : "",
127
+ "SUID" : 2700,
128
+ "Height" : 140,
129
+ "Width" : 140,
130
+ "selected" : false
131
+ },
132
+ "position" : {
133
+ "x" : -102.0,
134
+ "y" : -213.0
135
+ },
136
+ "selected" : false
137
+ }, {
138
+ "data" : {
139
+ "id" : "2667",
140
+ "NumChildren" : 2,
141
+ "Shape" : "",
142
+ "Fillcolor" : "",
143
+ "Color" : "",
144
+ "label" : "PA",
145
+ "Label_size" : 30,
146
+ "shared_name" : "PA",
147
+ "LabelFont" : "",
148
+ "path" : "http://localhost:9000/plot?str1=PA.svg",
149
+ "NumDescendents" : 2,
150
+ "pathpng" : "http://localhost:9000/png?str2=(PA).png",
151
+ "name" : "PA",
152
+ "Ensembl_ID" : "",
153
+ "SUID" : 2667,
154
+ "Height" : 140,
155
+ "Width" : 140,
156
+ "selected" : false
157
+ },
158
+ "position" : {
159
+ "x" : -97.0,
160
+ "y" : 99.4042444238604
161
+ },
162
+ "selected" : false
163
+ }, {
164
+ "data" : {
165
+ "id" : "2634",
166
+ "NumChildren" : 2,
167
+ "Shape" : "",
168
+ "Fillcolor" : "",
169
+ "Color" : "",
170
+ "label" : "DG",
171
+ "Label_size" : 30,
172
+ "shared_name" : "DG",
173
+ "LabelFont" : "",
174
+ "path" : "http://localhost:9000/plot?str1=DG.svg",
175
+ "NumDescendents" : 2,
176
+ "pathpng" : "http://localhost:9000/png?str2=(DG).png",
177
+ "name" : "DG",
178
+ "Ensembl_ID" : "",
179
+ "SUID" : 2634,
180
+ "Height" : 140,
181
+ "Width" : 140,
182
+ "selected" : false
183
+ },
184
+ "position" : {
185
+ "x" : -425.3298380139844,
186
+ "y" : 105.48855061769882
187
+ },
188
+ "selected" : false
189
+ }, {
190
+ "data" : {
191
+ "id" : "2601",
192
+ "NumChildren" : 2,
193
+ "Shape" : "",
194
+ "Fillcolor" : "",
195
+ "Color" : "",
196
+ "label" : "TG",
197
+ "Label_size" : 30,
198
+ "shared_name" : "TG",
199
+ "LabelFont" : "",
200
+ "path" : "http://localhost:9000/plot?str1=TG.svg",
201
+ "NumDescendents" : 2,
202
+ "pathpng" : "http://localhost:9000/png?str2=(TG).png",
203
+ "name" : "TG",
204
+ "Ensembl_ID" : "",
205
+ "SUID" : 2601,
206
+ "Height" : 140,
207
+ "Width" : 140,
208
+ "selected" : false
209
+ },
210
+ "position" : {
211
+ "x" : -913.7403237331314,
212
+ "y" : 109.4160849877864
213
+ },
214
+ "selected" : false
215
+ }, {
216
+ "data" : {
217
+ "id" : "2568",
218
+ "NumChildren" : 2,
219
+ "Shape" : "",
220
+ "Fillcolor" : "",
221
+ "Color" : "",
222
+ "label" : "PS",
223
+ "Label_size" : 30,
224
+ "shared_name" : "PS",
225
+ "LabelFont" : "",
226
+ "path" : "http://localhost:9000/plot?str1=PS.svg",
227
+ "NumDescendents" : 2,
228
+ "pathpng" : "http://localhost:9000/png?str2=(PS).png",
229
+ "name" : "PS",
230
+ "Ensembl_ID" : "",
231
+ "SUID" : 2568,
232
+ "Height" : 140,
233
+ "Width" : 140,
234
+ "selected" : false
235
+ },
236
+ "position" : {
237
+ "x" : -45.234103120544084,
238
+ "y" : 355.4797945083172
239
+ },
240
+ "selected" : false
241
+ }, {
242
+ "data" : {
243
+ "id" : "2535",
244
+ "NumChildren" : 2,
245
+ "Shape" : "",
246
+ "Fillcolor" : "",
247
+ "Color" : "",
248
+ "label" : "PI",
249
+ "Label_size" : 30,
250
+ "shared_name" : "PI",
251
+ "LabelFont" : "",
252
+ "path" : "http://localhost:9000/plot?str1=PI.svg",
253
+ "NumDescendents" : 2,
254
+ "pathpng" : "http://localhost:9000/png?str2=(PI).png",
255
+ "name" : "PI",
256
+ "Ensembl_ID" : "",
257
+ "SUID" : 2535,
258
+ "Height" : 140,
259
+ "Width" : 140,
260
+ "selected" : false
261
+ },
262
+ "position" : {
263
+ "x" : 415.2298114621793,
264
+ "y" : 365.26398275891654
265
+ },
266
+ "selected" : false
267
+ }, {
268
+ "data" : {
269
+ "id" : "2502",
270
+ "NumChildren" : 2,
271
+ "Shape" : "",
272
+ "Fillcolor" : "",
273
+ "Color" : "",
274
+ "label" : "PG",
275
+ "Label_size" : 30,
276
+ "shared_name" : "PG",
277
+ "LabelFont" : "",
278
+ "path" : "http://localhost:9000/plot?str1=PG.svg",
279
+ "NumDescendents" : 2,
280
+ "pathpng" : "http://localhost:9000/png?str2=(PG).png",
281
+ "name" : "PG",
282
+ "Ensembl_ID" : "",
283
+ "SUID" : 2502,
284
+ "Height" : 140,
285
+ "Width" : 140,
286
+ "selected" : false
287
+ },
288
+ "position" : {
289
+ "x" : 911.9564898996988,
290
+ "y" : 367.06648922866503
291
+ },
292
+ "selected" : false
293
+ }, {
294
+ "data" : {
295
+ "id" : "2469",
296
+ "NumChildren" : 2,
297
+ "Shape" : "",
298
+ "Fillcolor" : "",
299
+ "Color" : "",
300
+ "label" : "CL",
301
+ "Label_size" : 30,
302
+ "shared_name" : "CL",
303
+ "LabelFont" : "",
304
+ "path" : "http://localhost:9000/plot?str1=CL.svg",
305
+ "NumDescendents" : 2,
306
+ "pathpng" : "http://localhost:9000/png?str2=(CL).png",
307
+ "name" : "CL",
308
+ "Ensembl_ID" : "",
309
+ "SUID" : 2469,
310
+ "Height" : 140,
311
+ "Width" : 140,
312
+ "selected" : false
313
+ },
314
+ "position" : {
315
+ "x" : 1288.832117651606,
316
+ "y" : 365.8227465893218
317
+ },
318
+ "selected" : false
319
+ }, {
320
+ "data" : {
321
+ "id" : "2436",
322
+ "NumChildren" : 2,
323
+ "Shape" : "",
324
+ "Fillcolor" : "",
325
+ "Color" : "",
326
+ "label" : "LCL",
327
+ "Label_size" : 30,
328
+ "shared_name" : "LCL",
329
+ "LabelFont" : "",
330
+ "path" : "http://localhost:9000/plot?str1=LCL.svg",
331
+ "NumDescendents" : 2,
332
+ "pathpng" : "http://localhost:9000/png?str2=(LCL).png",
333
+ "name" : "LCL",
334
+ "Ensembl_ID" : "",
335
+ "SUID" : 2436,
336
+ "Height" : 140,
337
+ "Width" : 140,
338
+ "selected" : false
339
+ },
340
+ "position" : {
341
+ "x" : 1297.7467134346807,
342
+ "y" : 837.058085652
343
+ },
344
+ "selected" : false
345
+ }, {
346
+ "data" : {
347
+ "id" : "2403",
348
+ "NumChildren" : 2,
349
+ "Shape" : "",
350
+ "Fillcolor" : "",
351
+ "Color" : "",
352
+ "label" : "LPG",
353
+ "Label_size" : 30,
354
+ "shared_name" : "LPG",
355
+ "LabelFont" : "",
356
+ "path" : "http://localhost:9000/plot?str1=LPG.svg",
357
+ "NumDescendents" : 2,
358
+ "pathpng" : "http://localhost:9000/png?str2=(LPG).png",
359
+ "name" : "LPG",
360
+ "Ensembl_ID" : "",
361
+ "SUID" : 2403,
362
+ "Height" : 140,
363
+ "Width" : 140,
364
+ "selected" : false
365
+ },
366
+ "position" : {
367
+ "x" : 915.0,
368
+ "y" : 840.0
369
+ },
370
+ "selected" : false
371
+ }, {
372
+ "data" : {
373
+ "id" : "2370",
374
+ "NumChildren" : 2,
375
+ "Shape" : "",
376
+ "Fillcolor" : "",
377
+ "Color" : "",
378
+ "label" : "LPI",
379
+ "Label_size" : 30,
380
+ "shared_name" : "LPI",
381
+ "LabelFont" : "",
382
+ "path" : "http://localhost:9000/plot?str1=LPI.svg",
383
+ "NumDescendents" : 2,
384
+ "pathpng" : "http://localhost:9000/png?str2=(LPI).png",
385
+ "name" : "LPI",
386
+ "Ensembl_ID" : "",
387
+ "SUID" : 2370,
388
+ "Height" : 140,
389
+ "Width" : 140,
390
+ "selected" : false
391
+ },
392
+ "position" : {
393
+ "x" : 422.5101507741127,
394
+ "y" : 835.051231403835
395
+ },
396
+ "selected" : false
397
+ }, {
398
+ "data" : {
399
+ "id" : "2337",
400
+ "NumChildren" : 2,
401
+ "Shape" : "",
402
+ "Fillcolor" : "",
403
+ "Color" : "",
404
+ "label" : "LPS",
405
+ "Label_size" : 30,
406
+ "shared_name" : "LPS",
407
+ "LabelFont" : "",
408
+ "path" : "http://localhost:9000/plot?str1=LPS.svg",
409
+ "NumDescendents" : 2,
410
+ "pathpng" : "http://localhost:9000/png?str2=(LPS).png",
411
+ "name" : "LPS",
412
+ "Ensembl_ID" : "",
413
+ "SUID" : 2337,
414
+ "Height" : 140,
415
+ "Width" : 140,
416
+ "selected" : false
417
+ },
418
+ "position" : {
419
+ "x" : -38.58992827669451,
420
+ "y" : 858.4176835336768
421
+ },
422
+ "selected" : false
423
+ }, {
424
+ "data" : {
425
+ "id" : "2304",
426
+ "NumChildren" : 2,
427
+ "Shape" : "",
428
+ "Fillcolor" : "",
429
+ "Color" : "",
430
+ "label" : "PE",
431
+ "Label_size" : 30,
432
+ "shared_name" : "PE",
433
+ "LabelFont" : "",
434
+ "path" : "http://localhost:9000/plot?str1=PE.svg",
435
+ "NumDescendents" : 2,
436
+ "pathpng" : "http://localhost:9000/png?str2=(PE).png",
437
+ "name" : "PE",
438
+ "Ensembl_ID" : "",
439
+ "SUID" : 2304,
440
+ "Height" : 140,
441
+ "Width" : 140,
442
+ "selected" : false
443
+ },
444
+ "position" : {
445
+ "x" : -422.7657885698363,
446
+ "y" : 358.956914184162
447
+ },
448
+ "selected" : false
449
+ }, {
450
+ "data" : {
451
+ "id" : "2271",
452
+ "NumChildren" : 2,
453
+ "Shape" : "",
454
+ "Fillcolor" : "",
455
+ "Color" : "",
456
+ "label" : "LPE",
457
+ "Label_size" : 30,
458
+ "shared_name" : "LPE",
459
+ "LabelFont" : "",
460
+ "path" : "http://localhost:9000/plot?str1=LPE.svg",
461
+ "NumDescendents" : 2,
462
+ "pathpng" : "http://localhost:9000/png?str2=(LPE).png",
463
+ "name" : "LPE",
464
+ "Ensembl_ID" : "",
465
+ "SUID" : 2271,
466
+ "Height" : 140,
467
+ "Width" : 140,
468
+ "selected" : false
469
+ },
470
+ "position" : {
471
+ "x" : -419.56358051846837,
472
+ "y" : 858.0035663552187
473
+ },
474
+ "selected" : false
475
+ }, {
476
+ "data" : {
477
+ "id" : "2238",
478
+ "NumChildren" : 2,
479
+ "Shape" : "",
480
+ "Fillcolor" : "",
481
+ "Color" : "",
482
+ "label" : "PC",
483
+ "Label_size" : 30,
484
+ "shared_name" : "PC",
485
+ "LabelFont" : "",
486
+ "path" : "http://localhost:9000/plot?str1=PC.svg",
487
+ "NumDescendents" : 2,
488
+ "pathpng" : "http://localhost:9000/png?str2=(PC).png",
489
+ "name" : "PC",
490
+ "Ensembl_ID" : "",
491
+ "SUID" : 2238,
492
+ "Height" : 140,
493
+ "Width" : 140,
494
+ "selected" : false
495
+ },
496
+ "position" : {
497
+ "x" : -917.8982617905904,
498
+ "y" : 358.95640210560117
499
+ },
500
+ "selected" : false
501
+ }, {
502
+ "data" : {
503
+ "id" : "2205",
504
+ "NumChildren" : 2,
505
+ "Shape" : "",
506
+ "Fillcolor" : "",
507
+ "Color" : "",
508
+ "label" : "LPC",
509
+ "Label_size" : 30,
510
+ "shared_name" : "LPC",
511
+ "LabelFont" : "",
512
+ "path" : "http://localhost:9000/plot?str1=LPC.svg",
513
+ "NumDescendents" : 2,
514
+ "pathpng" : "http://localhost:9000/png?str2=(LPC).png",
515
+ "name" : "LPC",
516
+ "Ensembl_ID" : "",
517
+ "SUID" : 2205,
518
+ "Height" : 140,
519
+ "Width" : 140,
520
+ "selected" : false
521
+ },
522
+ "position" : {
523
+ "x" : -915.3385931081847,
524
+ "y" : 861.8137318171327
525
+ },
526
+ "selected" : false
527
+ }, {
528
+ "data" : {
529
+ "id" : "2164",
530
+ "NumChildren" : 4,
531
+ "Shape" : "",
532
+ "Fillcolor" : "",
533
+ "Color" : "",
534
+ "label" : "",
535
+ "Label_size" : 1,
536
+ "shared_name" : "Group1",
537
+ "LabelFont" : "",
538
+ "path" : "http://localhost:9000/plot?str1=Group1.svg",
539
+ "NumDescendents" : 4,
540
+ "pathpng" : "http://localhost:9000/png?str2=(Group1).png",
541
+ "name" : "Group1",
542
+ "Ensembl_ID" : "",
543
+ "SUID" : 2164,
544
+ "Height" : 1,
545
+ "Width" : 1,
546
+ "selected" : false
547
+ },
548
+ "position" : {
549
+ "x" : 338.66881667066093,
550
+ "y" : -352.5
551
+ },
552
+ "selected" : false
553
+ }, {
554
+ "data" : {
555
+ "id" : "2162",
556
+ "Shape" : "Ellipse",
557
+ "Fillcolor" : "#ffffff",
558
+ "Color" : "",
559
+ "label" : "",
560
+ "Label_size" : 1,
561
+ "shared_name" : "Node1",
562
+ "LabelFont" : "",
563
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
564
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
565
+ "name" : "Node1",
566
+ "Ensembl_ID" : "",
567
+ "SUID" : 2162,
568
+ "Height" : 1,
569
+ "Width" : 1,
570
+ "selected" : false
571
+ },
572
+ "position" : {
573
+ "x" : -99.25383902447582,
574
+ "y" : -348.321742099095
575
+ },
576
+ "selected" : false
577
+ }, {
578
+ "data" : {
579
+ "id" : "2118",
580
+ "NumChildren" : 5,
581
+ "Shape" : "",
582
+ "Fillcolor" : "",
583
+ "Color" : "",
584
+ "label" : "",
585
+ "Label_size" : 1,
586
+ "shared_name" : "Group2",
587
+ "LabelFont" : "",
588
+ "path" : "http://localhost:9000/plot?str1=Group2.svg",
589
+ "NumDescendents" : 5,
590
+ "pathpng" : "http://localhost:9000/png?str2=(Group2).png",
591
+ "name" : "Group2",
592
+ "Ensembl_ID" : "",
593
+ "SUID" : 2118,
594
+ "Height" : 1,
595
+ "Width" : 1,
596
+ "selected" : false
597
+ },
598
+ "position" : {
599
+ "x" : 418.33440833533047,
600
+ "y" : -64.5
601
+ },
602
+ "selected" : false
603
+ }, {
604
+ "data" : {
605
+ "id" : "2116",
606
+ "Shape" : "Ellipse",
607
+ "Fillcolor" : "#ffffff",
608
+ "Color" : "",
609
+ "label" : "",
610
+ "Label_size" : 1,
611
+ "shared_name" : "Node1",
612
+ "LabelFont" : "",
613
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
614
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
615
+ "name" : "Node1",
616
+ "Ensembl_ID" : "",
617
+ "SUID" : 2116,
618
+ "Height" : 1,
619
+ "Width" : 1,
620
+ "selected" : false
621
+ },
622
+ "position" : {
623
+ "x" : -100.82390858447873,
624
+ "y" : -58.32605874702458
625
+ },
626
+ "selected" : false
627
+ }, {
628
+ "data" : {
629
+ "id" : "2114",
630
+ "Shape" : "",
631
+ "Fillcolor" : "",
632
+ "Color" : "",
633
+ "label" : "AGPAT2",
634
+ "Label_size" : 30,
635
+ "shared_name" : "AGPAT2",
636
+ "LabelFont" : "",
637
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000026922.svg",
638
+ "pathpng" : "http://localhost:9000/png?str2=(AGPAT2).png",
639
+ "name" : "AGPAT2",
640
+ "Ensembl_ID" : "ENSMUSG00000026922",
641
+ "SUID" : 2114,
642
+ "Height" : 140,
643
+ "Width" : 140,
644
+ "selected" : false
645
+ },
646
+ "position" : {
647
+ "x" : 263.0,
648
+ "y" : -63.0
649
+ },
650
+ "selected" : false
651
+ }, {
652
+ "data" : {
653
+ "id" : "2112",
654
+ "Shape" : "",
655
+ "Fillcolor" : "",
656
+ "Color" : "",
657
+ "label" : "LPCAT1",
658
+ "Label_size" : 30,
659
+ "shared_name" : "LPCAT1",
660
+ "LabelFont" : "",
661
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000021608.svg",
662
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT1).png",
663
+ "name" : "LPCAT1",
664
+ "Ensembl_ID" : "ENSMUSG00000021608",
665
+ "SUID" : 2112,
666
+ "Height" : 140,
667
+ "Width" : 140,
668
+ "selected" : false
669
+ },
670
+ "position" : {
671
+ "x" : 572.1337633341321,
672
+ "y" : -66.0
673
+ },
674
+ "selected" : false
675
+ }, {
676
+ "data" : {
677
+ "id" : "2110",
678
+ "Shape" : "",
679
+ "Fillcolor" : "",
680
+ "Color" : "",
681
+ "label" : "LPCAT4",
682
+ "Label_size" : 30,
683
+ "shared_name" : "LPCAT4",
684
+ "LabelFont" : "",
685
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000027134.svg",
686
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
687
+ "name" : "LPCAT4",
688
+ "Ensembl_ID" : "ENSMUSG00000027134",
689
+ "SUID" : 2110,
690
+ "Height" : 140,
691
+ "Width" : 140,
692
+ "selected" : false
693
+ },
694
+ "position" : {
695
+ "x" : 725.6688166706609,
696
+ "y" : -65.53505333652873
697
+ },
698
+ "selected" : false
699
+ }, {
700
+ "data" : {
701
+ "id" : "2108",
702
+ "Shape" : "",
703
+ "Fillcolor" : "",
704
+ "Color" : "",
705
+ "label" : "AGPAT1",
706
+ "Label_size" : 30,
707
+ "shared_name" : "AGPAT1",
708
+ "LabelFont" : "",
709
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000034254.svg",
710
+ "pathpng" : "http://localhost:9000/png?str2=(AGPAT1).png",
711
+ "name" : "AGPAT1",
712
+ "Ensembl_ID" : "ENSMUSG00000034254",
713
+ "SUID" : 2108,
714
+ "Height" : 140,
715
+ "Width" : 140,
716
+ "selected" : false
717
+ },
718
+ "position" : {
719
+ "x" : 111.0,
720
+ "y" : -64.0
721
+ },
722
+ "selected" : false
723
+ }, {
724
+ "data" : {
725
+ "id" : "2106",
726
+ "Shape" : "",
727
+ "Fillcolor" : "",
728
+ "Color" : "",
729
+ "label" : "AGPAT3",
730
+ "Label_size" : 30,
731
+ "shared_name" : "AGPAT3",
732
+ "LabelFont" : "",
733
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000001211.svg",
734
+ "pathpng" : "http://localhost:9000/png?str2=(AGPAT3).png",
735
+ "name" : "AGPAT3",
736
+ "Ensembl_ID" : "ENSMUSG00000001211",
737
+ "SUID" : 2106,
738
+ "Height" : 140,
739
+ "Width" : 140,
740
+ "selected" : false
741
+ },
742
+ "position" : {
743
+ "x" : 420.0,
744
+ "y" : -64.0
745
+ },
746
+ "selected" : false
747
+ }, {
748
+ "data" : {
749
+ "id" : "2104",
750
+ "Shape" : "",
751
+ "Fillcolor" : "",
752
+ "Color" : "",
753
+ "label" : "GPAT3",
754
+ "Label_size" : 30,
755
+ "shared_name" : "GPAT3",
756
+ "LabelFont" : "",
757
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000029314.svg",
758
+ "pathpng" : "http://localhost:9000/png?str2=(GPAT3).png",
759
+ "name" : "GPAT3",
760
+ "Ensembl_ID" : "ENSMUSG00000029314",
761
+ "SUID" : 2104,
762
+ "Height" : 140,
763
+ "Width" : 140,
764
+ "selected" : false
765
+ },
766
+ "position" : {
767
+ "x" : 420.0,
768
+ "y" : -353.0
769
+ },
770
+ "selected" : false
771
+ }, {
772
+ "data" : {
773
+ "id" : "2102",
774
+ "Shape" : "",
775
+ "Fillcolor" : "",
776
+ "Color" : "",
777
+ "label" : "GPAT2",
778
+ "Label_size" : 30,
779
+ "shared_name" : "GPAT2",
780
+ "LabelFont" : "",
781
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000046338.svg",
782
+ "pathpng" : "http://localhost:9000/png?str2=(GPAT2).png",
783
+ "name" : "GPAT2",
784
+ "Ensembl_ID" : "ENSMUSG00000046338",
785
+ "SUID" : 2102,
786
+ "Height" : 140,
787
+ "Width" : 140,
788
+ "selected" : false
789
+ },
790
+ "position" : {
791
+ "x" : 260.0,
792
+ "y" : -353.0
793
+ },
794
+ "selected" : false
795
+ }, {
796
+ "data" : {
797
+ "id" : "2100",
798
+ "Shape" : "",
799
+ "Fillcolor" : "",
800
+ "Color" : "",
801
+ "label" : "GPAM",
802
+ "Label_size" : 30,
803
+ "shared_name" : "GPAM",
804
+ "LabelFont" : "",
805
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000024978.svg",
806
+ "pathpng" : "http://localhost:9000/png?str2=(GPAM).png",
807
+ "name" : "GPAM",
808
+ "Ensembl_ID" : "ENSMUSG00000024978",
809
+ "SUID" : 2100,
810
+ "Height" : 140,
811
+ "Width" : 140,
812
+ "selected" : false
813
+ },
814
+ "position" : {
815
+ "x" : 105.13376333413218,
816
+ "y" : -352.0
817
+ },
818
+ "selected" : false
819
+ }, {
820
+ "data" : {
821
+ "id" : "2098",
822
+ "Shape" : "",
823
+ "Fillcolor" : "",
824
+ "Color" : "",
825
+ "label" : "GPAT4",
826
+ "Label_size" : 30,
827
+ "shared_name" : "GPAT4",
828
+ "LabelFont" : "",
829
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000031545.svg",
830
+ "pathpng" : "http://localhost:9000/png?str2=(GPAT4).png",
831
+ "name" : "GPAT4",
832
+ "Ensembl_ID" : "ENSMUSG00000031545",
833
+ "SUID" : 2098,
834
+ "Height" : 140,
835
+ "Width" : 140,
836
+ "selected" : false
837
+ },
838
+ "position" : {
839
+ "x" : 572.2038700071896,
840
+ "y" : -352.40129000239654
841
+ },
842
+ "selected" : false
843
+ }, {
844
+ "data" : {
845
+ "id" : "2096",
846
+ "Shape" : "",
847
+ "Fillcolor" : "",
848
+ "Color" : "",
849
+ "label" : "LCLAT1",
850
+ "Label_size" : 30,
851
+ "shared_name" : "LCLAT1",
852
+ "LabelFont" : "",
853
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000054469.svg",
854
+ "pathpng" : "http://localhost:9000/png?str2=(LCLAT1).png",
855
+ "name" : "LCLAT1",
856
+ "Ensembl_ID" : "ENSMUSG00000054469",
857
+ "SUID" : 2096,
858
+ "Height" : 140,
859
+ "Width" : 140,
860
+ "selected" : false
861
+ },
862
+ "position" : {
863
+ "x" : 1134.3519353149259,
864
+ "y" : 577.9726862021414
865
+ },
866
+ "selected" : false
867
+ }, {
868
+ "data" : {
869
+ "id" : "2094",
870
+ "Shape" : "Ellipse",
871
+ "Fillcolor" : "#ffffff",
872
+ "Color" : "",
873
+ "label" : "",
874
+ "Label_size" : 1,
875
+ "shared_name" : "Node1",
876
+ "LabelFont" : "",
877
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
878
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
879
+ "name" : "Node1",
880
+ "Ensembl_ID" : "",
881
+ "SUID" : 2094,
882
+ "Height" : 1,
883
+ "Width" : 1,
884
+ "selected" : false
885
+ },
886
+ "position" : {
887
+ "x" : 1247.689408087844,
888
+ "y" : 578.6061939673187
889
+ },
890
+ "selected" : false
891
+ }, {
892
+ "data" : {
893
+ "id" : "2078",
894
+ "Shape" : "",
895
+ "Fillcolor" : "",
896
+ "Color" : "",
897
+ "label" : "LPGAT1",
898
+ "Label_size" : 30,
899
+ "shared_name" : "LPGAT1",
900
+ "LabelFont" : "",
901
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000026623.svg",
902
+ "pathpng" : "http://localhost:9000/png?str2=(LPGAT1).png",
903
+ "name" : "LPGAT1",
904
+ "Ensembl_ID" : "ENSMUSG00000026623",
905
+ "SUID" : 2078,
906
+ "Height" : 140,
907
+ "Width" : 140,
908
+ "selected" : false
909
+ },
910
+ "position" : {
911
+ "x" : 719.0,
912
+ "y" : 390.0
913
+ },
914
+ "selected" : false
915
+ }, {
916
+ "data" : {
917
+ "id" : "2080",
918
+ "Shape" : "",
919
+ "Fillcolor" : "",
920
+ "Color" : "",
921
+ "label" : "LPCAT1",
922
+ "Label_size" : 30,
923
+ "shared_name" : "LPCAT1",
924
+ "LabelFont" : "",
925
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000021608.svg",
926
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT1).png",
927
+ "name" : "LPCAT1",
928
+ "Ensembl_ID" : "ENSMUSG00000021608",
929
+ "SUID" : 2080,
930
+ "Height" : 140,
931
+ "Width" : 140,
932
+ "selected" : false
933
+ },
934
+ "position" : {
935
+ "x" : 717.0,
936
+ "y" : 537.0
937
+ },
938
+ "selected" : false
939
+ }, {
940
+ "data" : {
941
+ "id" : "2074",
942
+ "Shape" : "",
943
+ "Fillcolor" : "",
944
+ "Color" : "",
945
+ "label" : "LPCAT4",
946
+ "Label_size" : 30,
947
+ "shared_name" : "LPCAT4",
948
+ "LabelFont" : "",
949
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000027134.svg",
950
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
951
+ "name" : "LPCAT4",
952
+ "Ensembl_ID" : "ENSMUSG00000027134",
953
+ "SUID" : 2074,
954
+ "Height" : 140,
955
+ "Width" : 140,
956
+ "selected" : false
957
+ },
958
+ "position" : {
959
+ "x" : 717.0,
960
+ "y" : 682.0
961
+ },
962
+ "selected" : false
963
+ }, {
964
+ "data" : {
965
+ "id" : "2076",
966
+ "Shape" : "",
967
+ "Fillcolor" : "",
968
+ "Color" : "",
969
+ "label" : "LCLAT1",
970
+ "Label_size" : 30,
971
+ "shared_name" : "LCLAT1",
972
+ "LabelFont" : "",
973
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000054469.svg",
974
+ "pathpng" : "http://localhost:9000/png?str2=(LCLAT1).png",
975
+ "name" : "LCLAT1",
976
+ "Ensembl_ID" : "ENSMUSG00000054469",
977
+ "SUID" : 2076,
978
+ "Height" : 140,
979
+ "Width" : 140,
980
+ "selected" : false
981
+ },
982
+ "position" : {
983
+ "x" : 719.0,
984
+ "y" : 827.0
985
+ },
986
+ "selected" : false
987
+ }, {
988
+ "data" : {
989
+ "id" : "2045",
990
+ "NumChildren" : 4,
991
+ "Shape" : "",
992
+ "Fillcolor" : "",
993
+ "Color" : "",
994
+ "label" : "",
995
+ "Label_size" : 1,
996
+ "shared_name" : "Group3",
997
+ "LabelFont" : "",
998
+ "path" : "http://localhost:9000/plot?str1=Group3.svg",
999
+ "NumDescendents" : 4,
1000
+ "pathpng" : "http://localhost:9000/png?str2=(Group3).png",
1001
+ "name" : "",
1002
+ "Ensembl_ID" : "",
1003
+ "SUID" : 2045,
1004
+ "Height" : 1,
1005
+ "Width" : 1,
1006
+ "selected" : false
1007
+ },
1008
+ "position" : {
1009
+ "x" : 718.0,
1010
+ "y" : 608.5
1011
+ },
1012
+ "selected" : false
1013
+ }, {
1014
+ "data" : {
1015
+ "id" : "2043",
1016
+ "Shape" : "Ellipse",
1017
+ "Fillcolor" : "#ffffff",
1018
+ "Color" : "",
1019
+ "label" : "",
1020
+ "Label_size" : 1,
1021
+ "shared_name" : "Node1",
1022
+ "LabelFont" : "",
1023
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1024
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1025
+ "name" : "Node1",
1026
+ "Ensembl_ID" : "",
1027
+ "SUID" : 2043,
1028
+ "Height" : 1,
1029
+ "Width" : 1,
1030
+ "selected" : false
1031
+ },
1032
+ "position" : {
1033
+ "x" : 833.5669108130306,
1034
+ "y" : 607.5427832677703
1035
+ },
1036
+ "selected" : false
1037
+ }, {
1038
+ "data" : {
1039
+ "id" : "2028",
1040
+ "Shape" : "",
1041
+ "Fillcolor" : "",
1042
+ "Color" : "",
1043
+ "label" : "MBOAT7",
1044
+ "Label_size" : 30,
1045
+ "shared_name" : "MBOAT7",
1046
+ "LabelFont" : "",
1047
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000035596.svg",
1048
+ "pathpng" : "http://localhost:9000/png?str2=(MBOAT7).png",
1049
+ "name" : "MBOAT7",
1050
+ "Ensembl_ID" : "ENSMUSG00000035596",
1051
+ "SUID" : 2028,
1052
+ "Height" : 140,
1053
+ "Width" : 140,
1054
+ "selected" : false
1055
+ },
1056
+ "position" : {
1057
+ "x" : 244.41458983250155,
1058
+ "y" : 444.2437694975047
1059
+ },
1060
+ "selected" : false
1061
+ }, {
1062
+ "data" : {
1063
+ "id" : "2030",
1064
+ "Shape" : "",
1065
+ "Fillcolor" : "",
1066
+ "Color" : "",
1067
+ "label" : "LCLAT1",
1068
+ "Label_size" : 30,
1069
+ "shared_name" : "LCLAT1",
1070
+ "LabelFont" : "",
1071
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000054469.svg",
1072
+ "pathpng" : "http://localhost:9000/png?str2=(LCLAT1).png",
1073
+ "name" : "LCLAT1",
1074
+ "Ensembl_ID" : "ENSMUSG00000054469",
1075
+ "SUID" : 2030,
1076
+ "Height" : 140,
1077
+ "Width" : 140,
1078
+ "selected" : false
1079
+ },
1080
+ "position" : {
1081
+ "x" : 247.0,
1082
+ "y" : 592.0
1083
+ },
1084
+ "selected" : false
1085
+ }, {
1086
+ "data" : {
1087
+ "id" : "2032",
1088
+ "Shape" : "",
1089
+ "Fillcolor" : "",
1090
+ "Color" : "",
1091
+ "label" : "AGPAT3",
1092
+ "Label_size" : 30,
1093
+ "shared_name" : "AGPAT3",
1094
+ "LabelFont" : "",
1095
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000001211.svg",
1096
+ "pathpng" : "http://localhost:9000/png?str2=(AGPAT3).png",
1097
+ "name" : "AGPAT3",
1098
+ "Ensembl_ID" : "ENSMUSG00000001211",
1099
+ "SUID" : 2032,
1100
+ "Height" : 140,
1101
+ "Width" : 140,
1102
+ "selected" : false
1103
+ },
1104
+ "position" : {
1105
+ "x" : 247.06094237437617,
1106
+ "y" : 738.231762709373
1107
+ },
1108
+ "selected" : false
1109
+ }, {
1110
+ "data" : {
1111
+ "id" : "1999",
1112
+ "NumChildren" : 3,
1113
+ "Shape" : "",
1114
+ "Fillcolor" : "",
1115
+ "Color" : "",
1116
+ "label" : "",
1117
+ "Label_size" : 1,
1118
+ "shared_name" : "Group4",
1119
+ "LabelFont" : "",
1120
+ "path" : "http://localhost:9000/plot?str1=Group4.svg",
1121
+ "NumDescendents" : 3,
1122
+ "pathpng" : "http://localhost:9000/png?str2=(Group4).png",
1123
+ "name" : "",
1124
+ "Ensembl_ID" : "",
1125
+ "SUID" : 1999,
1126
+ "Height" : 1,
1127
+ "Width" : 1,
1128
+ "selected" : false
1129
+ },
1130
+ "position" : {
1131
+ "x" : 245.73776610343884,
1132
+ "y" : 591.2377661034388
1133
+ },
1134
+ "selected" : false
1135
+ }, {
1136
+ "data" : {
1137
+ "id" : "1997",
1138
+ "Shape" : "Ellipse",
1139
+ "Fillcolor" : "#ffffff",
1140
+ "Color" : "",
1141
+ "label" : "",
1142
+ "Label_size" : 1,
1143
+ "shared_name" : "Node1",
1144
+ "LabelFont" : "",
1145
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1146
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1147
+ "name" : "Node1",
1148
+ "Ensembl_ID" : "",
1149
+ "SUID" : 1997,
1150
+ "Height" : 1,
1151
+ "Width" : 1,
1152
+ "selected" : false
1153
+ },
1154
+ "position" : {
1155
+ "x" : 355.7662005285219,
1156
+ "y" : 592.57779267581
1157
+ },
1158
+ "selected" : false
1159
+ }, {
1160
+ "data" : {
1161
+ "id" : "1982",
1162
+ "Shape" : "",
1163
+ "Fillcolor" : "",
1164
+ "Color" : "",
1165
+ "label" : "LPCAT3",
1166
+ "Label_size" : 30,
1167
+ "shared_name" : "LPCAT3",
1168
+ "LabelFont" : "",
1169
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000004270.svg",
1170
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT3).png",
1171
+ "name" : "LPCAT3",
1172
+ "Ensembl_ID" : "ENSMUSG00000004270",
1173
+ "SUID" : 1982,
1174
+ "Height" : 140,
1175
+ "Width" : 140,
1176
+ "selected" : false
1177
+ },
1178
+ "position" : {
1179
+ "x" : -225.0,
1180
+ "y" : 469.0
1181
+ },
1182
+ "selected" : false
1183
+ }, {
1184
+ "data" : {
1185
+ "id" : "1984",
1186
+ "Shape" : "",
1187
+ "Fillcolor" : "",
1188
+ "Color" : "",
1189
+ "label" : "LPCAT4",
1190
+ "Label_size" : 30,
1191
+ "shared_name" : "LPCAT4",
1192
+ "LabelFont" : "",
1193
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000020646.svg",
1194
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
1195
+ "name" : "LPCAT4",
1196
+ "Ensembl_ID" : "ENSMUSG00000027134",
1197
+ "SUID" : 1984,
1198
+ "Height" : 140,
1199
+ "Width" : 140,
1200
+ "selected" : false
1201
+ },
1202
+ "position" : {
1203
+ "x" : -224.0,
1204
+ "y" : 614.0
1205
+ },
1206
+ "selected" : false
1207
+ }, {
1208
+ "data" : {
1209
+ "id" : "1986",
1210
+ "Shape" : "",
1211
+ "Fillcolor" : "",
1212
+ "Color" : "",
1213
+ "label" : "MBOAT2",
1214
+ "Label_size" : 30,
1215
+ "shared_name" : "MBOAT2",
1216
+ "LabelFont" : "",
1217
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000020646.svg",
1218
+ "pathpng" : "http://localhost:9000/png?str2=(MBOAT2).png",
1219
+ "name" : "MBOAT2",
1220
+ "Ensembl_ID" : "ENSMUSG00000020646",
1221
+ "SUID" : 1986,
1222
+ "Height" : 140,
1223
+ "Width" : 140,
1224
+ "selected" : false
1225
+ },
1226
+ "position" : {
1227
+ "x" : -225.0,
1228
+ "y" : 760.0
1229
+ },
1230
+ "selected" : false
1231
+ }, {
1232
+ "data" : {
1233
+ "id" : "1953",
1234
+ "NumChildren" : 3,
1235
+ "Shape" : "",
1236
+ "Fillcolor" : "",
1237
+ "Color" : "",
1238
+ "label" : "",
1239
+ "Label_size" : 1,
1240
+ "shared_name" : "Group5",
1241
+ "LabelFont" : "",
1242
+ "path" : "http://localhost:9000/plot?str1=Group5.svg",
1243
+ "NumDescendents" : 3,
1244
+ "pathpng" : "http://localhost:9000/png?str2=(Group5).png",
1245
+ "name" : "",
1246
+ "Ensembl_ID" : "",
1247
+ "SUID" : 1953,
1248
+ "Height" : 1,
1249
+ "Width" : 1,
1250
+ "selected" : false
1251
+ },
1252
+ "position" : {
1253
+ "x" : -224.5,
1254
+ "y" : 614.5
1255
+ },
1256
+ "selected" : false
1257
+ }, {
1258
+ "data" : {
1259
+ "id" : "1951",
1260
+ "Shape" : "Ellipse",
1261
+ "Fillcolor" : "#ffffff",
1262
+ "Color" : "",
1263
+ "label" : "",
1264
+ "Label_size" : 1,
1265
+ "shared_name" : "Node1",
1266
+ "LabelFont" : "",
1267
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1268
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1269
+ "name" : "Node1",
1270
+ "Ensembl_ID" : "",
1271
+ "SUID" : 1951,
1272
+ "Height" : 1,
1273
+ "Width" : 1,
1274
+ "selected" : false
1275
+ },
1276
+ "position" : {
1277
+ "x" : -100.50348103529801,
1278
+ "y" : 614.0205496082189
1279
+ },
1280
+ "selected" : false
1281
+ }, {
1282
+ "data" : {
1283
+ "id" : "1937",
1284
+ "Shape" : "",
1285
+ "Fillcolor" : "",
1286
+ "Color" : "",
1287
+ "label" : "LPCAT3",
1288
+ "Label_size" : 30,
1289
+ "shared_name" : "LPCAT3",
1290
+ "LabelFont" : "",
1291
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000004270.svg",
1292
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT3).png",
1293
+ "name" : "LPCAT3",
1294
+ "Ensembl_ID" : "ENSMUSG00000004270",
1295
+ "SUID" : 1937,
1296
+ "Height" : 140,
1297
+ "Width" : 140,
1298
+ "selected" : false
1299
+ },
1300
+ "position" : {
1301
+ "x" : -647.0,
1302
+ "y" : 393.0
1303
+ },
1304
+ "selected" : false
1305
+ }, {
1306
+ "data" : {
1307
+ "id" : "1931",
1308
+ "Shape" : "",
1309
+ "Fillcolor" : "",
1310
+ "Color" : "",
1311
+ "label" : "LPCAT4",
1312
+ "Label_size" : 30,
1313
+ "shared_name" : "LPCAT4",
1314
+ "LabelFont" : "",
1315
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000027134.svg",
1316
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
1317
+ "name" : "LPCAT4",
1318
+ "Ensembl_ID" : "ENSMUSG00000027134",
1319
+ "SUID" : 1931,
1320
+ "Height" : 140,
1321
+ "Width" : 140,
1322
+ "selected" : false
1323
+ },
1324
+ "position" : {
1325
+ "x" : -646.0,
1326
+ "y" : 544.3536474581254
1327
+ },
1328
+ "selected" : false
1329
+ }, {
1330
+ "data" : {
1331
+ "id" : "1935",
1332
+ "Shape" : "",
1333
+ "Fillcolor" : "",
1334
+ "Color" : "",
1335
+ "label" : "MBOAT1",
1336
+ "Label_size" : 30,
1337
+ "shared_name" : "MBOAT1",
1338
+ "LabelFont" : "",
1339
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000038732.svg",
1340
+ "pathpng" : "http://localhost:9000/png?str2=(MBOAT1).png",
1341
+ "name" : "MBOAT1",
1342
+ "Ensembl_ID" : "ENSMUSG00000038732",
1343
+ "SUID" : 1935,
1344
+ "Height" : 140,
1345
+ "Width" : 140,
1346
+ "selected" : false
1347
+ },
1348
+ "position" : {
1349
+ "x" : -644.0,
1350
+ "y" : 695.0
1351
+ },
1352
+ "selected" : false
1353
+ }, {
1354
+ "data" : {
1355
+ "id" : "1933",
1356
+ "Shape" : "",
1357
+ "Fillcolor" : "",
1358
+ "Color" : "",
1359
+ "label" : "MBOAT2",
1360
+ "Label_size" : 30,
1361
+ "shared_name" : "MBOAT2",
1362
+ "LabelFont" : "",
1363
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000020646.svg",
1364
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
1365
+ "name" : "MBOAT2",
1366
+ "Ensembl_ID" : "ENSMUSG00000020646",
1367
+ "SUID" : 1933,
1368
+ "Height" : 140,
1369
+ "Width" : 140,
1370
+ "selected" : false
1371
+ },
1372
+ "position" : {
1373
+ "x" : -645.0,
1374
+ "y" : 840.0
1375
+ },
1376
+ "selected" : false
1377
+ }, {
1378
+ "data" : {
1379
+ "id" : "1902",
1380
+ "NumChildren" : 4,
1381
+ "Shape" : "",
1382
+ "Fillcolor" : "",
1383
+ "Color" : "",
1384
+ "label" : "",
1385
+ "Label_size" : 1,
1386
+ "shared_name" : "Group6",
1387
+ "LabelFont" : "",
1388
+ "path" : "http://localhost:9000/plot?str1=Group6.svg",
1389
+ "NumDescendents" : 4,
1390
+ "pathpng" : "http://localhost:9000/png?str2=(Group6).png",
1391
+ "name" : "",
1392
+ "Ensembl_ID" : "",
1393
+ "SUID" : 1902,
1394
+ "Height" : 1,
1395
+ "Width" : 1,
1396
+ "selected" : false
1397
+ },
1398
+ "position" : {
1399
+ "x" : -645.5,
1400
+ "y" : 616.5
1401
+ },
1402
+ "selected" : false
1403
+ }, {
1404
+ "data" : {
1405
+ "id" : "1900",
1406
+ "Shape" : "Ellipse",
1407
+ "Fillcolor" : "#ffffff",
1408
+ "Color" : "",
1409
+ "label" : "",
1410
+ "Label_size" : 1,
1411
+ "shared_name" : "Node1",
1412
+ "LabelFont" : "",
1413
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1414
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1415
+ "name" : "Node1",
1416
+ "Ensembl_ID" : "",
1417
+ "SUID" : 1900,
1418
+ "Height" : 1,
1419
+ "Width" : 1,
1420
+ "selected" : false
1421
+ },
1422
+ "position" : {
1423
+ "x" : -498.6028452985973,
1424
+ "y" : 612.5473960844482
1425
+ },
1426
+ "selected" : false
1427
+ }, {
1428
+ "data" : {
1429
+ "id" : "1877",
1430
+ "Shape" : "",
1431
+ "Fillcolor" : "",
1432
+ "Color" : "",
1433
+ "label" : "LPCAT1",
1434
+ "Label_size" : 30,
1435
+ "shared_name" : "LPCAT1",
1436
+ "LabelFont" : "",
1437
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000021608.svg",
1438
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT1).png",
1439
+ "name" : "LPCAT1",
1440
+ "Ensembl_ID" : "ENSMUSG00000021608",
1441
+ "SUID" : 1877,
1442
+ "Height" : 140,
1443
+ "Width" : 140,
1444
+ "selected" : false
1445
+ },
1446
+ "position" : {
1447
+ "x" : -1166.7072949162507,
1448
+ "y" : 328.2437694975047
1449
+ },
1450
+ "selected" : false
1451
+ }, {
1452
+ "data" : {
1453
+ "id" : "1883",
1454
+ "Shape" : "",
1455
+ "Fillcolor" : "",
1456
+ "Color" : "",
1457
+ "label" : "LPCAT2",
1458
+ "Label_size" : 30,
1459
+ "shared_name" : "LPCAT2",
1460
+ "LabelFont" : "",
1461
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000033192.svg",
1462
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT2).png",
1463
+ "name" : "LPCAT2",
1464
+ "Ensembl_ID" : "ENSMUSG00000033192",
1465
+ "SUID" : 1883,
1466
+ "Height" : 140,
1467
+ "Width" : 140,
1468
+ "selected" : false
1469
+ },
1470
+ "position" : {
1471
+ "x" : -1166.0,
1472
+ "y" : 472.0
1473
+ },
1474
+ "selected" : false
1475
+ }, {
1476
+ "data" : {
1477
+ "id" : "1881",
1478
+ "Shape" : "",
1479
+ "Fillcolor" : "",
1480
+ "Color" : "",
1481
+ "label" : "LPCAT3",
1482
+ "Label_size" : 30,
1483
+ "shared_name" : "LPCAT3",
1484
+ "LabelFont" : "",
1485
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000004270.svg",
1486
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT3).png",
1487
+ "name" : "LPCAT3",
1488
+ "Ensembl_ID" : "ENSMUSG00000004270",
1489
+ "SUID" : 1881,
1490
+ "Height" : 140,
1491
+ "Width" : 140,
1492
+ "selected" : false
1493
+ },
1494
+ "position" : {
1495
+ "x" : -1165.2975525257189,
1496
+ "y" : 621.4682983161874
1497
+ },
1498
+ "selected" : false
1499
+ }, {
1500
+ "data" : {
1501
+ "id" : "1875",
1502
+ "Shape" : "",
1503
+ "Fillcolor" : "",
1504
+ "Color" : "",
1505
+ "label" : "LPCAT4",
1506
+ "Label_size" : 30,
1507
+ "shared_name" : "LPCAT4",
1508
+ "LabelFont" : "",
1509
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000027134.svg",
1510
+ "pathpng" : "http://localhost:9000/png?str2=(LPCAT4).png",
1511
+ "name" : "LPCAT4",
1512
+ "Ensembl_ID" : "ENSMUSG00000027134",
1513
+ "SUID" : 1875,
1514
+ "Height" : 140,
1515
+ "Width" : 140,
1516
+ "selected" : false
1517
+ },
1518
+ "position" : {
1519
+ "x" : -1166.5317016838126,
1520
+ "y" : 770.1707457904686
1521
+ },
1522
+ "selected" : false
1523
+ }, {
1524
+ "data" : {
1525
+ "id" : "1879",
1526
+ "Shape" : "",
1527
+ "Fillcolor" : "",
1528
+ "Color" : "",
1529
+ "label" : "MBOAT2",
1530
+ "Label_size" : 30,
1531
+ "shared_name" : "MBOAT2",
1532
+ "LabelFont" : "",
1533
+ "path" : "http://localhost:9000/plot?str1=ENSMUSG00000020646.svg",
1534
+ "pathpng" : "http://localhost:9000/png?str2=(MBOAT2).png",
1535
+ "name" : "MBOAT2",
1536
+ "Ensembl_ID" : "ENSMUSG00000020646",
1537
+ "SUID" : 1879,
1538
+ "Height" : 140,
1539
+ "Width" : 140,
1540
+ "selected" : false
1541
+ },
1542
+ "position" : {
1543
+ "x" : -1165.7658508419063,
1544
+ "y" : 917.4682983161874
1545
+ },
1546
+ "selected" : false
1547
+ }, {
1548
+ "data" : {
1549
+ "id" : "1846",
1550
+ "NumChildren" : 5,
1551
+ "Shape" : "",
1552
+ "Fillcolor" : "",
1553
+ "Color" : "",
1554
+ "label" : "",
1555
+ "Label_size" : 1,
1556
+ "shared_name" : "Group7",
1557
+ "LabelFont" : "",
1558
+ "path" : "http://localhost:9000/plot?str1=Group7.svg",
1559
+ "NumDescendents" : 5,
1560
+ "pathpng" : "http://localhost:9000/png?str2=(Group7).png",
1561
+ "name" : "",
1562
+ "Ensembl_ID" : "",
1563
+ "SUID" : 1846,
1564
+ "Height" : 1,
1565
+ "Width" : 1,
1566
+ "selected" : false
1567
+ },
1568
+ "position" : {
1569
+ "x" : -1166.0024237209848,
1570
+ "y" : 622.856033906846
1571
+ },
1572
+ "selected" : false
1573
+ }, {
1574
+ "data" : {
1575
+ "id" : "1844",
1576
+ "Shape" : "Ellipse",
1577
+ "Fillcolor" : "#ffffff",
1578
+ "Color" : "",
1579
+ "label" : "",
1580
+ "Label_size" : 1,
1581
+ "shared_name" : "Node1",
1582
+ "LabelFont" : "",
1583
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1584
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1585
+ "name" : "Node1",
1586
+ "Ensembl_ID" : "",
1587
+ "SUID" : 1844,
1588
+ "Height" : 1,
1589
+ "Width" : 1,
1590
+ "selected" : false
1591
+ },
1592
+ "position" : {
1593
+ "x" : -1008.2308324449074,
1594
+ "y" : 621.4062849319714
1595
+ },
1596
+ "selected" : false
1597
+ }, {
1598
+ "data" : {
1599
+ "id" : "1842",
1600
+ "Shape" : "",
1601
+ "Fillcolor" : "",
1602
+ "Color" : "",
1603
+ "label" : "PLA2",
1604
+ "Label_size" : 30,
1605
+ "shared_name" : "PLA2",
1606
+ "LabelFont" : "",
1607
+ "path" : "http://localhost:9000/plot?str1=PLA2.svg",
1608
+ "pathpng" : "http://localhost:9000/png?str2=(PLA2).png",
1609
+ "name" : "PLA2",
1610
+ "Ensembl_ID" : "",
1611
+ "SUID" : 1842,
1612
+ "Height" : 140,
1613
+ "Width" : 140,
1614
+ "selected" : false
1615
+ },
1616
+ "position" : {
1617
+ "x" : 1573.4187714213497,
1618
+ "y" : 574.1173632836538
1619
+ },
1620
+ "selected" : false
1621
+ }, {
1622
+ "data" : {
1623
+ "id" : "1840",
1624
+ "Shape" : "Ellipse",
1625
+ "Fillcolor" : "#ffffff",
1626
+ "Color" : "",
1627
+ "label" : "",
1628
+ "Label_size" : 1,
1629
+ "shared_name" : "Node1",
1630
+ "LabelFont" : "",
1631
+ "path" : "http://localhost:9000/plot?str1=Node1.svg",
1632
+ "pathpng" : "http://localhost:9000/png?str2=(Node1).png",
1633
+ "name" : "Node1",
1634
+ "Ensembl_ID" : "",
1635
+ "SUID" : 1840,
1636
+ "Height" : 1,
1637
+ "Width" : 1,
1638
+ "selected" : false
1639
+ },
1640
+ "position" : {
1641
+ "x" : 1294.4207456949275,
1642
+ "y" : 578.4252070476188
1643
+ },
1644
+ "selected" : false
1645
+ } ],
1646
+ "edges" : [ {
1647
+ "data" : {
1648
+ "id" : "9738",
1649
+ "source" : "9718",
1650
+ "target" : "2568",
1651
+ "shared_name" : "Node1 (interacts with) PS",
1652
+ "name" : "Node1 (interacts with) PS",
1653
+ "interaction" : "interacts with",
1654
+ "SUID" : 9738,
1655
+ "shared_interaction" : "interacts with",
1656
+ "selected" : false
1657
+ },
1658
+ "selected" : false
1659
+ }, {
1660
+ "data" : {
1661
+ "id" : "9732",
1662
+ "source" : "9712",
1663
+ "target" : "9718",
1664
+ "shared_name" : "Node1 (interacts with) Node1",
1665
+ "name" : "Node1 (interacts with) Node1",
1666
+ "interaction" : "interacts with",
1667
+ "SUID" : 9732,
1668
+ "shared_interaction" : "interacts with",
1669
+ "selected" : false
1670
+ },
1671
+ "selected" : false
1672
+ }, {
1673
+ "data" : {
1674
+ "id" : "2846",
1675
+ "source" : "2766",
1676
+ "target" : "2568",
1677
+ "shared_name" : "CDP-DAG (interacts with) PS",
1678
+ "name" : "CDP-DAG (interacts with) PS",
1679
+ "interaction" : "interacts with",
1680
+ "SUID" : 2846,
1681
+ "shared_interaction" : "interacts with",
1682
+ "selected" : false
1683
+ },
1684
+ "selected" : false
1685
+ }, {
1686
+ "data" : {
1687
+ "id" : "2844",
1688
+ "source" : "2766",
1689
+ "target" : "2535",
1690
+ "shared_name" : "CDP-DAG (interacts with) PI",
1691
+ "name" : "CDP-DAG (interacts with) PI",
1692
+ "interaction" : "interacts with",
1693
+ "SUID" : 2844,
1694
+ "shared_interaction" : "interacts with",
1695
+ "selected" : false
1696
+ },
1697
+ "selected" : false
1698
+ }, {
1699
+ "data" : {
1700
+ "id" : "2842",
1701
+ "source" : "2766",
1702
+ "target" : "2502",
1703
+ "shared_name" : "CDP-DAG (interacts with) PG",
1704
+ "name" : "CDP-DAG (interacts with) PG",
1705
+ "interaction" : "interacts with",
1706
+ "SUID" : 2842,
1707
+ "shared_interaction" : "interacts with",
1708
+ "selected" : false
1709
+ },
1710
+ "selected" : false
1711
+ }, {
1712
+ "data" : {
1713
+ "id" : "2840",
1714
+ "source" : "2733",
1715
+ "target" : "2700",
1716
+ "shared_name" : "G3P (interacts with) LPA",
1717
+ "name" : "G3P (interacts with) LPA",
1718
+ "interaction" : "interacts with",
1719
+ "SUID" : 2840,
1720
+ "shared_interaction" : "interacts with",
1721
+ "selected" : false
1722
+ },
1723
+ "selected" : false
1724
+ }, {
1725
+ "data" : {
1726
+ "id" : "2838",
1727
+ "source" : "2700",
1728
+ "target" : "2667",
1729
+ "shared_name" : "LPA (interacts with) PA",
1730
+ "name" : "LPA (interacts with) PA",
1731
+ "interaction" : "interacts with",
1732
+ "SUID" : 2838,
1733
+ "shared_interaction" : "interacts with",
1734
+ "selected" : false
1735
+ },
1736
+ "selected" : false
1737
+ }, {
1738
+ "data" : {
1739
+ "id" : "2836",
1740
+ "source" : "2667",
1741
+ "target" : "2766",
1742
+ "shared_name" : "PA (interacts with) CDP-DAG",
1743
+ "name" : "PA (interacts with) CDP-DAG",
1744
+ "interaction" : "interacts with",
1745
+ "SUID" : 2836,
1746
+ "shared_interaction" : "interacts with",
1747
+ "selected" : false
1748
+ },
1749
+ "selected" : false
1750
+ }, {
1751
+ "data" : {
1752
+ "id" : "2834",
1753
+ "source" : "2667",
1754
+ "target" : "2634",
1755
+ "shared_name" : "PA (interacts with) DG",
1756
+ "name" : "PA (interacts with) DG",
1757
+ "interaction" : "interacts with",
1758
+ "SUID" : 2834,
1759
+ "shared_interaction" : "interacts with",
1760
+ "selected" : false
1761
+ },
1762
+ "selected" : false
1763
+ }, {
1764
+ "data" : {
1765
+ "id" : "2832",
1766
+ "source" : "2634",
1767
+ "target" : "2601",
1768
+ "shared_name" : "DG (interacts with) TG",
1769
+ "name" : "DG (interacts with) TG",
1770
+ "interaction" : "interacts with",
1771
+ "SUID" : 2832,
1772
+ "shared_interaction" : "interacts with",
1773
+ "selected" : false
1774
+ },
1775
+ "selected" : false
1776
+ }, {
1777
+ "data" : {
1778
+ "id" : "2830",
1779
+ "source" : "2634",
1780
+ "target" : "2304",
1781
+ "shared_name" : "DG (interacts with) PE",
1782
+ "name" : "DG (interacts with) PE",
1783
+ "interaction" : "interacts with",
1784
+ "SUID" : 2830,
1785
+ "shared_interaction" : "interacts with",
1786
+ "selected" : false
1787
+ },
1788
+ "selected" : false
1789
+ }, {
1790
+ "data" : {
1791
+ "id" : "2828",
1792
+ "source" : "2634",
1793
+ "target" : "2238",
1794
+ "shared_name" : "DG (interacts with) PC",
1795
+ "name" : "DG (interacts with) PC",
1796
+ "interaction" : "interacts with",
1797
+ "SUID" : 2828,
1798
+ "shared_interaction" : "interacts with",
1799
+ "selected" : false
1800
+ },
1801
+ "selected" : false
1802
+ }, {
1803
+ "data" : {
1804
+ "id" : "2826",
1805
+ "source" : "2568",
1806
+ "target" : "2337",
1807
+ "shared_name" : "PS (interacts with) LPS",
1808
+ "name" : "PS (interacts with) LPS",
1809
+ "interaction" : "interacts with",
1810
+ "SUID" : 2826,
1811
+ "shared_interaction" : "interacts with",
1812
+ "selected" : false
1813
+ },
1814
+ "selected" : false
1815
+ }, {
1816
+ "data" : {
1817
+ "id" : "2824",
1818
+ "source" : "2535",
1819
+ "target" : "2370",
1820
+ "shared_name" : "PI (interacts with) LPI",
1821
+ "name" : "PI (interacts with) LPI",
1822
+ "interaction" : "interacts with",
1823
+ "SUID" : 2824,
1824
+ "shared_interaction" : "interacts with",
1825
+ "selected" : false
1826
+ },
1827
+ "selected" : false
1828
+ }, {
1829
+ "data" : {
1830
+ "id" : "2822",
1831
+ "source" : "2502",
1832
+ "target" : "2469",
1833
+ "shared_name" : "PG (interacts with) CL",
1834
+ "name" : "PG (interacts with) CL",
1835
+ "interaction" : "interacts with",
1836
+ "SUID" : 2822,
1837
+ "shared_interaction" : "interacts with",
1838
+ "selected" : false
1839
+ },
1840
+ "selected" : false
1841
+ }, {
1842
+ "data" : {
1843
+ "id" : "2820",
1844
+ "source" : "2502",
1845
+ "target" : "2403",
1846
+ "shared_name" : "PG (interacts with) PG",
1847
+ "name" : "PG (interacts with) PG",
1848
+ "interaction" : "interacts with",
1849
+ "SUID" : 2820,
1850
+ "shared_interaction" : "interacts with",
1851
+ "selected" : false
1852
+ },
1853
+ "selected" : false
1854
+ }, {
1855
+ "data" : {
1856
+ "id" : "2818",
1857
+ "source" : "2469",
1858
+ "target" : "2436",
1859
+ "shared_name" : "CL (interacts with) LCL",
1860
+ "name" : "CL (interacts with) LCL",
1861
+ "interaction" : "interacts with",
1862
+ "SUID" : 2818,
1863
+ "shared_interaction" : "interacts with",
1864
+ "selected" : false
1865
+ },
1866
+ "selected" : false
1867
+ }, {
1868
+ "data" : {
1869
+ "id" : "2816",
1870
+ "source" : "2436",
1871
+ "target" : "2094",
1872
+ "shared_name" : "LCL (interacts with) Node1",
1873
+ "name" : "LCL (interacts with) Node1",
1874
+ "interaction" : "interacts with",
1875
+ "SUID" : 2816,
1876
+ "shared_interaction" : "interacts with",
1877
+ "selected" : false
1878
+ },
1879
+ "selected" : false
1880
+ }, {
1881
+ "data" : {
1882
+ "id" : "2814",
1883
+ "source" : "2403",
1884
+ "target" : "2043",
1885
+ "shared_name" : "LPG (interacts with) Node1",
1886
+ "name" : "LPG (interacts with) Node1",
1887
+ "interaction" : "interacts with",
1888
+ "SUID" : 2814,
1889
+ "shared_interaction" : "interacts with",
1890
+ "selected" : false
1891
+ },
1892
+ "selected" : false
1893
+ }, {
1894
+ "data" : {
1895
+ "id" : "2812",
1896
+ "source" : "2370",
1897
+ "target" : "1997",
1898
+ "shared_name" : "LPI (interacts with) Node1",
1899
+ "name" : "LPI (interacts with) Node1",
1900
+ "interaction" : "interacts with",
1901
+ "SUID" : 2812,
1902
+ "shared_interaction" : "interacts with",
1903
+ "selected" : false
1904
+ },
1905
+ "selected" : false
1906
+ }, {
1907
+ "data" : {
1908
+ "id" : "2810",
1909
+ "source" : "2337",
1910
+ "target" : "1951",
1911
+ "shared_name" : "LPS (interacts with) Node1",
1912
+ "name" : "LPS (interacts with) Node1",
1913
+ "interaction" : "interacts with",
1914
+ "SUID" : 2810,
1915
+ "shared_interaction" : "interacts with",
1916
+ "selected" : false
1917
+ },
1918
+ "selected" : false
1919
+ }, {
1920
+ "data" : {
1921
+ "id" : "2808",
1922
+ "source" : "2304",
1923
+ "target" : "2568",
1924
+ "shared_name" : "PE (interacts with) PS",
1925
+ "name" : "PE (interacts with) PS",
1926
+ "interaction" : "interacts with",
1927
+ "SUID" : 2808,
1928
+ "shared_interaction" : "interacts with",
1929
+ "selected" : false
1930
+ },
1931
+ "selected" : false
1932
+ }, {
1933
+ "data" : {
1934
+ "id" : "2806",
1935
+ "source" : "2304",
1936
+ "target" : "2271",
1937
+ "shared_name" : "PE (interacts with) LPE",
1938
+ "name" : "PE (interacts with) LPE",
1939
+ "interaction" : "interacts with",
1940
+ "SUID" : 2806,
1941
+ "shared_interaction" : "interacts with",
1942
+ "selected" : false
1943
+ },
1944
+ "selected" : false
1945
+ }, {
1946
+ "data" : {
1947
+ "id" : "2804",
1948
+ "source" : "2271",
1949
+ "target" : "1900",
1950
+ "shared_name" : "LPE (interacts with) Node1",
1951
+ "name" : "LPE (interacts with) Node1",
1952
+ "interaction" : "interacts with",
1953
+ "SUID" : 2804,
1954
+ "shared_interaction" : "interacts with",
1955
+ "selected" : false
1956
+ },
1957
+ "selected" : false
1958
+ }, {
1959
+ "data" : {
1960
+ "id" : "9726",
1961
+ "source" : "2238",
1962
+ "target" : "9712",
1963
+ "shared_name" : "PC (interacts with) Node1",
1964
+ "name" : "PC (interacts with) Node1",
1965
+ "interaction" : "interacts with",
1966
+ "SUID" : 9726,
1967
+ "shared_interaction" : "interacts with",
1968
+ "selected" : false
1969
+ },
1970
+ "selected" : false
1971
+ }, {
1972
+ "data" : {
1973
+ "id" : "2800",
1974
+ "source" : "2238",
1975
+ "target" : "2205",
1976
+ "shared_name" : "PC (interacts with) LPC",
1977
+ "name" : "PC (interacts with) LPC",
1978
+ "interaction" : "interacts with",
1979
+ "SUID" : 2800,
1980
+ "shared_interaction" : "interacts with",
1981
+ "selected" : false
1982
+ },
1983
+ "selected" : false
1984
+ }, {
1985
+ "data" : {
1986
+ "id" : "2798",
1987
+ "source" : "2205",
1988
+ "target" : "1844",
1989
+ "shared_name" : "LPC (interacts with) Node1",
1990
+ "name" : "LPC (interacts with) Node1",
1991
+ "interaction" : "interacts with",
1992
+ "SUID" : 2798,
1993
+ "shared_interaction" : "interacts with",
1994
+ "selected" : false
1995
+ },
1996
+ "selected" : false
1997
+ }, {
1998
+ "data" : {
1999
+ "id" : "2796",
2000
+ "source" : "2164",
2001
+ "target" : "2162",
2002
+ "shared_name" : "Group1 (interacts with) Node1",
2003
+ "name" : "Group1 (interacts with) Node1",
2004
+ "interaction" : "interacts with",
2005
+ "SUID" : 2796,
2006
+ "shared_interaction" : "interacts with",
2007
+ "selected" : false
2008
+ },
2009
+ "selected" : false
2010
+ }, {
2011
+ "data" : {
2012
+ "id" : "2794",
2013
+ "source" : "2118",
2014
+ "target" : "2116",
2015
+ "shared_name" : "Group2 (interacts with) Node1",
2016
+ "name" : "Group2 (interacts with) Node1",
2017
+ "interaction" : "interacts with",
2018
+ "SUID" : 2794,
2019
+ "shared_interaction" : "interacts with",
2020
+ "selected" : false
2021
+ },
2022
+ "selected" : false
2023
+ }, {
2024
+ "data" : {
2025
+ "id" : "2792",
2026
+ "source" : "2096",
2027
+ "target" : "2094",
2028
+ "shared_name" : "LCCAT1 (interacts with) Node1",
2029
+ "name" : "LCCAT1 (interacts with) Node1",
2030
+ "interaction" : "interacts with",
2031
+ "SUID" : 2792,
2032
+ "shared_interaction" : "interacts with",
2033
+ "selected" : false
2034
+ },
2035
+ "selected" : false
2036
+ }, {
2037
+ "data" : {
2038
+ "id" : "2790",
2039
+ "source" : "2094",
2040
+ "target" : "2469",
2041
+ "shared_name" : "Node1 (interacts with) CL",
2042
+ "name" : "Node1 (interacts with) CL",
2043
+ "interaction" : "interacts with",
2044
+ "SUID" : 2790,
2045
+ "shared_interaction" : "interacts with",
2046
+ "selected" : false
2047
+ },
2048
+ "selected" : false
2049
+ }, {
2050
+ "data" : {
2051
+ "id" : "2788",
2052
+ "source" : "2045",
2053
+ "target" : "2043",
2054
+ "shared_name" : "Group3 (interacts with) Node1",
2055
+ "name" : "Group3 (interacts with) Node1",
2056
+ "interaction" : "interacts with",
2057
+ "SUID" : 2788,
2058
+ "shared_interaction" : "interacts with",
2059
+ "selected" : false
2060
+ },
2061
+ "selected" : false
2062
+ }, {
2063
+ "data" : {
2064
+ "id" : "2786",
2065
+ "source" : "2043",
2066
+ "target" : "2502",
2067
+ "shared_name" : "Node1 (interacts with) PG",
2068
+ "name" : "Node1 (interacts with) PG",
2069
+ "interaction" : "interacts with",
2070
+ "SUID" : 2786,
2071
+ "shared_interaction" : "interacts with",
2072
+ "selected" : false
2073
+ },
2074
+ "selected" : false
2075
+ }, {
2076
+ "data" : {
2077
+ "id" : "2784",
2078
+ "source" : "1999",
2079
+ "target" : "1997",
2080
+ "shared_name" : "Group4 (interacts with) Node1",
2081
+ "name" : "Group4 (interacts with) Node1",
2082
+ "interaction" : "interacts with",
2083
+ "SUID" : 2784,
2084
+ "shared_interaction" : "interacts with",
2085
+ "selected" : false
2086
+ },
2087
+ "selected" : false
2088
+ }, {
2089
+ "data" : {
2090
+ "id" : "2782",
2091
+ "source" : "1997",
2092
+ "target" : "2535",
2093
+ "shared_name" : "Node1 (interacts with) PI",
2094
+ "name" : "Node1 (interacts with) PI",
2095
+ "interaction" : "interacts with",
2096
+ "SUID" : 2782,
2097
+ "shared_interaction" : "interacts with",
2098
+ "selected" : false
2099
+ },
2100
+ "selected" : false
2101
+ }, {
2102
+ "data" : {
2103
+ "id" : "2780",
2104
+ "source" : "1953",
2105
+ "target" : "1951",
2106
+ "shared_name" : "Group5 (interacts with) Node1",
2107
+ "name" : "Group5 (interacts with) Node1",
2108
+ "interaction" : "interacts with",
2109
+ "SUID" : 2780,
2110
+ "shared_interaction" : "interacts with",
2111
+ "selected" : false
2112
+ },
2113
+ "selected" : false
2114
+ }, {
2115
+ "data" : {
2116
+ "id" : "2778",
2117
+ "source" : "1951",
2118
+ "target" : "2568",
2119
+ "shared_name" : "Node1 (interacts with) PS",
2120
+ "name" : "Node1 (interacts with) PS",
2121
+ "interaction" : "interacts with",
2122
+ "SUID" : 2778,
2123
+ "shared_interaction" : "interacts with",
2124
+ "selected" : false
2125
+ },
2126
+ "selected" : false
2127
+ }, {
2128
+ "data" : {
2129
+ "id" : "2776",
2130
+ "source" : "1902",
2131
+ "target" : "1900",
2132
+ "shared_name" : "Group6 (interacts with) Node1",
2133
+ "name" : "Group6 (interacts with) Node1",
2134
+ "interaction" : "interacts with",
2135
+ "SUID" : 2776,
2136
+ "shared_interaction" : "interacts with",
2137
+ "selected" : false
2138
+ },
2139
+ "selected" : false
2140
+ }, {
2141
+ "data" : {
2142
+ "id" : "2774",
2143
+ "source" : "1900",
2144
+ "target" : "2304",
2145
+ "shared_name" : "Node1 (interacts with) PE",
2146
+ "name" : "Node1 (interacts with) PE",
2147
+ "interaction" : "interacts with",
2148
+ "SUID" : 2774,
2149
+ "shared_interaction" : "interacts with",
2150
+ "selected" : false
2151
+ },
2152
+ "selected" : false
2153
+ }, {
2154
+ "data" : {
2155
+ "id" : "2772",
2156
+ "source" : "1846",
2157
+ "target" : "1844",
2158
+ "shared_name" : "Group7 (interacts with) Node1",
2159
+ "name" : "Group7 (interacts with) Node1",
2160
+ "interaction" : "interacts with",
2161
+ "SUID" : 2772,
2162
+ "shared_interaction" : "interacts with",
2163
+ "selected" : false
2164
+ },
2165
+ "selected" : false
2166
+ }, {
2167
+ "data" : {
2168
+ "id" : "2770",
2169
+ "source" : "1844",
2170
+ "target" : "2238",
2171
+ "shared_name" : "Node1 (interacts with) PC",
2172
+ "name" : "Node1 (interacts with) PC",
2173
+ "interaction" : "interacts with",
2174
+ "SUID" : 2770,
2175
+ "shared_interaction" : "interacts with",
2176
+ "selected" : false
2177
+ },
2178
+ "selected" : false
2179
+ }, {
2180
+ "data" : {
2181
+ "id" : "2768",
2182
+ "source" : "1842",
2183
+ "target" : "1840",
2184
+ "shared_name" : "Node1 (interacts with) Node1",
2185
+ "name" : "Node1 (interacts with) Node1",
2186
+ "interaction" : "interacts with",
2187
+ "SUID" : 2768,
2188
+ "shared_interaction" : "interacts with",
2189
+ "selected" : false
2190
+ },
2191
+ "selected" : false
2192
+ } ]
2193
+ }
2194
+ }
app/data/styles.xml ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <vizmap id="VizMap-2024_10_23-17_45" documentVersion="3.1">
3
+ <visualStyle name="default_1_0">
4
+ <network>
5
+ <visualProperty default="" name="NETWORK_TITLE"/>
6
+ <visualProperty default="#FFFFFF" name="NETWORK_BACKGROUND_PAINT"/>
7
+ <visualProperty default="0.0" name="NETWORK_DEPTH"/>
8
+ <visualProperty default="550.0" name="NETWORK_WIDTH"/>
9
+ <visualProperty default="0.0" name="NETWORK_CENTER_X_LOCATION"/>
10
+ <visualProperty default="true" name="NETWORK_NODE_SELECTION"/>
11
+ <visualProperty default="0.0" name="NETWORK_CENTER_Y_LOCATION"/>
12
+ <visualProperty default="1.0" name="NETWORK_SCALE_FACTOR"/>
13
+ <visualProperty default="false" name="NETWORK_FORCE_HIGH_DETAIL"/>
14
+ <visualProperty default="550.0" name="NETWORK_SIZE"/>
15
+ <visualProperty default="false" name="NETWORK_NODE_LABEL_SELECTION"/>
16
+ <visualProperty default="400.0" name="NETWORK_HEIGHT"/>
17
+ <visualProperty default="false" name="NETWORK_ANNOTATION_SELECTION"/>
18
+ <visualProperty default="true" name="NETWORK_EDGE_SELECTION"/>
19
+ <visualProperty default="0.0" name="NETWORK_CENTER_Z_LOCATION"/>
20
+ </network>
21
+ <node>
22
+ <dependency value="true" name="nodeCustomGraphicsSizeSync"/>
23
+ <dependency value="false" name="nodeSizeLocked"/>
24
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_2"/>
25
+ <visualProperty default="140.0" name="NODE_HEIGHT">
26
+ <passthroughMapping attributeName="Height" attributeType="float"/>
27
+ </visualProperty>
28
+ <visualProperty default="" name="NODE_TOOLTIP"/>
29
+ <visualProperty default="SOLID" name="NODE_BORDER_STROKE"/>
30
+ <visualProperty default="N,N,c,0.00,0.00" name="NODE_LABEL_POSITION"/>
31
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_1, name=Node Custom Paint 1)" name="NODE_CUSTOMPAINT_1"/>
32
+ <visualProperty default="0.0" name="NODE_LABEL_ROTATION"/>
33
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_9"/>
34
+ <visualProperty default="#1E90FF" name="NODE_PAINT"/>
35
+ <visualProperty default="35.0" name="NODE_SIZE"/>
36
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_4, name=Node Custom Paint 4)" name="NODE_CUSTOMPAINT_4"/>
37
+ <visualProperty default="5.0" name="NODE_BORDER_WIDTH"/>
38
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_3"/>
39
+ <visualProperty default="255" name="NODE_TRANSPARENCY"/>
40
+ <visualProperty default="true" name="NODE_NESTED_NETWORK_IMAGE_VISIBLE"/>
41
+ <visualProperty default="10.0" name="COMPOUND_NODE_PADDING"/>
42
+ <visualProperty default="" name="NODE_LABEL">
43
+ <passthroughMapping attributeName="label" attributeType="string"/>
44
+ </visualProperty>
45
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_3, name=Node Custom Paint 3)" name="NODE_CUSTOMPAINT_3"/>
46
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_4"/>
47
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_3"/>
48
+ <visualProperty default="NONE" name="NODE_LABEL_BACKGROUND_SHAPE"/>
49
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_8"/>
50
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_9"/>
51
+ <visualProperty default="0.0" name="NODE_Y_LOCATION"/>
52
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_5"/>
53
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_5, name=Node Custom Paint 5)" name="NODE_CUSTOMPAINT_5"/>
54
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_5"/>
55
+ <visualProperty default="#F7FCF5" name="NODE_FILL_COLOR"/>
56
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_8"/>
57
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_5"/>
58
+ <visualProperty default="#B6B6B6" name="NODE_LABEL_BACKGROUND_COLOR"/>
59
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_2, name=Node Custom Paint 2)" name="NODE_CUSTOMPAINT_2"/>
60
+ <visualProperty default="140.0" name="NODE_WIDTH">
61
+ <passthroughMapping attributeName="Width" attributeType="float"/>
62
+ </visualProperty>
63
+ <visualProperty default="RECTANGLE" name="NODE_SHAPE"/>
64
+ <visualProperty default="255" name="NODE_LABEL_TRANSPARENCY"/>
65
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_8, name=Node Custom Paint 8)" name="NODE_CUSTOMPAINT_8"/>
66
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_1"/>
67
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_4"/>
68
+ <visualProperty default="255" name="NODE_BORDER_TRANSPARENCY"/>
69
+ <visualProperty default="#000000" name="NODE_LABEL_COLOR"/>
70
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_7, name=Node Custom Paint 7)" name="NODE_CUSTOMPAINT_7"/>
71
+ <visualProperty default="200.0" name="NODE_LABEL_WIDTH"/>
72
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_6"/>
73
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_7"/>
74
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_1"/>
75
+ <visualProperty default="#FFFF00" name="NODE_SELECTED_PAINT"/>
76
+ <visualProperty default="#252525" name="NODE_BORDER_PAINT"/>
77
+ <visualProperty default="ROUND_RECTANGLE" name="COMPOUND_NODE_SHAPE"/>
78
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_6"/>
79
+ <visualProperty default="SansSerif.plain,plain,12" name="NODE_LABEL_FONT_FACE"/>
80
+ <visualProperty default="true" name="NODE_VISIBLE"/>
81
+ <visualProperty default="0.0" name="NODE_Z_LOCATION"/>
82
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_2"/>
83
+ <visualProperty default="0.0" name="NODE_DEPTH"/>
84
+ <visualProperty default="0.0" name="NODE_X_LOCATION"/>
85
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_9, name=Node Custom Paint 9)" name="NODE_CUSTOMPAINT_9"/>
86
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_2"/>
87
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_4"/>
88
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_7"/>
89
+ <visualProperty default="50.0" name="NODE_CUSTOMGRAPHICS_SIZE_3"/>
90
+ <visualProperty default="255" name="NODE_LABEL_BACKGROUND_TRANSPARENCY"/>
91
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_9"/>
92
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_1">
93
+ <passthroughMapping attributeName="path" attributeType="string"/>
94
+ </visualProperty>
95
+ <visualProperty default="org.cytoscape.cg.model.NullCustomGraphics,0,[ Remove Graphics ]," name="NODE_CUSTOMGRAPHICS_6"/>
96
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_8"/>
97
+ <visualProperty default="15" name="NODE_LABEL_FONT_SIZE"/>
98
+ <visualProperty default="DefaultVisualizableVisualProperty(id=NODE_CUSTOMPAINT_6, name=Node Custom Paint 6)" name="NODE_CUSTOMPAINT_6"/>
99
+ <visualProperty default="false" name="NODE_SELECTED"/>
100
+ <visualProperty default="C,C,c,0.00,0.00" name="NODE_CUSTOMGRAPHICS_POSITION_7"/>
101
+ </node>
102
+ <edge>
103
+ <dependency value="false" name="arrowColorMatchesEdge"/>
104
+ <visualProperty default="NONE" name="EDGE_SOURCE_ARROW_SHAPE"/>
105
+ <visualProperty default="false" name="EDGE_LABEL_AUTOROTATE"/>
106
+ <visualProperty default="#848484" name="EDGE_STROKE_UNSELECTED_PAINT"/>
107
+ <visualProperty default="#FF0000" name="EDGE_SELECTED_PAINT"/>
108
+ <visualProperty default="10" name="EDGE_LABEL_FONT_SIZE"/>
109
+ <visualProperty default="#B6B6B6" name="EDGE_LABEL_BACKGROUND_COLOR"/>
110
+ <visualProperty default="2.0" name="EDGE_WIDTH"/>
111
+ <visualProperty default="0.0" name="EDGE_Z_ORDER"/>
112
+ <visualProperty default="#000000" name="EDGE_SOURCE_ARROW_UNSELECTED_PAINT"/>
113
+ <visualProperty default="6.0" name="EDGE_TARGET_ARROW_SIZE"/>
114
+ <visualProperty default="" name="EDGE_LABEL"/>
115
+ <visualProperty default="200.0" name="EDGE_LABEL_WIDTH"/>
116
+ <visualProperty default="Dialog.plain,plain,10" name="EDGE_LABEL_FONT_FACE"/>
117
+ <visualProperty default="C,C,c,0.00,0.00" name="EDGE_LABEL_POSITION"/>
118
+ <visualProperty default="#000000" name="EDGE_TARGET_ARROW_UNSELECTED_PAINT"/>
119
+ <visualProperty default="#323232" name="EDGE_PAINT"/>
120
+ <visualProperty default="" name="EDGE_BEND"/>
121
+ <visualProperty default="0.0" name="EDGE_LABEL_ROTATION"/>
122
+ <visualProperty default="true" name="EDGE_VISIBLE"/>
123
+ <visualProperty default="" name="EDGE_TOOLTIP"/>
124
+ <visualProperty default="6.0" name="EDGE_SOURCE_ARROW_SIZE"/>
125
+ <visualProperty default="NONE" name="EDGE_TARGET_ARROW_SHAPE"/>
126
+ <visualProperty default="0.5" name="EDGE_STACKING_DENSITY"/>
127
+ <visualProperty default="255" name="EDGE_LABEL_BACKGROUND_TRANSPARENCY"/>
128
+ <visualProperty default="255" name="EDGE_LABEL_TRANSPARENCY"/>
129
+ <visualProperty default="true" name="EDGE_CURVED"/>
130
+ <visualProperty default="#FF0000" name="EDGE_STROKE_SELECTED_PAINT"/>
131
+ <visualProperty default="false" name="EDGE_SELECTED"/>
132
+ <visualProperty default="SOLID" name="EDGE_LINE_TYPE"/>
133
+ <visualProperty default="#404040" name="EDGE_UNSELECTED_PAINT"/>
134
+ <visualProperty default="AUTO_BEND" name="EDGE_STACKING"/>
135
+ <visualProperty default="#000000" name="EDGE_LABEL_COLOR"/>
136
+ <visualProperty default="#FFFF00" name="EDGE_TARGET_ARROW_SELECTED_PAINT"/>
137
+ <visualProperty default="#FFFF00" name="EDGE_SOURCE_ARROW_SELECTED_PAINT"/>
138
+ <visualProperty default="255" name="EDGE_TRANSPARENCY"/>
139
+ <visualProperty default="NONE" name="EDGE_LABEL_BACKGROUND_SHAPE"/>
140
+ </edge>
141
+ </visualStyle>
142
+ </vizmap>
app/plumber.R ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ library(plumber)
3
+
4
+
5
+ # Title
6
+ #* @apiTitle resr4cyjs
7
+ # Description
8
+ #* @apiDescription This is a resr4cyjs API.
9
+ # Version
10
+ #* @apiVersion 0.0.1
11
+ # Tag Description
12
+ #* @apiTag resr4cyjs "resr4cyjs API"
13
+
14
+
15
+ #* @filter cors
16
+ cors <- function(req, res) {
17
+ res$setHeader("Access-Control-Allow-Origin", "*")
18
+ if (req$REQUEST_METHOD == "OPTIONS") {
19
+ res$setHeader("Access-Control-Allow-Methods", "GET")
20
+ res$setHeader(
21
+ "Access-Control-Allow-Headers",
22
+ req$HTTP_ACCESS_CONTROL_REQUEST_HEADERS
23
+ )
24
+ res$status <- 200
25
+ return(list())
26
+ } else {
27
+ plumber::forward()
28
+ }
29
+ }
30
+
31
+
32
+
33
+ #* @serializer contentType list(type="image/svg+xml")
34
+ #* @get /plot
35
+ #* @arg str1
36
+ function(str1) {
37
+ thefolder <- "/srv/app/svg/"
38
+ svg_file_path <- paste(thefolder,str1,sep = "")
39
+ if(file.exists(svg_file_path) == TRUE){
40
+ readBin(svg_file_path, "raw", file.info(svg_file_path)$size)}
41
+ else{
42
+ svg_file_path <- "/srv/app/www/background.svg"
43
+ readBin(svg_file_path, "raw", file.info(svg_file_path)$size)
44
+ }
45
+ }
46
+
47
+
48
+
app/server.R ADDED
@@ -0,0 +1,696 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ validate_dataframe <- function(df, validation_rules = c("structure", "peak_headers", "metadata")
2
+ ) {
3
+ expected_headers <- c(
4
+ "Alignment ID", "Average Rt(min)", "Average Mz", "Metabolite name",
5
+ "Adduct type", "Post curation result", "Fill %", "MS/MS assigned",
6
+ "Reference RT", "Reference m/z", "Formula", "Ontology", "INCHIKEY",
7
+ "SMILES", "Annotation tag (VS1.0)", "RT matched", "m/z matched",
8
+ "MS/MS matched", "Comment", "Manually modified for quantification",
9
+ "Manually modified for annotation", "Isotope tracking parent ID",
10
+ "Isotope tracking weight number", "RT similarity", "m/z similarity",
11
+ "Simple dot product", "Weighted dot product", "Reverse dot product",
12
+ "Matched peaks count", "Matched peaks percentage", "Total score",
13
+ "S/N average", "Spectrum reference file name", "MS1 isotopic spectrum",
14
+ "MS/MS spectrum"
15
+ )
16
+ # Input check
17
+ if (!is.data.frame(df)) {
18
+ stop("Input must be a dataframe")
19
+ }
20
+
21
+ if (!is.character(validation_rules)) {
22
+ stop("validation_rules must be a character vector")
23
+ }
24
+
25
+ if (!all(validation_rules %in% c("structure", "peak_headers", "metadata"))) {
26
+ stop("Invalid validation_rules specified")
27
+ }
28
+
29
+ validation_results <- list()
30
+
31
+ # Check data structure
32
+ if ("structure" %in% validation_rules) {
33
+ if (nrow(df) < 5) {
34
+ validation_results$insufficient_rows <-
35
+ "Data has less than 5 rows. At least 5 rows are required."
36
+ }
37
+ if (ncol(df) < 34) {
38
+ validation_results$insufficient_cols <-
39
+ "Missing 34 columns required for peak information."
40
+ }
41
+ }
42
+
43
+ # Check peak information headers (row 5)
44
+ if ("peak_headers" %in% validation_rules) {
45
+ if (is.null(expected_headers)) {
46
+ stop("expected_headers required for peak_headers validation")
47
+ }
48
+
49
+ if (nrow(df) >= 5) {
50
+ headers <- df[5, 1:min(34, ncol(df))]
51
+ missing_headers <- expected_headers[1:length(headers)][headers != expected_headers[1:length(headers)]]
52
+
53
+ if (length(missing_headers) > 0) {
54
+ validation_results$incorrect_headers <-
55
+ paste("Headers in row 5 differ from expected headers:",
56
+ paste(missing_headers, collapse = ", "))
57
+ }
58
+ }
59
+ }
60
+
61
+ # Check metadata (rows 1-2, columns 35+)
62
+ if ("metadata" %in% validation_rules && ncol(df) > 34) {
63
+ # Check for Sample in columns 36+
64
+ if (ncol(df) > 35) {
65
+ file_types <- df[2, 36:ncol(df)]
66
+ if (!"Sample" %in% file_types) {
67
+ validation_results$no_sample <-
68
+ "'Sample' not found in columns 36 onward"
69
+ }
70
+ }
71
+ }
72
+
73
+ return(validation_results)
74
+ }
75
+
76
+
77
+
78
+
79
+ server <- function(input, output,session) {
80
+ options(shiny.maxRequestSize=150*1024^100)
81
+ originaldir <- reactiveValues(datapath = getwd()) # directry of shiny R script
82
+ global <- reactiveValues(datapath = getwd()) # directory of file path in lipidomics tab
83
+ col = reactiveValues(col = col)
84
+ validation_status <- reactiveVal(FALSE)
85
+ svg_path <- paste(getwd(),"/svg",sep = "")
86
+ host <- session$request$HTTP_HOST %>%
87
+ gsub("http:", "https:", .)
88
+ output$downloadData <- downloadHandler(
89
+ filename = function() {
90
+ "Demo_data.zip" # ダウンロード時のファイル名
91
+ },
92
+ content = function(file) {
93
+ file.copy("./pathwaymap/demodata.zip", file)
94
+ },
95
+ contentType = "application/zip"
96
+ )
97
+ observeEvent(input$filetype,{
98
+ if(input$filetype =="Sample in rows"){
99
+ shinyjs::show("ontfile")
100
+ }else{
101
+ shinyjs::hide("ontfile")
102
+ }
103
+ if(input$ClassorMol =="TRUE"){
104
+ shinyjs::show("X1")
105
+ shinyjs::show("X2")
106
+ }else{
107
+ shinyjs::hide("X1")
108
+ shinyjs::hide("X2")
109
+ }
110
+ })
111
+
112
+ observeEvent(input$ClassorMol,{
113
+ if(input$ClassorMol =="TRUE"){
114
+ shinyjs::show("X1")
115
+ shinyjs::show("X2")
116
+ }else{
117
+ shinyjs::hide("X1")
118
+ shinyjs::hide("X2")
119
+ }
120
+ })
121
+
122
+ observeEvent(input$file1, {
123
+ tryCatch({
124
+ originaldata <- read.csv(input$file1$datapath, header = F, check.names = F, fileEncoding = "UTF-8-BOM")
125
+ }, error = function(e) {
126
+ showNotification(paste("Failed to load the file", e$message), type = "error")
127
+ })
128
+ if(input$filetype == "Sample in rows"){
129
+
130
+ }else if(input$filetype == "MS-DIAL export"){
131
+ validateresults <- validate_dataframe(originaldata, validation_rules = c("structure", "peak_headers", "metadata"))
132
+ if (length(validateresults) == 0) {
133
+ validation_status(TRUE)
134
+ shinyalert(
135
+ "Success",
136
+ "All validation checks passed successfully!",
137
+ type = "success"
138
+ )
139
+ } else {
140
+ validation_status(FALSE)
141
+ error_message <- "<div style='text-align: left;'><strong>Validation Errors:</strong><br><br>"
142
+
143
+ # 各エラーメッセージの処理
144
+ for (error_name in names(validateresults)) {
145
+ error_message <- paste0(
146
+ error_message,
147
+ "<span style='color: #dc3545;'>• ", # 赤色のブレット
148
+ switch(error_name,
149
+ "insufficient_cols" = "<strong>Column Error:</strong> ",
150
+ "incorrect_headers" = "<strong>Header Error:</strong> ",
151
+ "no_sample" = "<strong>Sample Error:</strong> "),
152
+ validateresults[[error_name]],
153
+ "</span><br><br>"
154
+ )
155
+ }
156
+ error_message <- paste0(error_message, "</div>")
157
+
158
+ # エラーメッセージの表示
159
+ shinyalert(
160
+ "Validation Failed",
161
+ html = TRUE,
162
+ text = error_message,
163
+ type = "error",
164
+ size = "l",
165
+ closeOnEsc = TRUE,
166
+ closeOnClickOutside = TRUE,
167
+ showConfirmButton = TRUE,
168
+ confirmButtonText = "OK",
169
+ timer = FALSE
170
+ )
171
+
172
+ }
173
+ }
174
+ observeEvent(input$submit,{
175
+ tryCatch({
176
+ if(input$filetype == "Sample in rows"){
177
+
178
+ Lipidomedata <- processSampleInRows(originaldata, session, input)[[1]]
179
+ lipidont <- read.csv(input$ontfile$datapath, sep = ",", check.names = FALSE)
180
+ metadata <- processSampleInRows(originaldata, session, input)[[2]]
181
+ alitable <- read.csv(input$ontfile$datapath, check.names = FALSE, fileEncoding = "UTF-8-BOM")
182
+ colnames(alitable) <- c("Metabolite name","Ontology")
183
+ letchoice <- c(colnames(Lipidomedata)[!colnames(Lipidomedata) %in% colnames(metadata)],"Others")
184
+ moldata <- processSampleInRowstomoldata(originaldata, session, input)[[1]]
185
+ }else if(input$filetype == "MS-DIAL export"){
186
+
187
+ Lipidomedata <- processMSDIALExport(originaldata, session, input)[[1]]
188
+ metadata <- processMSDIALExport(originaldata, session, input)[[2]]
189
+ alitable <- process_alignment_file(originaldata)[[1]] %>% select(c(1,2))
190
+ moldata <- processMSDIALExporttomoldata(originaldata, session, input)[[1]]
191
+ }
192
+ if(length(input$transcriptomefile) !=0){
193
+ transcriptome <- read.csv(input$transcriptomefile$datapath,check.names = F,fileEncoding ="UTF-8-BOM") %>% t()
194
+ colnames(transcriptome) <- transcriptome[1,]
195
+ transcriptome <- transcriptome[-1,] %>% data.frame()
196
+ transcriptome[,-c(1)] <- apply(transcriptome[,-c(1)],2,as.numeric) %>% data.frame()
197
+ transcriptome <- rownames_to_column(transcriptome,"name")
198
+ transcriptome[,2] <- as.character(transcriptome[,2])
199
+ }
200
+
201
+ if(length(input$file1) !=0 & length(input$transcriptomefile) != 0){
202
+
203
+ Ensembl <- gconvert(query = colnames(transcriptome)[-c(1:2)] , organism = "mmusculus",#sapiens
204
+ target="ENSG", mthreshold = Inf, filter_na = TRUE) %>% select(input,target)
205
+ transcriptome <- transcriptome %>% select(-2)
206
+ data <- inner_join(Lipidomedata,transcriptome,by =c("name"))
207
+ moldata <- inner_join(moldata,transcriptome,by =c("name"))
208
+ }
209
+ else{
210
+ data <- Lipidomedata
211
+ }
212
+ }, error = function(e) {
213
+ showNotification(paste("Error:Invalid CSV file format. Please ensure your file is a properly formatted CSV.", e$message), type = "error")
214
+ })
215
+
216
+ metainfocol <- ncol(metadata)
217
+ lipidclassproperties <- read_csv("./pathwaymap/lipidclassproperties.csv")
218
+
219
+ processAndUpdateInputs(data, session, metadata, metainfocol)
220
+ processAndUpdateInputs2(moldata, session, metadata, metainfocol)
221
+ shinyalert(
222
+ "Success",
223
+ "GO to Plot tab",
224
+ type = "success"
225
+ )
226
+ observeEvent(input$y,{
227
+ targetclass <- filter(alitable,Ontology %in% input$y)
228
+ shiny::updateSelectInput(session, "mol", selected = targetclass$`Metabolite name`[1], choices = targetclass$`Metabolite name`)
229
+ })
230
+
231
+ #observeEvent(input$Colorpicker,{
232
+ #print("boton")
233
+ # ShowtestModaldialog4(data,input,col$col)
234
+ #}
235
+ #)
236
+ observeEvent(input$exportgraph,{
237
+ ShowtestModaldialog2(data,input,col$col)
238
+ }
239
+ )
240
+ observeEvent(input$Colorpicker, {
241
+ ShowtestModaldialog(data,input,col$col)
242
+ })
243
+
244
+ observeEvent(input$saveConfirm, {
245
+ removeModal()
246
+ showNotification("保存が完了しました", type = "success")
247
+ })
248
+
249
+ observeEvent(input$w,{
250
+ updateOrderInput(session, "levels",
251
+ items = c(unique(as.matrix(select(data,input$w)))),
252
+ item_class = "success")
253
+ shiny::updateSelectInput(session, "q", selected = c(unique(as.matrix(select(data,input$w))))[1], choices = c(unique(as.matrix(select(data,input$w)))))
254
+ col$col <<- rainbow_hcl(length(unique(as.matrix(select(data,input$w)))))
255
+ col$col <<- setNames(col$col,unique(as.matrix(select(data,input$w))))
256
+ })
257
+
258
+ observeEvent(input$levels,{
259
+ if (!is.null(input$levels) && any(input$levels != "")) {
260
+ dataa <<- mutate(data, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
261
+ moldataa <<- mutate(moldata, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
262
+
263
+ }
264
+ })
265
+
266
+ observe({
267
+ if (length(grep("selectcolor", names(input), value = TRUE)) != 0) {
268
+ col$col <<- process_select_color_input(input,data)
269
+ }
270
+ })
271
+
272
+ # 可能な比較の組み合わせを生成
273
+ possible_comparisons <- reactive({
274
+ groups <- unique(data[[input$w]])
275
+ combs <- combn(groups, 2, simplify = FALSE)
276
+ setNames(
277
+ lapply(combs, function(x) paste(x, collapse = "vs")),
278
+ lapply(combs, function(x) paste(x, collapse = " vs "))
279
+ )
280
+ })
281
+
282
+ # 比較選択用のUI生成
283
+ output$comparison_choices <- renderUI({
284
+ checkboxGroupInput("comparisons", "Select comparisons:",
285
+ choices = possible_comparisons(),
286
+ selected = possible_comparisons()[1])
287
+ })
288
+
289
+ # Select All ボタンの処理
290
+ observeEvent(input$select_all, {
291
+ updateCheckboxGroupInput(session, "comparisons",
292
+ selected = possible_comparisons())
293
+ })
294
+
295
+ # Clear All ボタンの処理
296
+ observeEvent(input$clear_all, {
297
+ updateCheckboxGroupInput(session, "comparisons",
298
+ selected = character(0))
299
+ })
300
+
301
+ # 統計検定の実行
302
+ stat_test <- reactive({
303
+ req(input$comparisons, input$test_method)
304
+
305
+ # 検定関数の選択
306
+ test_func <- get(input$test_method, asNamespace("rstatix"))
307
+
308
+ # 結果を格納するデータフレーム
309
+ results <- data.frame()
310
+
311
+ for(comp in input$comparisons) {
312
+ # グループを分割
313
+ groups <- strsplit(comp, "vs")[[1]]
314
+
315
+ # データのサブセット作成
316
+ subset_data <- data %>%
317
+ dplyr::filter(!!sym(input$w) %in% groups)
318
+
319
+ # 検定実行
320
+ test_result <- test_func(subset_data, as.formula(paste(input$y, "~", input$w))) %>%
321
+ adjust_pvalue(method = input$p_adjust) %>%
322
+ add_significance()
323
+
324
+ results <- rbind(results, test_result)
325
+ }
326
+
327
+ results
328
+ })
329
+
330
+ stat_testmol <- reactive({
331
+ req(input$comparisons, input$test_method)
332
+
333
+ # 検定関数の選択
334
+ test_func <- get(input$test_method, asNamespace("rstatix"))
335
+
336
+ # 結果を格納するデータフレーム
337
+ results <- data.frame()
338
+
339
+ for(comp in input$comparisons) {
340
+ # グループを分割
341
+ groups <- strsplit(comp, "vs")[[1]]
342
+
343
+ # データのサブセット作成
344
+ subset_data <- moldata %>%
345
+ dplyr::filter(!!sym(input$w) %in% groups)
346
+
347
+ # 検定実行
348
+ test_result <- test_func(subset_data, as.formula(paste(paste("`",input$mol,"`",sep =""), "~", input$w))) %>%
349
+ adjust_pvalue(method = input$p_adjust) %>%
350
+ add_significance()
351
+
352
+ results <- rbind(results, test_result)
353
+ }
354
+
355
+ results
356
+ })
357
+
358
+ #if(input$pvaluecheck == TRUE){
359
+ # サマリー統計の表示
360
+
361
+ output$stat_results <- renderPrint({
362
+ req(stat_test())
363
+ results <- stat_test()
364
+ cat("Results:\n")
365
+ print(summary(results))
366
+ })
367
+ #}
368
+ observeEvent(input$levels,{
369
+ observe({
370
+ if (!is.null(input$mol) && input$mol != "") {
371
+ if(!is.null(input$levels) && any(input$levels != "")){
372
+
373
+ output$plottest <- renderPlot({
374
+
375
+ if(input$mydrop == "box"){
376
+ process_boxplot(input,input$y,dataa,col$col,stat_test())
377
+ }
378
+ else if(input$mydrop == "bar"){
379
+ process_barplot(input,input$y,dataa,col$col,stat_test())
380
+ }
381
+ else if(input$mydrop == "violin"){
382
+ process_violinplot(input,input$y,dataa,col$col,stat_test())
383
+ }
384
+ else if(input$mydrop == "polar"){
385
+ process_polarplot(input,input$y,dataa,col$col,stat_test())
386
+ }
387
+ else if(input$mydrop == "coding"){
388
+ process_dotplot(input,input$y,dataa,col$col,stat_test())
389
+ }
390
+ }
391
+ )
392
+ output$mappingraph <- renderPlot({
393
+
394
+ if(input$mydrop == "box"){
395
+ process_boxplot_diagram(input,input$y,dataa,col$col,stat_test())
396
+ }
397
+ else if(input$mydrop == "bar"){
398
+ process_barplot_diagram(input,input$y,dataa,col$col,stat_test())
399
+ }
400
+ else if(input$mydrop == "violin"){
401
+ process_violinplot_diagram(input,input$y,dataa,col$col,stat_test())
402
+ }
403
+ else if(input$mydrop == "polar"){
404
+ process_polar_diagram(input,input$y,dataa,col$col,stat_test())
405
+ }
406
+ else if(input$mydrop == "coding"){
407
+ process_dotplot_diagram(input,input$y,dataa,col$col,stat_test())
408
+ }
409
+ }
410
+ )
411
+
412
+ observeEvent(input$mol,{
413
+
414
+ output$plottest2 <- renderPlot({
415
+ if(input$mydrop == "box"){
416
+ process_boxplot(input, paste("`",input$mol,"`",sep =""),moldataa,col$col,stat_testmol())
417
+ }
418
+ else if(input$mydrop == "bar"){
419
+ process_barplot(input, paste("`",input$mol,"`",sep =""),moldataa,col$col,stat_testmol())
420
+ }
421
+ else if(input$mydrop == "violin"){
422
+ process_violinplot(input,paste("`",input$mol,"`",sep =""),moldataa,col$col,stat_testmol())
423
+ }
424
+ else if(input$mydrop == "polar"){
425
+ process_polarplot(input,paste("`",input$mol,"`",sep =""),moldataa,col$col,stat_testmol())
426
+ }
427
+ else if(input$mydrop == "coding"){
428
+ process_dotplot(input,paste("`",input$mol,"`",sep =""),moldataa,col$col,stat_testmol())
429
+ }
430
+
431
+ })
432
+ })
433
+ }
434
+ }
435
+ })
436
+ })
437
+
438
+ graph_json <- reactive({
439
+ if (input$pathwaytype == "Global pathway") {
440
+ read_graph_json("./pathwaymap/globalpathway.cyjs") %>% gsub("localhost:9000", paste0(host,"/api"), .)
441
+ } else if (input$pathwaytype == "Ceramide pathway") {
442
+ read_graph_json("./pathwaymap/ceramidepathway.cyjs") %>% gsub("localhost:9000", paste0(host,"/api"), .)
443
+ } else if (input$pathwaytype == "Remodeling pathway") {
444
+ read_graph_json("./pathwaymap/remodeling.cyjs") %>% gsub("localhost:9000", paste0(host,"/api"), .)
445
+ }
446
+ })
447
+
448
+ style_file_path <- "./pathwaymap/nodestyle1.js"
449
+ styles_xml_path <- "./pathwaymap/styles.xml"
450
+ # CYJSファイルのダウンロード
451
+ output$exportCYJS <- downloadHandler(
452
+ filename = function() {
453
+ paste0(input$pathwaytype, "_", format(Sys.Date(), "%Y%m%d"), ".cyjs")
454
+ },
455
+ content = function(file) {
456
+ writeLines(graph_json, file)
457
+ },
458
+ contentType = "application/json"
459
+ )
460
+
461
+ # styles.xmlファイルのダウンロード
462
+ output$exportStyles <- downloadHandler(
463
+ filename = function() {
464
+ "styles.xml"
465
+ },
466
+ content = function(file) {
467
+ file.copy(styles_xml_path, file)
468
+ },
469
+ contentType = "application/xml"
470
+ )
471
+ #observeEvent(input$sidebarCollapse, {
472
+ # toggleClass(id = "content", class = "active")
473
+ #})
474
+
475
+ observeEvent(input$toggle_sidebar, {
476
+ shinyjs::runjs("toggleSidebar()")
477
+ })
478
+ observeEvent(input$actionplottest,{
479
+ observeEvent(input$pathway, {
480
+ output$graphContainer <- renderUI({
481
+ cyjShinyOutput("cyjShinytest", height = "90%", width = "90%")
482
+ })
483
+ })
484
+ output$cyjShinytest <- renderCyjShiny({
485
+ #p <- input$pathway
486
+ #if (p != 0) {
487
+ if (input$pathwaytype == "Global pathway") {
488
+ graph_json <<- paste(readLines("./pathwaymap/globalpathway.cyjs"), collapse = "") %>% gsub("localhost:9000", paste0(host,"/api"), .)
489
+ } else if (input$pathwaytype == "Ceramide pathway") {
490
+ graph_json <<- paste(readLines("./pathwaymap/ceramidepathway.cyjs"), collapse = "") %>% gsub("localhost:9000", paste0(host,"/api"), .)
491
+ } else if (input$pathwaytype == "Remodeling pathway") {
492
+ graph_json <<- paste(readLines("./pathwaymap/remodeling.cyjs"), collapse = "") %>% gsub("localhost:9000", paste0(host,"/api"), .)
493
+ }
494
+
495
+ test <- fromJSON(graph_json)
496
+ test <- as.data.frame(test$elements$nodes)
497
+
498
+ if (input$viewacyllevel == TRUE) {
499
+ cyjShiny(graph_json, layoutName = "preset", styleFile = "./pathwaymap/nodestyle1.js")
500
+ } else {
501
+ cyjShiny(graph_json, layoutName = "preset", styleFile = "./pathwaymap/nodestyle2.js")
502
+ }
503
+ # } else {
504
+
505
+ #}
506
+ })
507
+
508
+
509
+
510
+ observeEvent(input$getSelectedNodes, ignoreInit=TRUE, {
511
+ output$selectedNodesDisplay <- renderText({" "})
512
+ getSelectedNodes(session)
513
+ })
514
+
515
+
516
+ output$corselect <- renderPlotly({
517
+ if(input$pathwaytype == "Global pathway"){
518
+ graph_json <<- paste(readLines("./pathwaymap/globalpathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
519
+ }else if(input$pathwaytype == "Ceramide pathway"){
520
+ graph_json <<- paste(readLines("./pathwaymap/ceramidepathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
521
+ }else if(input$pathwaytype == "Remodeling pathway"){
522
+ graph_json <<- paste(readLines("./pathwaymap/remodeling.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
523
+ }
524
+ test <- fromJSON(graph_json)
525
+ test <- as.data.frame(test$elements$nodes)
526
+ test1 <- test[test$data$id %in% unlist(input$selectedNodes),]
527
+ dataa <- mutate(data, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
528
+
529
+ if(length(test1$data$shared_name) == 2){
530
+ moldataa <- mutate(moldata, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
531
+ targetclass <- filter(alitable,Ontology %in% test1$data$shared_name)
532
+ if(! test1$data$shared_name[1] %in% colnames(data)) {
533
+ a <- Ensembl[Ensembl$target %in% test1$data$Ensembl_ID[1],]
534
+ test1$data$shared_name[1] <- a$input
535
+ }
536
+ if(! test1$data$shared_name[2] %in% colnames(data)) {
537
+ b <- Ensembl[Ensembl$target %in% test1$data$Ensembl_ID[2],]
538
+ test1$data$shared_name[2] <- b$input
539
+ }
540
+ if(input$ClassorMol == FALSE){
541
+ cor_value <- cor(dataa[,test1$data$shared_name[1]], dataa[,test1$data$shared_name[2]],method = "spearman")
542
+ g <- ggplot(dataa,aes_string(test1$data$shared_name[1],test1$data$shared_name[2],fill = input$w,size = input$size))+geom_point(shape =21,color = "black")+
543
+ scale_fill_manual(values = unlist(col$col)) + ggtitle(paste("r = ",round(cor_value, 2)))
544
+ }else{
545
+ moldataa <- mutate(moldata, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
546
+ cor_value <- cor(moldataa[,input$X1], moldataa[,input$X2],method = "spearman")
547
+ g <- ggplot(moldataa,aes_string(paste("`",input$X1,"`",sep =""),paste("`",input$X2,"`",sep =""),fill = input$w,size = input$size))+geom_point(shape =21,color = "black")+
548
+ scale_fill_manual(values = unlist(col$col))+ ggtitle(paste("r = ",round(cor_value, 2)))
549
+ }
550
+ plotly::ggplotly(g)
551
+ }
552
+
553
+ })
554
+ output$textOutput <- renderText({
555
+ if(input$ClassorMol == FALSE){
556
+ "Select two nodes from the network to analyze their correlation."}
557
+ else{
558
+ "Select two features to analyze their correlation."
559
+ }
560
+ })
561
+
562
+
563
+
564
+
565
+ observeEvent(input$selectedNodes, {
566
+ if(input$pathwaytype == "Global pathway"){
567
+ graph_json <<- paste(readLines("./pathwaymap/globalpathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
568
+ }else if(input$pathwaytype == "Ceramide pathway"){
569
+ graph_json <<- paste(readLines("./pathwaymap/ceramidepathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
570
+ }else if(input$pathwaytype == "Remodeling pathway"){
571
+ graph_json <<- paste(readLines("./pathwaymap/remodeling.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
572
+ }
573
+ test <- fromJSON(graph_json)
574
+ test <- as.data.frame(test$elements$nodes)
575
+ test1 <- test[test$data$id %in% unlist(input$selectedNodes),]
576
+ moldataa <- mutate(moldata, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
577
+ targetclass <- filter(alitable,Ontology %in% test1$data$shared_name)
578
+ shiny::updateSelectInput(session, "selectmol", selected = targetclass$`Metabolite name`[1], choices = targetclass$`Metabolite name`)
579
+ },ignoreNULL = TRUE)
580
+
581
+ output$corselect2 <- renderPlot({
582
+ if(input$pathwaytype == "Global pathway"){
583
+ graph_json <<- paste(readLines("./pathwaymap/globalpathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
584
+ }else if(input$pathwaytype == "Ceramide pathway"){
585
+ graph_json <<- paste(readLines("./pathwaymap/ceramidepathway.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
586
+ }else if(input$pathwaytype == "Remodeling pathway"){
587
+ graph_json <<- paste(readLines("./pathwaymap/remodeling.cyjs"), collapse="") %>% gsub("localhost:9000", paste0(host,"/api"), .)
588
+ }
589
+ test <- fromJSON(graph_json)
590
+ test <- as.data.frame(test$elements$nodes)
591
+ test1 <- test[test$data$id %in% unlist(input$selectedNodes),]
592
+ moldataa <- mutate(moldata, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
593
+ targetclass <- filter(alitable,Ontology %in% test1$data$shared_name)
594
+ if(length(test1$data$shared_name) > 0 && input$selectmol != " "){
595
+ if(test1$data$shared_name[1] %in% colnames(data)) {
596
+ if(input$mydrop == "box"){
597
+ g <- process_boxplot_diagram(input,paste("`",input$selectmol,"`",sep =""),moldataa,col$col,stat_testmol())
598
+ }
599
+ else if(input$mydrop == "bar"){
600
+ g <- process_barplot_diagram(input,paste("`",input$selectmol,"`",sep =""),moldataa,col$col,stat_testmol())
601
+ }
602
+ else if(input$mydrop == "violin"){
603
+ g <- process_violinplot_diagram(input,paste("`",input$selectmol,"`",sep =""),moldataa,col$col,stat_testmol())
604
+ }
605
+ else if(input$mydrop == "polar"){
606
+ g <- process_polar_diagram(input,paste("`",input$selectmol,"`",sep =""),moldataa,col$col,stat_testmol())
607
+ }
608
+ else if(input$mydrop == "coding"){
609
+
610
+ g <- process_dotplot_diagram(input,paste("`",input$selectmol,"`",sep =""),moldataa,col$col,stat_testmol())
611
+ }}
612
+ plot(g)
613
+ }
614
+
615
+ })
616
+ })
617
+
618
+ observeEvent(input$save_pdf,{
619
+ shinyscreenshot::screenshot(selector="#cyjShinytest")
620
+ })
621
+ #Creating heatmap
622
+ observeEvent(input$actionplottest, {
623
+ waiter::waiter_show(
624
+ id = NULL,
625
+ html = tagList(waiter::spin_loader(),
626
+ "Loading ..."),
627
+ color = "#333e48",
628
+ logo = "",
629
+ image = ""
630
+ )
631
+ file_list <- list.files(svg_path)
632
+ if (length(unlist(file_list)) > 0) {
633
+ file.remove(file.path(svg_path, file_list))
634
+ } else {
635
+ }
636
+ if(is.null(input$transcriptomefile) == FALSE){
637
+ Ensembl <- gconvert(query = colnames(transcriptome)[-c(1:2)] , organism = "mmusculus",#sapiens
638
+ target="ENSG", mthreshold = Inf, filter_na = TRUE) %>% select(input,target)
639
+ graph_json1 <- paste(readLines("./pathwaymap/ceramidepathway.cyjs"), collapse="") %>% fromJSON()
640
+ graph_json2 <- paste(readLines("./pathwaymap/remodeling.cyjs"), collapse="") %>% fromJSON()
641
+ Ensemblinmap <- c(graph_json1$elements$nodes$data$Ensembl_ID,graph_json2$elements$nodes$data$Ensembl_ID)
642
+ Ensemblinmap <- Ensemblinmap[-which(Ensemblinmap %in% "")]
643
+
644
+ geneinmap <- Ensembl[Ensembl[,2] %in% Ensemblinmap,]
645
+
646
+ transcriptome2 <- colnames(transcriptome)[colnames(transcriptome) %in% geneinmap$input]
647
+
648
+ data <- data[,colnames(data) %in% c(colnames(data)[1:metainfocol],colnames(Lipidomedata),transcriptome2)]
649
+ dataa <- mutate(data, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
650
+ names(dataa)[match(geneinmap$input, names(dataa))] <- geneinmap$target
651
+
652
+ } else {
653
+ dataa <- mutate(data, !!as.symbol(input$w) := !!as.symbol(input$w) %>% factor(levels = input$levels))
654
+ }
655
+
656
+ # if (length(grep("selectcolor", names(input), value = TRUE)) != 0) {
657
+ # col <<- process_select_color_input(input,data)
658
+ # }
659
+ if(input$mydrop == "box"){
660
+ process_action_boxplot(input,dataa,metainfocol,svg_path,col$col,output,data)
661
+ }
662
+ else if(input$mydrop == "bar"){
663
+ process_action_barplot(input,dataa,metainfocol,svg_path,col$col,output,data)
664
+ }
665
+ else if(input$mydrop == "violin"){
666
+ process_action_violinplot(input,dataa,metainfocol,svg_path,col$col,output,data)
667
+ }
668
+ else if(input$mydrop == "polar"){
669
+ process_action_polarplot(input,dataa,metainfocol,svg_path,col$col,output,data)
670
+ }
671
+ else if(input$mydrop == "coding"){
672
+ process_action_dotplot(input,dataa,metainfocol,svg_path,col$col,output,data)
673
+ }
674
+ # if(input$filetype == "MS-DIAL export"){
675
+ # exportgroupnodeheatmap(originaldata,metadata,paste(global$datapath,"",sep =""),input$w,input$levels,originaldir,input)}
676
+ Sys.sleep(3)
677
+ waiter::waiter_hide()
678
+ shinyalert(
679
+ "Success",
680
+ "GO to Pathway analysis tab",
681
+ type = "success"
682
+ )
683
+ }
684
+ )
685
+ observeEvent(input$w,{
686
+
687
+ output$heatmap <- renderPlot({
688
+ if(length(unlist(input$selectedNodes)) > 0 ) {
689
+ test <- fromJSON(graph_json)
690
+ test <- as.data.frame(test$elements$nodes)
691
+ test1 <- test[test$data$id %in% unlist(input$selectedNodes),]
692
+ groupnodeheatmap(lipidclassproperties,originaldata,metadata,input$w,input$levels,test1$data$shared_name[1],input)
693
+ }
694
+ })
695
+ })
696
+ } )})}
app/svg/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+
app/ui.R ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source("./modules/librarys.R")
2
+ source("./modules/data_processing.R")
3
+ source("./modules/plot_utils.R")
4
+ source("./modules/heatmap_utils.R")
5
+ source("./modules/modaldialog_utils.R")
6
+ source("./modules/selectcolor_utils.R")
7
+ source("./modules/ui_modules.R")
8
+
9
+ shinyUI(
10
+ fluidPage(
11
+ theme = bs_theme(version = 5,,bootswatch = "sandstone"),
12
+ useShinyjs(),
13
+ tags$head(
14
+ tags$style(HTML(
15
+ "
16
+ .well { background-color: initial; border: initial; }
17
+ .navbar { margin-bottom: 5px; }
18
+ .container-fluid { padding-right: 10px; padding-left: 10px; }
19
+ .round-button {
20
+ border-radius: 50%;
21
+ width: 50px;
22
+ height: 50px;
23
+ padding: 0;
24
+ border: 2px solid #007bff;
25
+ background-color: white;
26
+ color: #007bff;
27
+ transition: all 0.3s;
28
+ }
29
+
30
+ .round-button:hover {
31
+ background-color: #007bff;
32
+ color: white;
33
+ }
34
+
35
+ .button-container {
36
+ display: flex;
37
+ gap: 20px;
38
+ justify-content: center;
39
+ margin: 20px 0;
40
+ }
41
+
42
+ .button-with-label {
43
+ display: flex;
44
+ flex-direction: column;
45
+ align-items: center;
46
+ gap: 5px;
47
+ }
48
+
49
+ .card {
50
+ transition: transform 0.2s;
51
+ margin-bottom: 20px;
52
+ }
53
+
54
+ .card-title {
55
+ font-size: 1.2rem;
56
+ margin-bottom: 15px;
57
+ }
58
+
59
+ /* モーダル用のスタイル */
60
+ .modal-content {
61
+ border-radius: 10px;
62
+ }
63
+ .modal-header {
64
+ background-color: #f8f9fa;
65
+ border-radius: 10px 10px 0 0;
66
+ }
67
+ #sidebar {
68
+ position: fixed;
69
+ left: 0;
70
+ width: 250px;
71
+ height: calc(100% - 160px);
72
+ top: 160px;
73
+ background: #f8f9fa;
74
+ transition: all 0.3s;
75
+ padding: 15px;
76
+ z-index: 1000;
77
+ }
78
+ #sidebar.inactive {
79
+ left: -250px;
80
+ }
81
+ #content {
82
+ margin-left: 60px;
83
+ transition: all 0.3s;
84
+ height: calc(100vh - 50px);
85
+ }
86
+ #content.active {
87
+ margin-left: 310px;
88
+ }
89
+ #main-content {
90
+ margin-left: 250px;
91
+ transition: all 0.3s;
92
+ padding-top: 80px;
93
+ }
94
+ #main-content.inactive {
95
+ margin-left: 0;
96
+ }
97
+ #toggle_sidebar {
98
+ position: fixed;
99
+ left: 260px;
100
+ top: 160px;
101
+ z-index: 1001;
102
+ width: 40px;
103
+ height: 40px;
104
+ background: #343a40;
105
+ color: #fff;
106
+ border: none;
107
+ border-radius: 5px;
108
+ transition: all 0.3s;
109
+ }
110
+ #toggle_sidebar.inactive {
111
+ left: 10px;
112
+ }
113
+ #graphContainer {
114
+ height: 100%;
115
+ width: 100%;
116
+ }
117
+ #tab3 {
118
+ margin-top: 70px;
119
+ }
120
+ "
121
+ ))
122
+ ),
123
+ navbarPage(
124
+ "MSDIAL2Cytoscape",
125
+ theme = bs_theme(version = 5),
126
+ tabPanel(
127
+ waiter::useWaiter(),
128
+ uiOutput("dynamicSidebar"),
129
+ uiOutput("dynamicSidebarToggle"),
130
+ tabsetPanel(
131
+ id = "mainTabs",
132
+ uploadpanel,
133
+ tabPanel(
134
+ value = "tab2",
135
+ tagList(
136
+ div(
137
+ style = "display: flex; align-items: center; justify-content: center; margin-bottom: 15px;",
138
+ img(src = "./barplot.png", style = "width: 50px; height: 50px; margin-right: 10px;"),
139
+ div(style = "font-size: 18px; color: #000000; font-weight: bold;", "Plot")
140
+ )
141
+ ),
142
+ fluidRow(
143
+ layout_columns(
144
+ col_widths = c(2, 10),
145
+ createCustomSidebar("y", "w", "z", "alpha", "size", "Fontsize", "levels", "pvaluecheck", "q"),
146
+ plotTabAppearanceUI(
147
+ "", "./bar.png", "50px", "50px", "plottest", "plottest2", "testtext"
148
+ )
149
+ )
150
+ )
151
+ ),
152
+ tabPanel(
153
+ value = "tab3",
154
+
155
+ tagList(
156
+ div(
157
+ style = "display: flex; align-items: center; justify-content: center; margin-bottom: 15px;",
158
+ img(src = "./network2.png", style = "width: 50px; height: 50px; margin-right: 10px;"),
159
+ div(style = "font-size: 18px; color: #000000; font-weight: bold;", "Pathway analysis")
160
+ )
161
+ ),
162
+
163
+ actionButton("toggle_sidebar", icon("bars"), class = "btn-info"),
164
+
165
+ div(
166
+ id = "sidebar",
167
+ wellPanel(
168
+ id = "pathway-controls",
169
+ selectInput("pathwaytype", "Pathway type",
170
+ choices = c("Global pathway", "Ceramide pathway", "Remodeling pathway"),
171
+ selected = "Global pathway"),
172
+ actionButton("pathway", "Pathway mapping", class = "btn-primary btn-block"),
173
+ actionButton("save_pdf", "Save as PNG", class = "btn-success btn-block"),
174
+ downloadButton("exportCYJS", "Export CYJS", class = "btn-block"),
175
+ downloadButton("exportStyles", "Export styles.xml", class = "btn-block"),
176
+ checkboxInput("viewacyllevel", "Close-up nodes", value = TRUE)
177
+ )
178
+ ),
179
+ div(
180
+ id = "main-content",
181
+ fluidRow(
182
+ column(
183
+ width = 9,
184
+ div(id = "content",
185
+ uiOutput("graphContainer")
186
+ )
187
+ ),
188
+ column(
189
+ width = 3,
190
+
191
+ actionButton("getSelectedNodes", "Click nodes in the Network and Confirm Selection", class = "btn-primary btn-block"),
192
+ br(),
193
+ tabsetPanel(
194
+ id = "sideTabset",
195
+ tabPanel("Lipid Species Visualization",
196
+ div(id = "tabContent",
197
+ wellPanel(
198
+ selectInput(
199
+ inputId = "selectmol",
200
+ label = "Select molecule to display",
201
+ choices = c(" "),
202
+ selected = " "
203
+ ),
204
+ plotOutput(outputId = "corselect2")),
205
+ wellPanel(
206
+ plotOutput(outputId = "heatmap",height = "600px" ,width = "100%"),
207
+ checkboxInput(inputId = "acylfilter", label = "Filtering common acylchains (16:0, 16:1, 18:0, 18:1, 18:2, 18:3, 20:3, 20:4, 20:5, 22:4, 22:5, 22:6)", value = TRUE),
208
+ checkboxInput(inputId = "sn", label = "sn", value = FALSE))
209
+ )
210
+ ),
211
+ tabPanel("Correlation Plot",
212
+ div(id = "tabContent",
213
+ wellPanel(
214
+ textOutput("textOutput"),
215
+ br(),
216
+ plotlyOutput(outputId = "corselect")),
217
+ checkboxInput(inputId = "ClassorMol", label = "Correlation of lipid species", value = FALSE),
218
+ selectInput(
219
+ inputId = "X1",
220
+ label = "X",
221
+ choices = c(" "),
222
+ selected = " "
223
+ ),
224
+ selectInput(
225
+ inputId = "X2",
226
+ label = "Y",
227
+ choices = c(" "),
228
+ selected = " "
229
+ )
230
+ )
231
+ )
232
+ )
233
+ )
234
+ )
235
+ ),
236
+ tags$script(HTML(
237
+ "
238
+ function toggleSidebar() {
239
+ var sidebar = $('#sidebar');
240
+ var mainContent = $('#main-content');
241
+ var toggleBtn = $('#toggle_sidebar');
242
+
243
+ sidebar.toggleClass('inactive');
244
+ mainContent.toggleClass('inactive');
245
+ toggleBtn.toggleClass('inactive');
246
+
247
+ if (sidebar.hasClass('inactive')) {
248
+ toggleBtn.find('i').removeClass('fa-times').addClass('fa-bars');
249
+ } else {
250
+ toggleBtn.find('i').removeClass('fa-bars').addClass('fa-times');
251
+ }
252
+ }
253
+ "
254
+ )),
255
+ tags$script(
256
+ '
257
+ var tab = $(\'a[data-value="tab3"]\').parent().addClass("disabled");
258
+ $(function(){
259
+ $(tab.parent()).on("click", "li.disabled", function(e) {
260
+ e.preventDefault();
261
+ return false;
262
+ });
263
+ });
264
+ '
265
+ )
266
+ )
267
+ )
268
+ )
269
+ )
270
+ )
271
+ )
272
+
273
+
274
+
app/www/background.svg ADDED
app/www/barplot.png ADDED
app/www/boxplot.png ADDED
app/www/code.png ADDED
app/www/dotplot.png ADDED
app/www/network2.png ADDED
app/www/upload.png ADDED
app/www/violin2.png ADDED
inst/examples/Lipid_AlignmentTable.csv ADDED
The diff for this file is too large to render. See raw diff
 
inst/examples/Metadata.csv ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name,Year,Sex,Class2,Year_Sex
2
+ 190628_TT1_Hclass_Aging_001_38_9w_GF_F_Kidney_2_Pos,2,Female,2_GF,2_Female
3
+ 190628_TT1_Hclass_Aging_002_4_12M_SPF_M_Kidney_1_Pos,12,Male,12_SPF,12_Male
4
+ 190628_TT1_Hclass_Aging_003_27_9w_SPF_F_Kidney_3_Pos,2,Female,2_SPF,2_Female
5
+ 190628_TT1_Hclass_Aging_004_14_9w_GF_M_Kidney_2_Pos,2,Male,2_GF,2_Male
6
+ 190628_TT1_Hclass_Aging_005_33_18M_SPF_F_Kidney_3_Pos,19,Female,19_SPF,19_Female
7
+ 190628_TT1_Hclass_Aging_006_39_9w_GF_F_Kidney_3_Pos,2,Female,2_GF,2_Female
8
+ 190628_TT1_Hclass_Aging_007_28_12M_SPF_F_Kidney_1_Pos,12,Female,12_SPF,12_Female
9
+ 190628_TT1_Hclass_Aging_008_43_18M_GF_F_Kidney_1_Pos,19,Female,19_GF,19_Female
10
+ 190628_TT1_Hclass_Aging_009_20_18M_GF_M_Kidney_3_Pos,19,Male,19_GF,19_Male
11
+ 190628_TT1_Hclass_Aging_010_8_18M_SPF_M_Kidney_3_Pos,19,Male,19_SPF,19_Male
12
+ 190628_TT1_Hclass_Aging_011_19_18M_GF_M_Kidney_2_Pos,19,Male,19_GF,19_Male
13
+ 190628_TT1_Hclass_Aging_012_29_12M_SPF_F_Kidney_2_Pos,12,Female,12_SPF,12_Female
14
+ 190628_TT1_Hclass_Aging_013_45_18M_GF_F_Kidney_3_Pos,19,Female,19_GF,19_Female
15
+ 190628_TT1_Hclass_Aging_014_11_24M_SPF_M_Kidney_4_Pos,24,Male,24_SPF,24_Male
16
+ 190628_TT1_Hclass_Aging_015_31_18M_SPF_F_Kidney_1_Pos,19,Female,19_SPF,19_Female
17
+ 190628_TT1_Hclass_Aging_016_6_12M_SPF_M_Kidney_3_Pos,12,Male,12_SPF,12_Male
18
+ 190628_TT1_Hclass_Aging_017_18_12M_GF_M_Kidney_3_Pos,12,Male,12_GF,12_Male
19
+ 190628_TT1_Hclass_Aging_018_24_24M_GF_M_Kidney_3_Pos,24,Male,24_GF,24_Male
20
+ 190628_TT1_Hclass_Aging_019_17_12M_GF_M_Kidney_2_Pos,12,Male,12_GF,12_Male
21
+ 190628_TT1_Hclass_Aging_020_7_18M_SPF_M_Kidney_1_Pos,19,Male,19_SPF,19_Male
22
+ 190628_TT1_Hclass_Aging_021_5_12M_SPF_M_Kidney_2_Pos,12,Male,12_SPF,12_Male
23
+ 190628_TT1_Hclass_Aging_022_44_18M_GF_F_Kidney_2_Pos,19,Female,19_GF,19_Female
24
+ 190628_TT1_Hclass_Aging_023_35_24M_SPF_F_Kidney_3_Pos,24,Female,24_SPF,24_Female
25
+ 190628_TT1_Hclass_Aging_024_10_24M_SPF_M_Kidney_3_Pos,24,Male,24_SPF,24_Male
26
+ 190628_TT1_Hclass_Aging_025_36_24M_SPF_F_Kidney_5_Pos,24,Female,24_SPF,24_Female
27
+ 190628_TT1_Hclass_Aging_026_2_9w_SPF_M_Kidney_2_Pos,2,Male,2_SPF,2_Male
28
+ 190628_TT1_Hclass_Aging_027_15_9w_GF_M_Kidney_3_Pos,2,Male,2_GF,2_Male
29
+ 190628_TT1_Hclass_Aging_028_9_18M_SPF_M_Kidney_4_Pos,19,Male,19_SPF,19_Male
30
+ 190628_TT1_Hclass_Aging_029_42_12M_GF_F_Kidney_3_Pos,12,Female,12_GF,12_Female
31
+ 190628_TT1_Hclass_Aging_030_3_9w_SPF_M_Kidney_3_Pos,2,Male,2_SPF,2_Male
32
+ 190628_TT1_Hclass_Aging_031_48_24M_GF_F_Kidney_6_Pos,24,Female,24_GF,24_Female
33
+ 190628_TT1_Hclass_Aging_032_23_24M_GF_M_Kidney_2_Pos,24,Male,24_GF,24_Male
34
+ 190628_TT1_Hclass_Aging_033_12_24M_SPF_M_Kidney_5_Pos,24,Male,24_SPF,24_Male
35
+ 190628_TT1_Hclass_Aging_034_32_18M_SPF_F_Kidney_2_Pos,19,Female,19_SPF,19_Female
36
+ 190628_TT1_Hclass_Aging_035_16_12M_GF_M_Kidney_1_Pos,12,Male,12_GF,12_Male
37
+ 190628_TT1_Hclass_Aging_036_21_18M_GF_M_Kidney_5_Pos,19,Male,19_GF,19_Male
38
+ 190628_TT1_Hclass_Aging_037_13_9w_GF_M_Kidney_1_Pos,2,Male,2_GF,2_Male
39
+ 190628_TT1_Hclass_Aging_038_47_24M_GF_F_Kidney_3_Pos,24,Female,24_GF,24_Female
40
+ 190628_TT1_Hclass_Aging_039_41_12M_GF_F_Kidney_2_Pos,12,Female,12_GF,12_Female
41
+ 190628_TT1_Hclass_Aging_040_25_9w_SPF_F_Kidney_1_Pos,2,Female,2_SPF,2_Female
42
+ 190628_TT1_Hclass_Aging_041_46_24M_GF_F_Kidney_2_Pos,24,Female,24_GF,24_Female
43
+ 190628_TT1_Hclass_Aging_042_26_9w_SPF_F_Kidney_2_Pos,2,Female,2_SPF,2_Female
44
+ 190628_TT1_Hclass_Aging_043_37_9w_GF_F_Kidney_1_Pos,2,Female,2_GF,2_Female
45
+ 190628_TT1_Hclass_Aging_044_34_24M_SPF_F_Kidney_2_Pos,24,Female,24_SPF,24_Female
46
+ 190628_TT1_Hclass_Aging_045_30_12M_SPF_F_Kidney_3_Pos,12,Female,12_SPF,12_Female
47
+ 190628_TT1_Hclass_Aging_046_22_24M_GF_M_Kidney_1_Pos,24,Male,24_GF,24_Male
48
+ 190628_TT1_Hclass_Aging_047_1_9w_SPF_M_Kidney_1_Pos,2,Male,2_SPF,2_Male
49
+ 190628_TT1_Hclass_Aging_048_40_12M_GF_F_Kidney_1_Pos,12,Female,12_GF,12_Female
50
+ 190628_TT1_Hclass_Aging_Blank_Pos,Blank,Blank,Blank,Blank_Blank
51
+ 190628_TT1_Hclass_Aging_QC_Pos_01,Quality control,Quality control,QC,Quality control_Quality control
52
+ 190628_TT1_Hclass_Aging_QC_Pos_02,Quality control,Quality control,QC,Quality control_Quality control
53
+ 190628_TT1_Hclass_Aging_QC_Pos_03,Quality control,Quality control,QC,Quality control_Quality control
54
+ 190628_TT1_Hclass_Aging_QC_Pos_04,Quality control,Quality control,QC,Quality control_Quality control
55
+ 190628_TT1_Hclass_Aging_QC_Pos_05,Quality control,Quality control,QC,Quality control_Quality control
56
+ 190628_TT1_Hclass_Aging_QC_Pos_06,Quality control,Quality control,QC,Quality control_Quality control
57
+ 190628_TT1_Hclass_Aging_QC_Pos_07,Quality control,Quality control,QC,Quality control_Quality control
inst/examples/TranscriptomeData.csv ADDED
The diff for this file is too large to render. See raw diff
 
inst/www/DataPlot.png ADDED
inst/www/DataUpload.png ADDED
inst/www/PathwayAnalysis.png ADDED
inst/www/PlotDialog.png ADDED
nginx.conf ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ events {
2
+ worker_connections 1024;
3
+ }
4
+
5
+ http {
6
+ server {
7
+ listen 7860;
8
+ client_max_body_size 150M;
9
+
10
+ # Shinyアプリへのプロキシ
11
+ location / {
12
+ proxy_pass http://localhost:9000;
13
+ proxy_set_header Host $host;
14
+ proxy_set_header X-Real-IP $remote_addr;
15
+ proxy_set_header Upgrade $http_upgrade;
16
+ proxy_set_header Connection "upgrade";
17
+ proxy_read_timeout 86400;
18
+ proxy_set_header X-Forwarded-Proto $scheme; # プロトコル
19
+ proxy_set_header Request-Path $request_uri; # リクエストURLのパス部分
20
+ }
21
+
22
+ # Plumber APIへのプロキシ
23
+ location /api/ {
24
+ proxy_pass http://localhost:8000/;
25
+ proxy_set_header Host $host;
26
+ proxy_set_header X-Real-IP $remote_addr;
27
+ }
28
+ }
29
+ }
scripts/start.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # デーモンモードでNginxを起動
3
+ nginx
4
+
5
+ # Plumber APIを起動(8000番ポート)
6
+ R -e "plumber::pr_run(plumber::pr('/srv/app/plumber.R'), port=8000, host='0.0.0.0')" &
7
+
8
+ # メインプロセスとしてShinyアプリを起動(9000番ポート)
9
+ # フォアグラウンドで実行
10
+ R -e "shiny::runApp('/srv/app', host='0.0.0.0', port=9000)"