diff --git a/drug-target/global.R b/drug-target/global.R
index 7f6a06f..1f5b5fb 100644
--- a/drug-target/global.R
+++ b/drug-target/global.R
@@ -305,771 +305,771 @@ consurf_colours = c(
)
# if (true()){
-if (interactive()){
- options(shiny.launch.browser = FALSE) # i am a big girl and can tie my own laces
- options(shiny.port = 8000) # don't change the port every time
- options(shiny.host = '0.0.0.0') # This means "listen to all addresses on all interfaces"
- options(width=120)
- options(DT.options = list(scrollX = TRUE))
- #### UI ####
- ui <- dashboardPage(skin="purple",
- dashboardHeader(title = "Drug/Target Explorer"),
-
- dashboardSidebar(
- sidebarMenu( id = "sidebar",
- selectInput(
- "switch_target",
- label="Switch to New Target",
- choices = c(
- "alr",
- "embb",
- "gid",
- "katg",
- "pnca",
- "rpob"
- ),
- selected="embb"),
- menuItem("LogoP SNP", tabName="LogoP SNP"),
- #menuItem("Lineage Sample Count", tabName="Lineage Sample Count"),
- menuItem("Site SNP count", tabName="Site SNP count"),
- menuItem("Stability SNP by site", tabName="Stability SNP by site"),
- menuItem("DM OM Plots", tabName="DM OM Plots"),
- menuItem("Correlation", tabName="Correlation"),
- #menuItem("Lineage Distribution", tabName="Lineage Distribution"),
- menuItem("Consurf", tabName="Consurf"),
- menuItem("LogoP OR", tabName="LogoP OR"),
- menuItem("Lineage", tabName="Lineage"),
- #menuItem('Stability count', tabName='Stability count'),
-
- # These conditionalPanel()s make extra settings appear in the sidebar when needed
- conditionalPanel(
- condition="input.sidebar == 'LogoP SNP'",
- textInput(
- "omit_snp_count",
- "Omit SNPs",
- value = c(0),
- placeholder = "1,3,6"
- )
- ),
- # NOTE:
- # I *think* we can cheat here slightly and use the min/max from
- # merged_df3[['position']] for everything because the various
- # dataframes for a given gene/drug combination have the
- # same range of positions. May need fixing, especially
- # if we get/shrink the imported data files to something
- # more reasonable.
- conditionalPanel(
- condition="
- input.sidebar == 'LogoP SNP'||
- input.sidebar == 'Stability SNP by site' ||
- input.sidebar == 'Consurf' ||
- input.sidebar == 'LogoP OR'",
- sliderInput(
- "display_position_range"
- , "Display Positions"
- , min=1, max=150, value=c(1,150) # 150 is just a little less than the smallest pos_count
- )
- ),
-
- conditionalPanel(
- condition="
- input.sidebar == 'LogoP SNP' ||
- input.sidebar == 'LogoP OR' ||
- input.sidebar == 'LogoP ED'",
- selectInput(
- "logoplot_colour_scheme",
- label="Logo Plot Colour Scheme",
- choices = logoPlotSchemes,
- selected="chemistry"
- )
- ),
- conditionalPanel(
- condition="input.sidebar == 'Correlation'",
- selectInput(
- "corr_method",
- label="Correlation Method",
- choices = list("spearman",
- "pearson",
- "kendall"),
- selected="spearman"
- )
- ),
- conditionalPanel(
- condition="input.sidebar == 'Correlation'",
- numericInput(
- "corr_lig_dist"
- , "Ligand Distance Cutoff (Å)", value=1
- )
- ),
- conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- numericInput(
- "snp_ligand_dist"
- , "Ligand Distance Cutoff (Å)", value=10
- )
- ),
- conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- numericInput(
- "snp_interface_dist"
- , "Interface Distance Cutoff (Å)", value=10
- )
- ),
- conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- numericInput(
- "snp_nca_dist"
- , "NCA Distance Cutoff (Å)", value=10
- )
- ),
-
- conditionalPanel(
- condition="input.sidebar == 'Correlation'",
- checkboxGroupInput(
- "corr_selected",
- "Parameters",
- choiceNames = c(
- "DeepDDG",
- "Dynamut2",
- "FoldX",
- "ConSurf"#,
- ),
- choiceValues = c(
- "DeepDDG",
- "Dynamut2",
- "FoldX",
- "ConSurf"#,
- ),
- selected = c(
- "DeepDDG",
- "Dynamut2",
- "FoldX",
- "ConSurf"#,
- )
- )
- ),
-
- # conditionalPanel(
- # condition="input.sidebar == 'DM OM Plots'",
- # selectInput(
- # "dm_om_param",
- # label="Stability Parameter",
- # choices = keys(dm_om_map),
- # selected="SNAP2")
- # ),
- # colour_categ
- conditionalPanel(
- condition="input.sidebar == 'Stability SNP by site'",
- selectInput(
- "stability_snp_param",
- label="Stability Parameter",
- choices = stability_boxes_df$stability_type,
- selected="Average")
- ),
- conditionalPanel(
- condition="input.sidebar == 'Stability SNP by site'",
- checkboxInput("reorder_custom_h",
- label="Reorder by SNP count",
- FALSE)
- ),
- conditionalPanel(
- condition="input.sidebar.match(/^Lineage.*/)",
- checkboxInput("all_lineages",
- label="All Lineages",
- FALSE)
- ),
- # an example of how you can match multiple things in frontend JS
- conditionalPanel(
- condition="input.sidebar == 'LogoP SNP' ||
- input.sidebar =='Stability SNP by site' ||
- input.sidebar =='Consurf' ||
- input.sidebar =='LogoP OR'",
- actionButton("clear_ngl",
- "Clear Structure")
- ),
- conditionalPanel(
- condition="input.sidebar == 'LogoP SNP' ||
- input.sidebar =='Stability SNP by site' ||
- input.sidebar =='Consurf' ||
- input.sidebar =='LogoP OR'",
- actionButton("test_ngl",
- "Test NGLViewR")
- )#,
-
- # downloadButton("save",
- # "Download Plot"
- # )
- # actionButton(
- # "reload_target",
- # label="Reload Target\nData (slow!)"
- # )
-
- )
- ),
- #### body ####
- body <- dashboardBody(
-
- tabItems(
- tabItem(tabName = "dashboard",
- h2("Dashboard tab content")
- ),
-
- tabItem(tabName = "widgets",
- h2("Widgets tab content")
- )
- ),
- # creates a 'Conditional Panel' containing a plot object from each of our
- # ggplot plot functions (and its associated data frame)
- fluidRow(column(width=12,
- lapply(plot_functions_df$tab_name,
- function(x){
-
- plot_function=plot_functions_df[
- plot_functions_df$tab_name==x,
- "plot_function"]
-
- plot_df=plot_functions_df[
- plot_functions_df$tab_name==x,
- "plot_df"]
- cat(paste0('\nCreating output: ', x))
- generate_conditionalPanel(x, plot_function, plot_df)
-
- }
- )
- )
- ),
- # Explicit fluidRow() for Lineage plots together
- fluidRow(
- column(conditionalPanel(
- condition="input.sidebar.match(/^Lineage.*/)", box(
- title="Lineage Distribution"
- , status = "info"
- , width=NULL
- , plotOutput("lineage_distP", height="700px") %>% withSpinner(color="#0dc5c1"),
- height=800
- )
- ), width=6
- ),
- column(conditionalPanel(
- condition="input.sidebar.match(/^Lineage.*/)", box(
- title="Lineage SNP Diversity"
- , status = "info"
- , width=NULL
- , plotOutput("lin_sc", height="700px") %>% withSpinner(color="#0dc5c1"),
- height=800
- )
- ), width=6
- )
-
- ),
- # Explicit fluidRow() for Site SNP Count
- fluidRow(
- column(conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- box(
- title="Site SNP count"
- , status = "info"
- , width=NULL
- , plotOutput("site_snp_count_bp") %>% withSpinner(color="#0dc5c1")
- )
- ), width=6
- ),
- column(conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- box(
- title="Ligand Distance"
- , status = "info"
- , width=NULL
- , plotOutput("site_snp_count_bp_ligand") %>% withSpinner(color="#0dc5c1")
- )
- ), width=6
- ),
- column(conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- box(
- title="Interface Distance"
- , status = "info"
- , width=NULL
- , plotOutput("site_snp_count_interface") %>% withSpinner(color="#0dc5c1")
- )
- ), width=6
- ),
- column(conditionalPanel(
- condition="input.sidebar == 'Site SNP count'",
- box(
- title="RNA Distance"
- , status = "info"
- , width=NULL
- , plotOutput("site_snp_count_nca") %>% withSpinner(color="#0dc5c1")
- )
- ), width=6
- )
- ),
-
- # # Explicit fluidRow() for Stability Count
- # fluidRow(
- # column(
- # conditionalPanel(
- # condition="input.sidebar.match(/^Lineage.*/)",
- # lapply(
- # # FIXME: using a hardcoded target DF for this IS WRONG AND WILL BREAK
- # stability_boxes_df[stability_boxes_df$outcome_colname %in% colnames(embb_merged_df3),"outcome_colname"],
- # function(x){
- # print(paste0("outcome_colname: ",x))
- # box(plotOutput(x), width=4)
- # }
- # ),
- # width=12
- # )
- # )
- # ),
-
- #### fluidRow()s for "Stability Count" in the sidebar ####
- fluidRow(
- conditionalPanel(
- condition="
- input.sidebar == 'LogoP SNP' ||
- input.sidebar =='Stability SNP by site' ||
- input.sidebar =='Consurf' ||
- input.sidebar =='LogoP OR'",
- column(NGLVieweROutput("structure"),
- width=3
- )
- ),
- conditionalPanel(
- condition="
- input.sidebar == 'LogoP SNP' ||
- input.sidebar == 'Stability SNP by site' ||
- input.sidebar == 'Site SNP count' ||
- input.sidebar == 'Consurf' ||
- input.sidebar == 'LogoP OR'",
- column(
- DT::dataTableOutput('table'),
- width=9
- )
- )
- ),
- )
- )
- server <- function(input, output, session) {
-
- #output$LogoPlotSnps = renderPlot(LogoPlotSnps(mutable_df3))
- output$lin_sc = renderPlot(
- lin_sc(
- input$switch_target,
- all_lineages = input$all_lineages,
- my_xats = 12, # x axis text size
- my_yats = 12, # y axis text size
- my_xals = 12, # x axis label size
- my_yals = 12, # y axis label size
- my_lls = 12, # legend label size
- d_lab_size = 4
- )
- )
- #### lineage_distP ####
- output$lineage_distP = renderPlot(
- lineage_distP(
- get(paste0(input$switch_target, '_merged_df2')),
- all_lineages = input$all_lineages,
- x_lab = "Average Stability",
- x_axis = "avg_stability_scaled",
- fill_categ_cols = c("red", "blue")
- )
- )
-
-
- #### observeEvent() Fun(tm) ####
- observeEvent(input$clear_ngl, {
- NGLVieweR_proxy("structure") %>%
- removeSelection("Pos")
- })
- # Button to test adding a position
- observeEvent(input$test_ngl, {
- NGLVieweR_proxy("structure") %>%
- addSelection('ball+stick'
- , param = list(
- name = "Pos"
- , sele = "35"
- , color = "green")
- )
- })
-
- observeEvent(
- {
- input$display_position_range
- input$stability_snp_param
- input$logoplot_colour_scheme
- input$omit_snp_count
- input$switch_target
- input$snp_ligand_dist
- input$snp_nca_dist
- input$snp_interface_dist
- },
- {
- print("entering main observeEvent()")
- # C O M P A T I B I L I T Y
- #gene=input$switch_target
- #drug=target_map[[gene]]
- target_gene = input$switch_target
- merged_df3 = cbind(get(paste0(input$switch_target, '_merged_df3')))
-
- position_max=max(merged_df3[['position']])
- position_min=min(merged_df3[['position']])
- min_ligand_distance=min(merged_df3$ligand_distance)
- max_ligand_distance=max(merged_df3$ligand_distance)
- # FIXME: these are IMPORTANT
- # # add "pos_count" position count column
- # merged_df3=merged_df3 %>% dplyr::add_count(position)
- # merged_df3$pos_count=merged_df3$n
- # merged_df3$n=NULL
- #
- mutable_df3 = cbind(merged_df3)
- #
- # # re-sort the dataframe according to position count
- sorted_df = cbind(merged_df3)
- sorted_df = sorted_df %>% arrange(pos_count)
-
- #
- outdir = paste0(load_dir, "Data/", drug, '/output/')
- indir = paste0(load_dir, "Data/", drug , "/input/")
-
-
- #### nasty special-purpose merged_df3 variants ####
- # FIXME: SLOW
- # corr_plotdf = corr_data_extract(
- # merged_df3
- # , gene = gene
- # , drug = drug
- # , extract_scaled_cols = F
- # )
-
- #input$stability_snp_param
-
- updateCheckboxGroupInput(
- session,
- "corr_selected",
- choiceNames = colnames(get(paste0(input$switch_target,"_corr_df_m3_f"))),
- choiceValues = colnames(get(paste0(input$switch_target,"_corr_df_m3_f"))),
- selected = c("FoldX", "DeepDDG", "mCSM.DUET")
- )
-
- updateSliderInput(
- session,
- "display_position_range",
- min = position_min,
- max = position_max
- #, value = c(position_min, position_min+150)
- )
-
- updateNumericInput(session, "selected_logop_snp_position", min = position_min, max = position_max, value = position_min)
- updateNumericInput(session, "selected_logop_ed_position", min = position_min, max = position_max, value = position_min)
- updateNumericInput(session, "corr_lig_dist", min = min_ligand_distance, max = max_ligand_distance, value = min_ligand_distance)
-
- updateNumericInput(session, "snp_ligand_dist", min = min(merged_df3$ligand_distance), max = max(merged_df3$ligand_distance))
- updateNumericInput(session, "snp_interface_dist", min = min(merged_df3$interface_dist), max = max(merged_df3$interface_dist))
- updateNumericInput(session, "snp_nca_dist", min = min(merged_df3$nca_distance), max = max(merged_df3$nca_distance))
-
-
- # different data ranges required for SNP distances
- snp_ligand_dist_df3 = merged_df3[merged_df3[['ligand_distance']]=plot_min & mutable_df3$position <=plot_max),]
-
- subset_mutable_df3=mutable_df3[(mutable_df3$position>=plot_min & mutable_df3$position <=plot_max),]
- subset_sorted_df=sorted_df[(sorted_df$position>=plot_min & sorted_df$position <=plot_max),]
-
- #### LogoPlotSnps ####
- output$LogoPlotSnps = renderPlot(
- LogoPlotSnps(subset_mutable_df3,
- aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
- active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
- aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
- aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
- aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3")),
- my_logo_col = logoplot_colour_scheme,
- omit_snp_count = omit_snp_count
-
- )
- )
-
- ### NGLViewer ####
- # Structure Viewer WebGL/NGLViewR window
- output$structure <- renderNGLVieweR({
- #ngl_gene=isolate(input$switch_target)
- ngl_gene=input$switch_target
- ngl_drug=target_map[[ngl_gene]]
- ngl_pdb_file=paste0(load_dir, "Data/", ngl_drug, '/output/depth/', ngl_gene, '_complex.pdb')
- print(ngl_pdb_file)
- NGLVieweR(ngl_pdb_file) %>%
- addRepresentation("cartoon",
- param = list(name = "cartoon",
- color="tan"
- #, colorScheme = "chainid"
- )
- ) %>%
- stageParameters(backgroundColor = "lightgrey") %>%
- setQuality("high") %>%
- setFocus(0) %>%
- setSpin(FALSE)
- })
-
-
- #### Shared dataTable() ####
- output$table = DT::renderDataTable(
- datatable(subset_sorted_df[,table_columns],
- filter="top",
- selection = "single"
- )
- )
-
- #### bp_stability_hmap ####
- # red/blue tiles wala "Stability SNP by Site"
- output$bp_stability_hmap = renderPlot(
- bp_stability_hmap(
- subset_sorted_df,
- reorder_position = input$reorder_custom_h,
- p_title = NULL,
- yvar_colname = stability_colname,
- stability_colname = stability_colname,
- stability_outcome_colname = outcome_colname,
- my_ylab = NULL,
- y_max_override = max(sorted_df$pos_count),
- aa_pos_drug = get(paste0("embb","_aa_pos_drug")),
- active_aa_pos = get(paste0("embb","_active_aa_pos")),
- aa_pos_lig1 = get(paste0("embb","_aa_pos_lig1")),
- aa_pos_lig2 = get(paste0("embb","_aa_pos_lig2")),
- aa_pos_lig3 = get(paste0("embb","_aa_pos_lig3"))
- )
- )
- #### LogoPlotCustomH ####
- output$LogoPlotCustomH = renderPlot(
- LogoPlotCustomH(
- subset_sorted_df,
- my_logo_col = logoplot_colour_scheme,
- aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
- active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
- aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
- aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
- aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3"))
- )
- )
-
- #### wideP_consurf3 ####
- output$wideP_consurf3 = renderPlot(
- wideP_consurf3(
- subset_sorted_df,
- point_colours = consurf_colours,
- aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
- active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
- aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
- aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
- aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3"))
- )
- )
-
- #### site_snp_count_bp ####
- #mutable_df3[(mutable_df3$position>=plot_min & mutable_df3$position <=plot_max),]
- # ligand_distance
- # interface_dist
- # nca_distance
- # change to: multiple plots, all use site_snp_count_bp
- # 4 x plots side by side, one normal (no dist. filter), 2/3 filtered by distance columns above
- # use "subtitle text" from pos_count_bp_i.R
-
- output$site_snp_count_bp = renderPlot(
- site_snp_count_bp(
- mutable_df3,
- title_colour = 'black',
- subtitle_colour = "black",
- leg_text_size = 12,
- axis_label_size = 12,
- geom_ls = 4
- )
- )
- output$site_snp_count_bp_ligand = renderPlot(
- site_snp_count_bp(
- snp_ligand_dist_df3,
- title_colour = 'black',
- subtitle_colour = "black",
- leg_text_size = 12,
- axis_label_size = 12,
- geom_ls = 4
- )
- )
-
- # if ("interface_dist" %in% colnames(input$switch_target)) {
- output$site_snp_count_interface = renderPlot(
- site_snp_count_bp(
- snp_interface_dist_df3,
- title_colour = 'black',
- subtitle_colour = "black",
- leg_text_size = 12,
- axis_label_size = 12,
- geom_ls = 4
- )
- )
- # } #else {
- # output$site_snp_count_interface = renderPlot(
- # ggplot() + annotate(x=1,y=1,"text", label="No interface data for this target")+theme_void()
- # )
- # }
-
- output$site_snp_count_nca = renderPlot( #{
- #if ("nca_distance" %in% colnames(input$switch_target)) {
- site_snp_count_bp(
- snp_nca_dist_df3,
- title_colour = 'black',
- subtitle_colour = "black",
- leg_text_size = 12,
- axis_label_size = 12,
- geom_ls = 4
- )
- # } else {
- # ggplot() + annotate(x=1,y=1,"text", label="No RNA data for this target")+theme_void()
- # }
- # }
- )
-
-
-
- #### DM OM Plots ####
- #dm_om_param
- # order needs to be:
- # embb_lf_duet, embb_lf_foldx, embb_lf_deepddg, embb_lf_dynamut2, embb_lf_dist_gen,
- # embb_lf_consurf, embb_lf_provean, embb_lf_snap2, embb_lf_mcsm_lig, embb_lf_mmcsm_lig,
- # embb_lf_mcsm_ppi2, SOMETHING NA
-
- # embb_lf_mmcsm_lig SOMETHING NA,
- #dm_om_selection=input$dm_om_param
- #dm_om_df = dm_om_map[[dm_om_selection]]
- #output$lf_bp2 = renderPlot(lf_bp2(get(paste0(input$switch_target, '_', dm_om_df))))
-
- output$lf_bp2 = renderPlot(
- cowplot::plot_grid(
- plotlist = lapply(
- ls(name=.GlobalEnv,
- pattern=paste0(
- target_gene,
- '_lf_'
- )
- ),
- function(x){
- lf_bp2(get(x))
- }
- )#, nrow=3
- ), height=800
- )
- }
- )
-
-
- # FIXME: Doesn't add selected table rows correctly
- observeEvent(
- {
- input$table_rows_selected
- },
- {
- # having to duplicate this is a bit annoying :-(
- ngl_merged_df3=cbind(get(paste0(input$switch_target, '_merged_df3')))
- ngl_sorted_df = cbind(ngl_merged_df3)
- ngl_sorted_df = ngl_sorted_df %>% arrange(pos_count)
-
- position_max=max(ngl_merged_df3[['position']])
- position_min=min(ngl_merged_df3[['position']])
- display_position_range = input$display_position_range
- plot_min=display_position_range[1]
- plot_max=display_position_range[2]
- #ngl_subset_df=ngl_merged_df3[(ngl_merged_df3$position>=plot_min & ngl_merged_df3$position <=plot_max),]
- ngl_subset_df=ngl_sorted_df[(ngl_sorted_df$position>=plot_min & ngl_sorted_df$position <=plot_max),]
-
-
- #table_rows_selected = isolate(input$table_rows_selected)
- table_rows_selected = input$table_rows_selected
- class(table_rows_selected)
- #cat(paste0("Target: ", as.character(input$switch_target), "\nTable Rows for NGLViewR: ", as.character(table_rows_selected)))
-
- struct_pos=(as.character(ngl_subset_df[table_rows_selected,"position"]))
- cat(paste0('Table Index: ', table_rows_selected, "position: ", struct_pos))
-
- NGLVieweR_proxy("structure") %>%
- #addSelection('ball+stick'
- addSelection('hyperball'
- , param = list(
- name = "Pos"
- , sele = struct_pos
- #, color = "#00ff00"
- , colorValue="00ff00"
- , colorScheme="element"
- )
- )
- #cat(paste0('Done NGLViewR addSelection for: ', positions_to_add))
- }
- )
- #### Correlation observeEvent ####
- # Yet another special-case observeEvent to handle the correlation pair plot
-
- observeEvent(
- {
- input$corr_selected
- input$corr_method
- input$corr_lig_dist
- },
- {
- dist_cutoff_user = input$corr_lig_dist
- target_gene=input$switch_target
- plot_title=paste0(target_map[[target_gene]],"/",target_gene)
-
- corr_plot_df = get(
- paste0(
- input$switch_target,"_corr_df_m3_f"
- )
- )[,c(input$corr_selected, "dst_mode")]
-
- #if ( dist_cutoff_user >= 2) {
- #corr_plotdf_subset = corr_plot_df[corr_plot_df[['Lig.Dist']] < dist_cutoff_user,]
- #}
- # else {
- # corr_plotdf_subset = corr_plot_df
- # }
-
- #### Correlation using ggpairs() ####
- output$my_corr_pairs = renderPlot(
- dashboard_ggpairs(
- corr_plot_df,
- plot_title = plot_title,
- method = input$corr_method,
- tt_args_size = 7,
- gp_args_size = 7
- ), height = 900
- )
- }
- )
- }
-
-
- app <- shinyApp(ui, server)
- runApp(app)
-}
+# if (interactive()){
+# options(shiny.launch.browser = FALSE) # i am a big girl and can tie my own laces
+# options(shiny.port = 8000) # don't change the port every time
+# options(shiny.host = '0.0.0.0') # This means "listen to all addresses on all interfaces"
+# options(width=120)
+# options(DT.options = list(scrollX = TRUE))
+# #### UI ####
+# ui <- dashboardPage(skin="purple",
+# dashboardHeader(title = "Drug/Target Explorer"),
+#
+# dashboardSidebar(
+# sidebarMenu( id = "sidebar",
+# selectInput(
+# "switch_target",
+# label="Switch to New Target",
+# choices = c(
+# "alr",
+# "embb",
+# "gid",
+# "katg",
+# "pnca",
+# "rpob"
+# ),
+# selected="embb"),
+# menuItem("LogoP SNP", tabName="LogoP SNP"),
+# #menuItem("Lineage Sample Count", tabName="Lineage Sample Count"),
+# menuItem("Site SNP count", tabName="Site SNP count"),
+# menuItem("Stability SNP by site", tabName="Stability SNP by site"),
+# menuItem("DM OM Plots", tabName="DM OM Plots"),
+# menuItem("Correlation", tabName="Correlation"),
+# #menuItem("Lineage Distribution", tabName="Lineage Distribution"),
+# menuItem("Consurf", tabName="Consurf"),
+# menuItem("LogoP OR", tabName="LogoP OR"),
+# menuItem("Lineage", tabName="Lineage"),
+# #menuItem('Stability count', tabName='Stability count'),
+#
+# # These conditionalPanel()s make extra settings appear in the sidebar when needed
+# conditionalPanel(
+# condition="input.sidebar == 'LogoP SNP'",
+# textInput(
+# "omit_snp_count",
+# "Omit SNPs",
+# value = c(0),
+# placeholder = "1,3,6"
+# )
+# ),
+# # NOTE:
+# # I *think* we can cheat here slightly and use the min/max from
+# # merged_df3[['position']] for everything because the various
+# # dataframes for a given gene/drug combination have the
+# # same range of positions. May need fixing, especially
+# # if we get/shrink the imported data files to something
+# # more reasonable.
+# conditionalPanel(
+# condition="
+# input.sidebar == 'LogoP SNP'||
+# input.sidebar == 'Stability SNP by site' ||
+# input.sidebar == 'Consurf' ||
+# input.sidebar == 'LogoP OR'",
+# sliderInput(
+# "display_position_range"
+# , "Display Positions"
+# , min=1, max=150, value=c(1,150) # 150 is just a little less than the smallest pos_count
+# )
+# ),
+#
+# conditionalPanel(
+# condition="
+# input.sidebar == 'LogoP SNP' ||
+# input.sidebar == 'LogoP OR' ||
+# input.sidebar == 'LogoP ED'",
+# selectInput(
+# "logoplot_colour_scheme",
+# label="Logo Plot Colour Scheme",
+# choices = logoPlotSchemes,
+# selected="chemistry"
+# )
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Correlation'",
+# selectInput(
+# "corr_method",
+# label="Correlation Method",
+# choices = list("spearman",
+# "pearson",
+# "kendall"),
+# selected="spearman"
+# )
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Correlation'",
+# numericInput(
+# "corr_lig_dist"
+# , "Ligand Distance Cutoff (Å)", value=1
+# )
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# numericInput(
+# "snp_ligand_dist"
+# , "Ligand Distance Cutoff (Å)", value=10
+# )
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# numericInput(
+# "snp_interface_dist"
+# , "Interface Distance Cutoff (Å)", value=10
+# )
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# numericInput(
+# "snp_nca_dist"
+# , "NCA Distance Cutoff (Å)", value=10
+# )
+# ),
+#
+# conditionalPanel(
+# condition="input.sidebar == 'Correlation'",
+# checkboxGroupInput(
+# "corr_selected",
+# "Parameters",
+# choiceNames = c(
+# "DeepDDG",
+# "Dynamut2",
+# "FoldX",
+# "ConSurf"#,
+# ),
+# choiceValues = c(
+# "DeepDDG",
+# "Dynamut2",
+# "FoldX",
+# "ConSurf"#,
+# ),
+# selected = c(
+# "DeepDDG",
+# "Dynamut2",
+# "FoldX",
+# "ConSurf"#,
+# )
+# )
+# ),
+#
+# # conditionalPanel(
+# # condition="input.sidebar == 'DM OM Plots'",
+# # selectInput(
+# # "dm_om_param",
+# # label="Stability Parameter",
+# # choices = keys(dm_om_map),
+# # selected="SNAP2")
+# # ),
+# # colour_categ
+# conditionalPanel(
+# condition="input.sidebar == 'Stability SNP by site'",
+# selectInput(
+# "stability_snp_param",
+# label="Stability Parameter",
+# choices = stability_boxes_df$stability_type,
+# selected="Average")
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'Stability SNP by site'",
+# checkboxInput("reorder_custom_h",
+# label="Reorder by SNP count",
+# FALSE)
+# ),
+# conditionalPanel(
+# condition="input.sidebar.match(/^Lineage.*/)",
+# checkboxInput("all_lineages",
+# label="All Lineages",
+# FALSE)
+# ),
+# # an example of how you can match multiple things in frontend JS
+# conditionalPanel(
+# condition="input.sidebar == 'LogoP SNP' ||
+# input.sidebar =='Stability SNP by site' ||
+# input.sidebar =='Consurf' ||
+# input.sidebar =='LogoP OR'",
+# actionButton("clear_ngl",
+# "Clear Structure")
+# ),
+# conditionalPanel(
+# condition="input.sidebar == 'LogoP SNP' ||
+# input.sidebar =='Stability SNP by site' ||
+# input.sidebar =='Consurf' ||
+# input.sidebar =='LogoP OR'",
+# actionButton("test_ngl",
+# "Test NGLViewR")
+# )#,
+#
+# # downloadButton("save",
+# # "Download Plot"
+# # )
+# # actionButton(
+# # "reload_target",
+# # label="Reload Target\nData (slow!)"
+# # )
+#
+# )
+# ),
+# #### body ####
+# body <- dashboardBody(
+#
+# tabItems(
+# tabItem(tabName = "dashboard",
+# h2("Dashboard tab content")
+# ),
+#
+# tabItem(tabName = "widgets",
+# h2("Widgets tab content")
+# )
+# ),
+# # creates a 'Conditional Panel' containing a plot object from each of our
+# # ggplot plot functions (and its associated data frame)
+# fluidRow(column(width=12,
+# lapply(plot_functions_df$tab_name,
+# function(x){
+#
+# plot_function=plot_functions_df[
+# plot_functions_df$tab_name==x,
+# "plot_function"]
+#
+# plot_df=plot_functions_df[
+# plot_functions_df$tab_name==x,
+# "plot_df"]
+# cat(paste0('\nCreating output: ', x))
+# generate_conditionalPanel(x, plot_function, plot_df)
+#
+# }
+# )
+# )
+# ),
+# # Explicit fluidRow() for Lineage plots together
+# fluidRow(
+# column(conditionalPanel(
+# condition="input.sidebar.match(/^Lineage.*/)", box(
+# title="Lineage Distribution"
+# , status = "info"
+# , width=NULL
+# , plotOutput("lineage_distP", height="700px") %>% withSpinner(color="#0dc5c1"),
+# height=800
+# )
+# ), width=6
+# ),
+# column(conditionalPanel(
+# condition="input.sidebar.match(/^Lineage.*/)", box(
+# title="Lineage SNP Diversity"
+# , status = "info"
+# , width=NULL
+# , plotOutput("lin_sc", height="700px") %>% withSpinner(color="#0dc5c1"),
+# height=800
+# )
+# ), width=6
+# )
+#
+# ),
+# # Explicit fluidRow() for Site SNP Count
+# fluidRow(
+# column(conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# box(
+# title="Site SNP count"
+# , status = "info"
+# , width=NULL
+# , plotOutput("site_snp_count_bp") %>% withSpinner(color="#0dc5c1")
+# )
+# ), width=6
+# ),
+# column(conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# box(
+# title="Ligand Distance"
+# , status = "info"
+# , width=NULL
+# , plotOutput("site_snp_count_bp_ligand") %>% withSpinner(color="#0dc5c1")
+# )
+# ), width=6
+# ),
+# column(conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# box(
+# title="Interface Distance"
+# , status = "info"
+# , width=NULL
+# , plotOutput("site_snp_count_interface") %>% withSpinner(color="#0dc5c1")
+# )
+# ), width=6
+# ),
+# column(conditionalPanel(
+# condition="input.sidebar == 'Site SNP count'",
+# box(
+# title="RNA Distance"
+# , status = "info"
+# , width=NULL
+# , plotOutput("site_snp_count_nca") %>% withSpinner(color="#0dc5c1")
+# )
+# ), width=6
+# )
+# ),
+#
+# # # Explicit fluidRow() for Stability Count
+# # fluidRow(
+# # column(
+# # conditionalPanel(
+# # condition="input.sidebar.match(/^Lineage.*/)",
+# # lapply(
+# # # FIXME: using a hardcoded target DF for this IS WRONG AND WILL BREAK
+# # stability_boxes_df[stability_boxes_df$outcome_colname %in% colnames(embb_merged_df3),"outcome_colname"],
+# # function(x){
+# # print(paste0("outcome_colname: ",x))
+# # box(plotOutput(x), width=4)
+# # }
+# # ),
+# # width=12
+# # )
+# # )
+# # ),
+#
+# #### fluidRow()s for "Stability Count" in the sidebar ####
+# fluidRow(
+# conditionalPanel(
+# condition="
+# input.sidebar == 'LogoP SNP' ||
+# input.sidebar =='Stability SNP by site' ||
+# input.sidebar =='Consurf' ||
+# input.sidebar =='LogoP OR'",
+# column(NGLVieweROutput("structure"),
+# width=3
+# )
+# ),
+# conditionalPanel(
+# condition="
+# input.sidebar == 'LogoP SNP' ||
+# input.sidebar == 'Stability SNP by site' ||
+# input.sidebar == 'Site SNP count' ||
+# input.sidebar == 'Consurf' ||
+# input.sidebar == 'LogoP OR'",
+# column(
+# DT::dataTableOutput('table'),
+# width=9
+# )
+# )
+# ),
+# )
+# )
+# server <- function(input, output, session) {
+#
+# #output$LogoPlotSnps = renderPlot(LogoPlotSnps(mutable_df3))
+# output$lin_sc = renderPlot(
+# lin_sc(
+# input$switch_target,
+# all_lineages = input$all_lineages,
+# my_xats = 12, # x axis text size
+# my_yats = 12, # y axis text size
+# my_xals = 12, # x axis label size
+# my_yals = 12, # y axis label size
+# my_lls = 12, # legend label size
+# d_lab_size = 4
+# )
+# )
+# #### lineage_distP ####
+# output$lineage_distP = renderPlot(
+# lineage_distP(
+# get(paste0(input$switch_target, '_merged_df2')),
+# all_lineages = input$all_lineages,
+# x_lab = "Average Stability",
+# x_axis = "avg_stability_scaled",
+# fill_categ_cols = c("red", "blue")
+# )
+# )
+#
+#
+# #### observeEvent() Fun(tm) ####
+# observeEvent(input$clear_ngl, {
+# NGLVieweR_proxy("structure") %>%
+# removeSelection("Pos")
+# })
+# # Button to test adding a position
+# observeEvent(input$test_ngl, {
+# NGLVieweR_proxy("structure") %>%
+# addSelection('ball+stick'
+# , param = list(
+# name = "Pos"
+# , sele = "35"
+# , color = "green")
+# )
+# })
+#
+# observeEvent(
+# {
+# input$display_position_range
+# input$stability_snp_param
+# input$logoplot_colour_scheme
+# input$omit_snp_count
+# input$switch_target
+# input$snp_ligand_dist
+# input$snp_nca_dist
+# input$snp_interface_dist
+# },
+# {
+# print("entering main observeEvent()")
+# # C O M P A T I B I L I T Y
+# #gene=input$switch_target
+# #drug=target_map[[gene]]
+# target_gene = input$switch_target
+# merged_df3 = cbind(get(paste0(input$switch_target, '_merged_df3')))
+#
+# position_max=max(merged_df3[['position']])
+# position_min=min(merged_df3[['position']])
+# min_ligand_distance=min(merged_df3$ligand_distance)
+# max_ligand_distance=max(merged_df3$ligand_distance)
+# # FIXME: these are IMPORTANT
+# # # add "pos_count" position count column
+# # merged_df3=merged_df3 %>% dplyr::add_count(position)
+# # merged_df3$pos_count=merged_df3$n
+# # merged_df3$n=NULL
+# #
+# mutable_df3 = cbind(merged_df3)
+# #
+# # # re-sort the dataframe according to position count
+# sorted_df = cbind(merged_df3)
+# sorted_df = sorted_df %>% arrange(pos_count)
+#
+# #
+# outdir = paste0(load_dir, "Data/", drug, '/output/')
+# indir = paste0(load_dir, "Data/", drug , "/input/")
+#
+#
+# #### nasty special-purpose merged_df3 variants ####
+# # FIXME: SLOW
+# # corr_plotdf = corr_data_extract(
+# # merged_df3
+# # , gene = gene
+# # , drug = drug
+# # , extract_scaled_cols = F
+# # )
+#
+# #input$stability_snp_param
+#
+# updateCheckboxGroupInput(
+# session,
+# "corr_selected",
+# choiceNames = colnames(get(paste0(input$switch_target,"_corr_df_m3_f"))),
+# choiceValues = colnames(get(paste0(input$switch_target,"_corr_df_m3_f"))),
+# selected = c("FoldX", "DeepDDG", "mCSM.DUET")
+# )
+#
+# updateSliderInput(
+# session,
+# "display_position_range",
+# min = position_min,
+# max = position_max
+# #, value = c(position_min, position_min+150)
+# )
+#
+# updateNumericInput(session, "selected_logop_snp_position", min = position_min, max = position_max, value = position_min)
+# updateNumericInput(session, "selected_logop_ed_position", min = position_min, max = position_max, value = position_min)
+# updateNumericInput(session, "corr_lig_dist", min = min_ligand_distance, max = max_ligand_distance, value = min_ligand_distance)
+#
+# updateNumericInput(session, "snp_ligand_dist", min = min(merged_df3$ligand_distance), max = max(merged_df3$ligand_distance))
+# updateNumericInput(session, "snp_interface_dist", min = min(merged_df3$interface_dist), max = max(merged_df3$interface_dist))
+# updateNumericInput(session, "snp_nca_dist", min = min(merged_df3$nca_distance), max = max(merged_df3$nca_distance))
+#
+#
+# # different data ranges required for SNP distances
+# snp_ligand_dist_df3 = merged_df3[merged_df3[['ligand_distance']]=plot_min & mutable_df3$position <=plot_max),]
+#
+# subset_mutable_df3=mutable_df3[(mutable_df3$position>=plot_min & mutable_df3$position <=plot_max),]
+# subset_sorted_df=sorted_df[(sorted_df$position>=plot_min & sorted_df$position <=plot_max),]
+#
+# #### LogoPlotSnps ####
+# output$LogoPlotSnps = renderPlot(
+# LogoPlotSnps(subset_mutable_df3,
+# aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
+# active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
+# aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
+# aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
+# aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3")),
+# my_logo_col = logoplot_colour_scheme,
+# omit_snp_count = omit_snp_count
+#
+# )
+# )
+#
+# ### NGLViewer ####
+# # Structure Viewer WebGL/NGLViewR window
+# output$structure <- renderNGLVieweR({
+# #ngl_gene=isolate(input$switch_target)
+# ngl_gene=input$switch_target
+# ngl_drug=target_map[[ngl_gene]]
+# ngl_pdb_file=paste0(load_dir, "Data/", ngl_drug, '/output/depth/', ngl_gene, '_complex.pdb')
+# print(ngl_pdb_file)
+# NGLVieweR(ngl_pdb_file) %>%
+# addRepresentation("cartoon",
+# param = list(name = "cartoon",
+# color="tan"
+# #, colorScheme = "chainid"
+# )
+# ) %>%
+# stageParameters(backgroundColor = "lightgrey") %>%
+# setQuality("high") %>%
+# setFocus(0) %>%
+# setSpin(FALSE)
+# })
+#
+#
+# #### Shared dataTable() ####
+# output$table = DT::renderDataTable(
+# datatable(subset_sorted_df[,table_columns],
+# filter="top",
+# selection = "single"
+# )
+# )
+#
+# #### bp_stability_hmap ####
+# # red/blue tiles wala "Stability SNP by Site"
+# output$bp_stability_hmap = renderPlot(
+# bp_stability_hmap(
+# subset_sorted_df,
+# reorder_position = input$reorder_custom_h,
+# p_title = NULL,
+# yvar_colname = stability_colname,
+# stability_colname = stability_colname,
+# stability_outcome_colname = outcome_colname,
+# my_ylab = NULL,
+# y_max_override = max(sorted_df$pos_count),
+# aa_pos_drug = get(paste0("embb","_aa_pos_drug")),
+# active_aa_pos = get(paste0("embb","_active_aa_pos")),
+# aa_pos_lig1 = get(paste0("embb","_aa_pos_lig1")),
+# aa_pos_lig2 = get(paste0("embb","_aa_pos_lig2")),
+# aa_pos_lig3 = get(paste0("embb","_aa_pos_lig3"))
+# )
+# )
+# #### LogoPlotCustomH ####
+# output$LogoPlotCustomH = renderPlot(
+# LogoPlotCustomH(
+# subset_sorted_df,
+# my_logo_col = logoplot_colour_scheme,
+# aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
+# active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
+# aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
+# aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
+# aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3"))
+# )
+# )
+#
+# #### wideP_consurf3 ####
+# output$wideP_consurf3 = renderPlot(
+# wideP_consurf3(
+# subset_sorted_df,
+# point_colours = consurf_colours,
+# aa_pos_drug = get(paste0(target_gene,"_aa_pos_drug")),
+# active_aa_pos = get(paste0(target_gene,"_active_aa_pos")),
+# aa_pos_lig1 = get(paste0(target_gene,"_aa_pos_lig1")),
+# aa_pos_lig2 = get(paste0(target_gene,"_aa_pos_lig2")),
+# aa_pos_lig3 = get(paste0(target_gene,"_aa_pos_lig3"))
+# )
+# )
+#
+# #### site_snp_count_bp ####
+# #mutable_df3[(mutable_df3$position>=plot_min & mutable_df3$position <=plot_max),]
+# # ligand_distance
+# # interface_dist
+# # nca_distance
+# # change to: multiple plots, all use site_snp_count_bp
+# # 4 x plots side by side, one normal (no dist. filter), 2/3 filtered by distance columns above
+# # use "subtitle text" from pos_count_bp_i.R
+#
+# output$site_snp_count_bp = renderPlot(
+# site_snp_count_bp(
+# mutable_df3,
+# title_colour = 'black',
+# subtitle_colour = "black",
+# leg_text_size = 12,
+# axis_label_size = 12,
+# geom_ls = 4
+# )
+# )
+# output$site_snp_count_bp_ligand = renderPlot(
+# site_snp_count_bp(
+# snp_ligand_dist_df3,
+# title_colour = 'black',
+# subtitle_colour = "black",
+# leg_text_size = 12,
+# axis_label_size = 12,
+# geom_ls = 4
+# )
+# )
+#
+# # if ("interface_dist" %in% colnames(input$switch_target)) {
+# output$site_snp_count_interface = renderPlot(
+# site_snp_count_bp(
+# snp_interface_dist_df3,
+# title_colour = 'black',
+# subtitle_colour = "black",
+# leg_text_size = 12,
+# axis_label_size = 12,
+# geom_ls = 4
+# )
+# )
+# # } #else {
+# # output$site_snp_count_interface = renderPlot(
+# # ggplot() + annotate(x=1,y=1,"text", label="No interface data for this target")+theme_void()
+# # )
+# # }
+#
+# output$site_snp_count_nca = renderPlot( #{
+# #if ("nca_distance" %in% colnames(input$switch_target)) {
+# site_snp_count_bp(
+# snp_nca_dist_df3,
+# title_colour = 'black',
+# subtitle_colour = "black",
+# leg_text_size = 12,
+# axis_label_size = 12,
+# geom_ls = 4
+# )
+# # } else {
+# # ggplot() + annotate(x=1,y=1,"text", label="No RNA data for this target")+theme_void()
+# # }
+# # }
+# )
+#
+#
+#
+# #### DM OM Plots ####
+# #dm_om_param
+# # order needs to be:
+# # embb_lf_duet, embb_lf_foldx, embb_lf_deepddg, embb_lf_dynamut2, embb_lf_dist_gen,
+# # embb_lf_consurf, embb_lf_provean, embb_lf_snap2, embb_lf_mcsm_lig, embb_lf_mmcsm_lig,
+# # embb_lf_mcsm_ppi2, SOMETHING NA
+#
+# # embb_lf_mmcsm_lig SOMETHING NA,
+# #dm_om_selection=input$dm_om_param
+# #dm_om_df = dm_om_map[[dm_om_selection]]
+# #output$lf_bp2 = renderPlot(lf_bp2(get(paste0(input$switch_target, '_', dm_om_df))))
+#
+# output$lf_bp2 = renderPlot(
+# cowplot::plot_grid(
+# plotlist = lapply(
+# ls(name=.GlobalEnv,
+# pattern=paste0(
+# target_gene,
+# '_lf_'
+# )
+# ),
+# function(x){
+# lf_bp2(get(x))
+# }
+# )#, nrow=3
+# ), height=800
+# )
+# }
+# )
+#
+#
+# # FIXME: Doesn't add selected table rows correctly
+# observeEvent(
+# {
+# input$table_rows_selected
+# },
+# {
+# # having to duplicate this is a bit annoying :-(
+# ngl_merged_df3=cbind(get(paste0(input$switch_target, '_merged_df3')))
+# ngl_sorted_df = cbind(ngl_merged_df3)
+# ngl_sorted_df = ngl_sorted_df %>% arrange(pos_count)
+#
+# position_max=max(ngl_merged_df3[['position']])
+# position_min=min(ngl_merged_df3[['position']])
+# display_position_range = input$display_position_range
+# plot_min=display_position_range[1]
+# plot_max=display_position_range[2]
+# #ngl_subset_df=ngl_merged_df3[(ngl_merged_df3$position>=plot_min & ngl_merged_df3$position <=plot_max),]
+# ngl_subset_df=ngl_sorted_df[(ngl_sorted_df$position>=plot_min & ngl_sorted_df$position <=plot_max),]
+#
+#
+# #table_rows_selected = isolate(input$table_rows_selected)
+# table_rows_selected = input$table_rows_selected
+# class(table_rows_selected)
+# #cat(paste0("Target: ", as.character(input$switch_target), "\nTable Rows for NGLViewR: ", as.character(table_rows_selected)))
+#
+# struct_pos=(as.character(ngl_subset_df[table_rows_selected,"position"]))
+# cat(paste0('Table Index: ', table_rows_selected, "position: ", struct_pos))
+#
+# NGLVieweR_proxy("structure") %>%
+# #addSelection('ball+stick'
+# addSelection('hyperball'
+# , param = list(
+# name = "Pos"
+# , sele = struct_pos
+# #, color = "#00ff00"
+# , colorValue="00ff00"
+# , colorScheme="element"
+# )
+# )
+# #cat(paste0('Done NGLViewR addSelection for: ', positions_to_add))
+# }
+# )
+# #### Correlation observeEvent ####
+# # Yet another special-case observeEvent to handle the correlation pair plot
+#
+# observeEvent(
+# {
+# input$corr_selected
+# input$corr_method
+# input$corr_lig_dist
+# },
+# {
+# dist_cutoff_user = input$corr_lig_dist
+# target_gene=input$switch_target
+# plot_title=paste0(target_map[[target_gene]],"/",target_gene)
+#
+# corr_plot_df = get(
+# paste0(
+# input$switch_target,"_corr_df_m3_f"
+# )
+# )[,c(input$corr_selected, "dst_mode")]
+#
+# #if ( dist_cutoff_user >= 2) {
+# #corr_plotdf_subset = corr_plot_df[corr_plot_df[['Lig.Dist']] < dist_cutoff_user,]
+# #}
+# # else {
+# # corr_plotdf_subset = corr_plot_df
+# # }
+#
+# #### Correlation using ggpairs() ####
+# output$my_corr_pairs = renderPlot(
+# dashboard_ggpairs(
+# corr_plot_df,
+# plot_title = plot_title,
+# method = input$corr_method,
+# tt_args_size = 7,
+# gp_args_size = 7
+# ), height = 900
+# )
+# }
+# )
+# }
+#
+#
+# app <- shinyApp(ui, server)
+# runApp(app)
+# }