diff --git a/code/creditr/.Rbuildignore b/code/creditr/.Rbuildignore new file mode 100644 index 0000000..10e11c6 --- /dev/null +++ b/code/creditr/.Rbuildignore @@ -0,0 +1,5 @@ +^README\.Rmd$ +^data-raw$ +^\.github$ +^doc$ +^Meta$ diff --git a/code/creditr/.gitignore b/code/creditr/.gitignore new file mode 100644 index 0000000..2630916 --- /dev/null +++ b/code/creditr/.gitignore @@ -0,0 +1,12 @@ +*.html +*.png +*.tiff +*.o +scratch.R +scratch/* +progress +process + +inst/doc +/doc/ +/Meta/ diff --git a/code/creditr/DESCRIPTION b/code/creditr/DESCRIPTION new file mode 100644 index 0000000..9fae93c --- /dev/null +++ b/code/creditr/DESCRIPTION @@ -0,0 +1,27 @@ +Package: creditr +Title: Generate natural capital credits +Version: 1.0.0 +Authors@R: + person("Branson", "Fox", , "branson.fox@ncx.com", role = c("aut", "cre"), + comment = c(ORCID = "0000-0002-4361-2811")) +Description: Converts carbon posteriors to merchantable credits using a series of deductions for harvested wood products, leakage and posterior uncertainty. +License: file LICENSE +Encoding: UTF-8 +LazyData: true +LazyDataCompression: xz +Imports: + assertthat, + purrr, + dplyr, + tibble +Suggests: + knitr, + vroom, + rmarkdown, + roxygen2, + testthat (>= 3.0.0) +Roxygen: list(markdown = TRUE) +RoxygenNote: 7.1.2 +VignetteBuilder: knitr +Depends: + R (>= 2.10) diff --git a/code/creditr/LICENSE b/code/creditr/LICENSE new file mode 100644 index 0000000..5e340d2 --- /dev/null +++ b/code/creditr/LICENSE @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2022 NCX authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/code/creditr/NAMESPACE b/code/creditr/NAMESPACE new file mode 100644 index 0000000..ad43f67 --- /dev/null +++ b/code/creditr/NAMESPACE @@ -0,0 +1,6 @@ +# Generated by roxygen2: do not edit by hand + +export(apply_uncertainty_deduction) +export(compute_emissions) +export(compute_raw_credits) +export(emissions_to_credits) diff --git a/code/creditr/R/creditr.R b/code/creditr/R/creditr.R new file mode 100644 index 0000000..7a3d66b --- /dev/null +++ b/code/creditr/R/creditr.R @@ -0,0 +1,233 @@ +#' Decay / discount function +#' +#' @param lambda numeric; decay / discount coefficient. For annual X% decay / +#' discounting `lambda = -log(1 - X/100)` +#' @param t numeric; time in years + +D <- function(lambda, t) { + exp(-lambda * t) +} + +#' Emission function +#' +#' @param lambda numeric; emission coefficient. For annual X% emission use +#' `lambda = -log(1 - X/100)` +#' @param t numeric; time in years + +E <- function(lambda, t) { + 1 - exp(-lambda * t) +} + +#' Instantaneous emission function +#' +#' The derivative of [`E`] +#' +#' @param lambda numeric; decay coefficient. For annual X% emission use +#' `lambda = -log(1 - X/100)` +#' @param t numeric; time in years + +E_prime <- function(lambda, t) { + lambda * D(lambda, t) +} + +#' Discounted instantaneous emission function +#' +#' @param lambda numeric; decay coefficient. For annual X% decay +#' `lambda = -log(1 - X/100)` +#' @param rho numeric; discount coefficient. For annual X% discount +#' `rho = -log(1 - X/100)` +#' @param start numeric; time in years at which the emission begins. Acts as +#' an offset for emissions that don't begin until a future date. +#' @param t numeric; time in years + +F <- function(lambda, rho, t, start = 0) { + E_prime(lambda, t - start) * D(rho, t) +} + +#' Growth function +#' +#' @param gamma numeric; growth coefficient. For annual X% growth, use +#' `gamma = log(1 + X/100)` +#' @param t numeric; time in years + +G <- function(gamma, t) { + exp(gamma * t) +} + +#' Instantaneous growth function +#' +#' @param gamma numeric; growth coefficient. For annual X% growth, use +#' `gamma = log(1 + X/100)` +#' @param t numeric; time in years + +G_prime <- function(gamma, t) { + gamma * G(gamma, t) +} + +#' Discounted instantaneous growth function +#' +#' @param gamma numeric; growth coefficient. For annual X% growth +#' `gamma = log(1 + X/100)` +#' @param rho numeric; discount coefficient. For annual X% discount +#' `rho = -log(1 - X/100)` +#' @param t numeric; time in years + +H <- function(gamma, rho, t) { + G_prime(gamma, t) * D(rho, t) +} + +#' Function to compute emissions +#' +#' @param t0_tCO2 [0, inf) metric tonnes of CO2 at day 0 +#' @param annual_growth_rate [0, inf) average annual growth of carbon +#' @param baseline_intensity \[0-1\] proportion of carbon harvested under BAU +#' @param loss_intensity \[0-1\] estimated carbon harvested at end of performance period +#' @param supersection string; USFS supersection +#' @param annual_discount_rate numeric [0, inf); annualized discount rate for carbon deferred this year +#' +#' @description See full methodology at creditr/vignettes/hwp_emissions.Rmd +#' @return class tibble; intermediary calculations to be supplied to [creditr::emissions_to_credits()] to generate credits +#' @export +compute_emissions <- function( + t0_tCO2, + annual_growth_rate, + baseline_intensity, + loss_intensity, + supersection, + annual_discount_rate = 0.03 +) { + + # Check boundary conditions + stopifnot( + t0_tCO2 >= 0, + annual_growth_rate >= 0, + baseline_intensity >= 0, baseline_intensity <= 1, + loss_intensity >= 0, loss_intensity <= 1, + annual_discount_rate >= 0 + ) + + stopifnot(supersection %in% creditr::supersection_multipliers$supersection) + ss_idx <- match(supersection, creditr::supersection_multipliers$supersection) + + deferral <- baseline_intensity - loss_intensity + + # baseline emissions + delta_baseline <- t0_tCO2 * baseline_intensity * + creditr::supersection_multipliers$baseline_emission_multipliers[ss_idx] + + # this is the amount harvested at T0 in the program + E_0 <- t0_tCO2 * loss_intensity * + creditr::supersection_multipliers$baseline_emission_multipliers[ss_idx] + + # harvest of the deferral component + h_b <- t0_tCO2 * deferral * + creditr::supersection_multipliers$project_emission_multipliers[ss_idx] + + # harvest of the growth component + h_g <- h_b * annual_growth_rate + + # sequestration due to growth (s) + # check for s_multiplier in growth_rates, or else compute + if (annual_discount_rate == 0.03 & all(annual_growth_rate %in% creditr::growth_rates$mean_annual_growth_carbon_tons_per_ac_pct)) { + s_multipliers <- creditr::growth_rates$s_multiplier[ + match(annual_growth_rate, creditr::growth_rates$mean_annual_growth_carbon_tons_per_ac_pct) + ] + } else { + unique_growth_rates <- unique(annual_growth_rate) + + unique_s_multipliers <- purrr::map_dbl( + .x = unique_growth_rates, + .f = ~ { + integral <- integrate( + H, + gamma = log(1 + .x), + rho = -log(1 - annual_discount_rate), + lower = 0, + upper = 1 + ) + integral$value + } + ) + s_multipliers <- unique_s_multipliers[ + match(annual_growth_rate, unique_growth_rates) + ] + } + + s <- t0_tCO2 * deferral * s_multipliers + + E_d <- h_b + h_g + + delta_project <- E_0 + E_d - s + + calcs <- tibble::tibble( + delta_baseline, + delta_project, + E_0, + E_d, + h_b, + h_g, + s, + gamma = log(1 + annual_growth_rate) + ) + + assertthat::noNA(calcs) + return(calcs) +} + +#' Function to compute credits from emissions +#' +#' @param delta_baseline numeric; emissions under the BAU (no intervention) scenario +#' @param delta_project numeric; the total discounted emissions in the project scenario from harvesting and processing timber into wood products +#' @param h_g numeric; growth harvest discounted emissions +#' @param s numeric; sequestration due to the growth on component of the aboveground live tree biomass for which harvest was deferred +#' @param l numeric \[0-1\]; deduction to be applied for leakage +#' +#' @description See full methodology at creditr/vignettes/hwp_emissions.Rmd +#' @export +emissions_to_credits <- function(delta_baseline, delta_project, h_g, s, l) { + + stopifnot( + l >= 0, l <= 1 + ) + + total_credits <- (delta_baseline - delta_project) * (1 - l) + growth_credits <- (s - h_g) * (1 - l) + + tibble::tibble( + ncx_credits = total_credits, + growth_credits = growth_credits + ) + +} + +#' Composite function to compute and verify boundary of credits +#' @inheritParams compute_emissions +#' @param leakage numeric \[0-1\]; deduction to be applied for leakage +#' @export +compute_raw_credits <- function( + t0_tCO2, + annual_growth_rate, + baseline_intensity, + loss_intensity, + supersection, + annual_discount_rate = 0.03, + leakage = 0.2 +) { + emissions <- compute_emissions( + t0_tCO2, + annual_growth_rate, + baseline_intensity, + loss_intensity, + supersection, + annual_discount_rate + ) + credits <- emissions_to_credits( + delta_baseline = emissions$delta_baseline, + delta_project = emissions$delta_project, + h_g = emissions$h_g, + s = emissions$s, + l = leakage + ) + + return(credits) +} diff --git a/code/creditr/R/data.R b/code/creditr/R/data.R new file mode 100644 index 0000000..1119922 --- /dev/null +++ b/code/creditr/R/data.R @@ -0,0 +1,74 @@ +#' hwp_decay +#' +#' Decay rate information for classes of harvested wood products. +#' @format A tibble with 196 rows and 6 variables: +#' \describe{ +#' \item{year}{decay year} +#' \item{product}{harvested wood product} +#' \item{prop_remaining}{ +#' proportion of carbon remaining in `product` at `year` +#' } +#' \item{prop_emitted}{ +#' cumulative proportion of carbon emitted into the atmosphere for `product` +#' in `year`; computed as 1 - `prop_remaining` +#' } +#' } +#' @source data-raw/hwp.R +#' +"hwp_decay" + +#' hwp_mix +#' +#' Typical harvested wood product mixtures by supersection. +#' @format A tibble with 658 rows and 3 variables: +#' \describe{ +#' \item{supersection}{USFS supersection} +#' \item{product}{harvested wood product} +#' \item{mix_prop}{ +#' proportion of harvest allocated to `product` in a given supersection +#' } +#' } +#' @source data-raw/hwp.R +#' +"hwp_mix" + +#' decay_coefs +#' +#' Decay rate parameters by harvest product +#' +#' @format A tibble with 9 rows and 2 variables: +#' \describe{ +#' \item{product}{harvest product} +#' \item{lambda}{decay parameter} +#' } +#' @source data-raw/hwp.R +#' +"decay_coefs" + +#' supersection_multipliers +#' +#' USFS supersection-associated emission multipliers +#' +#' @format A tibble with 88 rows and 3 variables: +#' \describe{ +#' \item{supersection}{USFS supersection} +#' \item{baseline_emission_multipliers}{supersection-associated multiplier} +#' \item{project_emission_multipliers}{supersection-associated multiplier} +#' } +#' @source data-raw/hwp.R +#' +"supersection_multipliers" + +#' growth_rates +#' +#' USFS field group-associated growth rates/sequestration multipliers +#' +#' @format A tibble with 33 rows and 3 variables: +#' \describe{ +#' \item{fldgrpcd}{USFS field group code} +#' \item{mean_annual_growth_carbon_tons_per_ac_pct}{population estimated growth rates from rFIA} +#' \item{s_multiplier}{sequestration multiplier} +#' } +#' @source data-raw/growth_rates.R +#' +"growth_rates" diff --git a/code/creditr/R/project_uncertainty.R b/code/creditr/R/project_uncertainty.R new file mode 100644 index 0000000..b2c6c45 --- /dev/null +++ b/code/creditr/R/project_uncertainty.R @@ -0,0 +1,59 @@ +#' Calculate Uncertainty Deduction +#' +#' Calculate the project uncertainty deduction fom the T0 and T1 uncertainty estimates +#' +#' @param t0_half_width_ratio range(90% CI) / 2 / C_t0 +#' @param t1_half_width_ratio range(90% CI) / 2 / C_t1 +#' +#' @return uncertainty deduction +#' +calculate_uncertainty_deduction <- function(t0_half_width_ratio, t1_half_width_ratio){ + base_uncertainty <- sqrt(t1_half_width_ratio^2 + t0_half_width_ratio^2) + uncertainty_deduction <- base_uncertainty - 0.1 + 0.015 + dplyr::case_when( + uncertainty_deduction < 0.015 ~ 0.015, # lower bound + uncertainty_deduction > 1.0 ~ 1.0, # upper bound + TRUE ~ uncertainty_deduction + ) +} + +#' Calculate uncertainty mutliplier +#' +#' Calculate the uncertainity multiplier based on the logistic uncertainty loss +#' function that was fit to IPCC data. The logistic uncertainty is developed +#' and explained in `cyclops/vignettes/uncertainty_curve.Rmd`, in that file, we +#' determine the logistic parameters (`b0` and `b1`). +#' +#' @param halfwidth_interval_prop the proportional halfwidth interval of the +#' posterior distribution of tonne years +#' +#' @return the uncertainty multiplier for this distribution +#' +calc_uncertainty_multiplier <- function(halfwidth_interval_prop) { + b0 <- 3.502478 + b1 <- -3.851745 + denominator <- (1 + exp(-(b0 + b1 * halfwidth_interval_prop))) + return(1 / denominator) +} + +#' Use uncertainty multiplier to deduct +#' +#' Use the posterior distribution of ton year draws from a property or project +#' and calculate the number of credits to mint based on the uncertainty +#' multiplier +#' +#' @param posterior_draws posterior draws for some unit +#' +#' @return the number of credits to mint +#' +#' @export +apply_uncertainty_deduction <- function(posterior_draws) { + median_draws <- stats::median(posterior_draws) + upper <- as.numeric(stats::quantile(posterior_draws, 0.975)) + lower <- as.numeric(stats::quantile(posterior_draws, 0.025)) + halfwidth_interval <- (upper - lower) / 2 + halfwidth_interval_prop <- halfwidth_interval / median_draws + credits <- calc_uncertainty_multiplier(halfwidth_interval_prop) * + median_draws + return(credits) +} diff --git a/code/creditr/README.md b/code/creditr/README.md new file mode 100644 index 0000000..2f09f7c --- /dev/null +++ b/code/creditr/README.md @@ -0,0 +1,41 @@ +# creditr + +The `creditr` package exposes the methodology used at [NCX](https://ncx.com) to turn our posterior estimates of carbon emissions averted into the credits that we sell. This is achieved via a series of deductions for predictive uncertainty, leakage and harvested wood products. + +## Anatomy of the R Package + +``` +├── DESCRIPTION +├── LICENSE +├── NAMESPACE +├── R [Core package functions] +│ ├── creditr.R +│ ├── data.R +│ └── project_uncertainty.R +├── README.md +├── data [R binary data objects] +│ ├── decay_coefs.rda +│ ├── growth_rates.rda +│ ├── hwp_decay.rda +│ ├── hwp_mix.rda +│ └── supersection_multipliers.rda +├── data-raw [Scripts used to generate /data] +│ ├── growth_rates.R +│ └── hwp.R +├── inst +│ └── extdata (input files used in /data-raw scripts) +│ ├── HWP_decay_profiles.csv +│ ├── HWP_supersection_mixtures.csv +│ └── growth_by_fldgrpcd.csv +├── man +│ *Function Documentation* +└── tests + *Package Tests* +``` +As a matter of convenience, the binary R data are also available as csv files in the directory `methodologies/harvest_deferral_ifm/data/package_data/*` + +## Installation + +```bash +R -e 'devtools::install("creditr")' +``` \ No newline at end of file diff --git a/code/creditr/data-raw/growth_rates.R b/code/creditr/data-raw/growth_rates.R new file mode 100644 index 0000000..d548eeb --- /dev/null +++ b/code/creditr/data-raw/growth_rates.R @@ -0,0 +1,39 @@ +# Generate data object from growth rates, including precomputed integral + +library(vroom) +library(dplyr) +annual_discount_rate <- 0.03 + +growth_rates <- vroom::vroom( + system.file("extdata/growth_by_fldgrpcd.csv", package = "creditr") +) + +s_multipliers <- purrr::map_dbl( + .x = growth_rates$mean_annual_growth_carbon_tons_per_ac_prop, + .f = ~ { + integral <- integrate( + creditr:::H, + gamma = log(1 + .x), + rho = -log(1 - annual_discount_rate), + lower = 0, + upper = 1 + ) + integral$value + } +) + +growth_rates <- growth_rates |> + dplyr::transmute( + fldgrpcd, + mean_annual_growth_carbon_tons_per_ac_pct, + s_multiplier = s_multipliers + ) + +assertthat::assert_that( + !any(duplicated(growth_rates$fldgrpcd)) +) +assertthat::assert_that( + !any(duplicated(growth_rates)) +) + +usethis::use_data(growth_rates, overwrite = TRUE, compress = "xz") diff --git a/code/creditr/data-raw/hwp.R b/code/creditr/data-raw/hwp.R new file mode 100644 index 0000000..5cb2364 --- /dev/null +++ b/code/creditr/data-raw/hwp.R @@ -0,0 +1,181 @@ +library(readxl) +library(dplyr) +library(tidyr) +library(ggplot2) +library(broom) +library(purrr) +library(vroom) + +hwp_mix_raw <- vroom::vroom(system.file("extdata/HWP_supersection_mixtures.csv", package = "creditr")) + +# rows don't sum to exactly 1, so need to normalize +norm_vec <- apply(hwp_mix_raw[2:length(hwp_mix_raw)], 1, sum) + +mix_mat_raw <- as.matrix(hwp_mix_raw[, 2:length(hwp_mix_raw)]) + +hwp_mix_norm <- sweep(mix_mat_raw, 1, norm_vec, FUN = "/") |> + as_tibble() |> + tibble::add_column(supersection = hwp_mix_raw$supersection, .before = 1) + +nonmerch_ss <- hwp_mix_raw$supersection[norm_vec == 0] +nonmerch_ss + +hwp_mix_wide <- hwp_mix_norm |> + filter(!supersection %in% c(nonmerch_ss, "TOTAL")) |> + mutate( + # assume 45% goes to harvested wood products, 25 % goes to slash, 30% goes + # to mill residue (chips, etc.) + across(.cols = !supersection, .fns = ~ .x * 0.45), + slash = 0.25, + residue = 0.3 + ) + +assertthat::assert_that( + all.equal(rowSums(hwp_mix_wide[2:length(hwp_mix_wide)]), rep_len(1, nrow(hwp_mix_wide))) +) + +hwp_mix <- hwp_mix_wide |> + pivot_longer( + cols = !supersection, names_to = "product", values_to = "mix_prop" + ) + +usethis::use_data(hwp_mix, overwrite = TRUE, compress = "xz") + +hwp_decay <- vroom::vroom(system.file("extdata/HWP_decay_profiles.csv", package = "creditr")) |> + pivot_longer( + cols = c(!year), + names_to = "product", + values_to = "prop_remaining" + ) |> + mutate( + prop_emitted = 1 - prop_remaining + ) + +usethis::use_data(hwp_decay, overwrite = TRUE) + +ggplot(hwp_decay) + + geom_line(aes(x = year, y = prop_remaining)) + + facet_wrap(~product) + + ylab("remaining") + + ggtitle("Decay profile by product") + +# mill residue coefficient +t <- seq(from = 0.01, to = 5, by = 0.01) +residue_lambda <- -log(0.01) # 99% annual decay +residue <- exp(-residue_lambda * t) +plot(residue ~ t, type = "l") + +# slash residue coefficient +t <- seq(from = 0.01, to = 100, by = 0.01) +slash_lambda <- -log(0.95) # 5% annual decay +slash <- exp(-slash_lambda * t) +plot(slash ~ t, type = "l") + +missing_ones <- tibble( + product = unique(hwp_decay$product), + year = 0, + prop_remaining = 1 +) + +model_data <- hwp_decay |> + bind_rows(missing_ones) |> + filter( + prop_remaining > 0 + ) |> + mutate( + log_res = log(prop_remaining) + ) + +decay_coefs <- model_data |> + nest(data = !product) |> + mutate( + fit = map(data, ~ lm(log_res ~ 0 + year, data = .x)), + tidied = map(fit, tidy) + ) |> + unnest(tidied) |> + select(product, term, estimate) |> + pivot_wider( + names_from = "term", + values_from = "estimate", + # linear regression makes them additive, so we need to reverse the sign + values_fn = ~ -.x + ) |> + setNames(c("product", "lambda")) |> + add_row(product = "residue", lambda = residue_lambda) |> + add_row(product = "slash", lambda = slash_lambda) + +model_test <- left_join(model_data, decay_coefs, by = "product") |> + mutate(preds = exp(-lambda * year)) + +ggplot(model_test) + + geom_line(aes(x = year, y = preds)) + + geom_point(aes(x = year, y = prop_remaining)) + + facet_wrap(~product) + +usethis::use_data(decay_coefs, overwrite = TRUE, compress = "xz") + +# Generate supersection multipliers +rho <- -log(1 - 0.03) +baseline_emission_multipliers <- purrr::map_dbl( + decay_coefs$lambda, + ~ integrate( + creditr:::F, + lambda = .x, + rho = rho, + lower = 0, + upper = Inf)$value +) +project_emission_multipliers <- purrr::map_dbl( + decay_coefs$lambda, + ~ integrate( + creditr:::F, + lambda = .x, + rho = rho, + start = 1, + lower = 1, + upper = Inf)$value +) +assertthat::assert_that( + all( + abs(project_emission_multipliers / baseline_emission_multipliers - exp(-rho)) < 1e-6 + ) +) +mix_wide <- hwp_mix |> + pivot_wider( + id_cols = supersection, names_from = "product", + values_from = mix_prop + ) |> + select(supersection, decay_coefs$product) +mix_matrix <- as.matrix(select(mix_wide, -supersection)) +supersection_multipliers <- tibble( + supersection = mix_wide$supersection, + baseline_emission_multipliers = as.numeric( + mix_matrix %*% baseline_emission_multipliers + ), + project_emission_multipliers = as.numeric( + mix_matrix %*% project_emission_multipliers + ) +) + +# Fix supersections to match names +supersection_multipliers <- supersection_multipliers |> + dplyr::mutate( + supersection = dplyr::case_when( + supersection == "Andirondacks & Green Mountains" ~ "Adirondacks & Green Mountains", + supersection == "Arizona-Nevada Mountains" ~ "Nevada Mountains", + supersection == "Aroostook-Maine-New Brunswick Hills and Lowlands" ~ "Aroostook Hills and Lowlands", + supersection == "Central Interior Broadleaf Forest Central Till Plains" ~ "MW Broadleaf Forest Central Till Plains", + supersection == "Central Interior Broadleaf Forest Eastern Low Plateau" ~ "Central Interior Broadleaf Forest Eastern Low", + supersection == "Central Interior Broadleaf Forest Western Low Plateau" ~ "Central Interior Broadleaf Forest Western Low", + supersection == "Eastern Broadleaf Forest Cumberland Plateau & Valley" ~ "Eastern Broadleaf Forest Cumberland Plateau", + supersection == "Laurentian Mixed Forest Western Superior & Lake Plains" ~ "Laurentian Mixed Forest Western Superior & Lake", + supersection == "MW Broadleaf Forest SC Great Lakes & Lake Whittlesey" ~ "MW Broadleaf Forest SC Great Lakes & Lake Whittles", + supersection == "Prairie Parkland Central Till Plains & Grand Prairies" ~ "Prairie Parkland Central Till Plains & Grand", + TRUE ~ supersection + ) + ) + +# There is a duplicate in supersection_multipliers +# supersection_multipliers$supersection[duplicated(supersection_multipliers$supersection)] +# [47] "MW Broadleaf Forest Central Till Plains" +usethis::use_data(supersection_multipliers, overwrite = TRUE, compress = "xz") diff --git a/code/creditr/data/decay_coefs.rda b/code/creditr/data/decay_coefs.rda new file mode 100644 index 0000000..5c3513c Binary files /dev/null and b/code/creditr/data/decay_coefs.rda differ diff --git a/code/creditr/data/growth_rates.rda b/code/creditr/data/growth_rates.rda new file mode 100644 index 0000000..afe5e87 Binary files /dev/null and b/code/creditr/data/growth_rates.rda differ diff --git a/code/creditr/data/hwp_decay.rda b/code/creditr/data/hwp_decay.rda new file mode 100644 index 0000000..6580473 Binary files /dev/null and b/code/creditr/data/hwp_decay.rda differ diff --git a/code/creditr/data/hwp_mix.rda b/code/creditr/data/hwp_mix.rda new file mode 100644 index 0000000..70e124a Binary files /dev/null and b/code/creditr/data/hwp_mix.rda differ diff --git a/code/creditr/data/supersection_multipliers.rda b/code/creditr/data/supersection_multipliers.rda new file mode 100644 index 0000000..0e56e14 Binary files /dev/null and b/code/creditr/data/supersection_multipliers.rda differ diff --git a/code/creditr/inst/extdata/HWP_decay_profiles.csv b/code/creditr/inst/extdata/HWP_decay_profiles.csv new file mode 100644 index 0000000..a835c9a --- /dev/null +++ b/code/creditr/inst/extdata/HWP_decay_profiles.csv @@ -0,0 +1,29 @@ +year,softwood_lumber,hardwood_lumber,plywood,osb,nonstructural_panels,misc,paper +1,0.908,0.909,0.908,0.908,0.908,0.903,0.88 +2,0.892,0.893,0.893,0.896,0.892,0.887,0.775 +3,0.877,0.877,0.878,0.884,0.876,0.871,0.682 +4,0.863,0.861,0.863,0.872,0.861,0.855,0.6 +5,0.848,0.845,0.848,0.86,0.845,0.84,0.528 +6,0.834,0.83,0.834,0.848,0.83,0.825,0.465 +7,0.82,0.815,0.82,0.837,0.816,0.81,0.354 +8,0.806,0.801,0.807,0.826,0.801,0.795,0.269 +9,0.793,0.786,0.794,0.815,0.787,0.781,0.205 +10,0.78,0.772,0.781,0.804,0.774,0.767,0.156 +15,0.718,0.705,0.719,0.753,0.708,0.7,0.04 +20,0.662,0.644,0.663,0.706,0.649,0.639,0.01 +25,0.611,0.589,0.613,0.662,0.595,0.583,0.003 +30,0.565,0.538,0.567,0.622,0.546,0.532,0.001 +35,0.523,0.492,0.525,0.585,0.501,0.486,0 +40,0.485,0.45,0.487,0.551,0.46,0.444,0 +45,0.45,0.411,0.452,0.519,0.423,0.405,0 +50,0.418,0.376,0.42,0.49,0.389,0.37,0 +55,0.389,0.344,0.391,0.462,0.358,0.338,0 +60,0.362,0.315,0.364,0.437,0.329,0.308,0 +65,0.338,0.288,0.34,0.413,0.303,0.281,0 +70,0.315,0.264,0.317,0.391,0.28,0.257,0 +75,0.294,0.242,0.296,0.37,0.258,0.234,0 +80,0.276,0.221,0.277,0.351,0.238,0.214,0 +85,0.258,0.203,0.26,0.333,0.22,0.195,0 +90,0.242,0.186,0.244,0.316,0.203,0.178,0 +95,0.227,0.17,0.229,0.3,0.188,0.163,0 +100,0.213,0.156,0.215,0.285,0.174,0.149,0 \ No newline at end of file diff --git a/code/creditr/inst/extdata/HWP_supersection_mixtures.csv b/code/creditr/inst/extdata/HWP_supersection_mixtures.csv new file mode 100644 index 0000000..8b81aab --- /dev/null +++ b/code/creditr/inst/extdata/HWP_supersection_mixtures.csv @@ -0,0 +1,95 @@ +supersection,softwood_lumber,hardwood_lumber,plywood,osb,nonstructural_panels,misc,paper +Allegheny & North Cumberland Mountains,0.036058893,0.687653811,0.000155426,0.122013205,0.045936468,0.033824417,0.07435778 +Andirondacks & Green Mountains,0.232258188,0.235367932,0.015922021,0,0.011048801,0.001553265,0.503849794 +Arizona-Nevada Mountains,1,0,0,0,0,0,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,0.401011531,0.098103449,0,0,0,0,0.50088502 +Atlantic Coastal Plain & Flatwoods,0.699879032,0.079795392,0.069217496,0.026898589,0.018569492,0.045493158,0.060146839 +Bitterroot Mountains,0.852761482,1.48959E-05,0.100813925,0,0.002148428,0.024204971,0.020056299 +Blue Mountains,0.77363532,0.002390219,0.1424171,0,0.000432029,0.004080856,0.077044477 +Blue Ridge Mountains,0.308056083,0.531475272,0.006896312,0.022440374,0.109754928,0.017315383,0.004061649 +Booneville Basin,0.647350864,0.151991852,0,0,0.020065728,0.180591556,0 +California Central Valley Basin,0.976659882,0,0.014719659,0,0,0.003103051,0.005517409 +Catskill Mountains,0.240455834,0.475391736,0,0.057639199,0.009705965,0.001829443,0.214977822 +Central California Coast,0.970670808,2.15333E-05,0.018741817,0,0.002443286,0.000947818,0.007174738 +Central Great Plains,0.18973963,0.798372577,0,0,0,0.011887794,0 +Central Interior Broadleaf Forest Central Till Plains,0.001154763,0.961129971,0,0,0.013262699,0.021503741,0.002948827 +Central Interior Broadleaf Forest Eastern Low Plateau,0.08028833,0.839360449,0.000993651,0,0.025717072,0.019297101,0.034343398 +Central Interior Broadleaf Forest Ozark Highlands,0.062256252,0.857333864,0,0,0.012414772,0.042497118,0.025497994 +Central Interior Broadleaf Forest Western Low Plateau,0.015053539,0.842076218,0,0,0.023040355,0.021034336,0.098795552 +Central Maine & Fundy Coast & Ebayment,0.336339325,0.046352084,0,0,0,0,0.617308591 +Central New Mexico,0.914544042,0.000158792,0,0,0.003442228,0.081854938,0 +Chihuahuan Semi-Desert,1,0,0,0,0,0,0 +Colorado Plateau,0.587020217,0.040421057,0,0.32019494,0.020403507,0.031960279,0 +Colorado River Canyon Lands,0.400896413,0.284336799,0,0.271502632,0.016087523,0.027176633,0 +Columbia Basin,0.864529773,0.016141442,0.040250087,0,0.001801653,0.017914709,0.059362335 +Cross Timbers and Prairie,0.235590811,0.447660827,0.024319531,0,0,0.292428831,0 +Eastern Broadleaf Forest Cumberland Plateau & Valley,0.098637805,0.650118732,0.001648308,0.000443948,0.036958102,0.145832561,0.066360544 +Eastern Cascades,0.794256968,0.005586426,0.099060897,0,0.000267295,0.003689527,0.097138888 +Eastern Great Plains,0.001935112,0.909578227,0,0,0,0.08848666,0 +Erie & Ontario Lake Plain,0.11912787,0.725880309,0,0.014226408,0.002061235,0.018901183,0.119802995 +Florida Coastal Plains Central Highlands,0.448641557,0.005218644,0.109846606,0.002857277,0.013038657,0.092518301,0.327878958 +Florida Everglades,0.172423258,0,0,0,0,0.109278431,0.718298311 +Great Divide Basin,0.405970257,0.002787728,0,0,0.001927989,0.589314025,0 +Great Plains,0.901842562,0.000774038,0,0,0.005781002,0.091602398,0 +Gulf Coastal Plain,0.448352759,0.056151192,0.195916366,0.013723066,0.012399544,0.024975172,0.248481901 +Idaho Batholith,0.975929533,0,0.018461023,0,0.000512588,0.004613289,0.000483567 +Laurentian Mixed Forest Arrowhead,0.188848269,0.069151724,0,0.695885018,0.045886633,0.000228356,0 +Laurentian Mixed Forest Green Bay Lobe,0.195628643,0.573907542,0.007759285,0.059145859,0.055698804,0.107859866,0 +Laurentian Mixed Forest MN & Ontario Lake Plain,0.171815566,0.088875614,0,0.666306826,0.04364948,0.004914602,0.024437913 +Laurentian Mixed Forest NLP/EUP,0.228384216,0.34581256,0.00128964,0.367186804,0.033353036,0.023973744,0 +Laurentian Mixed Forest Northern Highlands,0.123134355,0.396230577,0.00304508,0.363685284,0.070556323,0.043348381,0 +Laurentian Mixed Forest Southern Superior,0.157273067,0.460939948,0.005080579,0.256397556,0.085356084,0.034952765,0 +Laurentian Mixed Forest Western Superior & Lake Plains,0.136249964,0.190501339,0.001059344,0.611314072,0.054457303,0.006417978,0 +Lower New England - Northern Appalachia,0.257893131,0.279425365,0.005325242,7.62524E-05,0.126906309,0.005531545,0.324842155 +Modoc Plateau,0.740390418,3.39094E-05,0.255399895,0,0.000131684,0.001767578,0.002276516 +Montana Rocky Mountains,0.791809386,6.23783E-05,0.082218988,0,0.000857728,0.036929218,0.088122302 +MS River Delta,0.247157204,0.324324378,0.094852012,0.061336248,0.037947933,0.00101636,0.233365865 +MS River Mixed Forest,0.524283034,0.318444297,0.062262587,0.065382648,0.0160147,0.000438834,0.0131739 +MW Broadleaf Forest Central Till Plains,0.001313936,0.945938206,0,0,0.045839662,0.006036883,0.000871314 +MW Broadleaf Forest Driftless & Morainal,0.060707961,0.744265395,5.76922E-05,0.134500645,0.04855223,0.011376156,0.00053992 +MW Broadleaf Forest Great Lakes Morainal & Sands,0.299893304,0.527411821,0,0.059245779,0.027711422,0.085737674,0 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,0.025733224,0.885359244,0,0,0.077982617,0.010924916,0 +Nevada Mountains,0,0,0,0,0,0,0 +North Central Great Plains,0.072321169,0.113968545,0,0,0.07926461,0.734445676,0 +Northern Allegheny Plateau,0.128834788,0.573388366,0,0.026298995,0.014080224,0.091510801,0.165886826 +Northern Atlantic Coastal Plain,0.618738813,0.163866219,0.082837846,0.065032481,0.032392925,0.00228236,0.034849356 +Northern California Coast,0.970670808,2.15333E-05,0.018741817,0,0.002443286,0.000947818,0.007174738 +Northern Great Plains,0.908611417,0,0.00146841,0.00060061,0.000143133,0.002713742,0.086462687 +Northern Rocky Mountains,0.698584243,7.98601E-05,0.167086124,0,0.001928413,0.029069649,0.103251711 +Northwest Cascades,0.753262362,0.042616825,0.113913803,0,0.00126863,0.005278584,0.083659796 +Northwestern Basin and Range,0.765414482,0,0.230704043,0,0.000316461,0.003565014,0 +Okanogan Highland,0.824944286,0.030397102,0.016815717,0,0.001952224,0.024162868,0.101727804 +Oregon and Washington Coast,0.727237848,0.047947903,0.124374654,0,0.007478845,0.017724917,0.075235834 +Ozark Broadleaf Forest-Meadow Boston Mountains,0.474745863,0.127276779,0.116528544,0,0.005355665,0.011899562,0.264193586 +Prairie Parkland Central Till Plains & Grand Prairies,0.000567488,0.895765968,2.35452E-05,0,0.026673288,0.066594717,0.010374993 +Prairie Parkland North Central Plains,0.00433654,0.945351041,0,0,0.045994982,0.004317437,0 +Prairie Parkland Red River Valley,0.001293522,0.054826189,0,0.870232371,0.053804862,0.019843056,0 +Puget Trough,0.866749746,0.060356019,0.017122296,0,0.002236276,0.001356723,0.05217894 +SE Middle Mixed Forest Arkansas Valley,0.36316137,0.204169262,0.059797806,0,0.019790291,0.004116765,0.348964506 +SE Middle Mixed Forest Cumberland Plateau & Valley,0.314356978,0.10173734,0.059404092,0.00745955,0.019464827,0.097057129,0.400520083 +SE Middle Mixed Forest Piedmont,0.442223669,0.169418297,0.091369216,0.102665226,0.026171811,0.012209724,0.155942056 +SE Middle Mixed Forest Western Mid Coastal Plains,0.418761112,0.071756646,0.218651066,0.020121766,0.002027283,0.004697383,0.263984745 +Sierra Nevada,0.97391083,0,0.025056049,0,0,0.001033121,0 +Sierra Nevada Foothills,0.99316685,0,0.003632165,0,0,0.001839531,0.001361454 +Snake River Basin,0.96460177,0,0,0,0,0.03539823,0 +Southern Allegheny Plateau,0.012359456,0.778857373,0,0.063432908,0.043584047,0.019619366,0.08214685 +Southern California Coast,0,0,0,0,0,0,0 +Southern California Mountains,0,0,0,0,0,0,0 +Southern Cascades,0.695010971,0.00656349,0.276947172,0,0.000945209,0.005531293,0.015001865 +Southern Rockies Front Range,0.868896369,0.0222414,0,0,0.005369818,0.103492413,0 +Southern Rocky Mountains,0.855886364,0.011365055,0,0.003503064,0.008391119,0.120854397,0 +Southwest High Plains,0.851185609,0,0,0,0.014881439,0.133932952,0 +Southwest Plateau,0,0,0,0,0,0,0 +Southwestern Desert,0,0,0,0,0,0,0 +Southwestern Rocky Mountains,0.632567764,0.070131824,0,0.192970828,0.018620798,0.085708786,0 +St Lawrence & Mohawk Valley,0.193354261,0.223711834,0.004536761,0.000661646,0.008116337,0.005726931,0.56389223 +Subtropical Prairie Parkland Gulf & Oak Prairie,0.45162232,0.162429151,0.382770272,0,4.32653E-05,0.003134992,0 +Utah Mountains,0.55442641,0.040646812,0,0.235598964,0.020986081,0.148341733,0 +Wasatch Range,0.4808029,0.115844091,0,0.227382464,0.019142836,0.156827709,0 +Western Allegheny Plateau,0.038758151,0.884419993,0,0,0.002508666,0.003020031,0.071293159 +Western Basin and Range,0.925,0,0,0,0.0075,0.0675,0 +Western Great Plains,0.898344941,0.00315756,0,0.011225119,0.007128733,0.074648138,0.00549551 +White Mountains,0.355151097,0.135859344,0,0,2.40899E-05,0.000216809,0.50874866 +Willamette Valley,0.741313045,0.029626405,0.135343368,0,0.001531314,0.003912696,0.088273172 +Yellowstone / Bighorn,0.887177916,0,0.023333486,0,0.001039556,0.075486536,0.012962506 +TOTAL,0.481623489,0.181100511,0.100128342,0.041284358,0.017770786,0.021156535,0.156935979 \ No newline at end of file diff --git a/code/creditr/inst/extdata/growth_by_fldgrpcd.csv b/code/creditr/inst/extdata/growth_by_fldgrpcd.csv new file mode 100644 index 0000000..5a82bee --- /dev/null +++ b/code/creditr/inst/extdata/growth_by_fldgrpcd.csv @@ -0,0 +1,34 @@ +fldgrpcd,annual_agb_recruitment_prop,annual_agb_mortality_prop,annual_agb_removal_prop,mean_annual_growth_carbon_tons_per_ac_prop,annual_agb_net_change_prop,annual_sound_volume_recruitment_prop,annual_sound_volume_mortality_prop,annual_sound_volume_removal_prop,mean_annual_growth_value_per_ac_prop,annual_sound_volume_net_change_prop +100,0.0033064916315990647,0.00878067118197113,0.008952343854392496,0.023911478913055145,0.006519491133088959,0.006997209246085514,0.020204455566079246,0.02016507603002096,0.02633022359093027,0.009566162902213363 +120,0.008379900019989856,0.014135726000882249,0.009134720716685637,0.023320191230308627,3.74867436794168e-4,0.016557204640913002,0.029072413064612987,0.018649676811623214,0.01889544014557182,-0.0021549840386592372 +140,0.018575770714304548,0.008665763766167251,0.03976426150141262,0.0478817852273262,0.0032892752138451425,0.01785021281112397,0.008606162325314094,0.04015397974334939,0.04888891641333526,0.044593708734314244 +150,0,0,0.19230769230769237,0,-0.19230769230769237,0,0,0.19230769230769224,0,0 +160,0.02134593374254621,0.008705514175011326,0.04824334558784288,0.06157476091954281,0.005872567976335823,0.021095213355940567,0.008832954006898267,0.04893335771218117,0.06474910996414768,0.05903405501798702 +170,0.013515252797270649,0.008053878820826785,0.003921441477525236,0.03945623379877747,0.028602813875482185,0.014121396271497107,0.008086090873417119,0.004430931092074071,0.04101104160851972,0.03399793623984777 +180,0.00740580300660087,0.010124862262865601,0,0.02192831537453477,0.009215300887504742,0.007527568504669775,2.583767716849988,0.0058824844711244245,0.025361475368807486,0.016773706559452674 +200,0.025187808311484875,0.0390371604863394,0,0.03018688572472064,0.00290478597057085,0.04228792076931791,166.08501902196838,0.014096673032598074,0.02472514210946928,-0.02119519407263628 +220,0.0010660439436985254,0.01349481436550867,0.010292407886018137,0.016446115660240845,-0.007336412668555567,0.0010013435307680047,0.0825204535337042,0.011520471292274969,0.016626560723677512,0.0048491282888794025 +240,0.0014570691790453053,0.00726617591219632,0,0.0131322930781632,0.006042442020733399,0.0013858965644173084,Inf,0,0.013353998722186143,0.006918670751088129 +260,0.0010038809327741194,0.013793723657903115,0.0015994285107437914,0.015177393928476689,-1.2332321204080052e-4,9.448341993622058e-4,Inf,Inf,0.015964034576420448,0.003947697443988144 +280,0.0030785382542696566,0.020193619709697033,0.002807669742177294,0.0150797475783146,-0.007467301677102997,0.002908993822117505,Inf,Inf,0.015292855099133655,-0.0017760649377344532 +300,0.0013948379686900506,0.008123692185995261,0.008180400353870108,0.019277163853868438,0.0031595104723043626,0.0013042935828562626,Inf,Inf,0.019942526825573112,0.014848565372885918 +320,0.002463792945052256,0.011856647971560752,0.01252132083150972,0.018002253802223714,-0.006165909605256572,0.0025667124186868717,Inf,Inf,0.018845829444796857,0.008996782708190794 +340,0.001458442224395441,0.005061257686876847,0.008640747089485848,0.021090073935152175,0.007155003599723719,0.0012544407435463015,0.004508492426969254,0.00837006015325344,0.021695618370898905,0.019539681834565985 +360,0.0015194238598667314,0.005661496387884451,0.0014243789045098162,0.012329239160166334,0.00536805331539711,0.001478881200333086,Inf,0.0014626788386347923,0.015020972187001512,0.010609391233222116 +370,0.0010342695644118987,0.011929698741915493,0.003907429262780987,0.016195892792806848,4.646952536669486e-4,9.12384191807074e-4,0.011938130414920487,0.00414834442959523,0.01695713183512372,0.007111122668163364 +380,0.007232909763748324,0.011775506543944627,0.006661106422857128,0.03394583816709934,0.015058061823175997,0.01801360122797644,0.03657782936269138,0.01830552604608194,0.03261448376903486,0.0024832385108122393 +390,0.009759335125060007,0.0035187453631162343,0,0.0404197689475191,0.04368382558264439,0.02127027031799978,0.02212045856806629,0,0.032950247340654396,0.02717064563929439 +400,0.00720509456005663,0.011301766107867747,0.017906688810766635,0.03147649594218915,0.0039147587807155625,0.007958551825726773,0.01333501624993973,0.021410556963530794,0.03466084471468865,0.02598203504260733 +500,0.0034543086067598122,0.010767683091276278,0.01105586776638831,0.02487412371578216,0.004426363969083108,0.004331008244540976,0.013837659221892607,0.015957677860523982,0.026436687910700182,0.016782933552368727 +600,0.005410518214920123,0.013344753763750064,0.014925138000570989,0.025515896217012387,-0.003968518645886513,0.00476571301472088,0.013221652661096829,0.015290720170827402,0.026179854214328814,0.01941725045229531 +700,0.005899803341035275,0.016674446804455168,0.006636885763654558,0.027853254575198945,0.004794893931164904,0.005942148118139595,0.020406916205626367,0.007735880690465177,0.029084614940975955,0.016126326258447267 +800,0.0029837374186253386,0.00981091164405891,0.010742593525134413,0.0213964201545705,0.0010620803293066184,0.007170750153809214,0.027583631512883174,0.02913408027959147,0.018077637364010503,-0.0042380292717053665 +900,0.011839907874476918,0.019530228352398198,0.01826736810067505,0.028091328594535593,-0.008803540191193112,0.012958136357257493,0.03456451281120271,0.022984292588394226,0.028903449116579945,0.011404500946127258 +910,0.00481630185114087,0.0120994297077468,0.013176596140802627,0.029107210408131533,0.0046431674396910875,0.004222750748249708,0.011857207233204815,0.013138053513922778,0.03015986456614562,0.024094941505418643 +920,0.002482572282241892,0.01485300394161855,0.0012602735424672691,0.012725314541976944,-0.002961582584166877,0.0021748631197430947,0.016076460111538727,0.0013534896354444105,0.015015725189783278,0.003349664168911337 +940,0.0019485468331506752,0.010539643672599953,0.0046482096673682825,0.018507099023001204,0.003496954819970467,0.0017555750641767567,0.00999766407923833,0.005003650854307767,0.019744933463573214,0.013127122839058019 +960,0.007533700696138254,0.012322412605644206,0.01592466936038252,0.01735813614162865,-0.01177716243513044,0.008665812288757345,0.023496494272836663,0.016647588089769308,0.01939230586803326,0.003647012506442221 +970,0.005098097246682161,0.008425967663721593,0.006200522074154398,0.014565304245412827,-2.1359200016621667e-4,0.005228356040929115,6.390978236397951,0.008170151563657092,0.016633034090115916,0.011528004880441013 +980,0.006302611388232283,0.014088947856542567,7.57146045957894e-4,0.006646379610763399,-0.013890648948220206,0.0061697157129921906,0.014397597221907997,8.564344154210388e-4,0.0053735057437555335,-0.004286828006528876 +990,0.023201118252872056,0.026240495080885533,0.037032568407008054,0.03176661384594065,-0.03404929426398058,0.02097097796327824,0.02840619765383949,0.040640546973502695,0.03136387563019975,0.0181482128205012 +999,1.9962165108064302e-4,8.353395667670978e-5,0.26839829963025275,0.0010149625171018235,-0.2700934476646639,1.562659626424493e-4,8.948421637413736e-5,0.27272968402974296,9.583313494215076e-4,9.297556869599947e-4 diff --git a/code/creditr/man/D.Rd b/code/creditr/man/D.Rd new file mode 100644 index 0000000..945cccb --- /dev/null +++ b/code/creditr/man/D.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{D} +\alias{D} +\title{Decay / discount function} +\usage{ +D(lambda, t) +} +\arguments{ +\item{lambda}{numeric; decay / discount coefficient. For annual X\% decay / +discounting \code{lambda = -log(1 - X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +Decay / discount function +} diff --git a/code/creditr/man/E.Rd b/code/creditr/man/E.Rd new file mode 100644 index 0000000..74b8366 --- /dev/null +++ b/code/creditr/man/E.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{E} +\alias{E} +\title{Emission function} +\usage{ +E(lambda, t) +} +\arguments{ +\item{lambda}{numeric; emission coefficient. For annual X\% emission use +\code{lambda = -log(1 - X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +Emission function +} diff --git a/code/creditr/man/E_prime.Rd b/code/creditr/man/E_prime.Rd new file mode 100644 index 0000000..bdd4bf8 --- /dev/null +++ b/code/creditr/man/E_prime.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{E_prime} +\alias{E_prime} +\title{Instantaneous emission function} +\usage{ +E_prime(lambda, t) +} +\arguments{ +\item{lambda}{numeric; decay coefficient. For annual X\% emission use +\code{lambda = -log(1 - X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +The derivative of \code{\link{E}} +} diff --git a/code/creditr/man/F.Rd b/code/creditr/man/F.Rd new file mode 100644 index 0000000..f237500 --- /dev/null +++ b/code/creditr/man/F.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{F} +\alias{F} +\title{Discounted instantaneous emission function} +\usage{ +F(lambda, rho, t, start = 0) +} +\arguments{ +\item{lambda}{numeric; decay coefficient. For annual X\% decay +\code{lambda = -log(1 - X/100)}} + +\item{rho}{numeric; discount coefficient. For annual X\% discount +\code{rho = -log(1 - X/100)}} + +\item{t}{numeric; time in years} + +\item{start}{numeric; time in years at which the emission begins. Acts as +an offset for emissions that don't begin until a future date.} +} +\description{ +Discounted instantaneous emission function +} diff --git a/code/creditr/man/G.Rd b/code/creditr/man/G.Rd new file mode 100644 index 0000000..0d34df6 --- /dev/null +++ b/code/creditr/man/G.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{G} +\alias{G} +\title{Growth function} +\usage{ +G(gamma, t) +} +\arguments{ +\item{gamma}{numeric; growth coefficient. For annual X\% growth, use +\code{gamma = log(1 + X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +Growth function +} diff --git a/code/creditr/man/G_prime.Rd b/code/creditr/man/G_prime.Rd new file mode 100644 index 0000000..aa05419 --- /dev/null +++ b/code/creditr/man/G_prime.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{G_prime} +\alias{G_prime} +\title{Instantaneous growth function} +\usage{ +G_prime(gamma, t) +} +\arguments{ +\item{gamma}{numeric; growth coefficient. For annual X\% growth, use +\code{gamma = log(1 + X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +Instantaneous growth function +} diff --git a/code/creditr/man/H.Rd b/code/creditr/man/H.Rd new file mode 100644 index 0000000..89d9d5b --- /dev/null +++ b/code/creditr/man/H.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{H} +\alias{H} +\title{Discounted instantaneous growth function} +\usage{ +H(gamma, rho, t) +} +\arguments{ +\item{gamma}{numeric; growth coefficient. For annual X\% growth +\code{gamma = log(1 + X/100)}} + +\item{rho}{numeric; discount coefficient. For annual X\% discount +\code{rho = -log(1 - X/100)}} + +\item{t}{numeric; time in years} +} +\description{ +Discounted instantaneous growth function +} diff --git a/code/creditr/man/apply_uncertainty_deduction.Rd b/code/creditr/man/apply_uncertainty_deduction.Rd new file mode 100644 index 0000000..5a9f0c6 --- /dev/null +++ b/code/creditr/man/apply_uncertainty_deduction.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/project_uncertainty.R +\name{apply_uncertainty_deduction} +\alias{apply_uncertainty_deduction} +\title{Use uncertainty multiplier to deduct} +\usage{ +apply_uncertainty_deduction(posterior_draws) +} +\arguments{ +\item{posterior_draws}{posterior draws for some unit} +} +\value{ +the number of credits to mint +} +\description{ +Use the posterior distribution of ton year draws from a property or project +and calculate the number of credits to mint based on the uncertainty +multiplier +} diff --git a/code/creditr/man/calc_uncertainty_multiplier.Rd b/code/creditr/man/calc_uncertainty_multiplier.Rd new file mode 100644 index 0000000..3821c2a --- /dev/null +++ b/code/creditr/man/calc_uncertainty_multiplier.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/project_uncertainty.R +\name{calc_uncertainty_multiplier} +\alias{calc_uncertainty_multiplier} +\title{Calculate uncertainty mutliplier} +\usage{ +calc_uncertainty_multiplier(halfwidth_interval_prop) +} +\arguments{ +\item{halfwidth_interval_prop}{the proportional halfwidth interval of the +posterior distribution of tonne years} +} +\value{ +the uncertainty multiplier for this distribution +} +\description{ +Calculate the uncertainity multiplier based on the logistic uncertainty loss +function that was fit to IPCC data. The logistic uncertainty is developed +and explained in \code{cyclops/vignettes/uncertainty_curve.Rmd}, in that file, we +determine the logistic parameters (\code{b0} and \code{b1}). +} diff --git a/code/creditr/man/calculate_uncertainty_deduction.Rd b/code/creditr/man/calculate_uncertainty_deduction.Rd new file mode 100644 index 0000000..52bb4fc --- /dev/null +++ b/code/creditr/man/calculate_uncertainty_deduction.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/project_uncertainty.R +\name{calculate_uncertainty_deduction} +\alias{calculate_uncertainty_deduction} +\title{Calculate Uncertainty Deduction} +\usage{ +calculate_uncertainty_deduction(t0_half_width_ratio, t1_half_width_ratio) +} +\arguments{ +\item{t0_half_width_ratio}{range(90\% CI) / 2 / C_t0} + +\item{t1_half_width_ratio}{range(90\% CI) / 2 / C_t1} +} +\value{ +uncertainty deduction +} +\description{ +Calculate the project uncertainty deduction fom the T0 and T1 uncertainty estimates +} diff --git a/code/creditr/man/compute_emissions.Rd b/code/creditr/man/compute_emissions.Rd new file mode 100644 index 0000000..e35bc95 --- /dev/null +++ b/code/creditr/man/compute_emissions.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{compute_emissions} +\alias{compute_emissions} +\title{Function to compute emissions} +\usage{ +compute_emissions( + t0_tCO2, + annual_growth_rate, + baseline_intensity, + loss_intensity, + supersection, + annual_discount_rate = 0.03 +) +} +\arguments{ +\item{t0_tCO2}{[0, inf) metric tonnes of CO2 at day 0} + +\item{annual_growth_rate}{[0, inf) average annual growth of carbon} + +\item{baseline_intensity}{[0-1] proportion of carbon harvested under BAU} + +\item{loss_intensity}{[0-1] estimated carbon harvested at end of performance period} + +\item{supersection}{string; USFS supersection} + +\item{annual_discount_rate}{numeric [0, inf); annualized discount rate for carbon deferred this year} +} +\value{ +class tibble; intermediary calculations to be supplied to \code{\link[=emissions_to_credits]{emissions_to_credits()}} to generate credits +} +\description{ +See full methodology at creditr/vignettes/hwp_emissions.Rmd +} diff --git a/code/creditr/man/compute_raw_credits.Rd b/code/creditr/man/compute_raw_credits.Rd new file mode 100644 index 0000000..a058b8f --- /dev/null +++ b/code/creditr/man/compute_raw_credits.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{compute_raw_credits} +\alias{compute_raw_credits} +\title{Composite function to compute and verify boundary of credits} +\usage{ +compute_raw_credits( + t0_tCO2, + annual_growth_rate, + baseline_intensity, + loss_intensity, + supersection, + annual_discount_rate = 0.03, + leakage = 0.2 +) +} +\arguments{ +\item{t0_tCO2}{[0, inf) metric tonnes of CO2 at day 0} + +\item{annual_growth_rate}{[0, inf) average annual growth of carbon} + +\item{baseline_intensity}{[0-1] proportion of carbon harvested under BAU} + +\item{loss_intensity}{[0-1] estimated carbon harvested at end of performance period} + +\item{supersection}{string; USFS supersection} + +\item{annual_discount_rate}{numeric [0, inf); annualized discount rate for carbon deferred this year} + +\item{leakage}{numeric [0-1]; deduction to be applied for leakage} +} +\description{ +Composite function to compute and verify boundary of credits +} diff --git a/code/creditr/man/decay_coefs.Rd b/code/creditr/man/decay_coefs.Rd new file mode 100644 index 0000000..ede2562 --- /dev/null +++ b/code/creditr/man/decay_coefs.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{decay_coefs} +\alias{decay_coefs} +\title{decay_coefs} +\format{ +A tibble with 9 rows and 2 variables: +\describe{ +\item{product}{harvest product} +\item{lambda}{decay parameter} +} +} +\source{ +data-raw/hwp.R +} +\usage{ +decay_coefs +} +\description{ +Decay rate parameters by harvest product +} +\keyword{datasets} diff --git a/code/creditr/man/emissions_to_credits.Rd b/code/creditr/man/emissions_to_credits.Rd new file mode 100644 index 0000000..aa109b7 --- /dev/null +++ b/code/creditr/man/emissions_to_credits.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/creditr.R +\name{emissions_to_credits} +\alias{emissions_to_credits} +\title{Function to compute credits from emissions} +\usage{ +emissions_to_credits(delta_baseline, delta_project, h_g, s, l) +} +\arguments{ +\item{delta_baseline}{numeric; emissions under the BAU (no intervention) scenario} + +\item{delta_project}{numeric; the total discounted emissions in the project scenario from harvesting and processing timber into wood products} + +\item{h_g}{numeric; growth harvest discounted emissions} + +\item{s}{numeric; sequestration due to the growth on component of the aboveground live tree biomass for which harvest was deferred} + +\item{l}{numeric [0-1]; deduction to be applied for leakage} +} +\description{ +See full methodology at creditr/vignettes/hwp_emissions.Rmd +} diff --git a/code/creditr/man/growth_rates.Rd b/code/creditr/man/growth_rates.Rd new file mode 100644 index 0000000..0f5f13b --- /dev/null +++ b/code/creditr/man/growth_rates.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{growth_rates} +\alias{growth_rates} +\title{growth_rates} +\format{ +A tibble with 33 rows and 3 variables: +\describe{ +\item{fldgrpcd}{USFS field group code} +\item{mean_annual_growth_carbon_tons_per_ac_pct}{population estimated growth rates from rFIA} +\item{s_multiplier}{sequestration multiplier} +} +} +\source{ +data-raw/growth_rates.R +} +\usage{ +growth_rates +} +\description{ +USFS field group-associated growth rates/sequestration multipliers +} +\keyword{datasets} diff --git a/code/creditr/man/hwp_decay.Rd b/code/creditr/man/hwp_decay.Rd new file mode 100644 index 0000000..addea57 --- /dev/null +++ b/code/creditr/man/hwp_decay.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{hwp_decay} +\alias{hwp_decay} +\title{hwp_decay} +\format{ +A tibble with 196 rows and 6 variables: +\describe{ +\item{year}{decay year} +\item{product}{harvested wood product} +\item{prop_remaining}{ +proportion of carbon remaining in \code{product} at \code{year} +} +\item{prop_emitted}{ +cumulative proportion of carbon emitted into the atmosphere for \code{product} +in \code{year}; computed as 1 - \code{prop_remaining} +} +} +} +\source{ +data-raw/hwp.R +} +\usage{ +hwp_decay +} +\description{ +Decay rate information for classes of harvested wood products. +} +\keyword{datasets} diff --git a/code/creditr/man/hwp_mix.Rd b/code/creditr/man/hwp_mix.Rd new file mode 100644 index 0000000..bfb2189 --- /dev/null +++ b/code/creditr/man/hwp_mix.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{hwp_mix} +\alias{hwp_mix} +\title{hwp_mix} +\format{ +A tibble with 658 rows and 3 variables: +\describe{ +\item{supersection}{USFS supersection} +\item{product}{harvested wood product} +\item{mix_prop}{ +proportion of harvest allocated to \code{product} in a given supersection +} +} +} +\source{ +data-raw/hwp.R +} +\usage{ +hwp_mix +} +\description{ +Typical harvested wood product mixtures by supersection. +} +\keyword{datasets} diff --git a/code/creditr/man/supersection_multipliers.Rd b/code/creditr/man/supersection_multipliers.Rd new file mode 100644 index 0000000..0a11dc0 --- /dev/null +++ b/code/creditr/man/supersection_multipliers.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.R +\docType{data} +\name{supersection_multipliers} +\alias{supersection_multipliers} +\title{supersection_multipliers} +\format{ +A tibble with 88 rows and 3 variables: +\describe{ +\item{supersection}{USFS supersection} +\item{baseline_emission_multipliers}{supersection-associated multiplier} +\item{project_emission_multipliers}{supersection-associated multiplier} +} +} +\source{ +data-raw/hwp.R +} +\usage{ +supersection_multipliers +} +\description{ +USFS supersection-associated emission multipliers +} +\keyword{datasets} diff --git a/code/creditr/tests/testthat.R b/code/creditr/tests/testthat.R new file mode 100644 index 0000000..d5cbece --- /dev/null +++ b/code/creditr/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(creditr) + +test_check("creditr") diff --git a/code/creditr/tests/testthat/test-creditr.R b/code/creditr/tests/testthat/test-creditr.R new file mode 100644 index 0000000..debb7a6 --- /dev/null +++ b/code/creditr/tests/testthat/test-creditr.R @@ -0,0 +1,96 @@ +test_that("compute_emissions function returns correct data structure and results", { + emissions <- compute_emissions( + t0_tCO2 = 1000, + annual_growth_rate = 0.0375, + baseline_intensity = 1, + loss_intensity = 0, + supersection = "Snake River Basin", + annual_discount_rate = 0.03 + ) + + expect_vector( + tibble::as_tibble(emissions), + tibble::tibble( + delta_baseline = double(), + delta_project = double(), + E_0 = double(), + E_d = double(), + h_b = double(), + h_g = double(), + s = double(), + gamma = double() + ) + ) + + expect_equal( + emissions$delta_baseline, 613.1199, tolerance = 1e-5 + ) + expect_equal( + emissions$delta_project, 580.0974, tolerance = 1e-5 + ) + expect_equal( + emissions$E_0, 0, tolerance = 1e-5 + ) + expect_equal( + emissions$E_d, 617.0286, tolerance = 1e-5 + ) + expect_equal( + emissions$h_b, 594.7263, tolerance = 1e-5 + ) + expect_equal( + emissions$h_g, 22.30224, tolerance = 1e-5 + ) + expect_equal( + emissions$s, 36.93119, tolerance = 1e-5 + ) + expect_equal( + emissions$gamma, 0.03681397, tolerance = 1e-5 + ) + +}) + +test_that("emissions_to_credits function returns correct data structure and results", { + credits <- emissions_to_credits( + delta_baseline = 613.1199, + delta_project = 580.0974, + h_g = 22.30224, + s = 36.93119, + l = 0.2 + ) + + expect_equal( + credits$ncx_credits, 26.41804, tolerance = 1e-5 + ) + expect_equal( + credits$growth_credits, 11.70317, tolerance = 1e-5 + ) + +}) + +test_that("compute_raw_credits function returns correct data structure and results", { + creds <- compute_raw_credits( + t0_tCO2 = 1000, + annual_growth_rate = 0.0375, + baseline_intensity = 1, + loss_intensity = 0, + supersection = "Snake River Basin", + annual_discount_rate = 0.03 + ) + + expect_vector( + tibble::as_tibble(creds), + tibble::tibble( + "ncx_credits" = double(), + "growth_credits" = double() + ) + ) + + expect_equal( + creds$ncx_credits, 26.41804, tolerance = 1e-5 + ) + + expect_equal( + creds$growth_credits, 11.70317, tolerance = 1e-5 + ) + +}) diff --git a/code/creditr/tests/testthat/test_project_uncertainty.R b/code/creditr/tests/testthat/test_project_uncertainty.R new file mode 100644 index 0000000..106baa5 --- /dev/null +++ b/code/creditr/tests/testthat/test_project_uncertainty.R @@ -0,0 +1,47 @@ +test_that("calculate_uncertainty_deduction works", { + deductions <- calculate_uncertainty_deduction( + c(0, 0.5, 1, 10), + c(0, 0.5, 1, 10) + ) + + expect_true( + deductions[1] < deductions[2], + deductions[2] < deductions[3], + ) + expect_equal(min(deductions), 0.015) + expect_equal(max(deductions), 1) + + # find where deductions crossover 0.015 min deduction + # 0.015 > sqrt(u1^2 + u2^2) + 0.015 + 0.1 + # assume u1 == u2 + # 0.015 > sqrt(2u^2) + 0.015 + 0.1 + # 0.015 - 0.015 + 0.1 > sqrt(2u^2) + # sqrt((0.015 - 0.015 + 0.1)^2 / 2) + min_uncertainty <- sqrt((0.015 - 0.015 + 0.1)^2 / 2) + + half_widths <- seq(0, 1, by = 0.001) + deds <- purrr::map_dbl( + half_widths, + ~ calculate_uncertainty_deduction(.x, .x) + ) + + ix <- max(which(deds == 0.015)) + expect_equal(half_widths[ix], round(min_uncertainty, 2)) + + # from methodology static worked example + expected_deduc <- 0.0281370849898476 + calc_deduc <- calculate_uncertainty_deduction(0.08, 0.08) + expect_equal(expected_deduc, calc_deduc) +}) + +test_that("calc_uncertainty_multipler works", { + hw_int_prop <- 0.5 + uncert_mutlitplier <- calc_uncertainty_multiplier(hw_int_prop) + expect_equal(uncert_mutlitplier, 0.828723, tolerance = 1e-3) +}) + +test_that("apply_uncertainty_deduction works properly", { + ty_draws <- seq(0.8, 3, length.out = 200) + minted_creds <- apply_uncertainty_deduction(ty_draws) + expect_equal(minted_creds, 1.519308, tolerance = 1e-3) +}) diff --git a/code/overlap_check.py b/code/overlap_check.py new file mode 100644 index 0000000..a0f7c8a --- /dev/null +++ b/code/overlap_check.py @@ -0,0 +1,328 @@ +import logging +import tempfile +from datetime import datetime +import json +from parse import parse + +import pandas as pd +import numpy as np +from path import Path + +import fiona +from shapely.geometry import shape, mapping +from shapely.geometry.multipolygon import MultiPolygon + +from st_storage import blob + +from django.core import serializers +from django.db import close_old_connections + +from bark_api.constants import WGS_84_CRS +from bark_api.settings import NCAPX_DOCGEN_CONTAINER +from ncapx_platform.models import Property, AccountCycle +from ncapx_platform.utils import calculate_shape_acreage, create_property_overlap_maps + +# Deprecated: Don't import call `blob.Blob` at import time as it talks to Azure +# Use a method like `get_doc_store()` instead +doc_store = blob.Blob(NCAPX_DOCGEN_CONTAINER) + +DEFAULT_START_DATE = datetime(2021, 1, 1) +DATE_FORMAT = "%y_%m_%d" + +run_date = datetime.utcnow().strftime(DATE_FORMAT) + +OVERLAP_CONTAINER = 'property_overlap' +CSV_CONTAINER = f'{OVERLAP_CONTAINER}/csv' +OVERLAP_KEY = '{OVERLAP_CONTAINER}/csv/property_overlap_{run_date}.csv' +OVERLAP_GPKG_KEY = '{OVERLAP_CONTAINER}/gpkg/{unique_id}.gpkg' + +OUTPUT_CSV_COLS = [ + 'Property 1 ID', 'Property 1 Cycle Key', + 'Property 1 Status', 'Property 1 Associated Emails', 'Property 1 Account', 'Property 1 Acreage', + 'Property 1 URL', 'Property 2 ID', 'Property 2 Cycle Key', 'Property 2 Status', + 'Property 2 Associated Emails', 'Property 2 Account', 'Property 2 Acreage', 'Property 2 URL', + 'Intersecting Acreage', 'Unique Key', 'Run Date' + + ] + +GPKG_DRIVER = 'GPKG' +GPKG_SCHEMA = { + 'geometry': 'MultiPolygon', + 'properties': { + 'feature_type': 'str', + }, +} +GPKG_CRS = WGS_84_CRS + +INTERSECT_OF_CONCERN_PCT = 1.0 +INTERSECT_OF_CONCERN_ACRES = 10 + +ORDERED_CYCLE_KEYS = [c[0] for c in AccountCycle.CYCLE_CHOICES] +assert ORDERED_CYCLE_KEYS[-1] == AccountCycle.LATEST_CYCLE_KEY, \ + "Expected LATEST_CYCLE_KEY to be last cycle key (next line depends on it)" +CYCLE_KEYS_TO_CHECK = ORDERED_CYCLE_KEYS[-4:] + +GeoJSONSerializer = serializers.get_serializer("geojson") + + +def should_overlap_be_of_concern(feature_shape_1, feature_shape_2, intersection): + """ + Following rules stated in https://ncx.slab.com/posts/property-boundary-overlaps-wip-ln8fi5e0 + """ + feature_1_acreage = calculate_shape_acreage(feature_shape_1, 'epsg:4326') + feature_2_acreage = calculate_shape_acreage(feature_shape_2, 'epsg:4326') + intersection_acreage = calculate_shape_acreage(intersection, 'epsg:4326') + + feature_1_pct = (intersection_acreage / feature_1_acreage) * 100 + feature_2_pct = (intersection_acreage / feature_2_acreage) * 100 + + is_above_pct_threshold = feature_1_pct > INTERSECT_OF_CONCERN_PCT or feature_2_pct > INTERSECT_OF_CONCERN_PCT + + return is_above_pct_threshold or intersection_acreage > INTERSECT_OF_CONCERN_ACRES + + +def convert_poly_to_multipoly(feature_shape): + """ + Convert Shapley Polygon to Multipolygon + """ + if feature_shape.type == 'Polygon': + return MultiPolygon([feature_shape]) + return MultiPolygon([s for s in feature_shape if s.type == 'Polygon']) + + +def get_last_run_date(): + """ + overlap csvs are stored with the run date in the keyname. + they can be sorted alphabetically to determine the last date + the script was executed + """ + keys = sorted([k.key for k in doc_store.list_keys(CSV_CONTAINER)], reverse=True) + if not keys: + return None + last_run_date = datetime.strptime(parse(OVERLAP_KEY, keys[0])['run_date'], DATE_FORMAT) + + return last_run_date + + +def check_for_overlaps(prop_set_1_geojson, prop_set_2_geojson): + """ + Check for overlaps between two sets of properties. + Properties are passed in as geojsons + """ + last_run_date = get_last_run_date() or DEFAULT_START_DATE + intersection_data = [] + processed_properties = set() + for i, feature in enumerate(prop_set_1_geojson, 1): + logging.info(f"Processing {i} of {len(prop_set_1_geojson)}") + feature_props = feature['properties'] + + feature_last_edit = datetime.strptime(feature_props['last_edit'], DATE_FORMAT) + for check_feature in prop_set_2_geojson: + check_props = check_feature['properties'] + + check_feature_last_edit = datetime.strptime(check_props['last_edit'], DATE_FORMAT) + + unique_id = '-'.join([ + str(_id) for _id in sorted([feature_props['id'], check_props['id']]) + ]) + logging.info(f"Checking {feature_props['id']} - {check_props['id']}") + if unique_id in processed_properties: + logging.info(f'Already checked {unique_id}, skipping') + continue + + if feature_last_edit < last_run_date and check_feature_last_edit < last_run_date: + logging.info("Both properties have not been edited since last run") + continue + + if feature_props['id'] == check_props['id']: + logging.info(f"Prop id {feature_props['id']} are the same") + continue + + processed_properties.add(unique_id) + + feature_shape = shape(feature['geometry']) + check_shape = shape(check_feature['geometry']) + + intersection = feature_shape.intersection(check_shape) + if not intersection.area: + continue + + if not should_overlap_be_of_concern(feature_shape, check_shape, intersection): + continue + + intersection_acreage = calculate_shape_acreage(intersection, 'epsg:4326') + + # generate html maps and append url + feature_map_name = f"{unique_id}-{feature_props['id']}" + feature_map_url = create_property_overlap_maps(feature_shape, intersection, feature_map_name) + + check_map_name = f"{unique_id}-{check_props['id']}" + check_map_url = create_property_overlap_maps(check_shape, intersection, check_map_name) + + intersection_data.append( + ( + feature_props['id'], + feature_props['cycle_key'], + feature_props['status'], + feature_props['associated_emails'], + feature_props['account_name'], + feature_props['acreage'], + feature_map_url, + check_props['id'], + check_props['cycle_key'], + check_props['status'], + check_props['associated_emails'], + check_props['account_name'], + check_props['acreage'], + check_map_url, + intersection_acreage, + unique_id, + run_date + ) + ) + # create geopackage containing the geom of both properties + # along with the overlap area. Schema can not have both Multipolygon + # and Polygon features, so we convert everything to Multi + feature_shape = convert_poly_to_multipoly(feature_shape) + check_shape = convert_poly_to_multipoly(check_shape) + intersection = convert_poly_to_multipoly(intersection) + + with tempfile.TemporaryDirectory() as temp_dir: + intersection_gpkg_fn = Path(temp_dir) / f"{unique_id}.gpkg" + + with fiona.open(intersection_gpkg_fn, 'w', GPKG_DRIVER, GPKG_SCHEMA, GPKG_CRS) as c: + c.write({ + 'geometry': mapping(feature_shape), + 'properties': {'feature_type': 'property_1'} + }) + c.write({ + 'geometry': mapping(check_shape), + 'properties': {'feature_type': "property_2"} + }) + c.write({ + 'geometry': mapping(intersection), + 'properties': {'feature_type': 'intersection'} + }) + + doc_store.upload( + intersection_gpkg_fn, + OVERLAP_GPKG_KEY.format( + OVERLAP_CONTAINER=OVERLAP_CONTAINER, + unique_id=unique_id + ) + ) + return intersection_data + + +class Serializer(GeoJSONSerializer): + def get_dump_object(self, obj): + # Reconnect to database, in case we timed out while dumping the last object + # https://stackoverflow.com/a/45673418/1960509 + close_old_connections() + data = super(Serializer, self).get_dump_object(obj) + associated_emails = [ + profile.user.email for profile in obj.account_cycle.account.profile_set.all().prefetch_related('user') + ] + data['properties']['id'] = obj.id + data['properties']['cycle_key'] = obj.account_cycle.cycle_key + data['properties']['status'] = obj.account_cycle.status + data['properties']['associated_emails'] = ', '.join(associated_emails) + data['properties']['account_name'] = obj.account_cycle.account.account_name + data['properties']['last_edit'] = obj.history.first().history_date.strftime(DATE_FORMAT) + return data + + +def run(): + ''' + Checks all enrolled properties for overlapping areas. + Writes out CSV file to blob for reference + + ran with + ./manage.py runscript overlap_check + ''' + intersection_data = [] + logging.info('Serializing Data') + geojson_serializer = Serializer() + + latest_cycle_props = ( + Property.get_reduced_queryset() + .filter(account_cycle__cycle_key=AccountCycle.LATEST_CYCLE_KEY) + .exclude(account_cycle__status='created') + .exclude(account_cycle__account__profile_set__user__email__endswith='@silviaterra.com') + .exclude(account_cycle__account__profile_set__user__email__endswith='@ncx.com') + ) + + latest_cycle_props_data = json.loads( + geojson_serializer.serialize(latest_cycle_props) + ) + latest_cycle_props_features = latest_cycle_props_data['features'] + + bid_accepted_props = ( + Property.get_reduced_queryset() + .filter(account_cycle__status='bid_accepted') + .filter(account_cycle__cycle_key__in=CYCLE_KEYS_TO_CHECK) + .exclude(account_cycle__account__profile_set__user__email__endswith='@silviaterra.com') + .exclude(account_cycle__account__profile_set__user__email__endswith='@ncx.com') + ) + + bid_accepted_props_data = json.loads( + geojson_serializer.serialize(bid_accepted_props) + ) + bid_accepted_props_features = bid_accepted_props_data['features'] + + logging.info('Checking for 1st set intersections') + intersection_data += check_for_overlaps( + latest_cycle_props_features, + bid_accepted_props_features + ) + # Intentionally using the same features here. + # The function should handle the comparison between + # the same property correctly + logging.info('Checking for 2nd set intersections') + intersection_data += check_for_overlaps( + latest_cycle_props_features, + latest_cycle_props_features + ) + + last_run_date = get_last_run_date() + with tempfile.TemporaryDirectory() as temp_dir: + temp_csv_fn = Path(temp_dir) / 'overlap.csv' + + if last_run_date: + # download last run csv and combine + temp_previous_csv_fn = Path(temp_dir) / 'previous.csv' + doc_store.download( + OVERLAP_KEY.format( + OVERLAP_CONTAINER=OVERLAP_CONTAINER, + run_date=last_run_date.strftime(DATE_FORMAT) + ), + temp_previous_csv_fn + ) + + previous_data = pd.read_csv(temp_previous_csv_fn) + + # make sure previous data is formatted correctly when new fields are added + # not concerned with backfilling here + for col in OUTPUT_CSV_COLS: + if col not in previous_data.columns: + previous_data[col] = np.nan + + previous_data = previous_data[OUTPUT_CSV_COLS] + else: + # this occurs when there is no previous script runs + previous_data = pd.DataFrame(columns=OUTPUT_CSV_COLS) + + # combine two files here + previous_data.append(pd.DataFrame( + intersection_data, columns=OUTPUT_CSV_COLS + ).drop_duplicates('Unique Key')).to_csv( + temp_csv_fn, index=False + ) + + doc_store.upload( + temp_csv_fn, + OVERLAP_KEY.format( + OVERLAP_CONTAINER=OVERLAP_CONTAINER, + run_date=run_date + ) + ) diff --git a/data/HWP_decay_profiles.csv b/data/HWP_decay_profiles.csv new file mode 100644 index 0000000..a835c9a --- /dev/null +++ b/data/HWP_decay_profiles.csv @@ -0,0 +1,29 @@ +year,softwood_lumber,hardwood_lumber,plywood,osb,nonstructural_panels,misc,paper +1,0.908,0.909,0.908,0.908,0.908,0.903,0.88 +2,0.892,0.893,0.893,0.896,0.892,0.887,0.775 +3,0.877,0.877,0.878,0.884,0.876,0.871,0.682 +4,0.863,0.861,0.863,0.872,0.861,0.855,0.6 +5,0.848,0.845,0.848,0.86,0.845,0.84,0.528 +6,0.834,0.83,0.834,0.848,0.83,0.825,0.465 +7,0.82,0.815,0.82,0.837,0.816,0.81,0.354 +8,0.806,0.801,0.807,0.826,0.801,0.795,0.269 +9,0.793,0.786,0.794,0.815,0.787,0.781,0.205 +10,0.78,0.772,0.781,0.804,0.774,0.767,0.156 +15,0.718,0.705,0.719,0.753,0.708,0.7,0.04 +20,0.662,0.644,0.663,0.706,0.649,0.639,0.01 +25,0.611,0.589,0.613,0.662,0.595,0.583,0.003 +30,0.565,0.538,0.567,0.622,0.546,0.532,0.001 +35,0.523,0.492,0.525,0.585,0.501,0.486,0 +40,0.485,0.45,0.487,0.551,0.46,0.444,0 +45,0.45,0.411,0.452,0.519,0.423,0.405,0 +50,0.418,0.376,0.42,0.49,0.389,0.37,0 +55,0.389,0.344,0.391,0.462,0.358,0.338,0 +60,0.362,0.315,0.364,0.437,0.329,0.308,0 +65,0.338,0.288,0.34,0.413,0.303,0.281,0 +70,0.315,0.264,0.317,0.391,0.28,0.257,0 +75,0.294,0.242,0.296,0.37,0.258,0.234,0 +80,0.276,0.221,0.277,0.351,0.238,0.214,0 +85,0.258,0.203,0.26,0.333,0.22,0.195,0 +90,0.242,0.186,0.244,0.316,0.203,0.178,0 +95,0.227,0.17,0.229,0.3,0.188,0.163,0 +100,0.213,0.156,0.215,0.285,0.174,0.149,0 \ No newline at end of file diff --git a/data/HWP_supersection_mixtures.csv b/data/HWP_supersection_mixtures.csv new file mode 100644 index 0000000..8b81aab --- /dev/null +++ b/data/HWP_supersection_mixtures.csv @@ -0,0 +1,95 @@ +supersection,softwood_lumber,hardwood_lumber,plywood,osb,nonstructural_panels,misc,paper +Allegheny & North Cumberland Mountains,0.036058893,0.687653811,0.000155426,0.122013205,0.045936468,0.033824417,0.07435778 +Andirondacks & Green Mountains,0.232258188,0.235367932,0.015922021,0,0.011048801,0.001553265,0.503849794 +Arizona-Nevada Mountains,1,0,0,0,0,0,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,0.401011531,0.098103449,0,0,0,0,0.50088502 +Atlantic Coastal Plain & Flatwoods,0.699879032,0.079795392,0.069217496,0.026898589,0.018569492,0.045493158,0.060146839 +Bitterroot Mountains,0.852761482,1.48959E-05,0.100813925,0,0.002148428,0.024204971,0.020056299 +Blue Mountains,0.77363532,0.002390219,0.1424171,0,0.000432029,0.004080856,0.077044477 +Blue Ridge Mountains,0.308056083,0.531475272,0.006896312,0.022440374,0.109754928,0.017315383,0.004061649 +Booneville Basin,0.647350864,0.151991852,0,0,0.020065728,0.180591556,0 +California Central Valley Basin,0.976659882,0,0.014719659,0,0,0.003103051,0.005517409 +Catskill Mountains,0.240455834,0.475391736,0,0.057639199,0.009705965,0.001829443,0.214977822 +Central California Coast,0.970670808,2.15333E-05,0.018741817,0,0.002443286,0.000947818,0.007174738 +Central Great Plains,0.18973963,0.798372577,0,0,0,0.011887794,0 +Central Interior Broadleaf Forest Central Till Plains,0.001154763,0.961129971,0,0,0.013262699,0.021503741,0.002948827 +Central Interior Broadleaf Forest Eastern Low Plateau,0.08028833,0.839360449,0.000993651,0,0.025717072,0.019297101,0.034343398 +Central Interior Broadleaf Forest Ozark Highlands,0.062256252,0.857333864,0,0,0.012414772,0.042497118,0.025497994 +Central Interior Broadleaf Forest Western Low Plateau,0.015053539,0.842076218,0,0,0.023040355,0.021034336,0.098795552 +Central Maine & Fundy Coast & Ebayment,0.336339325,0.046352084,0,0,0,0,0.617308591 +Central New Mexico,0.914544042,0.000158792,0,0,0.003442228,0.081854938,0 +Chihuahuan Semi-Desert,1,0,0,0,0,0,0 +Colorado Plateau,0.587020217,0.040421057,0,0.32019494,0.020403507,0.031960279,0 +Colorado River Canyon Lands,0.400896413,0.284336799,0,0.271502632,0.016087523,0.027176633,0 +Columbia Basin,0.864529773,0.016141442,0.040250087,0,0.001801653,0.017914709,0.059362335 +Cross Timbers and Prairie,0.235590811,0.447660827,0.024319531,0,0,0.292428831,0 +Eastern Broadleaf Forest Cumberland Plateau & Valley,0.098637805,0.650118732,0.001648308,0.000443948,0.036958102,0.145832561,0.066360544 +Eastern Cascades,0.794256968,0.005586426,0.099060897,0,0.000267295,0.003689527,0.097138888 +Eastern Great Plains,0.001935112,0.909578227,0,0,0,0.08848666,0 +Erie & Ontario Lake Plain,0.11912787,0.725880309,0,0.014226408,0.002061235,0.018901183,0.119802995 +Florida Coastal Plains Central Highlands,0.448641557,0.005218644,0.109846606,0.002857277,0.013038657,0.092518301,0.327878958 +Florida Everglades,0.172423258,0,0,0,0,0.109278431,0.718298311 +Great Divide Basin,0.405970257,0.002787728,0,0,0.001927989,0.589314025,0 +Great Plains,0.901842562,0.000774038,0,0,0.005781002,0.091602398,0 +Gulf Coastal Plain,0.448352759,0.056151192,0.195916366,0.013723066,0.012399544,0.024975172,0.248481901 +Idaho Batholith,0.975929533,0,0.018461023,0,0.000512588,0.004613289,0.000483567 +Laurentian Mixed Forest Arrowhead,0.188848269,0.069151724,0,0.695885018,0.045886633,0.000228356,0 +Laurentian Mixed Forest Green Bay Lobe,0.195628643,0.573907542,0.007759285,0.059145859,0.055698804,0.107859866,0 +Laurentian Mixed Forest MN & Ontario Lake Plain,0.171815566,0.088875614,0,0.666306826,0.04364948,0.004914602,0.024437913 +Laurentian Mixed Forest NLP/EUP,0.228384216,0.34581256,0.00128964,0.367186804,0.033353036,0.023973744,0 +Laurentian Mixed Forest Northern Highlands,0.123134355,0.396230577,0.00304508,0.363685284,0.070556323,0.043348381,0 +Laurentian Mixed Forest Southern Superior,0.157273067,0.460939948,0.005080579,0.256397556,0.085356084,0.034952765,0 +Laurentian Mixed Forest Western Superior & Lake Plains,0.136249964,0.190501339,0.001059344,0.611314072,0.054457303,0.006417978,0 +Lower New England - Northern Appalachia,0.257893131,0.279425365,0.005325242,7.62524E-05,0.126906309,0.005531545,0.324842155 +Modoc Plateau,0.740390418,3.39094E-05,0.255399895,0,0.000131684,0.001767578,0.002276516 +Montana Rocky Mountains,0.791809386,6.23783E-05,0.082218988,0,0.000857728,0.036929218,0.088122302 +MS River Delta,0.247157204,0.324324378,0.094852012,0.061336248,0.037947933,0.00101636,0.233365865 +MS River Mixed Forest,0.524283034,0.318444297,0.062262587,0.065382648,0.0160147,0.000438834,0.0131739 +MW Broadleaf Forest Central Till Plains,0.001313936,0.945938206,0,0,0.045839662,0.006036883,0.000871314 +MW Broadleaf Forest Driftless & Morainal,0.060707961,0.744265395,5.76922E-05,0.134500645,0.04855223,0.011376156,0.00053992 +MW Broadleaf Forest Great Lakes Morainal & Sands,0.299893304,0.527411821,0,0.059245779,0.027711422,0.085737674,0 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,0.025733224,0.885359244,0,0,0.077982617,0.010924916,0 +Nevada Mountains,0,0,0,0,0,0,0 +North Central Great Plains,0.072321169,0.113968545,0,0,0.07926461,0.734445676,0 +Northern Allegheny Plateau,0.128834788,0.573388366,0,0.026298995,0.014080224,0.091510801,0.165886826 +Northern Atlantic Coastal Plain,0.618738813,0.163866219,0.082837846,0.065032481,0.032392925,0.00228236,0.034849356 +Northern California Coast,0.970670808,2.15333E-05,0.018741817,0,0.002443286,0.000947818,0.007174738 +Northern Great Plains,0.908611417,0,0.00146841,0.00060061,0.000143133,0.002713742,0.086462687 +Northern Rocky Mountains,0.698584243,7.98601E-05,0.167086124,0,0.001928413,0.029069649,0.103251711 +Northwest Cascades,0.753262362,0.042616825,0.113913803,0,0.00126863,0.005278584,0.083659796 +Northwestern Basin and Range,0.765414482,0,0.230704043,0,0.000316461,0.003565014,0 +Okanogan Highland,0.824944286,0.030397102,0.016815717,0,0.001952224,0.024162868,0.101727804 +Oregon and Washington Coast,0.727237848,0.047947903,0.124374654,0,0.007478845,0.017724917,0.075235834 +Ozark Broadleaf Forest-Meadow Boston Mountains,0.474745863,0.127276779,0.116528544,0,0.005355665,0.011899562,0.264193586 +Prairie Parkland Central Till Plains & Grand Prairies,0.000567488,0.895765968,2.35452E-05,0,0.026673288,0.066594717,0.010374993 +Prairie Parkland North Central Plains,0.00433654,0.945351041,0,0,0.045994982,0.004317437,0 +Prairie Parkland Red River Valley,0.001293522,0.054826189,0,0.870232371,0.053804862,0.019843056,0 +Puget Trough,0.866749746,0.060356019,0.017122296,0,0.002236276,0.001356723,0.05217894 +SE Middle Mixed Forest Arkansas Valley,0.36316137,0.204169262,0.059797806,0,0.019790291,0.004116765,0.348964506 +SE Middle Mixed Forest Cumberland Plateau & Valley,0.314356978,0.10173734,0.059404092,0.00745955,0.019464827,0.097057129,0.400520083 +SE Middle Mixed Forest Piedmont,0.442223669,0.169418297,0.091369216,0.102665226,0.026171811,0.012209724,0.155942056 +SE Middle Mixed Forest Western Mid Coastal Plains,0.418761112,0.071756646,0.218651066,0.020121766,0.002027283,0.004697383,0.263984745 +Sierra Nevada,0.97391083,0,0.025056049,0,0,0.001033121,0 +Sierra Nevada Foothills,0.99316685,0,0.003632165,0,0,0.001839531,0.001361454 +Snake River Basin,0.96460177,0,0,0,0,0.03539823,0 +Southern Allegheny Plateau,0.012359456,0.778857373,0,0.063432908,0.043584047,0.019619366,0.08214685 +Southern California Coast,0,0,0,0,0,0,0 +Southern California Mountains,0,0,0,0,0,0,0 +Southern Cascades,0.695010971,0.00656349,0.276947172,0,0.000945209,0.005531293,0.015001865 +Southern Rockies Front Range,0.868896369,0.0222414,0,0,0.005369818,0.103492413,0 +Southern Rocky Mountains,0.855886364,0.011365055,0,0.003503064,0.008391119,0.120854397,0 +Southwest High Plains,0.851185609,0,0,0,0.014881439,0.133932952,0 +Southwest Plateau,0,0,0,0,0,0,0 +Southwestern Desert,0,0,0,0,0,0,0 +Southwestern Rocky Mountains,0.632567764,0.070131824,0,0.192970828,0.018620798,0.085708786,0 +St Lawrence & Mohawk Valley,0.193354261,0.223711834,0.004536761,0.000661646,0.008116337,0.005726931,0.56389223 +Subtropical Prairie Parkland Gulf & Oak Prairie,0.45162232,0.162429151,0.382770272,0,4.32653E-05,0.003134992,0 +Utah Mountains,0.55442641,0.040646812,0,0.235598964,0.020986081,0.148341733,0 +Wasatch Range,0.4808029,0.115844091,0,0.227382464,0.019142836,0.156827709,0 +Western Allegheny Plateau,0.038758151,0.884419993,0,0,0.002508666,0.003020031,0.071293159 +Western Basin and Range,0.925,0,0,0,0.0075,0.0675,0 +Western Great Plains,0.898344941,0.00315756,0,0.011225119,0.007128733,0.074648138,0.00549551 +White Mountains,0.355151097,0.135859344,0,0,2.40899E-05,0.000216809,0.50874866 +Willamette Valley,0.741313045,0.029626405,0.135343368,0,0.001531314,0.003912696,0.088273172 +Yellowstone / Bighorn,0.887177916,0,0.023333486,0,0.001039556,0.075486536,0.012962506 +TOTAL,0.481623489,0.181100511,0.100128342,0.041284358,0.017770786,0.021156535,0.156935979 \ No newline at end of file diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..2c25f0c --- /dev/null +++ b/data/README.md @@ -0,0 +1,34 @@ +# Data Files + +## HWP_decay_profiles +This table lists the fraction of carbon in primary wood products remaining in end uses up to and after 100 years. + +**Source:** USFS General Technical Report NE-343 "Methods for Calculating Forest Ecosystem and Harvested Carbon With Standard Estimates for Forest Types of the United States", Smith et al. 2006. https://www.fs.usda.gov/treesearch/pubs/22954. + +## HWP_supersection_mixtures +This tables lists the wood products generated by FIA Supersection, expressed as fractions. + +**Source:** Climate Action Reserve Assessment Area Data, Batch 2.2 (October 16, 2019), https://www.climateactionreserve.org/how/protocols/forest/assessment-area-data/ + +## car_mill_efficiencies_by_region + +This table lists the average mill efficiencies for hardwood and softwood by region in the United States. Values are expressed as fractions. + +**Source:** Climate Action Reserve Assessment Area Data, Batch 2.2 (October 16, 2019), https://www.climateactionreserve.org/how/protocols/forest/assessment-area-data/ + +## growth_by_fldgrpcd + +NCX takes the forest type that an FIA field crew assigns during measurement visits, and relabels them using broader groups of forest types. Within the FIA database, FORTYPCD and FLDTYPCD represent the same hierarchy of forest classification. They differ in how they are determined: FLDTYPCD (2.5.17) is assigned during the inventory visit by the USFS field foresters, FORTYPCD (2.5.16) is an algorithmic classification generated after the inventory. NCX derived a new categorical variable, FLDGRPCD, which is the field-assigned equivalent of TYPGRPCD. FLDGRPCD is determined by matching each FLDTYPCD record with the parent TYPGRPCD found in Appendix D of "The Forest Inventory and Analysis Database: Database Description and User Buide for Phase 2 (version 9.0). + +These are the descriptions of the column headers: +- fldgrpcd: Field group code, defined the same as USFS type group code +- annual_agb_recruitment_prop: median annual change in biomass due to recruitment of new stems +- annual_agb_mortality_prop: median annual change in biomass due to non-harvest mortality +- annual_agb_removal_prop: median annual change in biomass due to harvest +- mean_annual_growth_carbon_tons_per_ac_pct: median annual change in biomass due to growth on surviving stems +- annual_agb_net_change_prop: median annual net change in aboveground biomass +- the remaining columns match the above description but with 'sound volume' replacing 'biomass'. These are used as a proxy to estimate change in stand value + +**Source:** Burrill, Elizabeth A.; DiTommaso, Andrea M.; Turner, Jeffery A.; Pugh, Scott A.; Menlove, James; Christiansen, Glenn; Perry, Carol J.; Conkling, Barbara L. 2021. The Forest Inventory and Analysis Database: database description and user guide version 9.0 for Phase 2. U.S. Department of Agriculture, Forest Service. 1024 p. [Online]. Available at web address: https://www.fia.fs.usda.gov/library/database-documentation/current/ver90/FIADB%20User%20Guide%20P2_9-0-1_final.pdf. + + diff --git a/data/car_mill_efficiencies_by_region.csv b/data/car_mill_efficiencies_by_region.csv new file mode 100644 index 0000000..4e1ffdd --- /dev/null +++ b/data/car_mill_efficiencies_by_region.csv @@ -0,0 +1,58 @@ +"Source: Climate Action Reserve Assessment Area Data, Batch 2.2 (October 16, 2019), https://www.climateactionreserve.org/how/protocols/forest/assessment-area-data/",,,,, +,,,,, +,,,,, +Mill Efficiencies By Region,,,,, +,,,,, +Region,States,Hardwood,,Softwood, +,,Saw Log,Pulpwood,Saw Log,Pulpwood +Northeast,Maine,0.614,0.65,0.569,0.513 +,New Hampshire,,,, +,Vermont,,,, +,Massachussetts,,,, +,Rhode Island,,,, +,Connecticut,,,, +,Maryland,,,, +,New Jersey,,,, +,New York,,,, +,Pennsylvania,,,, +,Delaware,,,, +,Ohio,,,, +,West Virginia,,,, +North Central: Northern Lake States (NLS),Michigan,0.585,0.685,0.63,0.514 +,Wisconsin,,,, +,Minnesota,,,, +North Central: Northern Prairie States (NPS,North Dakota,0.585,0.685,0.63,0.514 +,South Dakota,,,, +,Nebraska,,,, +,Kansas,,,, +,Missouri,,,, +,Iowa,,,, +,Illinois,,,, +,Indiana,,,, +"Pacific Coast: Pacific Northwest, East (PWE)",Washington,0.0568,0.568,0.637,0.637 +,Oregon,,,, +"Pacific Coast: Pacific Northwest, West (PWW)",Washington,0.531,0.531,0.74,0.5 +,Oregon,,,, +Pacific Coast: Pacific Southwest (PSW),California,0.568,0.568,0.675,0.675 +"Rocky Mountain: Rocky Mountain, North (RMN)",Montana,0.568,0.568,0.704,0.704 +,Idaho,,,, +"Rocky Mountain: Rocky Mountain, South (RMS)",Nevada,0.568,0.568,0.704,0.704 +,Arizona,,,, +,New Mexico,,,, +,Colorado,,,, +,Utah,,,, +,Wyoming,,,, +South: Southeast (SE),Virginia,0.609,0.591,0.636,0.553 +,North Carolina,,,, +,South Carolina,,,, +,Georgia,,,, +,Florida,,,, +South: South Central (SC),Texas,0.587,0.581,0.629,0.57 +,Oklahoma,,,, +,Arkansas,,,, +,Louisiana,,,, +,Mississippi,,,, +,Alabama,,,, +,Tennessee,,,, +,Kentucky,,,, +"West: Includes RMN, RMS, PWE, PSW except where stated otherwise",,0.568,0.568,, \ No newline at end of file diff --git a/data/growth_by_fldgrpcd.csv b/data/growth_by_fldgrpcd.csv new file mode 100644 index 0000000..5a82bee --- /dev/null +++ b/data/growth_by_fldgrpcd.csv @@ -0,0 +1,34 @@ +fldgrpcd,annual_agb_recruitment_prop,annual_agb_mortality_prop,annual_agb_removal_prop,mean_annual_growth_carbon_tons_per_ac_prop,annual_agb_net_change_prop,annual_sound_volume_recruitment_prop,annual_sound_volume_mortality_prop,annual_sound_volume_removal_prop,mean_annual_growth_value_per_ac_prop,annual_sound_volume_net_change_prop +100,0.0033064916315990647,0.00878067118197113,0.008952343854392496,0.023911478913055145,0.006519491133088959,0.006997209246085514,0.020204455566079246,0.02016507603002096,0.02633022359093027,0.009566162902213363 +120,0.008379900019989856,0.014135726000882249,0.009134720716685637,0.023320191230308627,3.74867436794168e-4,0.016557204640913002,0.029072413064612987,0.018649676811623214,0.01889544014557182,-0.0021549840386592372 +140,0.018575770714304548,0.008665763766167251,0.03976426150141262,0.0478817852273262,0.0032892752138451425,0.01785021281112397,0.008606162325314094,0.04015397974334939,0.04888891641333526,0.044593708734314244 +150,0,0,0.19230769230769237,0,-0.19230769230769237,0,0,0.19230769230769224,0,0 +160,0.02134593374254621,0.008705514175011326,0.04824334558784288,0.06157476091954281,0.005872567976335823,0.021095213355940567,0.008832954006898267,0.04893335771218117,0.06474910996414768,0.05903405501798702 +170,0.013515252797270649,0.008053878820826785,0.003921441477525236,0.03945623379877747,0.028602813875482185,0.014121396271497107,0.008086090873417119,0.004430931092074071,0.04101104160851972,0.03399793623984777 +180,0.00740580300660087,0.010124862262865601,0,0.02192831537453477,0.009215300887504742,0.007527568504669775,2.583767716849988,0.0058824844711244245,0.025361475368807486,0.016773706559452674 +200,0.025187808311484875,0.0390371604863394,0,0.03018688572472064,0.00290478597057085,0.04228792076931791,166.08501902196838,0.014096673032598074,0.02472514210946928,-0.02119519407263628 +220,0.0010660439436985254,0.01349481436550867,0.010292407886018137,0.016446115660240845,-0.007336412668555567,0.0010013435307680047,0.0825204535337042,0.011520471292274969,0.016626560723677512,0.0048491282888794025 +240,0.0014570691790453053,0.00726617591219632,0,0.0131322930781632,0.006042442020733399,0.0013858965644173084,Inf,0,0.013353998722186143,0.006918670751088129 +260,0.0010038809327741194,0.013793723657903115,0.0015994285107437914,0.015177393928476689,-1.2332321204080052e-4,9.448341993622058e-4,Inf,Inf,0.015964034576420448,0.003947697443988144 +280,0.0030785382542696566,0.020193619709697033,0.002807669742177294,0.0150797475783146,-0.007467301677102997,0.002908993822117505,Inf,Inf,0.015292855099133655,-0.0017760649377344532 +300,0.0013948379686900506,0.008123692185995261,0.008180400353870108,0.019277163853868438,0.0031595104723043626,0.0013042935828562626,Inf,Inf,0.019942526825573112,0.014848565372885918 +320,0.002463792945052256,0.011856647971560752,0.01252132083150972,0.018002253802223714,-0.006165909605256572,0.0025667124186868717,Inf,Inf,0.018845829444796857,0.008996782708190794 +340,0.001458442224395441,0.005061257686876847,0.008640747089485848,0.021090073935152175,0.007155003599723719,0.0012544407435463015,0.004508492426969254,0.00837006015325344,0.021695618370898905,0.019539681834565985 +360,0.0015194238598667314,0.005661496387884451,0.0014243789045098162,0.012329239160166334,0.00536805331539711,0.001478881200333086,Inf,0.0014626788386347923,0.015020972187001512,0.010609391233222116 +370,0.0010342695644118987,0.011929698741915493,0.003907429262780987,0.016195892792806848,4.646952536669486e-4,9.12384191807074e-4,0.011938130414920487,0.00414834442959523,0.01695713183512372,0.007111122668163364 +380,0.007232909763748324,0.011775506543944627,0.006661106422857128,0.03394583816709934,0.015058061823175997,0.01801360122797644,0.03657782936269138,0.01830552604608194,0.03261448376903486,0.0024832385108122393 +390,0.009759335125060007,0.0035187453631162343,0,0.0404197689475191,0.04368382558264439,0.02127027031799978,0.02212045856806629,0,0.032950247340654396,0.02717064563929439 +400,0.00720509456005663,0.011301766107867747,0.017906688810766635,0.03147649594218915,0.0039147587807155625,0.007958551825726773,0.01333501624993973,0.021410556963530794,0.03466084471468865,0.02598203504260733 +500,0.0034543086067598122,0.010767683091276278,0.01105586776638831,0.02487412371578216,0.004426363969083108,0.004331008244540976,0.013837659221892607,0.015957677860523982,0.026436687910700182,0.016782933552368727 +600,0.005410518214920123,0.013344753763750064,0.014925138000570989,0.025515896217012387,-0.003968518645886513,0.00476571301472088,0.013221652661096829,0.015290720170827402,0.026179854214328814,0.01941725045229531 +700,0.005899803341035275,0.016674446804455168,0.006636885763654558,0.027853254575198945,0.004794893931164904,0.005942148118139595,0.020406916205626367,0.007735880690465177,0.029084614940975955,0.016126326258447267 +800,0.0029837374186253386,0.00981091164405891,0.010742593525134413,0.0213964201545705,0.0010620803293066184,0.007170750153809214,0.027583631512883174,0.02913408027959147,0.018077637364010503,-0.0042380292717053665 +900,0.011839907874476918,0.019530228352398198,0.01826736810067505,0.028091328594535593,-0.008803540191193112,0.012958136357257493,0.03456451281120271,0.022984292588394226,0.028903449116579945,0.011404500946127258 +910,0.00481630185114087,0.0120994297077468,0.013176596140802627,0.029107210408131533,0.0046431674396910875,0.004222750748249708,0.011857207233204815,0.013138053513922778,0.03015986456614562,0.024094941505418643 +920,0.002482572282241892,0.01485300394161855,0.0012602735424672691,0.012725314541976944,-0.002961582584166877,0.0021748631197430947,0.016076460111538727,0.0013534896354444105,0.015015725189783278,0.003349664168911337 +940,0.0019485468331506752,0.010539643672599953,0.0046482096673682825,0.018507099023001204,0.003496954819970467,0.0017555750641767567,0.00999766407923833,0.005003650854307767,0.019744933463573214,0.013127122839058019 +960,0.007533700696138254,0.012322412605644206,0.01592466936038252,0.01735813614162865,-0.01177716243513044,0.008665812288757345,0.023496494272836663,0.016647588089769308,0.01939230586803326,0.003647012506442221 +970,0.005098097246682161,0.008425967663721593,0.006200522074154398,0.014565304245412827,-2.1359200016621667e-4,0.005228356040929115,6.390978236397951,0.008170151563657092,0.016633034090115916,0.011528004880441013 +980,0.006302611388232283,0.014088947856542567,7.57146045957894e-4,0.006646379610763399,-0.013890648948220206,0.0061697157129921906,0.014397597221907997,8.564344154210388e-4,0.0053735057437555335,-0.004286828006528876 +990,0.023201118252872056,0.026240495080885533,0.037032568407008054,0.03176661384594065,-0.03404929426398058,0.02097097796327824,0.02840619765383949,0.040640546973502695,0.03136387563019975,0.0181482128205012 +999,1.9962165108064302e-4,8.353395667670978e-5,0.26839829963025275,0.0010149625171018235,-0.2700934476646639,1.562659626424493e-4,8.948421637413736e-5,0.27272968402974296,9.583313494215076e-4,9.297556869599947e-4 diff --git a/data/package_data/decay_coefs.csv b/data/package_data/decay_coefs.csv new file mode 100644 index 0000000..c504311 --- /dev/null +++ b/data/package_data/decay_coefs.csv @@ -0,0 +1,10 @@ +product,lambda +softwood_lumber,0.0164168769706375 +hardwood_lumber,0.0190690008433837 +plywood,0.0163277653489549 +osb,0.0133879752109057 +nonstructural_panels,0.0181857546409002 +misc,0.0194925581263689 +paper,0.218966364433134 +residue,4.60517018598809 +slash,0.0512932943875506 diff --git a/data/package_data/growth_rates.csv b/data/package_data/growth_rates.csv new file mode 100644 index 0000000..4cefee7 --- /dev/null +++ b/data/package_data/growth_rates.csv @@ -0,0 +1,34 @@ +fldgrpcd,mean_annual_growth_carbon_tons_per_ac_pct,s_multiplier +100,0.0239114789130551,0.0235495734225112 +120,0.0233201912303086,0.0229672686836519 +140,0.0478817852273262,0.0471543141548008 +150,0,0 +160,0.0615747609195428,0.0606372534929397 +170,0.0394562337987775,0.0388575688873512 +180,0.0219283153745348,0.0215965317759829 +200,0.0301868857247206,0.0297295394923483 +220,0.0164461156602408,0.0161975009377777 +240,0.0131322930781632,0.0129338803736294 +260,0.0151773939284767,0.0149480057675781 +280,0.0150797475783146,0.0148518388514305 +300,0.0192771638538684,0.0189856183480681 +320,0.0180022538022237,0.0177300462079019 +340,0.0210900739351522,0.0207710165057763 +360,0.0123292391601663,0.0121429840475677 +370,0.0161958927928068,0.0159510706393598 +380,0.0339458381670993,0.0334312328873219 +390,0.0404197689475191,0.0398063908146444 +400,0.0314764959421892,0.0309995130412044 +500,0.0248741237157822,0.0244975899516028 +600,0.0255158962170124,0.0251296076477675 +700,0.0278532545751989,0.0274314219095751 +800,0.0213964201545705,0.0210727121759765 +900,0.0280913285945356,0.0276658740763017 +910,0.0291072104081315,0.0286662980871827 +920,0.0127253145419769,0.0125330635613145 +940,0.0185070990230012,0.0182272348517318 +960,0.0173581361416286,0.0170956955547298 +970,0.0145653042454128,0.0143451890488445 +980,0.00664637961076339,0.00654606774741781 +990,0.0317666138459407,0.0312852122763034 +999,0.00101496251710182,0.000999658219130607 diff --git a/data/package_data/hwp_decay.csv b/data/package_data/hwp_decay.csv new file mode 100644 index 0000000..233a4a3 --- /dev/null +++ b/data/package_data/hwp_decay.csv @@ -0,0 +1,197 @@ +year,product,prop_remaining,prop_emitted +1,softwood_lumber,0.908,0.092 +1,hardwood_lumber,0.909,0.091 +1,plywood,0.908,0.092 +1,osb,0.908,0.092 +1,nonstructural_panels,0.908,0.092 +1,misc,0.903,0.097 +1,paper,0.88,0.12 +2,softwood_lumber,0.892,0.108 +2,hardwood_lumber,0.893,0.107 +2,plywood,0.893,0.107 +2,osb,0.896,0.104 +2,nonstructural_panels,0.892,0.108 +2,misc,0.887,0.113 +2,paper,0.775,0.225 +3,softwood_lumber,0.877,0.123 +3,hardwood_lumber,0.877,0.123 +3,plywood,0.878,0.122 +3,osb,0.884,0.116 +3,nonstructural_panels,0.876,0.124 +3,misc,0.871,0.129 +3,paper,0.682,0.318 +4,softwood_lumber,0.863,0.137 +4,hardwood_lumber,0.861,0.139 +4,plywood,0.863,0.137 +4,osb,0.872,0.128 +4,nonstructural_panels,0.861,0.139 +4,misc,0.855,0.145 +4,paper,0.6,0.4 +5,softwood_lumber,0.848,0.152 +5,hardwood_lumber,0.845,0.155 +5,plywood,0.848,0.152 +5,osb,0.86,0.14 +5,nonstructural_panels,0.845,0.155 +5,misc,0.84,0.16 +5,paper,0.528,0.472 +6,softwood_lumber,0.834,0.166 +6,hardwood_lumber,0.83,0.17 +6,plywood,0.834,0.166 +6,osb,0.848,0.152 +6,nonstructural_panels,0.83,0.17 +6,misc,0.825,0.175 +6,paper,0.465,0.535 +7,softwood_lumber,0.82,0.18 +7,hardwood_lumber,0.815,0.185 +7,plywood,0.82,0.18 +7,osb,0.837,0.163 +7,nonstructural_panels,0.816,0.184 +7,misc,0.81,0.19 +7,paper,0.354,0.646 +8,softwood_lumber,0.806,0.194 +8,hardwood_lumber,0.801,0.199 +8,plywood,0.807,0.193 +8,osb,0.826,0.174 +8,nonstructural_panels,0.801,0.199 +8,misc,0.795,0.205 +8,paper,0.269,0.731 +9,softwood_lumber,0.793,0.207 +9,hardwood_lumber,0.786,0.214 +9,plywood,0.794,0.206 +9,osb,0.815,0.185 +9,nonstructural_panels,0.787,0.213 +9,misc,0.781,0.219 +9,paper,0.205,0.795 +10,softwood_lumber,0.78,0.22 +10,hardwood_lumber,0.772,0.228 +10,plywood,0.781,0.219 +10,osb,0.804,0.196 +10,nonstructural_panels,0.774,0.226 +10,misc,0.767,0.233 +10,paper,0.156,0.844 +15,softwood_lumber,0.718,0.282 +15,hardwood_lumber,0.705,0.295 +15,plywood,0.719,0.281 +15,osb,0.753,0.247 +15,nonstructural_panels,0.708,0.292 +15,misc,0.7,0.3 +15,paper,0.04,0.96 +20,softwood_lumber,0.662,0.338 +20,hardwood_lumber,0.644,0.356 +20,plywood,0.663,0.337 +20,osb,0.706,0.294 +20,nonstructural_panels,0.649,0.351 +20,misc,0.639,0.361 +20,paper,0.01,0.99 +25,softwood_lumber,0.611,0.389 +25,hardwood_lumber,0.589,0.411 +25,plywood,0.613,0.387 +25,osb,0.662,0.338 +25,nonstructural_panels,0.595,0.405 +25,misc,0.583,0.417 +25,paper,0.003,0.997 +30,softwood_lumber,0.565,0.435 +30,hardwood_lumber,0.538,0.462 +30,plywood,0.567,0.433 +30,osb,0.622,0.378 +30,nonstructural_panels,0.546,0.454 +30,misc,0.532,0.468 +30,paper,0.001,0.999 +35,softwood_lumber,0.523,0.477 +35,hardwood_lumber,0.492,0.508 +35,plywood,0.525,0.475 +35,osb,0.585,0.415 +35,nonstructural_panels,0.501,0.499 +35,misc,0.486,0.514 +35,paper,0,1 +40,softwood_lumber,0.485,0.515 +40,hardwood_lumber,0.45,0.55 +40,plywood,0.487,0.513 +40,osb,0.551,0.449 +40,nonstructural_panels,0.46,0.54 +40,misc,0.444,0.556 +40,paper,0,1 +45,softwood_lumber,0.45,0.55 +45,hardwood_lumber,0.411,0.589 +45,plywood,0.452,0.548 +45,osb,0.519,0.481 +45,nonstructural_panels,0.423,0.577 +45,misc,0.405,0.595 +45,paper,0,1 +50,softwood_lumber,0.418,0.582 +50,hardwood_lumber,0.376,0.624 +50,plywood,0.42,0.58 +50,osb,0.49,0.51 +50,nonstructural_panels,0.389,0.611 +50,misc,0.37,0.63 +50,paper,0,1 +55,softwood_lumber,0.389,0.611 +55,hardwood_lumber,0.344,0.656 +55,plywood,0.391,0.609 +55,osb,0.462,0.538 +55,nonstructural_panels,0.358,0.642 +55,misc,0.338,0.662 +55,paper,0,1 +60,softwood_lumber,0.362,0.638 +60,hardwood_lumber,0.315,0.685 +60,plywood,0.364,0.636 +60,osb,0.437,0.563 +60,nonstructural_panels,0.329,0.671 +60,misc,0.308,0.692 +60,paper,0,1 +65,softwood_lumber,0.338,0.662 +65,hardwood_lumber,0.288,0.712 +65,plywood,0.34,0.66 +65,osb,0.413,0.587 +65,nonstructural_panels,0.303,0.697 +65,misc,0.281,0.719 +65,paper,0,1 +70,softwood_lumber,0.315,0.685 +70,hardwood_lumber,0.264,0.736 +70,plywood,0.317,0.683 +70,osb,0.391,0.609 +70,nonstructural_panels,0.28,0.72 +70,misc,0.257,0.743 +70,paper,0,1 +75,softwood_lumber,0.294,0.706 +75,hardwood_lumber,0.242,0.758 +75,plywood,0.296,0.704 +75,osb,0.37,0.63 +75,nonstructural_panels,0.258,0.742 +75,misc,0.234,0.766 +75,paper,0,1 +80,softwood_lumber,0.276,0.724 +80,hardwood_lumber,0.221,0.779 +80,plywood,0.277,0.723 +80,osb,0.351,0.649 +80,nonstructural_panels,0.238,0.762 +80,misc,0.214,0.786 +80,paper,0,1 +85,softwood_lumber,0.258,0.742 +85,hardwood_lumber,0.203,0.797 +85,plywood,0.26,0.74 +85,osb,0.333,0.667 +85,nonstructural_panels,0.22,0.78 +85,misc,0.195,0.805 +85,paper,0,1 +90,softwood_lumber,0.242,0.758 +90,hardwood_lumber,0.186,0.814 +90,plywood,0.244,0.756 +90,osb,0.316,0.684 +90,nonstructural_panels,0.203,0.797 +90,misc,0.178,0.822 +90,paper,0,1 +95,softwood_lumber,0.227,0.773 +95,hardwood_lumber,0.17,0.83 +95,plywood,0.229,0.771 +95,osb,0.3,0.7 +95,nonstructural_panels,0.188,0.812 +95,misc,0.163,0.837 +95,paper,0,1 +100,softwood_lumber,0.213,0.787 +100,hardwood_lumber,0.156,0.844 +100,plywood,0.215,0.785 +100,osb,0.285,0.715 +100,nonstructural_panels,0.174,0.826 +100,misc,0.149,0.851 +100,paper,0,1 diff --git a/data/package_data/hwp_mix.csv b/data/package_data/hwp_mix.csv new file mode 100644 index 0000000..ca01d17 --- /dev/null +++ b/data/package_data/hwp_mix.csv @@ -0,0 +1,793 @@ +supersection,product,mix_prop +Allegheny & North Cumberland Mountains,softwood_lumber,0.01622650185 +Allegheny & North Cumberland Mountains,hardwood_lumber,0.30944421495 +Allegheny & North Cumberland Mountains,plywood,6.99417e-05 +Allegheny & North Cumberland Mountains,osb,0.05490594225 +Allegheny & North Cumberland Mountains,nonstructural_panels,0.0206714106 +Allegheny & North Cumberland Mountains,misc,0.01522098765 +Allegheny & North Cumberland Mountains,paper,0.033461001 +Allegheny & North Cumberland Mountains,slash,0.25 +Allegheny & North Cumberland Mountains,residue,0.3 +Andirondacks & Green Mountains,softwood_lumber,0.104516184495484 +Andirondacks & Green Mountains,hardwood_lumber,0.105915569294084 +Andirondacks & Green Mountains,plywood,0.00716490944283509 +Andirondacks & Green Mountains,osb,0 +Andirondacks & Green Mountains,nonstructural_panels,0.00497196044502804 +Andirondacks & Green Mountains,misc,0.000698969249301031 +Andirondacks & Green Mountains,paper,0.226732407073268 +Andirondacks & Green Mountains,slash,0.25 +Andirondacks & Green Mountains,residue,0.3 +Arizona-Nevada Mountains,softwood_lumber,0.45 +Arizona-Nevada Mountains,hardwood_lumber,0 +Arizona-Nevada Mountains,plywood,0 +Arizona-Nevada Mountains,osb,0 +Arizona-Nevada Mountains,nonstructural_panels,0 +Arizona-Nevada Mountains,misc,0 +Arizona-Nevada Mountains,paper,0 +Arizona-Nevada Mountains,slash,0.25 +Arizona-Nevada Mountains,residue,0.3 +Aroostook-Maine-New Brunswick Hills and Lowlands,softwood_lumber,0.18045518895 +Aroostook-Maine-New Brunswick Hills and Lowlands,hardwood_lumber,0.04414655205 +Aroostook-Maine-New Brunswick Hills and Lowlands,plywood,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,osb,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,nonstructural_panels,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,misc,0 +Aroostook-Maine-New Brunswick Hills and Lowlands,paper,0.225398259 +Aroostook-Maine-New Brunswick Hills and Lowlands,slash,0.25 +Aroostook-Maine-New Brunswick Hills and Lowlands,residue,0.3 +Atlantic Coastal Plain & Flatwoods,softwood_lumber,0.314945565029891 +Atlantic Coastal Plain & Flatwoods,hardwood_lumber,0.0359079264718159 +Atlantic Coastal Plain & Flatwoods,plywood,0.0311478732622957 +Atlantic Coastal Plain & Flatwoods,osb,0.0121043650742087 +Atlantic Coastal Plain & Flatwoods,nonstructural_panels,0.00835627141671254 +Atlantic Coastal Plain & Flatwoods,misc,0.0204719211409438 +Atlantic Coastal Plain & Flatwoods,paper,0.0270660776041322 +Atlantic Coastal Plain & Flatwoods,slash,0.25 +Atlantic Coastal Plain & Flatwoods,residue,0.3 +Bitterroot Mountains,softwood_lumber,0.383742666554632 +Bitterroot Mountains,hardwood_lumber,6.70315499396716e-06 +Bitterroot Mountains,plywood,0.0453662662091704 +Bitterroot Mountains,osb,0 +Bitterroot Mountains,nonstructural_panels,0.000966792599129887 +Bitterroot Mountains,misc,0.010892236940197 +Bitterroot Mountains,paper,0.0090253345418772 +Bitterroot Mountains,slash,0.25 +Bitterroot Mountains,residue,0.3 +Blue Mountains,softwood_lumber,0.348135893651864 +Blue Mountains,hardwood_lumber,0.0010755985489244 +Blue Mountains,plywood,0.0640876949359123 +Blue Mountains,osb,0 +Blue Mountains,nonstructural_panels,0.000194413049805587 +Blue Mountains,misc,0.00183638519816361 +Blue Mountains,paper,0.03467001461533 +Blue Mountains,slash,0.25 +Blue Mountains,residue,0.3 +Blue Ridge Mountains,softwood_lumber,0.138625237211375 +Blue Ridge Mountains,hardwood_lumber,0.239163872160836 +Blue Ridge Mountains,plywood,0.00310334039689666 +Blue Ridge Mountains,osb,0.0100981682899018 +Blue Ridge Mountains,nonstructural_panels,0.0493897175506103 +Blue Ridge Mountains,misc,0.00779192234220808 +Blue Ridge Mountains,paper,0.00182774204817226 +Blue Ridge Mountains,slash,0.25 +Blue Ridge Mountains,residue,0.3 +Booneville Basin,softwood_lumber,0.2913078888 +Booneville Basin,hardwood_lumber,0.0683963334 +Booneville Basin,plywood,0 +Booneville Basin,osb,0 +Booneville Basin,nonstructural_panels,0.0090295776 +Booneville Basin,misc,0.0812662002 +Booneville Basin,paper,0 +Booneville Basin,slash,0.25 +Booneville Basin,residue,0.3 +California Central Valley Basin,softwood_lumber,0.439496946460503 +California Central Valley Basin,hardwood_lumber,0 +California Central Valley Basin,plywood,0.00662384654337615 +California Central Valley Basin,osb,0 +California Central Valley Basin,nonstructural_panels,0 +California Central Valley Basin,misc,0.00139637294860363 +California Central Valley Basin,paper,0.00248283404751717 +California Central Valley Basin,slash,0.25 +California Central Valley Basin,residue,0.3 +Catskill Mountains,softwood_lumber,0.108205125408205 +Catskill Mountains,hardwood_lumber,0.213926281413926 +Catskill Mountains,plywood,0 +Catskill Mountains,osb,0.0259376395759376 +Catskill Mountains,nonstructural_panels,0.00436768425436769 +Catskill Mountains,misc,0.000823249350823249 +Catskill Mountains,paper,0.09674001999674 +Catskill Mountains,slash,0.25 +Catskill Mountains,residue,0.3 +Central California Coast,softwood_lumber,0.436801863468959 +Central California Coast,hardwood_lumber,9.689984997093e-06 +Central California Coast,plywood,0.00843381764746986 +Central California Coast,osb,0 +Central California Coast,nonstructural_panels,0.00109947869967016 +Central California Coast,misc,0.000426518099872045 +Central California Coast,paper,0.00322863209903141 +Central California Coast,slash,0.25 +Central California Coast,residue,0.3 +Central Great Plains,softwood_lumber,0.0853828334146172 +Central Great Plains,hardwood_lumber,0.359267659290732 +Central Great Plains,plywood,0 +Central Great Plains,osb,0 +Central Great Plains,nonstructural_panels,0 +Central Great Plains,misc,0.00534950729465049 +Central Great Plains,paper,0 +Central Great Plains,slash,0.25 +Central Great Plains,residue,0.3 +Central Interior Broadleaf Forest Central Till Plains,softwood_lumber,0.000519643349480357 +Central Interior Broadleaf Forest Central Till Plains,hardwood_lumber,0.432508486517492 +Central Interior Broadleaf Forest Central Till Plains,plywood,0 +Central Interior Broadleaf Forest Central Till Plains,osb,0 +Central Interior Broadleaf Forest Central Till Plains,nonstructural_panels,0.00596821454403179 +Central Interior Broadleaf Forest Central Till Plains,misc,0.00967668344032332 +Central Interior Broadleaf Forest Central Till Plains,paper,0.00132697214867303 +Central Interior Broadleaf Forest Central Till Plains,slash,0.25 +Central Interior Broadleaf Forest Central Till Plains,residue,0.3 +Central Interior Broadleaf Forest Eastern Low Plateau,softwood_lumber,0.0361297484638703 +Central Interior Broadleaf Forest Eastern Low Plateau,hardwood_lumber,0.377712201672288 +Central Interior Broadleaf Forest Eastern Low Plateau,plywood,0.000447142949552857 +Central Interior Broadleaf Forest Eastern Low Plateau,osb,0 +Central Interior Broadleaf Forest Eastern Low Plateau,nonstructural_panels,0.0115726823884273 +Central Interior Broadleaf Forest Eastern Low Plateau,misc,0.00868369544131631 +Central Interior Broadleaf Forest Eastern Low Plateau,paper,0.0154545290845455 +Central Interior Broadleaf Forest Eastern Low Plateau,slash,0.25 +Central Interior Broadleaf Forest Eastern Low Plateau,residue,0.3 +Central Interior Broadleaf Forest Ozark Highlands,softwood_lumber,0.0280153134 +Central Interior Broadleaf Forest Ozark Highlands,hardwood_lumber,0.3858002388 +Central Interior Broadleaf Forest Ozark Highlands,plywood,0 +Central Interior Broadleaf Forest Ozark Highlands,osb,0 +Central Interior Broadleaf Forest Ozark Highlands,nonstructural_panels,0.0055866474 +Central Interior Broadleaf Forest Ozark Highlands,misc,0.0191237031 +Central Interior Broadleaf Forest Ozark Highlands,paper,0.0114740973 +Central Interior Broadleaf Forest Ozark Highlands,slash,0.25 +Central Interior Broadleaf Forest Ozark Highlands,residue,0.3 +Central Interior Broadleaf Forest Western Low Plateau,softwood_lumber,0.00677409255 +Central Interior Broadleaf Forest Western Low Plateau,hardwood_lumber,0.3789342981 +Central Interior Broadleaf Forest Western Low Plateau,plywood,0 +Central Interior Broadleaf Forest Western Low Plateau,osb,0 +Central Interior Broadleaf Forest Western Low Plateau,nonstructural_panels,0.01036815975 +Central Interior Broadleaf Forest Western Low Plateau,misc,0.0094654512 +Central Interior Broadleaf Forest Western Low Plateau,paper,0.0444579984 +Central Interior Broadleaf Forest Western Low Plateau,slash,0.25 +Central Interior Broadleaf Forest Western Low Plateau,residue,0.3 +Central Maine & Fundy Coast & Ebayment,softwood_lumber,0.15135269625 +Central Maine & Fundy Coast & Ebayment,hardwood_lumber,0.0208584378 +Central Maine & Fundy Coast & Ebayment,plywood,0 +Central Maine & Fundy Coast & Ebayment,osb,0 +Central Maine & Fundy Coast & Ebayment,nonstructural_panels,0 +Central Maine & Fundy Coast & Ebayment,misc,0 +Central Maine & Fundy Coast & Ebayment,paper,0.27778886595 +Central Maine & Fundy Coast & Ebayment,slash,0.25 +Central Maine & Fundy Coast & Ebayment,residue,0.3 +Central New Mexico,softwood_lumber,0.4115448189 +Central New Mexico,hardwood_lumber,7.14564e-05 +Central New Mexico,plywood,0 +Central New Mexico,osb,0 +Central New Mexico,nonstructural_panels,0.0015490026 +Central New Mexico,misc,0.0368347221 +Central New Mexico,paper,0 +Central New Mexico,slash,0.25 +Central New Mexico,residue,0.3 +Chihuahuan Semi-Desert,softwood_lumber,0.45 +Chihuahuan Semi-Desert,hardwood_lumber,0 +Chihuahuan Semi-Desert,plywood,0 +Chihuahuan Semi-Desert,osb,0 +Chihuahuan Semi-Desert,nonstructural_panels,0 +Chihuahuan Semi-Desert,misc,0 +Chihuahuan Semi-Desert,paper,0 +Chihuahuan Semi-Desert,slash,0.25 +Chihuahuan Semi-Desert,residue,0.3 +Colorado Plateau,softwood_lumber,0.26415909765 +Colorado Plateau,hardwood_lumber,0.01818947565 +Colorado Plateau,plywood,0 +Colorado Plateau,osb,0.144087723 +Colorado Plateau,nonstructural_panels,0.00918157815 +Colorado Plateau,misc,0.01438212555 +Colorado Plateau,paper,0 +Colorado Plateau,slash,0.25 +Colorado Plateau,residue,0.3 +Colorado River Canyon Lands,softwood_lumber,0.18040338585 +Colorado River Canyon Lands,hardwood_lumber,0.12795155955 +Colorado River Canyon Lands,plywood,0 +Colorado River Canyon Lands,osb,0.1221761844 +Colorado River Canyon Lands,nonstructural_panels,0.00723938535 +Colorado River Canyon Lands,misc,0.01222948485 +Colorado River Canyon Lands,paper,0 +Colorado River Canyon Lands,slash,0.25 +Colorado River Canyon Lands,residue,0.3 +Columbia Basin,softwood_lumber,0.389038398239038 +Columbia Basin,hardwood_lumber,0.00726364890726365 +Columbia Basin,plywood,0.0181125391681125 +Columbia Basin,osb,0 +Columbia Basin,nonstructural_panels,0.000810743850810744 +Columbia Basin,misc,0.00806161905806162 +Columbia Basin,paper,0.0267130507767131 +Columbia Basin,slash,0.25 +Columbia Basin,residue,0.3 +Cross Timbers and Prairie,softwood_lumber,0.10601586495 +Cross Timbers and Prairie,hardwood_lumber,0.20144737215 +Cross Timbers and Prairie,plywood,0.01094378895 +Cross Timbers and Prairie,osb,0 +Cross Timbers and Prairie,nonstructural_panels,0 +Cross Timbers and Prairie,misc,0.13159297395 +Cross Timbers and Prairie,paper,0 +Cross Timbers and Prairie,slash,0.25 +Cross Timbers and Prairie,residue,0.3 +Eastern Broadleaf Forest Cumberland Plateau & Valley,softwood_lumber,0.04438701225 +Eastern Broadleaf Forest Cumberland Plateau & Valley,hardwood_lumber,0.2925534294 +Eastern Broadleaf Forest Cumberland Plateau & Valley,plywood,0.0007417386 +Eastern Broadleaf Forest Cumberland Plateau & Valley,osb,0.0001997766 +Eastern Broadleaf Forest Cumberland Plateau & Valley,nonstructural_panels,0.0166311459 +Eastern Broadleaf Forest Cumberland Plateau & Valley,misc,0.06562465245 +Eastern Broadleaf Forest Cumberland Plateau & Valley,paper,0.0298622448 +Eastern Broadleaf Forest Cumberland Plateau & Valley,slash,0.25 +Eastern Broadleaf Forest Cumberland Plateau & Valley,residue,0.3 +Eastern Cascades,softwood_lumber,0.357415635242584 +Eastern Cascades,hardwood_lumber,0.00251389169748611 +Eastern Cascades,plywood,0.0445774036054226 +Eastern Cascades,osb,0 +Eastern Cascades,nonstructural_panels,0.000120282749879717 +Eastern Cascades,misc,0.00166028714833971 +Eastern Cascades,paper,0.0437124995562875 +Eastern Cascades,slash,0.25 +Eastern Cascades,residue,0.3 +Eastern Great Plains,softwood_lumber,0.0008708004008708 +Eastern Great Plains,hardwood_lumber,0.40931020255931 +Eastern Great Plains,plywood,0 +Eastern Great Plains,osb,0 +Eastern Great Plains,nonstructural_panels,0 +Eastern Great Plains,misc,0.039818997039819 +Eastern Great Plains,paper,0 +Eastern Great Plains,slash,0.25 +Eastern Great Plains,residue,0.3 +Erie & Ontario Lake Plain,softwood_lumber,0.0536075415 +Erie & Ontario Lake Plain,hardwood_lumber,0.32664613905 +Erie & Ontario Lake Plain,plywood,0 +Erie & Ontario Lake Plain,osb,0.0064018836 +Erie & Ontario Lake Plain,nonstructural_panels,0.00092755575 +Erie & Ontario Lake Plain,misc,0.00850553235 +Erie & Ontario Lake Plain,paper,0.05391134775 +Erie & Ontario Lake Plain,slash,0.25 +Erie & Ontario Lake Plain,residue,0.3 +Florida Coastal Plains Central Highlands,softwood_lumber,0.20188870065 +Florida Coastal Plains Central Highlands,hardwood_lumber,0.0023483898 +Florida Coastal Plains Central Highlands,plywood,0.0494309727 +Florida Coastal Plains Central Highlands,osb,0.00128577465 +Florida Coastal Plains Central Highlands,nonstructural_panels,0.00586739565 +Florida Coastal Plains Central Highlands,misc,0.04163323545 +Florida Coastal Plains Central Highlands,paper,0.1475455311 +Florida Coastal Plains Central Highlands,slash,0.25 +Florida Coastal Plains Central Highlands,residue,0.3 +Florida Everglades,softwood_lumber,0.0775904661 +Florida Everglades,hardwood_lumber,0 +Florida Everglades,plywood,0 +Florida Everglades,osb,0 +Florida Everglades,nonstructural_panels,0 +Florida Everglades,misc,0.04917529395 +Florida Everglades,paper,0.32323423995 +Florida Everglades,slash,0.25 +Florida Everglades,residue,0.3 +Great Divide Basin,softwood_lumber,0.182686615832687 +Great Divide Basin,hardwood_lumber,0.00125447760125448 +Great Divide Basin,plywood,0 +Great Divide Basin,osb,0 +Great Divide Basin,nonstructural_panels,0.000867595050867595 +Great Divide Basin,misc,0.265191311515191 +Great Divide Basin,paper,0 +Great Divide Basin,slash,0.25 +Great Divide Basin,residue,0.3 +Great Plains,softwood_lumber,0.4058291529 +Great Plains,hardwood_lumber,0.0003483171 +Great Plains,plywood,0 +Great Plains,osb,0 +Great Plains,nonstructural_panels,0.0026014509 +Great Plains,misc,0.0412210791 +Great Plains,paper,0 +Great Plains,slash,0.25 +Great Plains,residue,0.3 +Gulf Coastal Plain,softwood_lumber,0.20175874155 +Gulf Coastal Plain,hardwood_lumber,0.0252680364 +Gulf Coastal Plain,plywood,0.0881623647 +Gulf Coastal Plain,osb,0.0061753797 +Gulf Coastal Plain,nonstructural_panels,0.0055797948 +Gulf Coastal Plain,misc,0.0112388274 +Gulf Coastal Plain,paper,0.11181685545 +Gulf Coastal Plain,slash,0.25 +Gulf Coastal Plain,residue,0.3 +Idaho Batholith,softwood_lumber,0.43916828985 +Idaho Batholith,hardwood_lumber,0 +Idaho Batholith,plywood,0.00830746035 +Idaho Batholith,osb,0 +Idaho Batholith,nonstructural_panels,0.0002306646 +Idaho Batholith,misc,0.00207598005 +Idaho Batholith,paper,0.00021760515 +Idaho Batholith,slash,0.25 +Idaho Batholith,residue,0.3 +Laurentian Mixed Forest Arrowhead,softwood_lumber,0.08498172105 +Laurentian Mixed Forest Arrowhead,hardwood_lumber,0.0311182758 +Laurentian Mixed Forest Arrowhead,plywood,0 +Laurentian Mixed Forest Arrowhead,osb,0.3131482581 +Laurentian Mixed Forest Arrowhead,nonstructural_panels,0.02064898485 +Laurentian Mixed Forest Arrowhead,misc,0.0001027602 +Laurentian Mixed Forest Arrowhead,paper,0 +Laurentian Mixed Forest Arrowhead,slash,0.25 +Laurentian Mixed Forest Arrowhead,residue,0.3 +Laurentian Mixed Forest Green Bay Lobe,softwood_lumber,0.0880328894380329 +Laurentian Mixed Forest Green Bay Lobe,hardwood_lumber,0.258258394158258 +Laurentian Mixed Forest Green Bay Lobe,plywood,0.00349167825349168 +Laurentian Mixed Forest Green Bay Lobe,osb,0.0266156365766156 +Laurentian Mixed Forest Green Bay Lobe,nonstructural_panels,0.0250644618250645 +Laurentian Mixed Forest Green Bay Lobe,misc,0.0485369397485369 +Laurentian Mixed Forest Green Bay Lobe,paper,0 +Laurentian Mixed Forest Green Bay Lobe,slash,0.25 +Laurentian Mixed Forest Green Bay Lobe,residue,0.3 +Laurentian Mixed Forest MN & Ontario Lake Plain,softwood_lumber,0.077317004622683 +Laurentian Mixed Forest MN & Ontario Lake Plain,hardwood_lumber,0.039994026260006 +Laurentian Mixed Forest MN & Ontario Lake Plain,plywood,0 +Laurentian Mixed Forest MN & Ontario Lake Plain,osb,0.299838071400162 +Laurentian Mixed Forest MN & Ontario Lake Plain,nonstructural_panels,0.0196422659803577 +Laurentian Mixed Forest MN & Ontario Lake Plain,misc,0.00221157089778843 +Laurentian Mixed Forest MN & Ontario Lake Plain,paper,0.0109970608390029 +Laurentian Mixed Forest MN & Ontario Lake Plain,slash,0.25 +Laurentian Mixed Forest MN & Ontario Lake Plain,residue,0.3 +Laurentian Mixed Forest NLP/EUP,softwood_lumber,0.1027728972 +Laurentian Mixed Forest NLP/EUP,hardwood_lumber,0.155615652 +Laurentian Mixed Forest NLP/EUP,plywood,0.000580338 +Laurentian Mixed Forest NLP/EUP,osb,0.1652340618 +Laurentian Mixed Forest NLP/EUP,nonstructural_panels,0.0150088662 +Laurentian Mixed Forest NLP/EUP,misc,0.0107881848 +Laurentian Mixed Forest NLP/EUP,paper,0 +Laurentian Mixed Forest NLP/EUP,slash,0.25 +Laurentian Mixed Forest NLP/EUP,residue,0.3 +Laurentian Mixed Forest Northern Highlands,softwood_lumber,0.05541045975 +Laurentian Mixed Forest Northern Highlands,hardwood_lumber,0.17830375965 +Laurentian Mixed Forest Northern Highlands,plywood,0.001370286 +Laurentian Mixed Forest Northern Highlands,osb,0.1636583778 +Laurentian Mixed Forest Northern Highlands,nonstructural_panels,0.03175034535 +Laurentian Mixed Forest Northern Highlands,misc,0.01950677145 +Laurentian Mixed Forest Northern Highlands,paper,0 +Laurentian Mixed Forest Northern Highlands,slash,0.25 +Laurentian Mixed Forest Northern Highlands,residue,0.3 +Laurentian Mixed Forest Southern Superior,softwood_lumber,0.0707728802207729 +Laurentian Mixed Forest Southern Superior,hardwood_lumber,0.207422976807423 +Laurentian Mixed Forest Southern Superior,plywood,0.00228626055228626 +Laurentian Mixed Forest Southern Superior,osb,0.115378900315379 +Laurentian Mixed Forest Southern Superior,nonstructural_panels,0.0384102378384102 +Laurentian Mixed Forest Southern Superior,misc,0.0157287442657287 +Laurentian Mixed Forest Southern Superior,paper,0 +Laurentian Mixed Forest Southern Superior,slash,0.25 +Laurentian Mixed Forest Southern Superior,residue,0.3 +Laurentian Mixed Forest Western Superior & Lake Plains,softwood_lumber,0.0613124838 +Laurentian Mixed Forest Western Superior & Lake Plains,hardwood_lumber,0.08572560255 +Laurentian Mixed Forest Western Superior & Lake Plains,plywood,0.0004767048 +Laurentian Mixed Forest Western Superior & Lake Plains,osb,0.2750913324 +Laurentian Mixed Forest Western Superior & Lake Plains,nonstructural_panels,0.02450578635 +Laurentian Mixed Forest Western Superior & Lake Plains,misc,0.0028880901 +Laurentian Mixed Forest Western Superior & Lake Plains,paper,0 +Laurentian Mixed Forest Western Superior & Lake Plains,slash,0.25 +Laurentian Mixed Forest Western Superior & Lake Plains,residue,0.3 +Lower New England - Northern Appalachia,softwood_lumber,0.116051909019631 +Lower New England - Northern Appalachia,hardwood_lumber,0.125741414325445 +Lower New England - Northern Appalachia,plywood,0.00239635890143782 +Lower New England - Northern Appalachia,osb,3.43135800205882e-05 +Lower New England - Northern Appalachia,nonstructural_panels,0.0571078390842647 +Lower New England - Northern Appalachia,misc,0.00248919525149352 +Lower New England - Northern Appalachia,paper,0.146178969837707 +Lower New England - Northern Appalachia,slash,0.25 +Lower New England - Northern Appalachia,residue,0.3 +Modoc Plateau,softwood_lumber,0.33317568796673 +Modoc Plateau,hardwood_lumber,1.52592299938963e-05 +Modoc Plateau,plywood,0.114929952704028 +Modoc Plateau,osb,0 +Modoc Plateau,nonstructural_panels,5.92577999762969e-05 +Modoc Plateau,misc,0.000795410099681836 +Modoc Plateau,paper,0.00102443219959023 +Modoc Plateau,slash,0.25 +Modoc Plateau,residue,0.3 +Montana Rocky Mountains,softwood_lumber,0.356314223593106 +Montana Rocky Mountains,hardwood_lumber,2.80702349915789e-05 +Montana Rocky Mountains,plywood,0.0369985445889004 +Montana Rocky Mountains,osb,0 +Montana Rocky Mountains,nonstructural_panels,0.000385977599884207 +Montana Rocky Mountains,misc,0.0166181480950146 +Montana Rocky Mountains,paper,0.0396550358881035 +Montana Rocky Mountains,slash,0.25 +Montana Rocky Mountains,residue,0.3 +MS River Delta,softwood_lumber,0.1112207418 +MS River Delta,hardwood_lumber,0.1459459701 +MS River Delta,plywood,0.0426834054 +MS River Delta,osb,0.0276013116 +MS River Delta,nonstructural_panels,0.01707656985 +MS River Delta,misc,0.000457362 +MS River Delta,paper,0.10501463925 +MS River Delta,slash,0.25 +MS River Delta,residue,0.3 +MS River Mixed Forest,softwood_lumber,0.2359273653 +MS River Mixed Forest,hardwood_lumber,0.14329993365 +MS River Mixed Forest,plywood,0.02801816415 +MS River Mixed Forest,osb,0.0294221916 +MS River Mixed Forest,nonstructural_panels,0.007206615 +MS River Mixed Forest,misc,0.0001974753 +MS River Mixed Forest,paper,0.005928255 +MS River Mixed Forest,slash,0.25 +MS River Mixed Forest,residue,0.3 +MW Broadleaf Forest Central Till Plains,softwood_lumber,0.000591271199408729 +MW Broadleaf Forest Central Till Plains,hardwood_lumber,0.425672192274328 +MW Broadleaf Forest Central Till Plains,plywood,0 +MW Broadleaf Forest Central Till Plains,osb,0 +MW Broadleaf Forest Central Till Plains,nonstructural_panels,0.0206278478793722 +MW Broadleaf Forest Central Till Plains,misc,0.0027165973472834 +MW Broadleaf Forest Central Till Plains,paper,0.000392091299607909 +MW Broadleaf Forest Central Till Plains,slash,0.25 +MW Broadleaf Forest Central Till Plains,residue,0.3 +MW Broadleaf Forest Driftless & Morainal,softwood_lumber,0.0273185824718549 +MW Broadleaf Forest Driftless & Morainal,hardwood_lumber,0.334919428017936 +MW Broadleaf Forest Driftless & Morainal,plywood,2.59614900207692e-05 +MW Broadleaf Forest Driftless & Morainal,osb,0.0605252902984202 +MW Broadleaf Forest Driftless & Morainal,nonstructural_panels,0.0218485035174788 +MW Broadleaf Forest Driftless & Morainal,misc,0.00511927020409542 +MW Broadleaf Forest Driftless & Morainal,paper,0.000242964000194371 +MW Broadleaf Forest Driftless & Morainal,slash,0.25 +MW Broadleaf Forest Driftless & Morainal,residue,0.3 +MW Broadleaf Forest Great Lakes Morainal & Sands,softwood_lumber,0.1349519868 +MW Broadleaf Forest Great Lakes Morainal & Sands,hardwood_lumber,0.23733531945 +MW Broadleaf Forest Great Lakes Morainal & Sands,plywood,0 +MW Broadleaf Forest Great Lakes Morainal & Sands,osb,0.02666060055 +MW Broadleaf Forest Great Lakes Morainal & Sands,nonstructural_panels,0.0124701399 +MW Broadleaf Forest Great Lakes Morainal & Sands,misc,0.0385819533 +MW Broadleaf Forest Great Lakes Morainal & Sands,paper,0 +MW Broadleaf Forest Great Lakes Morainal & Sands,slash,0.25 +MW Broadleaf Forest Great Lakes Morainal & Sands,residue,0.3 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,softwood_lumber,0.01157995078842 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,hardwood_lumber,0.398411659401588 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,plywood,0 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,osb,0 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,nonstructural_panels,0.0350921776149078 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,misc,0.00491621219508379 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,paper,0 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,slash,0.25 +MW Broadleaf Forest SC Great Lakes & Lake Whittlesey,residue,0.3 +North Central Great Plains,softwood_lumber,0.03254452605 +North Central Great Plains,hardwood_lumber,0.05128584525 +North Central Great Plains,plywood,0 +North Central Great Plains,osb,0 +North Central Great Plains,nonstructural_panels,0.0356690745 +North Central Great Plains,misc,0.3305005542 +North Central Great Plains,paper,0 +North Central Great Plains,slash,0.25 +North Central Great Plains,residue,0.3 +Northern Allegheny Plateau,softwood_lumber,0.0579756546 +Northern Allegheny Plateau,hardwood_lumber,0.2580247647 +Northern Allegheny Plateau,plywood,0 +Northern Allegheny Plateau,osb,0.01183454775 +Northern Allegheny Plateau,nonstructural_panels,0.0063361008 +Northern Allegheny Plateau,misc,0.04117986045 +Northern Allegheny Plateau,paper,0.0746490717 +Northern Allegheny Plateau,slash,0.25 +Northern Allegheny Plateau,residue,0.3 +Northern Atlantic Coastal Plain,softwood_lumber,0.27843246585 +Northern Atlantic Coastal Plain,hardwood_lumber,0.07373979855 +Northern Atlantic Coastal Plain,plywood,0.0372770307 +Northern Atlantic Coastal Plain,osb,0.02926461645 +Northern Atlantic Coastal Plain,nonstructural_panels,0.01457681625 +Northern Atlantic Coastal Plain,misc,0.001027062 +Northern Atlantic Coastal Plain,paper,0.0156822102 +Northern Atlantic Coastal Plain,slash,0.25 +Northern Atlantic Coastal Plain,residue,0.3 +Northern California Coast,softwood_lumber,0.436801863468959 +Northern California Coast,hardwood_lumber,9.689984997093e-06 +Northern California Coast,plywood,0.00843381764746986 +Northern California Coast,osb,0 +Northern California Coast,nonstructural_panels,0.00109947869967016 +Northern California Coast,misc,0.000426518099872045 +Northern California Coast,paper,0.00322863209903141 +Northern California Coast,slash,0.25 +Northern California Coast,residue,0.3 +Northern Great Plains,softwood_lumber,0.408875138058875 +Northern Great Plains,hardwood_lumber,0 +Northern Great Plains,plywood,0.000660784500660785 +Northern Great Plains,osb,0.000270274500270275 +Northern Great Plains,nonstructural_panels,6.44098500644099e-05 +Northern Great Plains,misc,0.00122118390122118 +Northern Great Plains,paper,0.0389082091889082 +Northern Great Plains,slash,0.25 +Northern Great Plains,residue,0.3 +Northern Rocky Mountains,softwood_lumber,0.314362909318564 +Northern Rocky Mountains,hardwood_lumber,3.59370449964063e-05 +Northern Rocky Mountains,plywood,0.0751887557924811 +Northern Rocky Mountains,osb,0 +Northern Rocky Mountains,nonstructural_panels,0.000867785849913221 +Northern Rocky Mountains,misc,0.0130813420486919 +Northern Rocky Mountains,paper,0.0464632699453537 +Northern Rocky Mountains,slash,0.25 +Northern Rocky Mountains,residue,0.3 +Northwest Cascades,softwood_lumber,0.3389680629 +Northwest Cascades,hardwood_lumber,0.01917757125 +Northwest Cascades,plywood,0.05126121135 +Northwest Cascades,osb,0 +Northwest Cascades,nonstructural_panels,0.0005708835 +Northwest Cascades,misc,0.0023753628 +Northwest Cascades,paper,0.0376469082 +Northwest Cascades,slash,0.25 +Northwest Cascades,residue,0.3 +Northwestern Basin and Range,softwood_lumber,0.3444365169 +Northwestern Basin and Range,hardwood_lumber,0 +Northwestern Basin and Range,plywood,0.10381681935 +Northwestern Basin and Range,osb,0 +Northwestern Basin and Range,nonstructural_panels,0.00014240745 +Northwestern Basin and Range,misc,0.0016042563 +Northwestern Basin and Range,paper,0 +Northwestern Basin and Range,slash,0.25 +Northwestern Basin and Range,residue,0.3 +Okanogan Highland,softwood_lumber,0.371224928328775 +Okanogan Highland,hardwood_lumber,0.0136786958863213 +Okanogan Highland,plywood,0.00756707264243293 +Okanogan Highland,osb,0 +Okanogan Highland,nonstructural_panels,0.000878500799121499 +Okanogan Highland,misc,0.0108732905891267 +Okanogan Highland,paper,0.0457775117542225 +Okanogan Highland,slash,0.25 +Okanogan Highland,residue,0.3 +Oregon and Washington Coast,softwood_lumber,0.327257031272743 +Oregon and Washington Coast,hardwood_lumber,0.0215765563284234 +Oregon and Washington Coast,plywood,0.0559685942440314 +Oregon and Washington Coast,osb,0 +Oregon and Washington Coast,nonstructural_panels,0.00336548024663452 +Oregon and Washington Coast,misc,0.00797621264202379 +Oregon and Washington Coast,paper,0.0338561252661439 +Oregon and Washington Coast,slash,0.25 +Oregon and Washington Coast,residue,0.3 +Ozark Broadleaf Forest-Meadow Boston Mountains,softwood_lumber,0.213635638563636 +Ozark Broadleaf Forest-Meadow Boston Mountains,hardwood_lumber,0.0572745506072746 +Ozark Broadleaf Forest-Meadow Boston Mountains,plywood,0.0524378448524378 +Ozark Broadleaf Forest-Meadow Boston Mountains,osb,0 +Ozark Broadleaf Forest-Meadow Boston Mountains,nonstructural_panels,0.00241004925241005 +Ozark Broadleaf Forest-Meadow Boston Mountains,misc,0.0053548029053548 +Ozark Broadleaf Forest-Meadow Boston Mountains,paper,0.118887113818887 +Ozark Broadleaf Forest-Meadow Boston Mountains,slash,0.25 +Ozark Broadleaf Forest-Meadow Boston Mountains,residue,0.3 +Prairie Parkland Central Till Plains & Grand Prairies,softwood_lumber,0.000255369600204296 +Prairie Parkland Central Till Plains & Grand Prairies,hardwood_lumber,0.403094685922476 +Prairie Parkland Central Till Plains & Grand Prairies,plywood,1.05953400084763e-05 +Prairie Parkland Central Till Plains & Grand Prairies,osb,0 +Prairie Parkland Central Till Plains & Grand Prairies,nonstructural_panels,0.0120029796096024 +Prairie Parkland Central Till Plains & Grand Prairies,misc,0.0299676226739741 +Prairie Parkland Central Till Plains & Grand Prairies,paper,0.004668746853735 +Prairie Parkland Central Till Plains & Grand Prairies,slash,0.25 +Prairie Parkland Central Till Plains & Grand Prairies,residue,0.3 +Prairie Parkland North Central Plains,softwood_lumber,0.001951443 +Prairie Parkland North Central Plains,hardwood_lumber,0.42540796845 +Prairie Parkland North Central Plains,plywood,0 +Prairie Parkland North Central Plains,osb,0 +Prairie Parkland North Central Plains,nonstructural_panels,0.0206977419 +Prairie Parkland North Central Plains,misc,0.00194284665 +Prairie Parkland North Central Plains,paper,0 +Prairie Parkland North Central Plains,slash,0.25 +Prairie Parkland North Central Plains,residue,0.3 +Prairie Parkland Red River Valley,softwood_lumber,0.0005820849 +Prairie Parkland Red River Valley,hardwood_lumber,0.02467178505 +Prairie Parkland Red River Valley,plywood,0 +Prairie Parkland Red River Valley,osb,0.39160456695 +Prairie Parkland Red River Valley,nonstructural_panels,0.0242121879 +Prairie Parkland Red River Valley,misc,0.0089293752 +Prairie Parkland Red River Valley,paper,0 +Prairie Parkland Red River Valley,slash,0.25 +Prairie Parkland Red River Valley,residue,0.3 +Puget Trough,softwood_lumber,0.3900373857 +Puget Trough,hardwood_lumber,0.02716020855 +Puget Trough,plywood,0.0077050332 +Puget Trough,osb,0 +Puget Trough,nonstructural_panels,0.0010063242 +Puget Trough,misc,0.00061052535 +Puget Trough,paper,0.023480523 +Puget Trough,slash,0.25 +Puget Trough,residue,0.3 +SE Middle Mixed Forest Arkansas Valley,softwood_lumber,0.1634226165 +SE Middle Mixed Forest Arkansas Valley,hardwood_lumber,0.0918761679 +SE Middle Mixed Forest Arkansas Valley,plywood,0.0269090127 +SE Middle Mixed Forest Arkansas Valley,osb,0 +SE Middle Mixed Forest Arkansas Valley,nonstructural_panels,0.00890563095 +SE Middle Mixed Forest Arkansas Valley,misc,0.00185254425 +SE Middle Mixed Forest Arkansas Valley,paper,0.1570340277 +SE Middle Mixed Forest Arkansas Valley,slash,0.25 +SE Middle Mixed Forest Arkansas Valley,residue,0.3 +SE Middle Mixed Forest Cumberland Plateau & Valley,softwood_lumber,0.141460640241461 +SE Middle Mixed Forest Cumberland Plateau & Valley,hardwood_lumber,0.0457818030457818 +SE Middle Mixed Forest Cumberland Plateau & Valley,plywood,0.0267318414267318 +SE Middle Mixed Forest Cumberland Plateau & Valley,osb,0.0033567975033568 +SE Middle Mixed Forest Cumberland Plateau & Valley,nonstructural_panels,0.00875917215875917 +SE Middle Mixed Forest Cumberland Plateau & Valley,misc,0.0436757080936757 +SE Middle Mixed Forest Cumberland Plateau & Valley,paper,0.180234037530234 +SE Middle Mixed Forest Cumberland Plateau & Valley,slash,0.25 +SE Middle Mixed Forest Cumberland Plateau & Valley,residue,0.3 +SE Middle Mixed Forest Piedmont,softwood_lumber,0.199000651249001 +SE Middle Mixed Forest Piedmont,hardwood_lumber,0.0762382337262382 +SE Middle Mixed Forest Piedmont,plywood,0.0411161472411162 +SE Middle Mixed Forest Piedmont,osb,0.0461993517461994 +SE Middle Mixed Forest Piedmont,nonstructural_panels,0.0117773149617773 +SE Middle Mixed Forest Piedmont,misc,0.00549437580549438 +SE Middle Mixed Forest Piedmont,paper,0.0701739252701739 +SE Middle Mixed Forest Piedmont,slash,0.25 +SE Middle Mixed Forest Piedmont,residue,0.3 +SE Middle Mixed Forest Western Mid Coastal Plains,softwood_lumber,0.188442500211557 +SE Middle Mixed Forest Western Mid Coastal Plains,hardwood_lumber,0.0322904906677095 +SE Middle Mixed Forest Western Mid Coastal Plains,plywood,0.098392979601607 +SE Middle Mixed Forest Western Mid Coastal Plains,osb,0.0090547946909452 +SE Middle Mixed Forest Western Mid Coastal Plains,nonstructural_panels,0.000912277349087723 +SE Middle Mixed Forest Western Mid Coastal Plains,misc,0.00211382234788618 +SE Middle Mixed Forest Western Mid Coastal Plains,paper,0.118793135131207 +SE Middle Mixed Forest Western Mid Coastal Plains,slash,0.25 +SE Middle Mixed Forest Western Mid Coastal Plains,residue,0.3 +Sierra Nevada,softwood_lumber,0.4382598735 +Sierra Nevada,hardwood_lumber,0 +Sierra Nevada,plywood,0.01127522205 +Sierra Nevada,osb,0 +Sierra Nevada,nonstructural_panels,0 +Sierra Nevada,misc,0.00046490445 +Sierra Nevada,paper,0 +Sierra Nevada,slash,0.25 +Sierra Nevada,residue,0.3 +Sierra Nevada Foothills,softwood_lumber,0.4469250825 +Sierra Nevada Foothills,hardwood_lumber,0 +Sierra Nevada Foothills,plywood,0.00163447425 +Sierra Nevada Foothills,osb,0 +Sierra Nevada Foothills,nonstructural_panels,0 +Sierra Nevada Foothills,misc,0.00082778895 +Sierra Nevada Foothills,paper,0.0006126543 +Sierra Nevada Foothills,slash,0.25 +Sierra Nevada Foothills,residue,0.3 +Snake River Basin,softwood_lumber,0.4340707965 +Snake River Basin,hardwood_lumber,0 +Snake River Basin,plywood,0 +Snake River Basin,osb,0 +Snake River Basin,nonstructural_panels,0 +Snake River Basin,misc,0.0159292035 +Snake River Basin,paper,0 +Snake River Basin,slash,0.25 +Snake River Basin,residue,0.3 +Southern Allegheny Plateau,softwood_lumber,0.0055617552 +Southern Allegheny Plateau,hardwood_lumber,0.35048581785 +Southern Allegheny Plateau,plywood,0 +Southern Allegheny Plateau,osb,0.0285448086 +Southern Allegheny Plateau,nonstructural_panels,0.01961282115 +Southern Allegheny Plateau,misc,0.0088287147 +Southern Allegheny Plateau,paper,0.0369660825 +Southern Allegheny Plateau,slash,0.25 +Southern Allegheny Plateau,residue,0.3 +Southern Cascades,softwood_lumber,0.31275493695 +Southern Cascades,hardwood_lumber,0.0029535705 +Southern Cascades,plywood,0.1246262274 +Southern Cascades,osb,0 +Southern Cascades,nonstructural_panels,0.00042534405 +Southern Cascades,misc,0.00248908185 +Southern Cascades,paper,0.00675083925 +Southern Cascades,slash,0.25 +Southern Cascades,residue,0.3 +Southern Rockies Front Range,softwood_lumber,0.39100336605 +Southern Rockies Front Range,hardwood_lumber,0.01000863 +Southern Rockies Front Range,plywood,0 +Southern Rockies Front Range,osb,0 +Southern Rockies Front Range,nonstructural_panels,0.0024164181 +Southern Rockies Front Range,misc,0.04657158585 +Southern Rockies Front Range,paper,0 +Southern Rockies Front Range,slash,0.25 +Southern Rockies Front Range,residue,0.3 +Southern Rocky Mountains,softwood_lumber,0.385148864185149 +Southern Rocky Mountains,hardwood_lumber,0.00511427475511428 +Southern Rocky Mountains,plywood,0 +Southern Rocky Mountains,osb,0.00157637880157638 +Southern Rocky Mountains,nonstructural_panels,0.003776003553776 +Southern Rocky Mountains,misc,0.0543844787043845 +Southern Rocky Mountains,paper,0 +Southern Rocky Mountains,slash,0.25 +Southern Rocky Mountains,residue,0.3 +Southwest High Plains,softwood_lumber,0.38303352405 +Southwest High Plains,hardwood_lumber,0 +Southwest High Plains,plywood,0 +Southwest High Plains,osb,0 +Southwest High Plains,nonstructural_panels,0.00669664755 +Southwest High Plains,misc,0.0602698284 +Southwest High Plains,paper,0 +Southwest High Plains,slash,0.25 +Southwest High Plains,residue,0.3 +Southwestern Rocky Mountains,softwood_lumber,0.2846554938 +Southwestern Rocky Mountains,hardwood_lumber,0.0315593208 +Southwestern Rocky Mountains,plywood,0 +Southwestern Rocky Mountains,osb,0.0868368726 +Southwestern Rocky Mountains,nonstructural_panels,0.0083793591 +Southwestern Rocky Mountains,misc,0.0385689537 +Southwestern Rocky Mountains,paper,0 +Southwestern Rocky Mountains,slash,0.25 +Southwestern Rocky Mountains,residue,0.3 +St Lawrence & Mohawk Valley,softwood_lumber,0.08700941745 +St Lawrence & Mohawk Valley,hardwood_lumber,0.1006703253 +St Lawrence & Mohawk Valley,plywood,0.00204154245 +St Lawrence & Mohawk Valley,osb,0.0002977407 +St Lawrence & Mohawk Valley,nonstructural_panels,0.00365235165 +St Lawrence & Mohawk Valley,misc,0.00257711895 +St Lawrence & Mohawk Valley,paper,0.2537515035 +St Lawrence & Mohawk Valley,slash,0.25 +St Lawrence & Mohawk Valley,residue,0.3 +Subtropical Prairie Parkland Gulf & Oak Prairie,softwood_lumber,0.203230043939031 +Subtropical Prairie Parkland Gulf & Oak Prairie,hardwood_lumber,0.0730931179280721 +Subtropical Prairie Parkland Gulf & Oak Prairie,plywood,0.172246622348326 +Subtropical Prairie Parkland Gulf & Oak Prairie,osb,0 +Subtropical Prairie Parkland Gulf & Oak Prairie,nonstructural_panels,1.94693849941592e-05 +Subtropical Prairie Parkland Gulf & Oak Prairie,misc,0.00141074639957678 +Subtropical Prairie Parkland Gulf & Oak Prairie,paper,0 +Subtropical Prairie Parkland Gulf & Oak Prairie,slash,0.25 +Subtropical Prairie Parkland Gulf & Oak Prairie,residue,0.3 +Utah Mountains,softwood_lumber,0.2494918845 +Utah Mountains,hardwood_lumber,0.0182910654 +Utah Mountains,plywood,0 +Utah Mountains,osb,0.1060195338 +Utah Mountains,nonstructural_panels,0.00944373645 +Utah Mountains,misc,0.06675377985 +Utah Mountains,paper,0 +Utah Mountains,slash,0.25 +Utah Mountains,residue,0.3 +Wasatch Range,softwood_lumber,0.216361305 +Wasatch Range,hardwood_lumber,0.05212984095 +Wasatch Range,plywood,0 +Wasatch Range,osb,0.1023221088 +Wasatch Range,nonstructural_panels,0.0086142762 +Wasatch Range,misc,0.07057246905 +Wasatch Range,paper,0 +Wasatch Range,slash,0.25 +Wasatch Range,residue,0.3 +Western Allegheny Plateau,softwood_lumber,0.01744116795 +Western Allegheny Plateau,hardwood_lumber,0.39798899685 +Western Allegheny Plateau,plywood,0 +Western Allegheny Plateau,osb,0 +Western Allegheny Plateau,nonstructural_panels,0.0011288997 +Western Allegheny Plateau,misc,0.00135901395 +Western Allegheny Plateau,paper,0.03208192155 +Western Allegheny Plateau,slash,0.25 +Western Allegheny Plateau,residue,0.3 +Western Basin and Range,softwood_lumber,0.41625 +Western Basin and Range,hardwood_lumber,0 +Western Basin and Range,plywood,0 +Western Basin and Range,osb,0 +Western Basin and Range,nonstructural_panels,0.003375 +Western Basin and Range,misc,0.030375 +Western Basin and Range,paper,0 +Western Basin and Range,slash,0.25 +Western Basin and Range,residue,0.3 +Western Great Plains,softwood_lumber,0.404255223045745 +Western Great Plains,hardwood_lumber,0.0014209019985791 +Western Great Plains,plywood,0 +Western Great Plains,osb,0.0050513035449487 +Western Great Plains,nonstructural_panels,0.00320792984679207 +Western Great Plains,misc,0.0335916620664083 +Western Great Plains,paper,0.00247297949752702 +Western Great Plains,slash,0.25 +Western Great Plains,residue,0.3 +White Mountains,softwood_lumber,0.159817993665982 +White Mountains,hardwood_lumber,0.0611367048061137 +White Mountains,plywood,0 +White Mountains,osb,0 +White Mountains,nonstructural_panels,1.0840455001084e-05 +White Mountains,misc,9.75640500097564e-05 +White Mountains,paper,0.228936897022894 +White Mountains,slash,0.25 +White Mountains,residue,0.3 +Willamette Valley,softwood_lumber,0.33359087025 +Willamette Valley,hardwood_lumber,0.01333188225 +Willamette Valley,plywood,0.0609045156 +Willamette Valley,osb,0 +Willamette Valley,nonstructural_panels,0.0006890913 +Willamette Valley,misc,0.0017607132 +Willamette Valley,paper,0.0397229274 +Willamette Valley,slash,0.25 +Willamette Valley,residue,0.3 +Yellowstone / Bighorn,softwood_lumber,0.3992300622 +Yellowstone / Bighorn,hardwood_lumber,0 +Yellowstone / Bighorn,plywood,0.0105000687 +Yellowstone / Bighorn,osb,0 +Yellowstone / Bighorn,nonstructural_panels,0.0004678002 +Yellowstone / Bighorn,misc,0.0339689412 +Yellowstone / Bighorn,paper,0.0058331277 +Yellowstone / Bighorn,slash,0.25 +Yellowstone / Bighorn,residue,0.3 diff --git a/data/package_data/supersection_multipliers.csv b/data/package_data/supersection_multipliers.csv new file mode 100644 index 0000000..b929693 --- /dev/null +++ b/data/package_data/supersection_multipliers.csv @@ -0,0 +1,89 @@ +supersection,baseline_emission_multipliers,project_emission_multipliers +Allegheny & North Cumberland Mountains,0.639538479861092,0.62035232546526 +Adirondacks & Green Mountains,0.735942957632152,0.713864668903187 +Nevada Mountains,0.61248259841495,0.594108120462502 +Aroostook Hills and Lowlands,0.732953188575714,0.710964592918442 +Atlantic Coastal Plain & Flatwoods,0.628448431727306,0.609594978775487 +Bitterroot Mountains,0.617647666078975,0.599118236096606 +Blue Mountains,0.630812892833546,0.61188850604854 +Blue Ridge Mountains,0.622790202291277,0.604106496222539 +Booneville Basin,0.618327167050235,0.599777352038728 +California Central Valley Basin,0.613840370917495,0.59542515978997 +Catskill Mountains,0.669944143504584,0.649845819199447 +Central California Coast,0.614219174122463,0.595792598898789 +Central Great Plains,0.625197105634119,0.606441192465095 +MW Broadleaf Forest Central Till Plains,0.62875981112848,0.609897016794625 +Central Interior Broadleaf Forest Eastern Low,0.63439995439252,0.615367955760744 +Central Interior Broadleaf Forest Ozark Highlands,0.632857855574524,0.613872119907289 +Central Interior Broadleaf Forest Western Low,0.64974993259676,0.630257434618857 +Central Maine & Fundy Coast & Ebayment,0.759787530016626,0.736993904116127 +Central New Mexico,0.61399542027512,0.595575557666866 +Chihuahuan Semi-Desert,0.61248259841495,0.594108120462502 +Colorado Plateau,0.607440332615641,0.589217122637172 +Colorado River Canyon Lands,0.612110935437513,0.593747607374388 +Columbia Basin,0.62715012775161,0.608335623919062 +Cross Timbers and Prairie,0.624743238406429,0.606000941254236 +Eastern Broadleaf Forest Cumberland Plateau,0.641427708778515,0.622184877515159 +Eastern Cascades,0.635649679467437,0.616580189083414 +Eastern Great Plains,0.628317406431352,0.609467884238411 +Erie & Ontario Lake Plain,0.652369969826515,0.63279887073172 +Florida Coastal Plains Central Highlands,0.692104237824847,0.671341110690102 +Florida Everglades,0.785009135996237,0.76145886191635 +Great Divide Basin,0.62315689629664,0.604462189407741 +Great Plains,0.614205416304304,0.595779253815175 +Gulf Coastal Plain,0.672558710448317,0.652381949134868 +Idaho Batholith,0.612675648557827,0.594295379101093 +Laurentian Mixed Forest Arrowhead,0.600001376000964,0.582001334720935 +Laurentian Mixed Forest Green Bay Lobe,0.622803693265198,0.604119582467242 +Laurentian Mixed Forest MN & Ontario Lake Plain,0.606770980852902,0.588567851427315 +Laurentian Mixed Forest NLP/EUP,0.611265987298006,0.592928007679066 +Laurentian Mixed Forest Northern Highlands,0.612869546673949,0.594483460273731 +Laurentian Mixed Forest Southern Superior,0.616054871883545,0.597573225727038 +Laurentian Mixed Forest Western Superior & Lake,0.603811601749936,0.585697253697438 +Lower New England - Northern Appalachia,0.695435492246255,0.674572427478867 +Modoc Plateau,0.612914673271933,0.594527233073775 +Montana Rocky Mountains,0.6340363221116,0.615015232448251 +MS River Delta,0.672103179471795,0.651940084087641 +MS River Mixed Forest,0.619419609741703,0.600837021449452 +MW Broadleaf Forest Central Till Plains,0.628096552914226,0.6092536563268 +MW Broadleaf Forest Driftless & Morainal,0.62226838445759,0.603600332923862 +MW Broadleaf Forest Great Lakes Morainal & Sands,0.621382119970493,0.602740656371378 +MW Broadleaf Forest SC Great Lakes & Lake Whittles,0.627370917309546,0.60854978979026 +North Central Great Plains,0.628332978550114,0.609482989193611 +Northern Allegheny Plateau,0.662116108534066,0.642252625278044 +Northern Atlantic Coastal Plain,0.622349070934209,0.603678598806182 +Northern California Coast,0.614219174122463,0.595792598898789 +Northern Great Plains,0.633050490075919,0.614058975373642 +Northern Rocky Mountains,0.637451670493073,0.618328120378281 +Northwest Cascades,0.633059871685341,0.614068075534781 +Northwestern Basin and Range,0.612421665954777,0.594049015976134 +Okanogan Highland,0.637560109333139,0.618433306053145 +Oregon and Washington Coast,0.631427374756335,0.612484553513645 +Ozark Broadleaf Forest-Meadow Boston Mountains,0.677414165147162,0.657091740192747 +Prairie Parkland Central Till Plains & Grand,0.630454116990167,0.611540493480462 +Prairie Parkland North Central Plains,0.627851161197557,0.609015626361631 +Prairie Parkland Red River Valley,0.596692825168549,0.578792040413492 +Puget Trough,0.625856114183304,0.607080430757805 +SE Middle Mixed Forest Arkansas Valley,0.698791805827871,0.677828051653034 +SE Middle Mixed Forest Cumberland Plateau & Valley,0.710949198690076,0.689620722729373 +SE Middle Mixed Forest Piedmont,0.650537021667961,0.631020911017922 +SE Middle Mixed Forest Western Mid Coastal Plains,0.675866906414711,0.655590899222269 +Sierra Nevada,0.612487244874724,0.594112627528482 +Sierra Nevada Foothills,0.612836970597757,0.594451861479825 +Snake River Basin,0.613119916553331,0.594726319056731 +Southern Allegheny Plateau,0.643718568399854,0.624407011347858 +Southern Cascades,0.616102941162097,0.597619852927234 +Southern Rockies Front Range,0.614751239089136,0.596308701916462 +Southern Rocky Mountains,0.614854899561271,0.596409252574433 +Southwest High Plains,0.615052187546641,0.596600621920242 +Southwestern Rocky Mountains,0.611424034188557,0.5930813131629 +St Lawrence & Mohawk Valley,0.750054396701137,0.727552764800103 +Subtropical Prairie Parkland Gulf & Oak Prairie,0.61486955681319,0.596423470108794 +Utah Mountains,0.611254149108283,0.592916524635035 +Wasatch Range,0.612730694154068,0.594348773329446 +Western Allegheny Plateau,0.643339879024128,0.624039682653404 +Western Basin and Range,0.613777628981458,0.595364300112014 +Western Great Plains,0.615029986939042,0.596579087330871 +White Mountains,0.73541572089611,0.713353249269226 +Willamette Valley,0.633918182072052,0.614900636609891 +Yellowstone / Bighorn,0.616917665763159,0.598410135790264