thing
This commit is contained in:
parent
d627e88aeb
commit
88aaf56729
3 changed files with 250 additions and 144 deletions
286
ml/global.R
286
ml/global.R
|
@ -40,6 +40,12 @@ split_file = c(
|
|||
"_none_complete"
|
||||
)
|
||||
|
||||
split_file_FS = c(
|
||||
"_70_30_complete",
|
||||
"_80_20_complete",
|
||||
"_sl_complete"
|
||||
)
|
||||
|
||||
# necessary because the names will be wrong otherwise
|
||||
split_map = data.frame(
|
||||
files=c(
|
||||
|
@ -82,6 +88,23 @@ for (x in gene) {
|
|||
try({loaded_files[[load_name]] = read.csv(filename)})
|
||||
}
|
||||
}
|
||||
# Loader for per-gene Feature Selection CSVs
|
||||
for (x in gene) {
|
||||
#x=tolower(x)
|
||||
for (split in split_file_FS){
|
||||
filedata = paste0(x, split)
|
||||
filename = paste0(data_dir,'LSHTM_ML/output/genes/',x,split,'_FS.csv')
|
||||
|
||||
#print(c(filename))
|
||||
#load_name=paste0(combo[gene==x,"drug"],'_',split_map['splits'][split_map['files']==split])
|
||||
load_name=paste0(x,'_baselineC_',split_map['splits'][split_map['files']==split], '_FS')
|
||||
print(load_name)
|
||||
# try() on its own is fine here because we don't need to do anything if it fails
|
||||
try({loaded_files[[load_name]] = read.csv(filename)})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Funky loader for combined data
|
||||
for (x in gene) {
|
||||
for (ac in c('_actual','_complete', '_FS')){
|
||||
|
@ -104,7 +127,9 @@ for (x in gene) {
|
|||
|
||||
scores=c("F1", "ROC_AUC", "JCC", "MCC", "Accuracy", "Recall", "Precision")
|
||||
|
||||
resample_types <<- unique(thing$resampling)
|
||||
#resample_types <<- unique(thing$resampling)
|
||||
resample_types = c("none", "Random Oversampling", "Over+Under", "Random Undersampling", "SMOTE")
|
||||
|
||||
|
||||
makeplot = function(x, # the DataFrame to plot
|
||||
selection, # scoring method e.g. 'MCC'
|
||||
|
@ -152,21 +177,24 @@ makeplot = function(x, # the DataFrame to plot
|
|||
)
|
||||
)
|
||||
}
|
||||
ggplot(data=plot_data, aes_string(x="Model_name",
|
||||
y=selection,
|
||||
fill="source_data",
|
||||
group=selection) ) +
|
||||
geom_bar(stat="identity"
|
||||
, width = 0.75
|
||||
, position=position_dodge2(padding=0.1, preserve='total', reverse=TRUE)
|
||||
ggplot(
|
||||
data=plot_data, aes_string(
|
||||
x="Model_name",
|
||||
y=selection,
|
||||
fill="source_data" #,
|
||||
#group=selection
|
||||
)
|
||||
) +
|
||||
geom_bar(
|
||||
stat="identity"
|
||||
, width = 0.75
|
||||
, position=position_dodge2(padding=0.1, preserve='total', reverse=TRUE)
|
||||
) +
|
||||
coord_cartesian(ylim = c(y_coord_min, 1)) +
|
||||
annotation_custom(grob) +
|
||||
# doesn't work with plotly but looks nice :-(
|
||||
geom_label(aes_string(label=selection),
|
||||
position=position_dodge(width = -0.75),
|
||||
#position=position_dodge2(padding=0.1),
|
||||
vjust = 1.5,
|
||||
#vjust = 1.5,
|
||||
alpha=0.75,
|
||||
fill="white"
|
||||
|
||||
|
@ -174,107 +202,15 @@ makeplot = function(x, # the DataFrame to plot
|
|||
scale_color_manual(values = colour_range) +
|
||||
scale_fill_manual(values = colour_range) +
|
||||
|
||||
|
||||
|
||||
# add little numbers for the BT bars only
|
||||
labs(x="",y=paste(selection,"Score")) +
|
||||
theme(
|
||||
axis.text.x = element_text(angle = 90),
|
||||
)
|
||||
# ggplotly()
|
||||
}
|
||||
|
||||
if (interactive()){
|
||||
server=shinyServer(function(input, output) {
|
||||
observeEvent({
|
||||
input$combined_model
|
||||
input$combined_data
|
||||
input$combined_training_genes
|
||||
input$score_dropdown
|
||||
input$resample_dropdown
|
||||
input$drug_dropdown
|
||||
input$split_dropdown
|
||||
|
||||
},{
|
||||
combined_model = input$combined_model
|
||||
selection = input$score_dropdown
|
||||
resampler = input$resample_dropdown
|
||||
selected_drug = input$drug_dropdown
|
||||
selected_split = input$split_dropdown
|
||||
combined_data = input$combined_data
|
||||
combined_training_genes = input$combined_training_genes
|
||||
|
||||
selected_gene = combo[combo$drug == selected_drug,'gene']
|
||||
if (combined_data == "FS"){
|
||||
updateRadioButtons(
|
||||
inputId="combined_training_genes",
|
||||
choiceNames = c("One", "Two"),
|
||||
choiceValues = c("1", "2"),
|
||||
selected = "2"
|
||||
)
|
||||
} else{
|
||||
updateRadioButtons(
|
||||
inputId="combined_training_genes",
|
||||
choiceNames = c("Five", "Six"),
|
||||
choiceValues = c("5","6"),
|
||||
selected = "5"
|
||||
)
|
||||
}
|
||||
# hide stuff if selected
|
||||
if(combined_model == "combined") {
|
||||
#if(combined_model == TRUE) {
|
||||
|
||||
hide("split_dropdown")
|
||||
#show("resample_dropdown")
|
||||
show("combined_data")
|
||||
show("combined_training_genes")
|
||||
filedata = paste0(combined_training_genes,
|
||||
'genes_logo_skf_BT_',
|
||||
selected_gene,
|
||||
'_',
|
||||
combined_data
|
||||
)
|
||||
print(filedata)
|
||||
|
||||
print('doing COMBINED plot')
|
||||
output$plot <- renderPlot(makeplot(loaded_files[[filedata]],
|
||||
selection,
|
||||
"none", # always 'none' for combined plot
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
combined_training_genes = combined_training_genes,
|
||||
display_combined = TRUE,
|
||||
)
|
||||
)
|
||||
# e.g.
|
||||
# makeplot(loaded_files$`5genes_logo_skf_BT_pnca_actual`, "MCC", "none" , gene = 'foo', combined_training_genes = '1234', display_combined = TRUE)
|
||||
} else {
|
||||
show("split_dropdown")
|
||||
#show("resample_dropdown")
|
||||
hide("combined_data")
|
||||
hide("combined_training_genes")
|
||||
filedata = paste0(combo[drug==selected_drug,"gene"],
|
||||
'_baselineC_',
|
||||
selected_split
|
||||
)
|
||||
print(filedata)
|
||||
print("doing GENE plot")
|
||||
output$plot <- renderPlot(makeplot(loaded_files[[filedata]],
|
||||
selection,
|
||||
resampler,
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
display_combined = FALSE,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
}
|
||||
# 6genes_logo_skf_BT_gid_complete
|
||||
|
||||
# filedata example for combined: 6genes_logo_skf_BT_embb_actual
|
||||
# 6genes_logo_skf_BT_embb_combined
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
ui=dashboardPage(skin="purple",
|
||||
dashboardHeader(title="Score Selector"),
|
||||
dashboardSidebar(
|
||||
|
@ -293,14 +229,14 @@ if (interactive()){
|
|||
|
||||
radioButtons("combined_data",
|
||||
label="Data Type",
|
||||
choiceNames = c("Complete", "Actual", "Feature Selection"),
|
||||
choiceValues = c("complete", "actual", "FS"),
|
||||
choiceNames = c("Complete", "Actual"),
|
||||
choiceValues = c("complete", "actual"),
|
||||
selected="complete"
|
||||
),
|
||||
radioButtons("combined_training_genes",
|
||||
label="Training Genes",
|
||||
choiceNames = c("One", "Two", "Five", "Six"),
|
||||
choiceValues = c("1", "2", "5","6"),
|
||||
choiceNames = c("Five", "Six"),
|
||||
choiceValues = c("5","6"),
|
||||
selected = "5"
|
||||
),
|
||||
radioButtons("drug_dropdown",
|
||||
|
@ -327,13 +263,145 @@ if (interactive()){
|
|||
dashboardBody(
|
||||
useShinyjs(),
|
||||
#plotlyOutput("plot", height = 800),
|
||||
plotOutput("plot", height = 800),
|
||||
box(plotOutput("plot"), width="100%"),
|
||||
box(plotOutput("feature_plot"), width="100%", title="Feature Selection"),
|
||||
# %>% withSpinner(color="#0dc5c1"), # uncomment if you want the spinner
|
||||
#downloadButton("save", "Download Plot"),
|
||||
#DT::dataTableOut("plotdata"),
|
||||
verbatimTextOutput("debug")
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
server=shinyServer(function(input, output, session) {
|
||||
observeEvent({
|
||||
input$combined_model
|
||||
input$combined_data
|
||||
input$combined_training_genes
|
||||
input$score_dropdown
|
||||
input$resample_dropdown
|
||||
input$drug_dropdown
|
||||
input$split_dropdown
|
||||
|
||||
},{
|
||||
combined_model = input$combined_model
|
||||
selection = input$score_dropdown
|
||||
resampler = input$resample_dropdown
|
||||
selected_drug = input$drug_dropdown
|
||||
selected_split = input$split_dropdown
|
||||
combined_data = input$combined_data
|
||||
combined_training_genes = input$combined_training_genes
|
||||
|
||||
selected_gene = combo[combo$drug == selected_drug,'gene']
|
||||
# if (combined_data == "FS"){
|
||||
# updateRadioButtons(
|
||||
# inputId="combined_training_genes",
|
||||
# choiceNames = c("One", "Two"),
|
||||
# choiceValues = c("1", "2"),
|
||||
# selected = "2"
|
||||
# )
|
||||
# } else{
|
||||
# updateRadioButtons(
|
||||
# inputId="combined_training_genes",
|
||||
# choiceNames = c("Five", "Six"),
|
||||
# choiceValues = c("5","6"),
|
||||
# selected = "5"
|
||||
# )
|
||||
# }
|
||||
# hide stuff if selected
|
||||
if(combined_model == "combined") {
|
||||
#if(combined_model == TRUE) {
|
||||
|
||||
hide("split_dropdown")
|
||||
#show("resample_dropdown")
|
||||
show("combined_data")
|
||||
show("combined_training_genes")
|
||||
#show("feature_plot")
|
||||
filedata = paste0(combined_training_genes,
|
||||
'genes_logo_skf_BT_',
|
||||
selected_gene,
|
||||
'_',
|
||||
combined_data
|
||||
)
|
||||
feature_data = paste0(as.character(as.numeric(combined_training_genes)-4), # lol
|
||||
'genes_logo_skf_BT_',
|
||||
selected_gene,
|
||||
'_FS'
|
||||
)
|
||||
|
||||
print(filedata)
|
||||
|
||||
print('doing COMBINED plot')
|
||||
output$plot <- renderPlot(
|
||||
makeplot(
|
||||
loaded_files[[filedata]],
|
||||
selection,
|
||||
resampler,
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
combined_training_genes = combined_training_genes,
|
||||
display_combined = TRUE
|
||||
),height=450
|
||||
)
|
||||
print("doing FEATURE SELECTION plot corresponding to COMBINED plot")
|
||||
output$feature_plot <- renderPlot(
|
||||
makeplot(
|
||||
loaded_files[[feature_data]],
|
||||
selection,
|
||||
"none", # always 'none' for Feature Selection
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
combined_training_genes = "NO DATA",
|
||||
display_combined = TRUE
|
||||
),height=450
|
||||
)
|
||||
|
||||
# e.g.
|
||||
# makeplot(loaded_files$`5genes_logo_skf_BT_pnca_actual`, "MCC", "none" , gene = 'foo', combined_training_genes = '1234', display_combined = TRUE)
|
||||
} else {
|
||||
show("split_dropdown")
|
||||
#show("resample_dropdown")
|
||||
hide("combined_data")
|
||||
hide("combined_training_genes")
|
||||
#hide("feature_plot")
|
||||
|
||||
filedata = paste0(
|
||||
combo[drug==selected_drug,"gene"],
|
||||
'_baselineC_',
|
||||
selected_split
|
||||
)
|
||||
|
||||
feature_data = paste0(
|
||||
combo[drug==selected_drug,"gene"],
|
||||
'_baselineC_',
|
||||
selected_split,
|
||||
"_FS"
|
||||
)
|
||||
|
||||
print(filedata)
|
||||
print("doing GENE plot")
|
||||
output$plot <- renderPlot(makeplot(loaded_files[[filedata]],
|
||||
selection,
|
||||
resampler,
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
display_combined = FALSE
|
||||
),height=450
|
||||
)
|
||||
print("doing FEATURE SELECTION plot corresponding to GENE plot")
|
||||
output$feature_plot <- renderPlot(makeplot(loaded_files[[feature_data]],
|
||||
selection,
|
||||
"none",
|
||||
gene = combo[drug==selected_drug,"gene"],
|
||||
display_combined = FALSE
|
||||
),height=450
|
||||
)
|
||||
|
||||
}
|
||||
# 6genes_logo_skf_BT_gid_complete
|
||||
|
||||
# filedata example for combined: 6genes_logo_skf_BT_embb_actual
|
||||
# 6genes_logo_skf_BT_embb_combined
|
||||
})
|
||||
}
|
||||
)
|
||||
app <- shinyApp(ui, server)
|
||||
runApp(app)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue