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
    • /
    • scripts
    • /
    • 02 - script to filter ladders.R
    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
    swh:1:cnt:104555ed8e1a1f0cf4c712ee429f6d7cb3063d0f
    origin badgedirectory badge
    swh:1:dir:30ac199afd3b1d7a0d0bdca02408cfa6e4b4363a
    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 ...
    02 - script to filter ladders.R
    #
    #
    #currently set to only add tod and filter for date/min spm
    #
    #
    rm(list=ls())
    
    #packages
    library(dplyr)
    library(ggplot2)
    library(sp)
    library(maptools)
    
    #file list
    file_list <- list.files("data/find ladder/final SSF dataframes",full.names=T)
    
    #track ratings
    #basically just has track numbers and attributes
    ratings <- read.csv("data/find ladder/attributes_of_all_tracks_with_entries_my_ratings.csv")
    
    #filter track ratings to keep only good
    #keep only tracks where max_nsd >40
    
    
    #get list of Good track ids and fish
    
    #need to do filtering in track_straightness as well to get Same Tracks
    
    for(p in 1:length(file_list)){ 
      data <-  read.csv(file_list[[p]])
      
      id <- data$fish_id[1]
      
      data$t1_ <- as.POSIXct(data$t1_)
      data$t2_ <- as.POSIXct(data$t2_)
      
      #date constraint <3
      if(data$species[1]=="Barbel"){
        data <- filter(data,t2_<"2018-06-16"&t2_>"2018-05-01")
      }
      if(data$species[1]=="Grayling"){
        data <- filter(data,t2_<"2018-04-16"&t2_>"2018-03-15")
      }
    
      if(length(data$fish_id)>1){
        #add tod
        dat2 <- matrix(c(10.227961934279923,47.817415435039486),nrow=1) %>%  SpatialPoints(proj4string=CRS("+proj=longlat +datum=WGS84"))
        
        data$tod_start_NEW <- 0
        
        data$tod_end_NEW <- 0
        
        for(i in 1:length(data$approach)){
          tim1 <- as.POSIXct(data$t1_[i],tz="Europe/Berlin")
          tim2 <-as.POSIXct(data$t2_[i],tz="Europe/Berlin")
          
          dawn <- crepuscule(crds=dat2,dateTime=tim1,solarDep=12, direction=c("dawn"),POSIXct.out=T) 
          
          dusk <- crepuscule(crds=dat2,dateTime=tim1,solarDep=12, direction=c("dusk"),POSIXct.out=T) 
          sunrise <- sunriset(crds=dat2,dateTime=tim1,direction=c("sunrise"),POSIXct.out=T) 
          sunset <- sunriset(crds=dat2,dateTime=tim1,direction=c("sunset"),POSIXct.out=T) 
          
          #start
          
          if(tim1>dawn$time&sunrise$time>tim1){
            data$tod_start_NEW[i] <- "dawn"
          }
          
          if(tim1>sunset$time&dusk$time>tim1){
            data$tod_start_NEW[i] <- "dusk"
          }
          
          else{
            data$tod_start_NEW[i] <- data$tod_start_[i]
          }
          
          #end
          
          if(tim2>dawn$time&sunrise$time>tim2){
            data$tod_end_NEW[i] <- "dawn"
          }
          
          if(tim2>sunset$time&dusk$time>tim2){
            data$tod_end_NEW[i] <- "dusk"
          }
          
          else{
            data$tod_end_NEW[i] <- data$tod_end_[i]
          }
          
          
          
        }
        
        #renumber tracks
        approach_list <- data %>% group_by(fish_id) %>% summarise(approach=unique(approach))
        
        approach_list$track <- ave(approach_list$approach,approach_list$fish_id,
                                   FUN = seq_along)
        
        data <- merge(data,approach_list,by=c('approach','fish_id'))
        
        #min step per min and remove <15min
        
        #get number steps and duration
        dat_dur <- data %>% filter(case_==TRUE) %>% group_by(fish_id,track) %>% summarise(duration=(max(t2_)-min(t1_)),steps=n())
        
        dat_dur$av_steps <- dat_dur$steps/as.numeric(dat_dur$duration)
        
        #set limit in time to 15min and ave steps >2
        data_dur <- dat_dur %>% filter(av_steps>2&duration>15)
        data <- data %>% filter(track %in%unique(data_dur$track))
        
        #renumber tracks again xx
        
        approach_list <- data  %>% group_by(fish_id) %>% summarise(approach=unique(approach))
        
        approach_list$track2 <- ave(approach_list$approach,approach_list$fish_id,
                                    FUN = seq_along)
        
        data <- merge(data,approach_list,by=c('approach','fish_id'))
        
        data$track <- data$track2
        
        dat_filt_final <- data 
        write.csv(dat_filt_final,
                  paste0("data/find ladder/SSF data with tod filtered for migration and min spm over 2/",id,".csv"),
                  row.names = F)
      } else{
        print(paste0("fish id ",id," no data post date filtering"))
      }
      
    }
    
    

    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