Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://doi.org/10.5281/zenodo.14318846
17 December 2024, 12:45:03 UTC
  • Code
  • Branches (0)
  • Releases (1)
  • Visits
    • Branches
    • Releases
      • 1
      • 1
    • c8b2287
    • /
    • combining-hmm-and-ssf-code
    • /
    • Prediction code
    • /
    • predictions_results.Rmd
    Raw File Download

    To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
    Select below a type of object currently browsed in order to display its associated SWHID and permalink.

    • content
    • directory
    • snapshot
    • release
    origin badgecontent badge Iframe embedding
    swh:1:cnt:8d87375065181844b25df65bdc22dde96d1b1e95
    origin badgedirectory badge Iframe embedding
    swh:1:dir:bbef59f72aa2fd5ba4cbd11ac0d33914576e25b0
    origin badgesnapshot badge
    swh:1:snp:05a2af42b588522ca08f036c1f785d8457dcf25e
    origin badgerelease badge
    swh:1:rel:aa35d9e39d94cbf3f73362c2c2b5cd04c355e955

    This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
    Select below a type of object currently browsed in order to generate citations for them.

    • content
    • directory
    • snapshot
    • release
    Generate software citation in BibTex format (requires biblatex-software package)
    Generating citation ...
    Generate software citation in BibTex format (requires biblatex-software package)
    Generating citation ...
    Generate software citation in BibTex format (requires biblatex-software package)
    Generating citation ...
    Generate software citation in BibTex format (requires biblatex-software package)
    Generating citation ...
    predictions_results.Rmd
    ---
    title: "Predictions - Results"
    author: ""
    date: ""
    output: 
      html_document:
        toc: true
        toc_float: true
        theme: cerulean
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = F,message=F)
    
    #main packages #delete/add as needed
    library(dplyr)
    library(ggplot2)
    library(knitr)
    library(ggpubr)
    library(plotly)
    library(pracma) #for standard error
    library(reactable)
    library(sf)
    library(rgdal)
    library(sp)
    library(tidyterra)
    library(terra)
    library(wesanderson)
    
    
    theme_set(theme_bw())
    ```
    
    ## About
    
    File for results from predictions, specifically:
    
    * maps of predicted spatial usage
    * how many tracks come within 10 m of fish pass
    
    For the simulations that began in the lower 100 m of the river.
    
    
    ## Barbel
    
    ### Maps 
    
    ```{r all barbel maps}
    
    dat1 <- read.csv("PREDICTIONS - downstream start/all_barbel_up_to_agent_100_disch20.csv")
    dat2 <- read.csv("PREDICTIONS - downstream start/all_barbel_up_to_agent_100_disch50.csv")
    dat3 <- read.csv("PREDICTIONS - downstream start/all_barbel_up_to_agent_100_disch80.csv")
    
    
    barb_dat1 <- bind_rows(dat1,dat2,dat3)
    barb_dat <- barb_dat1
    
    barb_dat <- barb_dat %>% filter(y!=0) #to catch a handful of errors
    
    
    #remove points in lower 150m
    shp <- st_read("lower150m/lower150m.shp")
    
    start_loc_pol <- st_read("start_sections/start_sections.shp")
    
    
    barb_dat2 <- st_as_sf(barb_dat,coords = c("x","y"),crs=st_crs(32632)) %>% st_transform(crs=25832)
    
    
    barb_dat2$in_lower_zone <- st_intersects(barb_dat2$geometry,shp) %>% as.integer()
    
    barb_dat <- barb_dat[is.na(barb_dat2$in_lower_zone),]
    
    
    
    barb_dat3 <- barb_dat1 %>% group_by(fish_id,approach,discharge) %>% summarise(x=first(x),y=first(y))
    
    barb_dat4 <- st_as_sf(barb_dat3,coords = c("x","y"),crs=st_crs(32632)) %>% st_transform(crs=25832)
    
    barb_dat4$start_loc <- st_intersects(barb_dat4$geometry,start_loc_pol) %>% as.integer() 
    
    barb_dat4 <- barb_dat4 %>% st_drop_geometry()
    
    barb_dat4$start_loc[barb_dat4$start_loc==3] <- "centre"
    barb_dat4$start_loc[barb_dat4$start_loc==2] <- "right"
    barb_dat4$start_loc[barb_dat4$start_loc==1] <- "left"
    barb_dat4$start_loc[is.na(barb_dat4$start_loc)] <- "left"
    
    
    barb_dat5 <- barb_dat4 %>% select(c(fish_id,approach,start_loc,discharge))
    
    barb_dat <- merge(barb_dat,barb_dat5,by=c("fish_id","approach","discharge"))
    
    #
    
    barb_plts <- ggplot(barb_dat,aes(x=x,y=y))+
      geom_bin2d()+
      facet_wrap(~discharge)+
      geom_point(x=591683.2,y=5296867.5,col="red")+
        scale_fill_gradientn(colours = terrain.colors(7))
    barb_plts
    
    ggplot(barb_dat,aes(x=x,y=y))+
      geom_bin2d()+
      facet_grid(state~discharge)+
      geom_point(x=591683.2,y=5296867.5,col="red")+
        scale_fill_gradientn(colours = terrain.colors(7))
    
    ```
    
    
    
    
    
    
    ## Grayling
    
    ### Maps 
    
    ```{r all grayling maps}
    
    dat1 <- read.csv("PREDICTIONS - downstream start/all_grayling_up_to_agent_100_disch20.csv")
    dat2 <- read.csv("PREDICTIONS - downstream start/all_grayling_up_to_agent_100_disch50.csv")
    dat3 <- read.csv("PREDICTIONS - downstream start/all_grayling_up_to_agent_100_disch80.csv")
    
    #dat3 <- read.csv("PREDICTIONS - downstream start/all_grayling_up_to_agent_78.csv")
    
    
    #gray_dat <- dat1
    #gray_dat <- bind_rows(dat1,dat2)
    gray_dat1 <- bind_rows(dat1,dat2,dat3)
    
    gray_dat <- gray_dat1 %>% filter(y!=0)# & y<5296950)
    
    #remove points
    
    shp <- st_read("lower150m/lower150m.shp")
    start_loc_pol <- st_read("start_sections/start_sections.shp")
    
    
    gray_dat2 <- st_as_sf(gray_dat,coords = c("x","y"),crs=st_crs(32632)) %>% st_transform(crs=25832)
    
    gray_dat2$in_lower_zone <- st_intersects(gray_dat2$geometry,shp) %>% as.integer()
    gray_dat2$in_lower_zone[is.na(gray_dat2$in_lower_zone)] <- 2
    gray_dat2 <- st_drop_geometry(gray_dat2)
    
    gray_dat2 %>% group_by(discharge,in_lower_zone) %>% summarise(n=n())
    
    #gray_dat <- gray_dat[is.na(gray_dat2$in_lower_zone),]
    gray_dat <- gray_dat[gray_dat2$in_lower_zone==2,]
    
    
    gray_dat3 <- gray_dat1 %>% group_by(fish_id,approach,discharge) %>% summarise(x=first(x),y=first(y))
    
    gray_dat4 <- st_as_sf(gray_dat3,coords = c("x","y"),crs=st_crs(32632)) %>% st_transform(crs=25832)
    
    gray_dat4$start_loc <- st_intersects(gray_dat4$geometry,start_loc_pol) %>% as.integer() 
    
    gray_dat4 <- gray_dat4 %>% st_drop_geometry()
    
    gray_dat4$start_loc[gray_dat4$start_loc==3] <- "center"
    gray_dat4$start_loc[gray_dat4$start_loc==2] <- "right"
    gray_dat4$start_loc[gray_dat4$start_loc==1] <- "left"
    gray_dat4$start_loc[is.na(gray_dat4$start_loc)] <- "left"
    
    
    #gray_dat4$start_loc[gray_dat4$start_loc==3] <- "right"
    #gray_dat4$start_loc[gray_dat4$start_loc==2] <- "center"
    #gray_dat4$start_loc[gray_dat4$start_loc==1] <- "left"
    
    gray_dat <- merge(gray_dat,gray_dat4,by=c("fish_id","approach","discharge"))
    
    shp2 <- vect("lower150m/lower150m.shp")
    
    #ggplot(data=shp2)+
     # geom_point(data=gray_dat,aes(x=x,y=y))+
    #  facet_wrap(~discharge)+
     # geom_point(x=591683.2,y=5296867.5,col="red")+
      #  geom_spatvector(fill=NA)
      
    
    gray_plts <- ggplot(gray_dat,aes(x=x,y=y))+
      geom_bin2d()+
      facet_wrap(~discharge)+
      geom_point(x=591683.2,y=5296867.5,col="red")+
      scale_fill_gradientn(colours = terrain.colors(7))+
      labs(title="Grayling predicted usage where tracks began downstream")
    
    #ggsave(filename="figures/gray_plts_dwnstrm.png",height=3,width=8,plot=gray_plts)
    gray_plts
    
    
    #select some agents to plot tracks for
    
    p <- ggplot(filter(gray_dat,fish_id<=7 &discharge==20),aes(x=x,y=y,col=as.factor(approach)))+
      geom_point()+
      geom_path()+
      #facet_grid(fish_id~discharge)+
      facet_wrap(~fish_id,ncol=2)+
      scale_color_manual(values=wes_palette("Darjeeling1",n=5,type="discrete"),name="Approach ID")+
      geom_point(x=591683.2,y=5296867.5,col="black",pch=17)+
      scale_x_continuous(breaks=c(591650,591850))
    
    #ggsave(filename = "figures/grayling_sim_tracks_FINAL.png",plot=p,width=5,height=5)
      
    #fish id 1, 76, look particularly nice for discharge 20
    
    
    pp <- gray_dat %>% filter(fish_id==76)
    
    #ggplot(pp,aes(x=x,y=y,col=as.factor(approach)))+
     # geom_point()+
      #geom_path()+
      #facet_wrap(~discharge)+
      #geom_point(x=591683.2,y=5296867.5,col="red")+
      #scale_fill_gradientn(colours = terrain.colors(7))
      #facet_wrap(~fish_id)
    
    ```
    
    
    ## Looking at % of tracks and fish that did not enter the array
    
    Can check if consistent among start locations too
    
    ```{r barbel tracks per discharge}
    barb1 <- barb_dat1 %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_all=sum(n_tracks))
    
    barb2 <- barb_dat %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_up=sum(n_tracks))
    
    barb3 <- merge(barb1,barb2,by="discharge")
    
    barb3$perc <- barb3$n_tracks_up/barb3$n_tracks_all*100
    
    reactable(barb3)
    
    ```
    
    
    ```{r barbel tracks per discharge ands tart loc}
    barb1 <- barb_dat4 %>% group_by(discharge,fish_id,start_loc) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge,start_loc) %>% summarise(n_tracks_all=sum(n_tracks))
    
    barb2 <- barb_dat %>% group_by(discharge,fish_id,start_loc) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge,start_loc) %>% summarise(n_tracks_up=sum(n_tracks))
    
    barb3 <- merge(barb1,barb2,by=c("discharge","start_loc"))
    
    barb3$perc <- barb3$n_tracks_up/barb3$n_tracks_all*100
    
    reactable(barb3)
    
    ```
    
    ```{r barbel fish per discharge}
    
    barb2 <- barb_dat %>% group_by(discharge) %>% 
      summarise(n_fish=length(unique(fish_id)))
    
    
    
    barb2$perc <- barb2$n_tracks_up
    
    reactable(barb2)
    
    ```
    
    
    ```{r barbel tracks per discharge}
    barb1 <- barb_dat1 %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_all=sum(n_tracks))
    
    barb2 <- barb_dat %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_up=sum(n_tracks))
    
    barb3 <- merge(barb1,barb2,by="discharge")
    
    barb3$perc <- barb3$n_tracks_up/barb3$n_tracks_all*100
    
    reactable(barb3)
    
    ```
    
    ```{r barbel fish per discharge}
    
    barb2 <- barb_dat %>% group_by(discharge) %>% 
      summarise(n_fish=length(unique(fish_id)))
    
    
    
    barb2$perc <- barb2$n_tracks_up
    
    reactable(barb2)
    
    #per start location
    #this needs to be dones as a comparison to total number fish per start loc
    
    barb2 <- barb_dat %>% group_by(discharge,start_loc) %>% 
      summarise(n_fish=length(unique(fish_id)))
    
    barb3 <- barb_dat4 %>% group_by(discharge,start_loc) %>% #get all that started
      summarise(n_fish_tot=length(unique(fish_id)))
    
    barb4 <- merge(barb2,barb3,by=c("discharge","start_loc"))
    
    barb4$perc <- barb4$n_fish/barb4$n_fish_tot*100
    reactable(barb4)
    
    ```
    
    
    ```{r graylng tracks per discharge}
    gray1 <- gray_dat1 %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_all=sum(n_tracks))
    
    gray2 <- gray_dat %>% group_by(discharge,fish_id) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge) %>% summarise(n_tracks_up=sum(n_tracks))
    
    gray3 <- merge(gray1,gray2,by="discharge")
    
    gray3$perc <- gray3$n_tracks_up/gray3$n_tracks_all*100
    
    reactable(gray3)
    
    ```
    
    ```{r grayling tracks per discharge ands tart loc}
    gray1 <- gray_dat4 %>% group_by(discharge,fish_id,start_loc) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge,start_loc) %>% summarise(n_tracks_all=sum(n_tracks))
    
    gray2 <- gray_dat %>% group_by(discharge,fish_id,start_loc) %>% 
      summarise(n_tracks=length(unique(approach))) %>% ungroup() %>%
      group_by(discharge,start_loc) %>% summarise(n_tracks_up=sum(n_tracks))
    
    gray3 <- merge(gray1,gray2,by=c("discharge","start_loc"))
    
    gray3$perc <- gray3$n_tracks_up/gray3$n_tracks_all*100
    
    reactable(gray3)
    
    ```
    
    ```{r grayling fish per discharge}
    
    gray2 <- gray_dat %>% group_by(discharge) %>% 
      summarise(n_fish=length(unique(fish_id)))
    
    
    
    gray2$perc <- gray2$n_tracks_up
    
    reactable(gray2)
    
    #per start location
    #this needs to be dones as a comparison to total number fish per start loc
    
    gray2 <- gray_dat %>% group_by(discharge,start_loc) %>% 
      summarise(n_fish=length(unique(fish_id)))
    
    gray3 <- gray_dat4 %>% group_by(discharge,start_loc) %>% #get all that started
      summarise(n_fish_tot=length(unique(fish_id)))
    
    gray4 <- merge(gray2,gray3,by=c("discharge","start_loc"))
    
    gray4$perc <- gray4$n_fish/gray4$n_fish_tot*100
    reactable(gray4)
    
    ```
    

    back to top

    Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
    The source code of Software Heritage itself is available on our development forge.
    The source code files archived by Software Heritage are available under their own copyright and licenses.
    Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API