Otolith commited on
Commit
c04ce03
·
verified ·
1 Parent(s): 96e1661

Upload 4 files

Browse files
Files changed (5) hide show
  1. .gitattributes +2 -0
  2. app.R +132 -0
  3. cas.rds +0 -0
  4. inland.rds +3 -0
  5. marine.rds +3 -0
.gitattributes CHANGED
@@ -32,3 +32,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ inland.rds filter=lfs diff=lfs merge=lfs -text
36
+ marine.rds filter=lfs diff=lfs merge=lfs -text
app.R ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ library(shiny)
2
+ library(sf)
3
+ library(stringr)
4
+ library(dplyr)
5
+ library(leaflet)
6
+
7
+ options(sf_use_s2 = FALSE)
8
+
9
+ # Load the shapefiles and data
10
+ cas <- readRDS("cas.rds")
11
+
12
+ inland <- readRDS("inland.rds")
13
+ marine <- readRDS("marine.rds")
14
+
15
+
16
+ # Example species list
17
+ species_list <- sort(unique(cas$valid_name))
18
+
19
+
20
+ ui <- fluidPage(
21
+ titlePanel("Global fish distribution across biogeographic realm"),
22
+ tags$head(tags$style(HTML("
23
+ body { background-color: #f2f2f2; color: #333333; }
24
+ .well { background-color: #ffffff; border: none; }
25
+ #map { height: 100vh; } /* Set the map to take the full viewport height */
26
+ #controls {
27
+ background-color: rgba(255, 255, 255, 0.3);
28
+ padding: 15px;
29
+ border-radius: 8px;
30
+ }
31
+ "))),
32
+ fluidRow(
33
+ column(2, # Left side navigation panel (20% of the width)
34
+ div(id = "controls", class = "panel panel-default",
35
+ fixed = FALSE, draggable = TRUE,
36
+ width = "100%", height = "100vh",
37
+ #img(src = "path_to_logo.png", height = "100px"), # Replace with actual logo path
38
+ selectizeInput("species",
39
+ HTML(paste0("Choose/Input a species (<span style='color:red;'>", scales::comma(nrow(cas)), "</span>):")),
40
+ choices = NULL,
41
+ selected = NULL),
42
+ actionButton("run", "Run", class = "btn-primary")
43
+ ),
44
+ div(
45
+ tags$h5(HTML("<strong>Acknowledgements</strong>:")),
46
+ tags$p(HTML("<small>Heartfelt thanks to the hundreds of taxonomists for their selfless dedication. Data source (updated June 2024): <a href='http://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp' target='_blank'> Eschmeyer's Catalog of Fishes</a>.</small>"))
47
+ ),
48
+ div(
49
+ tags$h5(HTML("<strong>References</strong>:")),
50
+ tags$p(HTML("<small>[1]Fricke R, Eschmeyer WN, Van der Laan R.(2024). <a href='http://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp' ",
51
+ "target='_blank'>Catalog of fishes: genera, species, references </a>. California Academy of Sciences, San Francisco, CA, USA.</small>")),
52
+ tags$p(HTML("<small>[2]Costello MJ, Tsai P, Wong PS, Cheung AKL, Basher Z, Chaudhary C.(2017). Marine biogeographic realms and species endemicity. <em>Nature Communications</em>, 8(1), 1057. </small>")),
53
+ tags$p(HTML("<small>[3]Tedesco PA, Beauchard O, Bigorne R, Blanchet S, Buisson L, Conti L, Cornu J,Dias MS, Grenouillet G, Hugueny B, Jézéquel C, Leprieur F, Brosse S, Oberdorff T.(2017). A global database on freshwater fish species occurrence in drainage basins. <em>Scientific Data</em>, 4(1), 1-6.</small>"))
54
+ ),
55
+ tags$map(HTML(paste0(
56
+ '<script type="text/javascript" id="clstr_globe" src="//clustrmaps.com/globe.js?d=fcrVhJisR3nagD85u6uUHpeDl2frZFCBy5i5BhDcpss"></script>'
57
+ ))),
58
+ ),
59
+ column(10, # Right side map panel (80% of the width)
60
+ leafletOutput("map", width = "100%", height = "100vh")
61
+ )
62
+ )
63
+ )
64
+
65
+
66
+ # Server logic
67
+ server <- function(input, output, session) {
68
+
69
+ # Update selectize input with species list (server-side)
70
+ updateSelectizeInput(session, "species",
71
+ choices = species_list,
72
+ server = TRUE)
73
+
74
+ observeEvent(input$run, {
75
+ sp <- input$species
76
+
77
+ realm <- cas %>%
78
+ dplyr::filter(valid_name %in% sp) %>%
79
+ dplyr::select(biogeographic_realm) %>%
80
+ str_split(";") %>%
81
+ unlist()
82
+
83
+
84
+ # Create map with Leaflet
85
+ output$map <- renderLeaflet({
86
+ leaflet() %>%
87
+ addProviderTiles("OpenStreetMap.Mapnik") %>%
88
+ addPolygons(data = marine[which(marine$name %in% realm),],
89
+ fillColor = "#00A8E6", fillOpacity = 0.5, color = NA, group = "Marine") %>%
90
+ addPolygons(data = inland[which(inland$BasinName %in% realm),],
91
+ fillColor = "#EEB134", fillOpacity = 0.5, color = NA, group = "Inland") %>%
92
+ #setView(lng = 0, lat = 20, zoom = 2) %>%
93
+ addControl(
94
+ html = paste(
95
+ "<strong>Data Source (Updated 2024-06): ",
96
+ "<a href='http://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatmain.asp' ",
97
+ "target='_blank'>Eschmeyer's Catalog of Fishes</a></strong><br>",
98
+ "<small>Feel free to contact: <a href='mailto:[email protected]'>[email protected]</a></small>"
99
+ ),
100
+ position = "bottomright",
101
+ className = "leaflet-control-custom"
102
+ )
103
+ })
104
+ })
105
+
106
+ # Add a popup showing species name and biogeographic realm on map click
107
+ observeEvent(input$map_click, {
108
+ click <- input$map_click
109
+ if (is.null(click))
110
+ return()
111
+
112
+ # Extract the species Latin name and realm for popup
113
+ sp <- input$species
114
+ habitat <- cas %>%
115
+ dplyr::filter(valid_name %in% sp) %>%
116
+ dplyr::select(habitat)
117
+
118
+ leafletProxy("map") %>%
119
+ clearPopups() %>%
120
+ addPopups(
121
+ lng = click$lng, lat = click$lat,
122
+ popup = paste0(
123
+ "<strong>Species: </strong>", "<em>", sp, "</em>",
124
+ "<br><strong>Habitat: </strong>", habitat
125
+ )
126
+ )
127
+ })
128
+
129
+ }
130
+
131
+ # Run the app
132
+ shinyApp(ui, server)
cas.rds ADDED
Binary file (612 kB). View file
 
inland.rds ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b2b7b5ad27b1f0f55070d16823e58ef5c0c0acdd02e7b16c3db3acf3d96e8228
3
+ size 35522091
marine.rds ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a170833dbc772067f0bb7a8adb72d3fbf14367861679e0950b6e533f4ae07fc5
3
+ size 19635509