## -----------------------------------------------------------------------------
data("birds", package = "FlyingR")
results <-
  FlyingR::migrate(data = birds,
                  method = "cmm",
                  speed_control = 1,
                  min_energy_protein = 0.05)

# extract range as a vector
results$range

## -----------------------------------------------------------------------------
results <-
  FlyingR::migrate(data = birds,
                  method = "cmm",
                  settings = list(ipf = 0.9),
                  speed_control = 1,
                  min_energy_protein = 0.05)

## -----------------------------------------------------------------------------
results <-
  FlyingR::migrate(data = birds,
                  method = "csw",
                  settings = list(ipf = 0.9),
                  speed_control = 1,
                  min_energy_protein = 0.05)


# obtain remaining body mass
results$bodyMass

# starting minimum power speed
results$startMinSpeed

# end of flight minimum power speed
results$endMinSpeed

## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# A generic function 
# migration function each species at different regions.
# Function returns a list (each species migrated by region)
# ------------------------------------------------------------------------------

region_migrate <- function(data) {
 
  # we need dplyr for filter function
  # we need FlyingR for migration
  require(dplyr)
  require(FlyingR)
  
  # number of regions in dataset
  regions <- unique(data$Region)
    
  # regions data in a list
  region_data <- list()
  
  
  for (i in 1:length(regions)) {
    
    # filter data by region
    filter_data_region <-data %>% filter(Region == regions[i])
    
    # migrate filter data
    user_settings <- list(ipf = 0.9)
    results <- FlyingR::migrate(data = filter_data_region[, 3:9], method = "csw",
                          speed_control = 0, 
                          settings = user_settings,
                          min_energy_protein = 0.05)
    
    region_data[[i]] <- cbind(filter_data_region, "range" = as.vector(results$range))
    
  }
  
  # return region data as a list
  return(region_data)
  
}



## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# migrating sylvia borin
# ------------------------------------------------------------------------------
data("garden_wablers")
wablers_migration <- region_migrate(data = garden_wablers)


## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# migrating Lesser Whitethroats (sylvia curruca)
# ------------------------------------------------------------------------------
data("lesser_whitethroats")
whitethroats_migration <- region_migrate(data = lesser_whitethroats)


## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# migration list to one dataframe for Garden Wablers(sylvia_borin) 
# ------------------------------------------------------------------------------
wablers_results <- data.frame()

for (i in 1:length(wablers_migration)) {
  
  wablers_results <- rbind(wablers_results, wablers_migration[[i]])
}

cat("number of rows sylvia borin:", nrow(wablers_results), sep = " ")

## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# migration list to one dataframe for Lesser Whitethroats
# ------------------------------------------------------------------------------

whitethroats_results <- data.frame()

for (i in 1:length(whitethroats_migration)) {
  
  whitethroats_results <- rbind(whitethroats_results, whitethroats_migration[[i]])
}

cat("number of rows in sylvia curruca:", nrow(whitethroats_results), sep = " ")

## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# order of region
# rename the regions for clarity
# ------------------------------------------------------------------------------

wablers_results$Region <- factor(wablers_results$Region,
                               levels = c("S Balt", "N Med",
                                          "E Med"), ordered = TRUE)

levels(wablers_results$Region) <- c("S Baltic", "N Medit", 
                           "E Medit")

whitethroats_results$Region <- factor(whitethroats_results$Region,
                                 levels = c("S Balt", "N Med",
                                          "E Med", "NE Afr"), ordered = TRUE)

levels(whitethroats_results$Region) <- c("S Baltic", "N Medit", 
                           "E Medit", "NE Africa")

## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# both plots in one
# combine the data sets first
# ------------------------------------------------------------------------------

results <- rbind(wablers_results, whitethroats_results, deparse.level = 0)

# make sure it sums up
nrow(wablers_results) + nrow(whitethroats_results) == nrow(results)


## -----------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# new combined plot
# ------------------------------------------------------------------------------
require(ggplot2)
results_combined_plot <- ggplot(results, aes(x = Region, y = range, 
                                             colour = species)) +
  geom_boxplot() +
  #ggtitle("Sylvia curruca flight range by region") +
  theme_bw()+
  labs(y = "Range")+
  ylim(500, 4500)

results_combined_plot

## -----------------------------------------------------------------------------
data("curlew_sandpiper")

## -----------------------------------------------------------------------------
# needed data for migration columns 2:9

curlew_range <-
    FlyingR::migrate(
        data = curlew_sandpiper[, 2:9],
        method = "cmm",
        speed_control = 0,
        min_energy_protein = 0.05,
        settings = list(ipf = 0.9)
    )


# Addin computed range to the dataset
curlew_results <- curlew_sandpiper[, 1:2]
curlew_results$range <- as.vector(curlew_range$range)


## ----message=FALSE------------------------------------------------------------
# migrate curlew sandpiper
require(ggplot2)
require(dplyr)

curlew_plot <- ggplot(data = curlew_results)+
  geom_point(aes(x = day, y = range, color = name))+
  theme_bw(base_size = 10)+
  ggtitle("")+
  scale_color_discrete(name = "Individual")+
    xlab("Day")+
    ylab("Range (km)")

curlew_plot

