# README  
## Trait–Biomass Analysis (Andraczek et al.)

This repository contains the analysis workflow for investigating relationships between belowground plant traits and aboveground biomass production, including how these relationships are moderated by climatic conditions.

---

## 📂 Repository Structure

The project is organized into five main scripts:

```
andraczek_et_al_belowground_traits_biomass_analysis.rmd
andraczek_et_al_belowground_traits_biomass_sensitivity_analysis.rmd
HPC_Cluster_variance_partitioning_spatial_decomposition.R
HPC_Cluster_variance_partitioning_non_spatial_decomposition.R
andraczek_et_al_belowground_traits_biomass_helpers.R
```

---

## Input Data Requirements

### 1. Main Analysis Script  
**`andraczek_et_al_belowground_traits_biomass_analysis.rmd`**

Requires:
- Analysis-ready dataset containing:
  - Aboveground biomass
  - Community-weighted mean (CWM) belowground traits
  - Plot identifiers
  - Spatial coordinates
- Datasets are available via the public repository ZENODO

---

### 2. Sensitivity Analysis Script  
**`andraczek_et_al_belowground_traits_biomass_sensitivity_analysis.rmd`**

Requires:
- Same dataset as the main analysis:
  - Aboveground biomass
  - CWM traits
  - Plot identifiers
  - Coordinates
- Datasets are available via the public repository ZENODO (Main dataset: 10.5281/zenodo.20044909; NutNut subset: 10.5281/zenodo.20070364)

---

### 3. Spatial Variance Partitioning (HPC)  
**`HPC_Cluster_variance_partitioning_spatial_decomposition.R`**

Requires:
- Saved model objects from the main analysis script  
- Trait-specific data subsets generated in the main script  

---

### 4. Non-Spatial Variance Partitioning (HPC)  
**`HPC_Cluster_variance_partitioning_non_spatial_decomposition.R`**

Requires:
- Saved model objects from the main analysis script  
- Trait-specific data subsets generated in the main script  

---

### 5. Helper Functions  
**`andraczek_et_al_belowground_traits_biomass_helpers.R`**

Requires:
- No input data (contains reusable functions)

---

## Script Descriptions

### 1. Main Analysis  
**`andraczek_et_al_belowground_traits_biomass_analysis.rmd`**

This script contains the core analytical workflow.

**Key features:**
- Fits models of:
  ```
  Aboveground biomass ~ belowground trait × climate
  ```
- Climate moderators:
  - Minimum temperature
  - Water balance (aridity)

- Applies **trait-specific filtering**:
  - Only communities with ≥60% trait coverage are included

**Outputs:**
- All main figures
- Supplementary figures
- Model summary tables
- Additional supporting analyses

---

### 2. Sensitivity Analysis  
**`andraczek_et_al_belowground_traits_biomass_sensitivity_analysis.rmd`**

This script mirrors the main analysis but applies a stricter filtering criterion.

**Key difference:**
- Trait coverage threshold increased to **≥80%**

**Purpose:**
- Test robustness of trait–biomass relationships to data completeness

**Output:**
- Sensitivity analysis summary table

---

### 3. Spatial Variance Partitioning (HPC)  
**`HPC_Cluster_variance_partitioning_spatial_decomposition.R`**

This script performs **variance decomposition including spatial structure** using HPC resources.

**Workflow:**
- Rebuilds and refits nested GAM/BAM models with:
  - Space-only
  - Climate-only
  - Trait-only
  - Additive (trait + climate)
  - Full (trait × climate + space)

**Key components:**
- Extracts model metadata (response, family, terms)
- Classifies predictors into:
  - Spatial
  - Climate
  - Trait
  - Interaction terms
- Quantifies:
  - Climate effects beyond space
  - Trait effects beyond space
  - Unique trait effects beyond climate + space
  - Trait × climate interaction effects

**Execution:**
- Parallelized using `foreach` + `doSNOW`
- One job per trait

**Output:**
- One result file per trait containing:
  - Model formulas
  - Explained deviance
  - Deviance contrasts
  - Partial R² values
  - Metadata

---

### 4. Non-Spatial Variance Partitioning (HPC)  
**`HPC_Cluster_variance_partitioning_non_spatial_decomposition.R`**

This script performs **variance decomposition without spatial terms**.

**Workflow:**
- Removes spatial smooths from original models
- Refits nested GAM models:
  - Null
  - Climate-only
  - Trait-only
  - Additive
  - Full (trait × climate)

**Quantifies:**
- Gross climate effects
- Gross trait effects
- Unique trait contributions beyond climate
- Trait × climate interaction effects

**Execution:**
- Parallel HPC workflow (`foreach` + `doSNOW`)
- Per-trait model refitting with logging and error handling

**Output:**
- One result file per trait containing:
  - Model formulas
  - Explained deviance
  - Deviance contrasts
  - Partial R² values
  - Metadata

---

### 5. Helper Functions  
**`andraczek_et_al_belowground_traits_biomass_helpers.R`**

Central utility script used by analysis workflows.

**Includes functions for:**
- Model fitting
- Trait–biomass prediction plots (quantile-based)
- Trait–climate interaction visualization
- Trait and climate distribution plots
- Variance partitioning (without refitting)
- Spatial coverage visualization
- Effect size extraction and plotting
- Trait correlation analysis

**Used in:**
- Main analysis script  
- Sensitivity analysis script  

**Not used in:**
- HPC cluster scripts

---

## Workflow Overview

To reproduce this analysis, please run the scripts in the following order:

1. **Run main analysis**
   - `andraczek_et_al_belowground_traits_biomass_analysis.rmd`

2. **Run sensitivity analysis**
   - `andraczek_et_al_belowground_traits_biomass_sensitivity_analysis.rmd`

3. **Run variance partitioning on HPC**
   - Spatial:
     - `HPC_Cluster_variance_partitioning_spatial_decomposition.R`
   - Non-spatial:
     - `HPC_Cluster_variance_partitioning_non_spatial_decomposition.R`

---

## Notes

- Trait-specific filtering is central to all analyses and directly affects results.
- HPC scripts assume:
  - Precomputed models exist
  - Trait-specific subsets are saved
- Parallel execution is required for variance decomposition due to computational cost.
