SmartCane/r_app/experiments/interactive_ci_visualization/test_ci_analysis.R
2025-09-05 15:23:41 +02:00

113 lines
3.4 KiB
R

# Test CI Analysis Functions
# ==========================
#
# Script to test CI data loading and analysis functions
cat("Testing CI Analysis Functions...\n")
cat("================================\n")
# Load functions
source("ci_analysis_functions.R")
# Test 1: Load field boundaries
cat("\n1. Testing field boundary loading...\n")
field_boundaries <- load_field_boundaries()
if (!is.null(field_boundaries)) {
cat("✓ Field boundaries loaded successfully\n")
cat(" Number of fields:", nrow(field_boundaries), "\n")
cat(" Columns:", paste(names(field_boundaries), collapse = ", "), "\n")
cat(" CRS:", st_crs(field_boundaries)$input, "\n")
} else {
cat("✗ Failed to load field boundaries\n")
}
# Test 2: Load current CI
cat("\n2. Testing current CI loading...\n")
current_ci <- load_current_ci()
if (!is.null(current_ci)) {
cat("✓ Current CI loaded successfully\n")
cat(" Dimensions:", dim(current_ci), "\n")
cat(" CRS:", crs(current_ci), "\n")
cat(" Value range:", round(global(current_ci, range, na.rm = TRUE)[,1], 3), "\n")
cat(" Mean CI:", round(global(current_ci, mean, na.rm = TRUE)[1,1], 3), "\n")
} else {
cat("✗ Failed to load current CI\n")
}
# Test 3: Load previous CI
cat("\n3. Testing previous CI loading...\n")
previous_ci <- load_previous_ci()
if (!is.null(previous_ci)) {
cat("✓ Previous CI loaded successfully\n")
cat(" Dimensions:", dim(previous_ci), "\n")
cat(" Value range:", round(global(previous_ci, range, na.rm = TRUE)[,1], 3), "\n")
cat(" Mean CI:", round(global(previous_ci, mean, na.rm = TRUE)[1,1], 3), "\n")
} else {
cat("✗ Failed to load previous CI\n")
}
# Test 4: Calculate change
cat("\n4. Testing CI change calculation...\n")
if (!is.null(current_ci) && !is.null(previous_ci)) {
ci_change <- calculate_ci_change(current_ci, previous_ci)
if (!is.null(ci_change)) {
cat("✓ CI change calculated successfully\n")
cat(" Change range:", round(global(ci_change, range, na.rm = TRUE)[,1], 3), "\n")
cat(" Mean change:", round(global(ci_change, mean, na.rm = TRUE)[1,1], 3), "\n")
} else {
cat("✗ Failed to calculate CI change\n")
}
} else {
cat("⚠ Skipping change calculation - need both current and previous CI\n")
}
# Test 5: Create test map
cat("\n5. Testing interactive map creation...\n")
if (!is.null(current_ci)) {
# Set to plot mode for testing
tmap_mode("plot")
test_map <- create_interactive_ci_map(
current_ci,
field_boundaries,
title = "Test CI Map"
)
if (!is.null(test_map)) {
cat("✓ Interactive map created successfully\n")
print(test_map)
} else {
cat("✗ Failed to create interactive map\n")
}
} else {
cat("⚠ Skipping map test - no CI data available\n")
}
# Test 6: Field statistics
cat("\n6. Testing field statistics calculation...\n")
if (!is.null(current_ci) && !is.null(field_boundaries)) {
field_stats <- calculate_field_ci_stats(current_ci, field_boundaries)
if (!is.null(field_stats)) {
cat("✓ Field statistics calculated successfully\n")
cat(" Number of fields with stats:", nrow(field_stats), "\n")
cat(" Sample statistics:\n")
print(head(field_stats, 3))
} else {
cat("✗ Failed to calculate field statistics\n")
}
} else {
cat("⚠ Skipping field stats - need both CI data and field boundaries\n")
}
cat("\n=== Test Summary ===\n")
cat("CI Analysis functions testing complete!\n")
# Reset tmap mode
tmap_mode("view")