| 
									
										
										
										
											2022-01-23 19:46:17 +01:00
										 |  |  | #' Create the UI for a preset editor. | 
					
						
							|  |  |  | #' | 
					
						
							|  |  |  | #' @param id ID for namespacing. | 
					
						
							|  |  |  | #' @return The UI elements. | 
					
						
							|  |  |  | #' | 
					
						
							|  |  |  | #' @noRd | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  | preset_editor_ui <- function(id) { | 
					
						
							|  |  |  |     verticalLayout( | 
					
						
							| 
									
										
										
										
											2021-11-15 10:22:28 +01:00
										 |  |  |         h3("Inputs"), | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  |         selectInput( | 
					
						
							| 
									
										
										
										
											2021-11-15 10:22:28 +01:00
										 |  |  |             NS(id, "species"), | 
					
						
							|  |  |  |             "Species to include", | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  |             choices = list( | 
					
						
							|  |  |  |                 "All species" = "all", | 
					
						
							| 
									
										
										
										
											2021-11-23 16:51:55 +01:00
										 |  |  |                 "Known replicatively aging species" = "replicative", | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  |                 "Customize" = "custom" | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |         ), | 
					
						
							| 
									
										
										
										
											2021-12-08 13:46:59 +01:00
										 |  |  |         conditionalPanel( | 
					
						
							|  |  |  |             condition = sprintf("input['%s'] == 'custom'", NS(id, "species")), | 
					
						
							|  |  |  |             selectizeInput( | 
					
						
							|  |  |  |                 inputId = NS(id, "custom_species"), | 
					
						
							|  |  |  |                 label = "Select input species", | 
					
						
							|  |  |  |                 choices = NULL, | 
					
						
							|  |  |  |                 multiple = TRUE | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2021-11-15 10:22:28 +01:00
										 |  |  |         ), | 
					
						
							|  |  |  |         selectInput( | 
					
						
							|  |  |  |             NS(id, "reference_genes"), | 
					
						
							|  |  |  |             "Reference genes", | 
					
						
							|  |  |  |             choices = list( | 
					
						
							|  |  |  |                 "Verified or suggested TPE-OLD genes" = "tpeold", | 
					
						
							|  |  |  |                 "Only verified TPE-OLD genes" = "verified", | 
					
						
							|  |  |  |                 "Customize" = "custom" | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |         ), | 
					
						
							| 
									
										
										
										
											2021-12-08 13:46:59 +01:00
										 |  |  |         conditionalPanel( | 
					
						
							|  |  |  |             condition = sprintf( | 
					
						
							|  |  |  |                 "input['%s'] == 'custom'", | 
					
						
							|  |  |  |                 NS(id, "reference_genes") | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2022-01-26 14:48:29 +01:00
										 |  |  |             gene_selector_ui( | 
					
						
							|  |  |  |                 NS(id, "custom_genes"), | 
					
						
							|  |  |  |                 genes[suggested | verified == TRUE, id] | 
					
						
							| 
									
										
										
										
											2021-11-15 10:22:28 +01:00
										 |  |  |             ) | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 19:46:17 +01:00
										 |  |  | #' Application logic for the preset editor. | 
					
						
							|  |  |  | #' | 
					
						
							|  |  |  | #' @param id ID for namespacing the inputs and outputs. | 
					
						
							|  |  |  | #' @return A reactive containing the preset or `NULL`, if the input data doesn't | 
					
						
							|  |  |  | #'   result in a valid one. | 
					
						
							|  |  |  | #' | 
					
						
							|  |  |  | #' @noRd | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  | preset_editor_server <- function(id) { | 
					
						
							|  |  |  |     moduleServer(id, function(input, output, session) { | 
					
						
							| 
									
										
										
										
											2022-01-17 20:42:27 +01:00
										 |  |  |         species_choices <- geposan::species$id | 
					
						
							|  |  |  |         names(species_choices) <- geposan::species$name | 
					
						
							| 
									
										
										
										
											2021-12-08 13:46:59 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         updateSelectizeInput( | 
					
						
							|  |  |  |             session, | 
					
						
							|  |  |  |             "custom_species", | 
					
						
							|  |  |  |             choices = species_choices, | 
					
						
							|  |  |  |             server = TRUE | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 14:48:29 +01:00
										 |  |  |         custom_gene_ids <- gene_selector_server("custom_genes") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 19:46:17 +01:00
										 |  |  |         reactive({ | 
					
						
							|  |  |  |             reference_gene_ids <- if (input$reference_genes == "tpeold") { | 
					
						
							|  |  |  |                 genes[verified | suggested == TRUE, id] | 
					
						
							|  |  |  |             } else if (input$reference_genes == "verified") { | 
					
						
							|  |  |  |                 genes[verified == TRUE, id] | 
					
						
							|  |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2022-01-26 14:48:29 +01:00
										 |  |  |                 custom_gene_ids() | 
					
						
							| 
									
										
										
										
											2022-01-20 11:04:49 +01:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-18 14:10:06 +01:00
										 |  |  |             species_ids <- if (input$species == "replicative") { | 
					
						
							| 
									
										
										
										
											2022-01-17 20:42:27 +01:00
										 |  |  |                 species_ids_replicative | 
					
						
							| 
									
										
										
										
											2021-11-18 14:10:06 +01:00
										 |  |  |             } else if (input$species == "all") { | 
					
						
							| 
									
										
										
										
											2022-01-17 20:42:27 +01:00
										 |  |  |                 geposan::species$id | 
					
						
							| 
									
										
										
										
											2021-11-18 14:10:06 +01:00
										 |  |  |             } else { | 
					
						
							|  |  |  |                 input$custom_species | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 19:46:17 +01:00
										 |  |  |             tryCatch( | 
					
						
							|  |  |  |                 geposan::preset( | 
					
						
							|  |  |  |                     reference_gene_ids, | 
					
						
							|  |  |  |                     species_ids = species_ids | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 error = function(err) NULL | 
					
						
							| 
									
										
										
										
											2021-11-15 10:22:28 +01:00
										 |  |  |             ) | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2021-10-21 14:56:19 +02:00
										 |  |  |     }) | 
					
						
							|  |  |  | } |