otherR_functions/visualizations/analyse_results.R

analyse_differences <- function(AHN3 = FALSE){
  if(AHN3 == FALSE){
    AHN <- "AHN2"
    aws_names_list <- AWS_temperature_names
  } else {
    AHN <- "AHN3"
    aws_names_list <- AWS_temperature_ahn3Only_names
  }
  
  if(AHN3 == TRUE){
    summary_table_ahn3 <- fread(paste0("output/", AHN, "_summary_aws_classifications_final.csv"), data.table = FALSE)
    rownames(summary_table_ahn3) <- AWS_temperature_ahn3Only_names
    #summary_table <- results[["summary"]]
    summary_table_ahn3$shading_class1Count <- NA
    summary_table_ahn3$shading_class2Count <- NA
    summary_table_ahn3$shading_class3Count <- NA
    summary_table_ahn3$shading_class4Count <- NA
    summary_table_ahn3$shading_class5Count <- NA
    rownames(summary_table_ahn3) <- aws_names_list
    for (r in 1:nrow(summary_table_ahn3)){
      row <- summary_table_ahn3[r,]
      aws_name <- row[1,"AWS"]
      aws_name_trim <- getAWS_name_trim(aws_name = aws_name)
      
  
      auto_class <- row[1,"final class"]
      manual_class <- row[1,"manual_class_R"]
      overview_shading_table <- select(fread(paste0("output/", aws_name_trim, "/solar_shadow_angles/", aws_name_trim, "_", AHN, "_ah_solar_shadow_angles_classes.csv"), data.table = FALSE)[1,],class1_count, class2_count, class3_count, class4_count, class5_count)#results[["AWS"]][[aws_name]][["overview_shading_table"]]
      #View(overview_shading_table)
      count1 <- overview_shading_table[1,"class1_count"] 
      count2 <- overview_shading_table[1,"class2_count"] 
      count3 <- overview_shading_table[1,"class3_count"]
      count4 <- overview_shading_table[1,"class4_count"]
      count5 <- overview_shading_table[1,"class5_count"]
      summary_table_ahn3[r, "shading_class1Count"] <- count1
      summary_table_ahn3[r, "shading_class2Count"] <- count2
      summary_table_ahn3[r, "shading_class3Count"] <- count3
      summary_table_ahn3[r, "shading_class4Count"] <- count4
      summary_table_ahn3[r, "shading_class5Count"] <- count5 
    }
    fwrite(summary_table_ahn3, "output/ahn3_summary_results.csv")
  } else { #AHN2
    summary_table_ahn2 <- fread(paste0("output/", AHN, "_summary_aws_classifications_final.csv"), data.table = FALSE)
    summary_table_ahn2 <- filter(summary_table_ahn2, AWS %in% AWS_temperature_ahn2Only_names)

    #summary_table <- results[["summary"]]
    summary_table_ahn2$shading_class1Count <- NA
    summary_table_ahn2$shading_class2Count <- NA
    summary_table_ahn2$shading_class3Count <- NA
    summary_table_ahn2$shading_class4Count <- NA
    summary_table_ahn2$shading_class5Count <- NA
    #rownames(summary_table_ahn2) <- AWS_temperature_ahn2Only_names
    
    for (r in 1:length(AWS_temperature_ahn2Only_names)){
      #break
      row <- summary_table_ahn2[r,]
      aws_name <- AWS_temperature_ahn2Only_names[r]
      aws_name_trim <- getAWS_name_trim(aws_name = aws_name)
      
      
      auto_class <- row[1,"final class"]
      manual_class <- row[1,"manual_class_R"]
      overview_shading_table <- select(fread(paste0("output/", aws_name_trim, "/solar_shadow_angles/", aws_name_trim, "_", AHN, "_ah_solar_shadow_angles_classes.csv"), data.table = FALSE)[1,],class1_count, class2_count, class3_count, class4_count, class5_count)#results[["AWS"]][[aws_name]][["overview_shading_table"]]
      #View(overview_shading_table)
      count1 <- overview_shading_table[1,"class1_count"] 
      count2 <- overview_shading_table[1,"class2_count"] 
      count3 <- overview_shading_table[1,"class3_count"]
      count4 <- overview_shading_table[1,"class4_count"]
      count5 <- overview_shading_table[1,"class5_count"]
      summary_table_ahn2[r, "shading_class1Count"] <- count1
      summary_table_ahn2[r, "shading_class2Count"] <- count2
      summary_table_ahn2[r, "shading_class3Count"] <- count3
      summary_table_ahn2[r, "shading_class4Count"] <- count4
      summary_table_ahn2[r, "shading_class5Count"] <- count5 
    }
    rownames(summary_table_ahn2) <- AWS_temperature_ahn2Only_names
    fwrite(summary_table_ahn2, "output/ahn2_summary_results.csv")
    
    summary_table_all <- fread("output/ahn3_summary_results.csv", data.table = FALSE)
    rownames(summary_table_all) <- AWS_temperature_ahn3Only_names
    
    #View(summary_table_all)
    summary_table_all <- rbind(summary_table_all, summary_table_ahn2)
    summary_table_all <- summary_table_all[order(summary_table_all[,'AWS']), ]
    fwrite(summary_table_all, "output/all_summary_results.csv")
    
    View(summary_table_all)
  }
}

View(fread(paste0("output/", "AHN2", "_summary_aws_classifications_final.csv"), data.table = FALSE))
View(fread(paste0("output/", "AHN3", "_summary_aws_classifications_final.csv"), data.table = FALSE))

analyse_differences(AHN3 = FALSE)

analyses_results_ahn2 <- analyse_differences(AHN3 = FALSE)
analyses_results_ahn3 <- analyse_differences(AHN3 = TRUE)

no_shadow_angles_ahn2 <- View(filter(analyses_results_ahn2, shading_class4Count == 0 & shading_class5Count == 0))
no_shadow_angles_ahn3 <- View(filter(analyses_results_ahn3, shading_class4Count == 0 & shading_class5Count == 0))

overview_results <- data.frame(AWS = as.character(), AHN2_partial_match = as.logical(), AHN3_partial_match = as.logical(), AHN2_noShading = as.logical(), AHN3_noShading = as.logical(), Detailed_BGT = as.logical(),stringsAsFactors = FALSE)

for(a in 1:length(AWS_temperature_names)){
  aws_name <- AWS_temperature_names[a]
  overview_results[a,"AWS"] <- aws_name
  
  if(analyses_results_ahn2[aws_name, "has AHN3"] == FALSE){
    overview_results[a,"AHN3_partial_match"] <- NA
    overview_results[a,"AHN3_noShading"] <- NA
    
    #ahn3 ONLY  
  } else {
    overview_results[a,"auto_AHN3_Finalclass"] <- analyses_results_ahn3[aws_name, "final_class"]
    overview_results[a,"auto_AHN3_shadingclass"] <- analyses_results_ahn3[aws_name, "shades_class"]
    overview_results[a,"manual_class"] <- analyses_results_ahn3[aws_name, "Manual_class_R"]
    if(analyses_results_ahn3[aws_name, "AHN selected"] == "AHN3"){
      if(analyses_results_ahn3[aws_name, "Partial match"] == TRUE){
        overview_results[a,"AHN3_partial_match"] <- TRUE
      } else {
        overview_results[a,"AHN3_partial_match"] <- FALSE
        if(analyses_results_ahn3[aws_name, "shading_class2Count"] == 0
           & analyses_results_ahn3[aws_name, "shading_class3Count"] == 0
           & analyses_results_ahn3[aws_name, "shading_class4Count"] == 0
           & analyses_results_ahn3[aws_name, "shading_class5Count"] == 0){
          overview_results[a, "AHN3_noShading"] <- TRUE
        } else {
          overview_results[a, "AHN3_noShading"] <- FALSE
        }
      }
    }
  }
  
  
  
  
  
  overview_results[a,"auto_AHN2_Finalclass"] <- analyses_results_ahn2[aws_name, "final_class"]
  overview_results[a,"auto_AHN2_shadingclass"] <- analyses_results_ahn2[aws_name, "shades_class"]
  overview_results[a,"auto_objectsclass"] <- analyses_results_ahn2[aws_name, "objects_class"]
  overview_results[a,"manual_class"] <- analyses_results_ahn2[aws_name, "Manual_class_R"]
  if(analyses_results_ahn2[aws_name, "AHN selected"] == "AHN2"){
    if(analyses_results_ahn2[aws_name, "Partial match"] == TRUE){
      overview_results[a,"AHN2_partial_match"] <- TRUE
    } else {
      overview_results[a,"AHN2_partial_match"] <- FALSE
      if(analyses_results_ahn2[aws_name, "shading_class2Count"] == 0
         & analyses_results_ahn2[aws_name, "shading_class3Count"] == 0
         & analyses_results_ahn2[aws_name, "shading_class4Count"] == 0
         & analyses_results_ahn2[aws_name, "shading_class5Count"] == 0){
        overview_results[a, "AHN2_noShading"] <- TRUE
      } else {
        overview_results[a, "AHN2_noShading"] <- FALSE
      }
    }
  }
}
View(overview_results)
View(filter(overview_results, AHN3_partial_match == FALSE))


final_results <- function(){
  results <- fread("output/all_summary_results.csv", data.table = FALSE)
  results[,"automated_class_is"] <- 0
  results[,"class_difference"] <- 0
  for(r in 1:nrow(results)){
    if(results[r,"exact_match"] == FALSE){
      final_class <- results[r,"final_class"]
      manual_class_l <- results[r,"manual_class_Rl"]
      manual_class_h <- results[r,"manual_class_Rh"]
      if(final_class < manual_class_l){
        difference <- manual_class_l - final_class  
        string <- ""
        for(n in 1:difference){
          string <- paste0(string, "-")
        }
        results[r,"automated_class_is"] <- string
        results[r,"class_difference"] <- difference
      }
      if(final_class > manual_class_l){
        difference <- final_class - manual_class_h
        string <- ""
        for(n in 1:difference){
          string <- paste0(string, "+")
        }
        results[r,"automated_class_is"] <- string
        results[r,"class_difference"] <- difference
      }
    }
  }
  #class(results[,"class_difference"]) <- as.numeric(levels(results[,"class_difference"]))[results[,"class_difference"]]#results[, "class_difference"])
  View(results)
  fwrite(results, "output/all_final_results.csv")
return (results)}
final_results <- final_results()

table <- xtable(select(final_results, AWS, AHN_selected, final_class, manual_class_R, automated_class_is)) 
print.xtable(table,
             type = getOption("xtable.type", "latex"),
             include.rownames = getOption("xtable.include.rownames", FALSE),
             booktabs = getOption("xtable.booktabs", TRUE)
             )
View(select(final_results, AWS, AHN_selected, shades_class, objects_class, vegetation_height_class, partial_match, manual_class_R, automated_class_is ))
xtable((select(final_results, AWS, AHN_selected, shades_class, objects_class, vegetation_height_class, partial_match, manual_class_R, automated_class_is )))


dr <- function(){
  data <- fread("output/all_final_results.csv", data.table = FALSE)
  shades_counter <- 0
  objects_counter <- 0
  shadesObjects_counter <- 0
  for(r in 1:nrow(data)){
    count_shade <- FALSE
    final_class <- data[r, "final_class"]
    shades_class <- data[r,"shades_class"]
    objects_class <- data[r,"objects_class"]
    if(shades_class == final_class){
      shades_counter <- shades_counter + 1
      count_shade <- TRUE
    }
    if(objects_class == final_class){
      objects_counter <- objects_counter + 1
      if(count_shade == TRUE){
        shadesObjects_counter <- shadesObjects_counter + 1
      }
    }
    
  }
  
  final_class1_count <- nrow(subset(data,final_class == 1))
  final_class2_count <- nrow(subset(data,final_class == 2))
  final_class3_count <- nrow(subset(data,final_class == 3))
  final_class4_count <- nrow(subset(data,final_class == 4))
  final_class5_count <- nrow(subset(data,final_class == 5))
  
    
    
  shadesOnly_counter <- shades_counter - shadesObjects_counter
  objectsOnly_counter <- objects_counter - shadesObjects_counter
  
  relShadesOnly <- shadesOnly_counter / nrow(data)
  relObjectsOnly <- objectsOnly_counter / nrow(data)
  relShadesObjects_counter <- shadesObjects_counter / nrow(data)
  
  class_count<- data.frame(c(final_class1_count, final_class2_count,  final_class3_count, final_class4_count, final_class5_count, shadesOnly_counter, objectsOnly_counter, shadesObjects_counter))
  rownames(class_count) <- c("class 1 count" , 
                    "class 2 count",
                    "class 3 count",
                    "class 4 count",
                    "class 5 count",
                    "shades count",
                    "objects count",
                    "shadesObjects count")
  colnames(class_count) <- "count"
  
  relatives <- c()
  for(r in 1:nrow(class_count)){
    relative <- round((class_count[r,"count"] / nrow(data)), digits = 3) 
    relatives <- append(relatives, relative)
  }
  relatives.df <- data.frame(relatives)
  colnames(relatives.df) <- "relative"
  
  class_count <- cbind(class_count, relatives.df)
  
  View(class_count)
  fwrite(class_count, "output/class_counts.csv")
  shades_distr <- data.frame(AWS = as.character(), total_count = as.numeric(), notClass1_count = as.numeric(), notClass1_rel = as.numeric(),class_1 = as.numeric(), class_1rel = as.numeric(), class_2 = as.numeric(), class_2rel = as.numeric(), class_3 = as.numeric(), class_3rel = as.numeric(), class_4 = as.numeric(), class_4rel = as.numeric(), class_5 = as.numeric(), class_5rel = as.numeric())
  names(shades_distr) <- c("AWS", "total_count", "notClass1_count", "notClass1_rel", "class1_count", "class1_rel", "class2_count", "class2_rel", "class3_count", "class3_rel", "class4_count", "class4_rel", "class5_count", "class5_rel")
  for(n3 in AWS_temperature_ahn3Only_names){
    aws_name_trim <- getAWS_name_trim(aws_name = n3)
    shadesOverview <- fread(paste0("output/", aws_name_trim, "/solar_shadow_angles/", aws_name_trim, "_AHN3_ah_solar_shadow_angles_classes.csv"),data.table = FALSE)[1,]
    class1_count <- shadesOverview[1,"class1_count"]
    class2_count <- shadesOverview[1,"class2_count"]
    class3_count <- shadesOverview[1,"class3_count"]
    class4_count <- shadesOverview[1,"class4_count"]
    class5_count <- shadesOverview[1,"class5_count"]
    total_count <- class1_count + class2_count + class3_count + class4_count + class5_count
    total_not1_count <- total_count - class1_count
    
    not1_relCount <- round((total_not1_count / total_count), digits = 3)
    class1_relCount <- round((shadesOverview[1,"class1_count"] / total_count), digits = 3)
    class2_relCount <- round((shadesOverview[1,"class2_count"] / total_count), digits = 3)
    class3_relCount <- round((shadesOverview[1,"class3_count"] / total_count), digits = 3)
    class4_relCount <- round((shadesOverview[1,"class4_count"] / total_count), digits = 3)
    class5_relCount <- round((shadesOverview[1,"class5_count"] / total_count), digits = 3)
    
    input <- data.frame(n3, total_count, total_not1_count, not1_relCount, class1_count, class1_relCount, class2_count, class2_relCount, class3_count, class3_relCount, class4_count, class4_relCount, class5_count, class5_relCount, stringsAsFactors = FALSE)
    names(input) <- c("AWS", "total_count", "notClass1_count", "notClass1_rel", "class1_count", "class1_rel", "class2_count", "class2_rel", "class3_count", "class3_rel", "class4_count", "class4_rel", "class5_count", "class5_rel")
    rownames(input) <- n3
    shades_distr <- rbind(shades_distr, input)

  }
  for(n2 in AWS_temperature_ahn2Only_names){
    aws_name_trim <- getAWS_name_trim(aws_name = n2)
    shadesOverview <- fread(paste0("output/", aws_name_trim, "/solar_shadow_angles/", aws_name_trim, "_AHN2_ah_solar_shadow_angles_classes.csv"),data.table = FALSE)[1,]
    class1_count <- shadesOverview[1,"class1_count"]
    class2_count <- shadesOverview[1,"class2_count"]
    class3_count <- shadesOverview[1,"class3_count"]
    class4_count <- shadesOverview[1,"class4_count"]
    class5_count <- shadesOverview[1,"class5_count"]
    total_count <- class1_count + class2_count + class3_count + class4_count + class5_count
    total_not1_count <- total_count - class1_count
    
    not1_relCount <- round((total_not1_count / total_count), digits = 3)
    class1_relCount <- round((shadesOverview[1,"class1_count"] / total_count), digits = 3)
    class2_relCount <- round((shadesOverview[1,"class2_count"] / total_count), digits = 3)
    class3_relCount <- round((shadesOverview[1,"class3_count"] / total_count), digits = 3)
    class4_relCount <- round((shadesOverview[1,"class4_count"] / total_count), digits = 3)
    class5_relCount <- round((shadesOverview[1,"class5_count"] / total_count), digits = 3)
    
    input <- data.frame(n2, total_count, total_not1_count, not1_relCount, class1_count, class1_relCount, class2_count, class2_relCount, class3_count, class3_relCount, class4_count, class4_relCount, class5_count, class5_relCount, stringsAsFactors = FALSE)
    names(input) <- c("AWS", "total_count", "notClass1_count", "notClass1_rel", "class1_count", "class1_rel", "class2_count", "class2_rel", "class3_count", "class3_rel", "class4_count", "class4_rel", "class5_count", "class5_rel")
    
    rownames(input) <- n2
    shades_distr <- rbind(shades_distr, input)
    
  }
  shades_distr <- shades_distr[order(rownames(shades_distr)),]
  print(mean(unlist(shades_distr$class1_rel)))
  print(sd(unlist(shades_distr$class1_rel))) 
  View(shades_distr)
  fwrite(shades_distr, "output/all_shades_distribution.csv")
}
dr()

hs_stats <- function(){
  hs_stats <- data.frame(AWS = as.character(), final_class = as.numeric(), class = as.numeric(), inner_circle = as.character(), annulus = as.character(), outer_circle = as.character(), relArea_HS_innerCircle = as.numeric(), relArea_HS_annulus = as.numeric(), relArea_HS_outerCircle = as.numeric(), stringsAsFactors = FALSE)
  colnames(hs_stats) <- c("AWS", "Final Class", "Class", "Inner Cirlcle radius", "%area inner Circle", "Annulus", "%area annlus", "Outer circle radius","%area outer Circle")
  for (aws in AWS_temperature_names){
    #print(a2)
    aws_name_trim <- getAWS_name_trim(aws_name = aws)
    single_hs_stats <- fread(paste0("output/", aws_name_trim, "/land_use/", aws_name_trim, "_landUse_classes.csv"), data.table = FALSE)
    #View(single_hs_stats)
    final_class <- single_hs_stats[,"final_class"]
    #print(final_class)
    if(final_class == 1){
      highest_noMeet_class <- 1
    } else {
      highest_noMeet_class <- final_class -1
    }
    getHSvalues <- function(stats, class, aws, has_data){
      print(aws)
      if(class == 1){
        outer_circle <- "100 m"
        inner_circle <- "10 m"
        annulus_area <- "10-30 m"
        if(has_data == TRUE){
          relArea_HS_outerCircle <- stats[,"relAreaBuffer_100m"]
          relArea_HS_innerCircle <- stats[,"relAreaBuffer_10m"]
          relArea_HS_annulus <- stats[,"relAreaRegion_10_30m"]
        } else {
          relArea_HS_outerCircle <- NA
          relArea_HS_innerCircle <- NA
          relArea_HS_annulus <- NA
        }
      } else if(class == 2){
        outer_circle <- "30 m"
        inner_circle <- "5 m"
        annulus_area <- "5-10 m"
        if(has_data == TRUE){
          relArea_HS_outerCircle <- stats[,"relAreaBuffer_30m"]
          relArea_HS_innerCircle <- stats[,"relAreaBuffer_5m"]
          relArea_HS_annulus <- stats[,"relAreaRegion_5_10m"]
        } else {
          relArea_HS_outerCircle <- NA
          relArea_HS_innerCircle <- NA
          relArea_HS_annulus <- NA
        }
      } else if(class == 3){
        outer_circle <- "10 m"
        inner_circle <- "5 m"
        annulus_area <- "NA"
        if(has_data == TRUE){
          relArea_HS_outerCircle <- stats[,"relAreaBuffer_10m"]
          relArea_HS_innerCircle <- stats[,"relAreaBuffer_5m"]
          relArea_HS_annulus <- NA
        } else {
          relArea_HS_outerCircle <- NA
          relArea_HS_innerCircle <- NA
          relArea_HS_annulus <- NA
        }
      } else if(class == 4){
        outer_circle <- "10 m"
        inner_circle <- "3 m"
        annulus_area <- "NA"
        if(has_data == TRUE){
          relArea_HS_outerCircle <- stats[,"relAreaBuffer_10m"]
          relArea_HS_innerCircle <- stats[,"relAreaBuffer_3m"]
          relArea_HS_annulus <- NA
        } else {
          relArea_HS_outerCircle <- NA
          relArea_HS_innerCircle <- NA
          relArea_HS_annulus <- NA
        }
      }
      input.df <- data.frame(aws, final_class, class, inner_circle, relArea_HS_innerCircle, annulus_area, relArea_HS_annulus, outer_circle, relArea_HS_outerCircle)
      colnames(input.df) <- c("AWS", "Final Class", "Class", "Inner Cirlcle radius", "%area inner Circle", "Annulus", "%area annlus", "Outer circle radius","%area outer Circle")
      rownames(input.df) <- aws
      
    return(input.df)}
    print(final_class)
    if(final_class == 5){
      max_class <- 4
    } else {
      max_class <- final_class
    }
    for(cl in 1:max_class){
      print(paste(cl, "funct"))
      hs_values <- getHSvalues(stats = single_hs_stats, class = cl, aws = aws, has_data = TRUE)
      hs_stats <- rbind(hs_stats, hs_values)
    }
    remaining_classes <- final_class + 1
    if(final_class != 4 & final_class != 5){
      for(ncl in remaining_classes:4){
        print(paste(cl, "no funct"))
        hs_remaining_values <- getHSvalues(stats = single_hs_stats, class = ncl, aws = aws, has_data = FALSE)
        hs_stats <- rbind(hs_stats, hs_remaining_values) 
      }
    }
  }
  hs_stats <- hs_stats[order(rownames(hs_stats)),]
  fwrite(hs_stats, "output_figures/all_hs_distribution.csv")
  #View(hs_stats)
  return(hs_stats)}

hs_stats()
Jellest/wmoSC documentation built on July 31, 2019, 12:34 p.m.