From 9fe0165e4671179a1e5c7a619e2590b01e69226f Mon Sep 17 00:00:00 2001 From: Chris Black Date: Mon, 23 Feb 2026 01:11:34 -0800 Subject: [PATCH 01/75] first draft of fn to parse restart dates out of event files --- modules/data.land/NAMESPACE | 1 + .../data.land/R/events_to_crop_cycle_starts.R | 52 +++++++++++++++++++ .../man/events_to_crop_cycle_starts.Rd | 44 ++++++++++++++++ .../test-events_to_crop_cycle_starts.R | 50 ++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100644 modules/data.land/R/events_to_crop_cycle_starts.R create mode 100644 modules/data.land/man/events_to_crop_cycle_starts.Rd create mode 100644 modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R diff --git a/modules/data.land/NAMESPACE b/modules/data.land/NAMESPACE index 58bf6b196d8..a3dec8b5a33 100644 --- a/modules/data.land/NAMESPACE +++ b/modules/data.land/NAMESPACE @@ -18,6 +18,7 @@ export(download_package_rm) export(ens_veg_module) export(eto_to_etc) export(eto_to_etc_bism) +export(events_to_crop_cycle_starts) export(extract.stringCode) export(extract_FIA) export(extract_NEON_veg) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R new file mode 100644 index 00000000000..3d766d7b637 --- /dev/null +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -0,0 +1,52 @@ +#' Extract the first planting date of each crop cycle +#' +#' Reads a (JSON) management events file and finds the planting events at which +#' the site changes from from one crop to another, ignoring repeat plantings of +#' the same crop. +#' These are the dates when single-PFT models will need to restart to update +#' their crop parameterization. +#' +#' TODO: For now this function requires each planting event to specify a +#' `crop` attribute, but note that this is not enforced by v0.1 of the PEcAn +#' events schema. The schema instead allows each site object to specify a +#' site-level `PFT` attribute that is implied constant over time. +#' As I write this I think the schema may need to change to require a crop or +#' PFT identifier be specified for every planting event. +#' +#' @param event_json path to an `events.json` file +#' +#' @return data frame with columns `site_id`, `date`, `crop`, +#' with one row per detected crop cycle. +#' @export +#' @author Chris Black +#' +#' @examples +#' # Not currently runnable because file does not list crop in planting events. +#' # Revisit after deciding if schema update is warranted. +#' \dontrun{ +#' evts <- system.file( +#' "events_fixtures/events_site1_site2.json", +#' package = "PEcAn.data.land" +#' ) +#' events_to_crop_cycle_starts(evts) +#' } +events_to_crop_cycle_starts <- function(event_json) { + jsonlite::read_json(event_json) |> + dplyr::bind_rows() |> + dplyr::mutate(events = purrr::map(.data$events, as.data.frame)) |> + tidyr::unnest(.data$events) |> + dplyr::mutate(date = as.Date(.data$date)) |> + find_crop_changes() +} + +# helper for events_to_crop_cyle_starts, +# mostly to ease unit testing +find_crop_changes <- function(event_df) { + event_df |> + dplyr::filter(.data$event_type == "planting") |> + dplyr::arrange(.data$site_id, .data$date) |> + dplyr::mutate(crop_cycle_id = dplyr::consecutive_id(.data$site_id, .data$crop)) |> + dplyr::group_by(.data$site_id, .data$crop_cycle_id) |> + dplyr::slice_min(.data$date) |> + dplyr::select("site_id", "date", "crop") +} diff --git a/modules/data.land/man/events_to_crop_cycle_starts.Rd b/modules/data.land/man/events_to_crop_cycle_starts.Rd new file mode 100644 index 00000000000..c3677bf0cf6 --- /dev/null +++ b/modules/data.land/man/events_to_crop_cycle_starts.Rd @@ -0,0 +1,44 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/events_to_crop_cycle_starts.R +\name{events_to_crop_cycle_starts} +\alias{events_to_crop_cycle_starts} +\title{Extract the first planting date of each crop cycle} +\usage{ +events_to_crop_cycle_starts(event_json) +} +\arguments{ +\item{event_json}{path to an `events.json` file} +} +\value{ +data frame with columns `site_id`, `date`, `crop`, + with one row per detected crop cycle. +} +\description{ +Reads a (JSON) management events file and finds the planting events at which +the site changes from from one crop to another, ignoring repeat plantings of +the same crop. +These are the dates when single-PFT models will need to restart to update +their crop parameterization. +} +\details{ +TODO: For now this function requires each planting event to specify a +`crop` attribute, but note that this is not enforced by v0.1 of the PEcAn +events schema. The schema instead allows each site object to specify a +site-level `PFT` attribute that is implied constant over time. +As I write this I think the schema may need to change to require a crop or +PFT identifier be specified for every planting event. +} +\examples{ +# Not currently runnable because file does not list crop in planting events. +# Revisit after deciding if schema update is warranted. +\dontrun{ +evts <- system.file( + "events_fixtures/events_site1_site2.json", + package = "PEcAn.data.land" +) +events_to_crop_cycle_starts(evts) +} +} +\author{ +Chris Black +} diff --git a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R new file mode 100644 index 00000000000..e075bfc6bde --- /dev/null +++ b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R @@ -0,0 +1,50 @@ +test_that("non-planting events are ignored", { + dat <- dplyr::tribble( + ~site_id, ~date, ~event_type, ~crop, + "a", "2016-01-01", "planting", "almond", + "a", "2016-05-01", "irrigation", NA_character_, + "a", "2017-01-01", "planting", "almond", + "a", "2017-05-15", "fertilization", NA_character_, + ) + res <- find_crop_changes(dat) + expect_equal(nrow(res), 1) + expect_equal(res$date, "2016-01-01") + expect_equal(res, find_crop_changes(dat[-c(2, 4), ])) +}) + +test_that("nonconsecutive runs of the same crop counted separately", { + dat <- dplyr::tribble( + ~site_id, ~date, ~event_type, ~crop, + "b", "2016-03-01", "planting", "tomato", + "b", "2017-03-05", "planting", "tomato", + "b", "2018-04-15", "planting", "potato", + "b", "2018-08-01", "planting", "tomato", + ) + res <- find_crop_changes(dat) + expect_equal(nrow(res), 3) + expect_equal(res$date, dat$date[c(1, 3, 4)]) +}) + +test_that("sites are counted separately", { + dat <- dplyr::tribble( + ~site_id, ~date, ~event_type, ~crop, + "a", "2016-03-01", "planting", "grape", + "b", "2016-03-01", "planting", "grape", + "c", "2023-03-01", "planting", "grape", + ) + res <- find_crop_changes(dat) + expect_equal(nrow(res), 3) + expect_equal(res$date, dat$date) + expect_equal(res$site_id, dat$site_id) +}) + +test_that("reads from JSON", { + skip("needs schema update") + path <- system.file( + "events_fixtures/events_site1.json", + package = "PEcAn.data.land" + ) + res <- events_to_crop_cycle_starts(path) + expect_equal(res$date, "2022-02-19") + expect_equal(res$crop, "EX1") +}) From 4708176828f580897879abe0ff92b6dd5cbef721 Mon Sep 17 00:00:00 2001 From: Chris Black Date: Fri, 27 Feb 2026 12:12:49 -0800 Subject: [PATCH 02/75] Update modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R --- .../data.land/tests/testthat/test-events_to_crop_cycle_starts.R | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R index e075bfc6bde..19c92de805b 100644 --- a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R +++ b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R @@ -39,7 +39,6 @@ test_that("sites are counted separately", { }) test_that("reads from JSON", { - skip("needs schema update") path <- system.file( "events_fixtures/events_site1.json", package = "PEcAn.data.land" From d8df7d02913b63303470ff51f3d8266192dcf2b5 Mon Sep 17 00:00:00 2001 From: Chris Black Date: Wed, 25 Feb 2026 02:52:33 -0800 Subject: [PATCH 03/75] require crop id in planting and harvest; add docs on event properties --- .../03_topical_pages/02_pecan_standards.Rmd | 80 ++++++++++++++++++ modules/data.land/R/validate_events.R | 11 ++- .../inst/events_fixtures/events_site1.json | 6 +- .../events_fixtures/events_site1_site2.json | 10 +-- .../data.land/inst/events_schema_v0.1.1.json | 81 +++++++++++++++++++ modules/data.land/man/validate_events_json.Rd | 6 +- 6 files changed, 182 insertions(+), 12 deletions(-) create mode 100644 modules/data.land/inst/events_schema_v0.1.1.json diff --git a/book_source/03_topical_pages/02_pecan_standards.Rmd b/book_source/03_topical_pages/02_pecan_standards.Rmd index b4e81427cb7..ad1bd488082 100644 --- a/book_source/03_topical_pages/02_pecan_standards.Rmd +++ b/book_source/03_topical_pages/02_pecan_standards.Rmd @@ -97,6 +97,86 @@ See the [Soil Data] section on more into on creating a standard soil data file. See the [Vegetation Data] section on more info on creating a standard vegetation data file +### Management events + +Externally imposed changes in system state, such as planting and harvest or tillage of crop systems, are represented as a sequence of "events" that are each defined by a date, event type, and one or more event-specific properties that describe the kind and magnitude of change imposed. PEcAn passes the same representation of a given event to all models, but interpretation of all properties -- including dates and event types -- is necessarily model-specific and could include ignoring an event entirely. + +Event types are defined by the PEcAn events spec, which is currently provided as a JSON schema file bundled into the PEcAn.data.land package (TODO consider exposing this in a more linkable format?). Valid events files are stored as JSON, with each events file containing an array of sites. Each site contains an id, a schema version, and an array of events, usually recorded in date order. Each event has a date, an event type, and one or more values from the required and optional properties that are documented below for each event type. Any event is also allowed to contain arbitrary additional properties not mentioned in the spec; PEcAn will pass these on to models with no further validation. + +The currently supported event types are: planting, harvest, irrigation, fertilization, and tillage. Each of these is described briefly below. You will note that all of them are focused on agronomic management of croplands; future work will extend this framework to include disturbance of unmanaged systems such as fire, inundation or insect outbreaks. + + +#### planting + +Addition of live biomass that is expected to grow according to the model's plant growth rules. The current spec expects a "planting" to be a transplantation of leafed-out seedlings; models which represent planting as addition of unsprouted seeds might choose to adjust the date to account for germination time. + +Required properties: + +* `crop_code`: a machine-readable identifier that specifies what type of plant was added. Should preferably be short and use only characters that are safe in filenames. +* `leaf_c_kg_m2`: Amount of leaf biomass added. + +Optional properties: + +* `wood_c_kg_m2`: Biomass added as aboveground stems. Assumed zero if not specified. +* `fine_root_c_kg_m2`: Biomass added to belowground roots. Assumed zero if not specified. +* `cultivar`: Identifier for finer-grainer plant type identifiers that will be meaningful to models with detailed growth parameterizations but likely ignored by PFT-based models. +* `crop_display`: A human-readable name for the added plant type. + +#### harvest + +Removal of biomass from the living pool, either by transferring it to dead (litter) biomass or by removing it from the system. Specified as a fraction of live biomass. + +Required properties: +* `crop_code`: A machine_readable identifier that specifies what type of plant was harvested. +* `frac_above_removed_0to1`: Fraction of existing aboveground biomass removed from the system. + +Optional properties: + +* `frac_below_removed_0to1`: Fraction of existing beloweground biomass removed from the system. Assumed zero if not specified. +* `frac_above_to_litter_0to1`, `frac_below_to_litter_0to1`: fraction of existing above- or below-ground live biomass converted to dead litter. Assumed zero if not specified. +* `cultivar`: Identifier for finer-grainer plant type identifiers that will be meaningful to models with detailed growth parameterizations but likely ignored by PFT-based models. +* `crop_display`: A human-readable name for the added plant type. + +#### irrigation + +Addition of water to the system beyond that specified as precipitation in met files. Note that only the total amount of water is specified and not the application rate; assumptions about the duration of the event will be model-specific. + +Required properties: + +* `method`: How water was applied. One of "soil", "canopy", "flood". +* `amount_mm`: Amount of water applied. + +Optional properties: + +* `immed_evap_frac_0to1`: fraction of the applied water that evaporates before reaching the soil water pool. + +#### fertilization + +Addition of exogenous nutrients, including non-crop carbon (e.g. manure, compost). Nutrients other than N and C are not currently included but may be added in future schemas. + +Required properties: + +* at least one of `org_c_kg_m2`, `nh4_n_kg_m2`, `no3_n_kg_m2`, which are respectively the amount of organic C, ammonium N, and nitrate N added. + +Optional properties: + +* any of `org_c_kg_m2`, `nh4_n_kg_m2`, `no3_n_kg_m2` not already counted as required. All are assumed zero if not specified. +* `org_n_kg_m2`: the amount of N added in organic compounds. Assumed zero if not specified. If specifying, you probably want to specify `org_c_kg_m2` as well but the schema does not enforce this. + +#### tillage + +Physical disturbance of the soil and litter pools. Models differ greatly in their representation of tillage effects and this spec intentionally limits its representation to a simple intensity score whose maximum should be interpreted as "the most complete possible mixing/disturbance." Whether this is sufficient detail will be re-evaluated in future revisions. + +Required properties: + +* `tillage_eff_0to1`: Relative tillage intensity, with 0 meaning no disturbance at all and 1 meaning the most complete disturbance possible. + +Optional properties: + +* `intensity_category`: string giving additional information on the type or amount of tillage performed. +* `depth_m`: Depth of soil affected by the event. + + ## Output Standards * created by `model2netcdf` functions diff --git a/modules/data.land/R/validate_events.R b/modules/data.land/R/validate_events.R index 95ebd486960..a24b9ce2201 100644 --- a/modules/data.land/R/validate_events.R +++ b/modules/data.land/R/validate_events.R @@ -1,7 +1,7 @@ #' Validate PEcAn events JSON against schema v0.1.0 #' #' Validates a PEcAn events JSON file (single-site object or an array of site -#' objects) against the bundled JSON Schema (draft 2020-12) using the AJV +#' objects) against the bundled JSON Schema using the AJV #' engine. #' #' - Logs an error and returns FALSE if the JSON file does not exist or does @@ -10,6 +10,7 @@ #' not installed, so calling code can proceed without a hard dependency. #' #' @param events_json character. Path to the JSON file to validate. +#' @param schema_version character. Version of the PEcAn events schema to validate against. #' @param verbose logical. When `TRUE`, include detailed AJV messages on error. #' #' @return Logical TRUE if valid, FALSE if invalid. @@ -22,7 +23,7 @@ #' # package = "PEcAn.data.land")) #' #' @export -validate_events_json <- function(events_json, verbose = TRUE) { +validate_events_json <- function(events_json, schema_version = "0.1.1", verbose = TRUE) { if (!file.exists(events_json)) { PEcAn.logger::logger.error(glue::glue("events_json file does not exist: {events_json}")) return(FALSE) @@ -33,7 +34,11 @@ validate_events_json <- function(events_json, verbose = TRUE) { return(NA) } - schema <- system.file("events_schema_v0.1.0.json", package = "PEcAn.data.land", mustWork = TRUE) + schema <- system.file( + paste0("events_schema_v", schema_version, ".json"), + package = "PEcAn.data.land", + mustWork = TRUE + ) ok <- jsonvalidate::json_validate(events_json, schema = schema, engine = "ajv", verbose = verbose, error = FALSE) if (isTRUE(ok)) { PEcAn.logger::logger.info(glue::glue("events_json file is valid: {events_json}")) diff --git a/modules/data.land/inst/events_fixtures/events_site1.json b/modules/data.land/inst/events_fixtures/events_site1.json index 19605953a19..d2b583e4475 100644 --- a/modules/data.land/inst/events_fixtures/events_site1.json +++ b/modules/data.land/inst/events_fixtures/events_site1.json @@ -1,6 +1,6 @@ [ { - "pecan_events_version": "0.1.0", + "pecan_events_version": "0.1.1", "site_id": "EX1", "events": [ { @@ -29,11 +29,13 @@ { "event_type": "planting", "date": "2022-02-19", - "leaf_c_kg_m2": 0.01 + "leaf_c_kg_m2": 0.01, + "crop_code": "Mo17" }, { "event_type": "harvest", "date": "2022-09-07", + "crop_code": "Mo17", "frac_above_removed_0to1": 0.1, "frac_below_removed_0to1": 0.0, "frac_above_to_litter_0to1": 0.0, diff --git a/modules/data.land/inst/events_fixtures/events_site1_site2.json b/modules/data.land/inst/events_fixtures/events_site1_site2.json index 84a2ee195d6..fb2cc151249 100644 --- a/modules/data.land/inst/events_fixtures/events_site1_site2.json +++ b/modules/data.land/inst/events_fixtures/events_site1_site2.json @@ -1,8 +1,7 @@ [ { - "pecan_events_version": "0.1.0", + "pecan_events_version": "0.1.1", "site_id": "S1", - "pft": "PFT", "events": [ { "event_type": "tillage", @@ -12,6 +11,7 @@ { "event_type": "harvest", "date": "2022-09-01", + "crop_code": "wheat", "frac_above_removed_0to1": 0.2, "frac_below_removed_0to1": 0.0, "frac_above_to_litter_0to1": 0.0, @@ -20,14 +20,14 @@ ] }, { - "pecan_events_version": "0.1.0", + "pecan_events_version": "0.1.1", "site_id": "S2", - "pft": "PFT", "events": [ { "event_type": "planting", "date": "2022-03-01", - "leaf_c_kg_m2": 0.01 + "leaf_c_kg_m2": 0.01, + "crop_code": "maize" }, { "event_type": "irrigation", diff --git a/modules/data.land/inst/events_schema_v0.1.1.json b/modules/data.land/inst/events_schema_v0.1.1.json new file mode 100644 index 00000000000..71af1ccbd60 --- /dev/null +++ b/modules/data.land/inst/events_schema_v0.1.1.json @@ -0,0 +1,81 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://pecanproject.org/schema/events-mvp-0-1-1.json", + "oneOf": [ + { "$ref": "#/$defs/site" }, + { "type": "array", "items": { "$ref": "#/$defs/site" } } + ], + "$defs": { + "site": { + "type": "object", + "required": ["pecan_events_version", "site_id", "events"], + "properties": { + "pecan_events_version": { "type": "string", "const": "0.1.1" }, + "site_id": { "type": "string", "minLength": 1 }, + "ensemble_id": { "type": ["string", "null"], "minLength": 1 }, + "geometry_uri": { "type": ["string", "null"], "format": "uri" }, + "provenance": { "type": "object", "additionalProperties": true }, + "events": { + "type": "array", + "items": { + "type": "object", + "required": ["event_type", "date"], + "properties": { + "event_type": { + "type": "string", + "enum": ["planting", "harvest", "irrigation", "fertilization", "tillage"] + }, + "date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, + "fraction_area": { "type": "number", "minimum": 0, "maximum": 1, "default": 1.0 }, + "source": { "type": "string" }, + + "leaf_c_kg_m2": { "type": "number", "minimum": 0 }, + "wood_c_kg_m2": { "type": "number", "minimum": 0 }, + "fine_root_c_kg_m2": { "type": "number", "minimum": 0 }, + "coarse_root_c_kg_m2": { "type": "number", "minimum": 0 }, + "cultivar": { "type": "string" }, + "crop_code": { "type": "string" }, + "crop_display": { "type": "string" }, + + "frac_above_removed_0to1": { "type": "number", "minimum": 0, "maximum": 1 }, + "frac_below_removed_0to1": { "type": "number", "minimum": 0, "maximum": 1 }, + "frac_above_to_litter_0to1": { "type": "number", "minimum": 0, "maximum": 1 }, + "frac_below_to_litter_0to1": { "type": "number", "minimum": 0, "maximum": 1 }, + + "amount_mm": { "type": "number", "minimum": 0 }, + "method": { "type": "string", "enum": ["soil", "canopy", "flood"] }, + "immed_evap_frac_0to1": { "type": "number", "minimum": 0, "maximum": 1 }, + + "org_c_kg_m2": { "type": "number", "minimum": 0 }, + "org_n_kg_m2": { "type": "number", "minimum": 0 }, + "nh4_n_kg_m2": { "type": "number", "minimum": 0 }, + "no3_n_kg_m2": { "type": "number", "minimum": 0 }, + + "tillage_eff_0to1": { "type": "number", "minimum": 0 }, + "intensity_category": { "type": "string" }, + "depth_m": { "type": "number", "minimum": 0 } + }, + "allOf": [ + { "if": { "properties": { "event_type": { "const": "planting" } } }, + "then": { "required": ["crop_code", "leaf_c_kg_m2"] } }, + { "if": { "properties": { "event_type": { "const": "harvest" } } }, + "then": { "required": ["crop_code", "frac_above_removed_0to1"] } }, + { "if": { "properties": { "event_type": { "const": "irrigation" } } }, + "then": { "required": ["amount_mm", "method"] } }, + { "if": { "properties": { "event_type": { "const": "fertilization" } } }, + "then": { "anyOf": [ + { "required": ["org_c_kg_m2"] }, + { "required": ["nh4_n_kg_m2"] }, + { "required": ["no3_n_kg_m2"] } + ] } }, + { "if": { "properties": { "event_type": { "const": "tillage" } } }, + "then": { "required": ["tillage_eff_0to1"] } } + ], + "additionalProperties": true + } + } + }, + "additionalProperties": false + } + } +} diff --git a/modules/data.land/man/validate_events_json.Rd b/modules/data.land/man/validate_events_json.Rd index bab649c3a3c..db37833fe49 100644 --- a/modules/data.land/man/validate_events_json.Rd +++ b/modules/data.land/man/validate_events_json.Rd @@ -4,11 +4,13 @@ \alias{validate_events_json} \title{Validate PEcAn events JSON against schema v0.1.0} \usage{ -validate_events_json(events_json, verbose = TRUE) +validate_events_json(events_json, schema_version = "0.1.1", verbose = TRUE) } \arguments{ \item{events_json}{character. Path to the JSON file to validate.} +\item{schema_version}{character. Version of the PEcAn events schema to validate against.} + \item{verbose}{logical. When `TRUE`, include detailed AJV messages on error.} } \value{ @@ -17,7 +19,7 @@ NA if validator unavailable. } \description{ Validates a PEcAn events JSON file (single-site object or an array of site -objects) against the bundled JSON Schema (draft 2020-12) using the AJV +objects) against the bundled JSON Schema using the AJV engine. } \details{ From 24db91241b426a8dec141a3931809769e037f3f4 Mon Sep 17 00:00:00 2001 From: Chris Black Date: Wed, 25 Feb 2026 03:22:09 -0800 Subject: [PATCH 04/75] right, we said optional for harvest --- book_source/03_topical_pages/02_pecan_standards.Rmd | 2 +- modules/data.land/inst/events_schema_v0.1.1.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/book_source/03_topical_pages/02_pecan_standards.Rmd b/book_source/03_topical_pages/02_pecan_standards.Rmd index ad1bd488082..29605b65b7e 100644 --- a/book_source/03_topical_pages/02_pecan_standards.Rmd +++ b/book_source/03_topical_pages/02_pecan_standards.Rmd @@ -127,13 +127,13 @@ Optional properties: Removal of biomass from the living pool, either by transferring it to dead (litter) biomass or by removing it from the system. Specified as a fraction of live biomass. Required properties: -* `crop_code`: A machine_readable identifier that specifies what type of plant was harvested. * `frac_above_removed_0to1`: Fraction of existing aboveground biomass removed from the system. Optional properties: * `frac_below_removed_0to1`: Fraction of existing beloweground biomass removed from the system. Assumed zero if not specified. * `frac_above_to_litter_0to1`, `frac_below_to_litter_0to1`: fraction of existing above- or below-ground live biomass converted to dead litter. Assumed zero if not specified. +* `crop_code`: A machine_readable identifier that specifies what type of plant was harvested. * `cultivar`: Identifier for finer-grainer plant type identifiers that will be meaningful to models with detailed growth parameterizations but likely ignored by PFT-based models. * `crop_display`: A human-readable name for the added plant type. diff --git a/modules/data.land/inst/events_schema_v0.1.1.json b/modules/data.land/inst/events_schema_v0.1.1.json index 71af1ccbd60..14e5b8c7002 100644 --- a/modules/data.land/inst/events_schema_v0.1.1.json +++ b/modules/data.land/inst/events_schema_v0.1.1.json @@ -59,7 +59,7 @@ { "if": { "properties": { "event_type": { "const": "planting" } } }, "then": { "required": ["crop_code", "leaf_c_kg_m2"] } }, { "if": { "properties": { "event_type": { "const": "harvest" } } }, - "then": { "required": ["crop_code", "frac_above_removed_0to1"] } }, + "then": { "required": ["frac_above_removed_0to1"] } }, { "if": { "properties": { "event_type": { "const": "irrigation" } } }, "then": { "required": ["amount_mm", "method"] } }, { "if": { "properties": { "event_type": { "const": "fertilization" } } }, From 7d145c859f6f319ec32acfb07781af2dc880e4c0 Mon Sep 17 00:00:00 2001 From: Chris Black Date: Wed, 25 Feb 2026 03:37:04 -0800 Subject: [PATCH 05/75] changelog --- CHANGELOG.md | 1 + modules/data.land/NEWS.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8246e87abf..4330150845b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ For more information about this file see also [Keep a Changelog](http://keepacha `MCMCpack`, `mvtnorm`, `neonUtilities`, `neonstore`, `PEcAn.benchmark`, `PEcAn.visualization`, `rjags`, `sirt`, and `sp` from `Imports` to `Suggests` (@omkarrr2533, #3599). +- Management events specified via `events.json` are now required to specify a crop code for each planting event, so that models can know when to restart with a different PFT (#3828, #3836). diff --git a/modules/data.land/NEWS.md b/modules/data.land/NEWS.md index 9c2f9481ea0..bb23a8fedf1 100644 --- a/modules/data.land/NEWS.md +++ b/modules/data.land/NEWS.md @@ -23,6 +23,7 @@ `neonstore`, `PEcAn.benchmark`, `PEcAn.visualization`, `rjags`, `sirt`, and `sp` are now suggested rather than required. They are only needed for specific optional functionality. (#3599) +* Updated `validate_events_json()` to use events schema v0.1.1 by default. The previous default v0.1.0 is still available by setting `schema_version="0.1.0"`. # PEcAn.data.land 1.9.0 From 67e055dabf938f23441b805be9c7ec6397ffe0b4 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 10:34:58 -0400 Subject: [PATCH 06/75] WIP changes --- .Renviron | 0 modules/data.atmosphere/DESCRIPTION | 3 - .../inst/sipnet-restart-workflow/workflow.R | 285 + pixi.lock | 5572 +++++++++++++++++ pixi.toml | 95 + 5 files changed, 5952 insertions(+), 3 deletions(-) create mode 100644 .Renviron create mode 100644 modules/data.land/inst/sipnet-restart-workflow/workflow.R create mode 100644 pixi.lock create mode 100644 pixi.toml diff --git a/.Renviron b/.Renviron new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/data.atmosphere/DESCRIPTION b/modules/data.atmosphere/DESCRIPTION index 624278a61f6..f6061884332 100644 --- a/modules/data.atmosphere/DESCRIPTION +++ b/modules/data.atmosphere/DESCRIPTION @@ -41,14 +41,12 @@ Imports: MASS, mgcv, ncdf4 (>= 1.15), - nneo, PEcAn.DB, PEcAn.logger, PEcAn.remote, PEcAn.utils, purrr (>= 0.2.3), raster, - REddyProc, reshape2, rlang (>= 0.2.0), sf, @@ -59,7 +57,6 @@ Imports: tibble, tidyr, tidyselect, - truncnorm, units, utils, XML (>= 3.98-1.4), diff --git a/modules/data.land/inst/sipnet-restart-workflow/workflow.R b/modules/data.land/inst/sipnet-restart-workflow/workflow.R new file mode 100644 index 00000000000..5a92c5a8197 --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/workflow.R @@ -0,0 +1,285 @@ +#!/usr/bin/env Rscript + +# devtools::install("~/projects/pecan/sipnet-events/modules/data.remote", upgrade = FALSE) +# devtools::install("~/projects/pecan/sipnet-events/base/workflow", upgrade = FALSE) +# devtools::install("~/projects/pecan/sipnet-events/models/sipnet", upgrade = FALSE) + +# devtools::load_all("~/projects/pecan/sipnet-events/modules/data.land") +# devtools::load_all("~/projects/pecan/sipnet-events/models/sipnet") + +# Pick a parcel from irrigation +pid <- 39011 + +irrigation_path <- "/projectnb/dietzelab/ccmmf/usr/ashiklom/event-outputs/irrigation_10000.parquet" + +# Find the closest design point to that parcel to use existing met +parcel_path <- "/projectnb/dietzelab/ccmmf/LandIQ-harmonized-v4.1/parcels.gpkg" +parcel <- sf::read_sf( + parcel_path, + query = glue::glue("SELECT * FROM parcels WHERE parcel_id = {pid}") +) + +dp_path <- "/projectnb/dietzelab/ccmmf/management/irrigation/design_points.csv" +design_points <- read.csv(dp_path) |> + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) |> + sf::st_transform(sf::st_crs(parcel)) +dp_idx <- sf::st_nearest_feature(parcel, design_points) +site_id <- design_points[dp_idx, ][["id"]] + +# site1 <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1.json" +# site1_multi <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1_multi.json" +# site_12 <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1_site2.json" + +binary <- "/projectnb/dietzelab/ccmmf/usr/ashiklom/pecan/sipnet/sipnet" +met <- file.path( + "/projectnb/dietzelab/ccmmf/ensemble/ERA5_SIPNET", + site_id, + "ERA5.1.2016-01-01.2024-12-31.clim" +) +stopifnot(file.exists(met)) + +# Make the events.json +planting <- fs::dir_ls( + "/projectnb/dietzelab/ccmmf/management/event_files", + regexp = "planting_statewide_.*\\.parquet" +) |> + arrow::open_dataset() |> + dplyr::collect() |> + dplyr::filter(.data$site_id == as.character(.env$pid)) |> + dplyr::mutate(date = as.Date(.data$date)) |> + tibble::as_tibble() + +code_pft_mapping <- planting |> + dplyr::distinct(crop_code = .data$code, .data$PFT) + +planting_events <- planting |> + dplyr::select( + "site_id", "event_type", "date", + "crop_code" = "code", + "leaf_c_kg_m2" = "C_LEAF", + "wood_c_kg_m2" = "C_STEM", + "fine_root_c_kg_m2" = "C_FINEROOT", + "coarse_root_c_kg_m2" = "C_COARSEROOT", + "leaf_n_kg_m2" = "N_LEAF", + "wood_n_kg_m2" = "N_STEM", + "fine_root_n_kg_m2" = "N_FINEROOT", + "coarse_root_n_kg_m2" = "N_COARSEROOT" + ) + +# Harvest +mslsp_path <- "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" +phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> + arrow::open_dataset() |> + dplyr::filter(.data$parcel_id == .env$pid, !is.na(.data$mslsp_cycle)) |> + dplyr::collect() |> + tibble::as_tibble() |> + dplyr::arrange(.data$year, .data$mslsp_cycle) |> + dplyr::relocate( + "year", "mslsp_cycle", dplyr::starts_with("landiq_"), + ) + +# Dummy values for testing +harvest_events <- phenology |> + dplyr::mutate( + event_type = "harvest", + site_id = as.character(.data$parcel_id), + frac_above_removed_0to1 = 0.85 + ) |> + dplyr::select( + "site_id", "event_type", "date" = mslsp_OGMn, "frac_above_removed_0to1" + ) + +start_date <- min(planting$date) +end_date <- max(harvest$date) + +irrigation_events <- arrow::open_dataset(irrigation_path) |> + dplyr::filter( + .data$parcel_id == .env$pid, + .data$ens_id == "irr_ens_001" + ) |> + dplyr::select(-"ens_id") |> + dplyr::collect() |> + tibble::as_tibble() |> + dplyr::filter(.data$date <= .env$end_date) |> + dplyr::mutate( + event_type = "irrigation", + site_id = as.character(.data$parcel_id), + .keep = "unused" + ) |> + dplyr::relocate("site_id", "event_type", "date") + +make_event_list <- function(df) { + df2list <- function(df) { + as.list(df) |> purrr::list_transpose() + } + df |> + tidyr::nest(.by = "site_id", .key = "events") |> + dplyr::mutate(events = purrr::map(.data$events, df2list)) +} + +planting_n <- make_event_list(planting_events) +harvest_n <- make_event_list(harvest_events) +irrigation_n <- make_event_list(irrigation_events) +all_events <- planting_n |> + dplyr::full_join(harvest_n, by = "site_id") |> + dplyr::full_join(irrigation_n, by = "site_id") |> + dplyr::mutate( + events = dplyr::starts_with("events") |> + dplyr::across() |> + purrr::pmap(c) |> + purrr::map(unname), + .keep = "unused" + ) + +jsonlite::toJSON(all_events, pretty = TRUE, auto_unbox = TRUE) + +################################################################################ +events_json <- site1 + +outdir <- normalizePath("_test/segments") +dir.create(outdir, showWarnings = FALSE) + +settings <- PEcAn.settings::as.Settings(list( + outdir = file.path(outdir, "out"), + rundir = file.path(outdir, "run"), + modeloutdir = file.path(outdir, "out"), + pfts = list(list( + name = "grassland", + constants = list(num = 1) + )), + model = list( + type = "SIPNET", + binary = binary, + revision = "v2" + ), + run = list( + site = list( + id = site_id, + name = site_id, + lat = 32.71585, + lon = -115.47163 + ), + start.date = start_date, + end.date = end_date, + inputs = list(met = list(path = met)) + ), + host = list( + name = "localhost" + ) +)) + +events <- jsonlite::fromJSON(events_json, simplifyVector = FALSE) +# TODO: Iterate over events +site_events_obj <- events[[1]] + +site_id <- site_events_obj[["site_id"]] +site_events_list <- site_events_obj[["events"]] +site_events_common <- site_events_obj +site_events_common[["events"]] <- NULL + +crop_cycles <- events_to_crop_cycle_starts(site1_multi) + +# Empty example +# crop_cycles <- tibble::tibble( +# site_id = character(0), +# date = as.Date(NULL), +# crop_code = character(0) +# ) + +# Get segments +segments <- tibble::tibble( + start_date = c(start_date, crop_cycles[["date"]]), + end_date = c(crop_cycles[["date"]] - 1, end_date) +) |> + dplyr::mutate(segment_id = dplyr::row_number()) + +################################################################################ + +for (isegment in seq_len(nrow(segments))) { + # isegment <- 1 + segment <- segments[isegment, ] + segment_id <- sprintf("%03d", isegment) + dstart <- segment[["start_date"]] + dend <- segment[["end_date"]] + + segment_dir <- file.path(outdir, paste0("segment_", segment_id)) + if (dir.exists(segment_dir)) { + unlink(segment_dir, recursive = TRUE) + } + dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) + + # Filter events to relevant dates + events_sub <- site_events_list |> + purrr::keep(~as.Date(.x[["date"]]) >= dstart) |> + purrr::keep(~as.Date(.x[["date"]]) <= dend) + + # Segment-separated events file + eventfile <- file.path(segment_dir, "events.json") + segment_event_obj <- list(c(site_events_common, events = list(events_sub)) ) + jsonlite::write_json(segment_event_obj, eventfile, auto_unbox = TRUE) + + segment_eventfile <- PEcAn.SIPNET::write.events.SIPNET(eventfile, segment_dir) + + # Subset the met to only the dates in this segment. SIPNET does not respect + # start/end date, only the dates in the .clim file. + met_orig <- read.table(settings[[c("run", "inputs", "met", "path")]]) + met_segment <- met_orig |> + # Create a date from the year + DOY + dplyr::mutate(date = as.Date(paste0(V2, "-01-01")) + V3) |> + dplyr::filter(date >= dstart, date <= dend) |> + dplyr::select(-c("date")) + met_segment_file <- file.path(segment_dir, "met.clim") + write.table( + met_segment, + met_segment_file, + quote = FALSE, + sep = "\t", + row.names = FALSE, + col.names = FALSE + ) + + # Segment-specific settings + segment_outdir <- file.path(segment_dir, "out") + dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) + segment_rundir <- file.path(segment_dir, "run") + dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) + segment_rundir_withid <- file.path(segment_rundir, segment_id) + dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) + + segment_settings <- settings + segment_settings[["outdir"]] <- segment_outdir + segment_settings[["rundir"]] <- segment_rundir + segment_settings[["modeloutdir"]] <- segment_rundir + segment_settings[[c("run", "start.date")]] <- dstart + segment_settings[[c("run", "end.date")]] <- dend + segment_settings[[c("run", "inputs", "met", "path")]] <- met_segment_file + segment_settings[[c("run", "inputs", "events")]] <- list(path = segment_eventfile) + + if (isegment > 1) { + # For isegment > 1, we restart from the *previous* segment's restart.out + segment_settings[[c("model", "restart_in")]] <- restart_out + } + # ...and now, define a new restart.out for *this* segment + restart_out <- file.path(segment_dir, "restart.out") + segment_settings[[c("model", "restart_out")]] <- restart_out + + # Write runs file + writeLines(segment_id, file.path(segment_rundir, "runs.txt")) + + # TODO: Logic to get the trait values corresponding to the segment's PFT. + # 1. Cross-reference crop_code against PFT + # 2. Get traits from PFT posterior file. + segment_traits <- list(list()) + + config <- PEcAn.SIPNET::write.config.SIPNET( + defaults = settings[["pfts"]], + trait.values = segment_traits, + settings = segment_settings, + run.id = segment_id + ) + + runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) +} + +# TODO: Post processing. Combine all the segments together and return output in +# PEcAn standard. diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 00000000000..729d04086a2 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,5572 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + options: + pypi-prerelease-mode: if-necessary-or-explicit + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h281d09f_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.0-h6083320_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-h40b5c2d_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-he63569f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.9.2-hc20babb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hbf2fc22_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.2-he237659_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h6477eea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.1-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r45hc72bb7e_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r45h54b55ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_6-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64url-1.4-r45h54b55ab_1008.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit-4.6.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.6.0_1-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-blob-1.3.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-brew-1.0_10-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-brio-1.1.5-r45h54b55ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.10.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.1.0-r45h54b55ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-coda-0.19_4.1-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.11-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-commonmark-2.0.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.3-r45h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-credentials-2.0.3-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-crew-1.3.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-crew.cluster-0.4.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-curl-7.0.0-r45h10955f1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.2-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r45h1c8cec4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.3.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.2-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.4.6-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r45h54b55ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r45h3697838_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.6-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.3.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.callr-0.10.2-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-gert-2.3.1-r45h5e22a44_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-4.0.2-r45h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-gh-1.5.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-gitcreds-0.1.2-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.19.1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.8.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-here-1.0.2-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-highr-0.12-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-hms-1.1.4-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-htmltools-0.5.9-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-htmlwidgets-1.6.4-r45h785f33e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-httpuv-1.6.17-r45h6d565e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.8-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-httr2-1.2.2-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-igraph-2.1.4-r45hf411e2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-ini-0.3.1-r45hc72bb7e_1007.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.3.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-2.0.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.51-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-languageserver-0.3.17-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-later-1.4.8-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_9-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r45h54b55ab_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.4-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.7_4-r45h0e4624f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-memoise-2.0.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_4-r45h0e4624f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mime-0.13-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-miniui-0.1.2-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r45ha36cffa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-mirai-2.6.1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-otel-0.2.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgbuild-1.4.8-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r45h6b2d295_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.6-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-promises-1.5.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_29-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.1-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.17.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.27.1-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.13.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.1-r45h9f1dc4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.4.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcmdcheck-1.4.0-r45h785f33e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r45h785f33e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.1-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r45h3704496_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.4-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.30-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.24-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.18.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rversions-3.0.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.9-r45h7d5736c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-s7-0.2.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.0-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_1-r45h3697838_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_6-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.3-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.3.2-r45h74f4acd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_1-r45h1d36251_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-1.0.5-r45h74f4acd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.2-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.58-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.5-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.56-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.5.2-r45he78afff_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-xopen-1.0.1-r45hc72bb7e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_8-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.12-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-zip-2.3.3-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.9-h6688a6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h5a7a40f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2 + sha256: e58f9eeb416b92b550e824bcb1b9fb1958dee69abfe3089dfd1a9173e3a0528a + md5: 19f9db5f4f1b7f5ef5f6d67207f25f38 + license: BSD + size: 3566 + timestamp: 1562343890778 +- conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_0.conda + sha256: 5921a9f40ae4fc4023604fe125089e1dea7420284ac480d1f9d86d3b77dccc87 + md5: 1db5efbbc2dfe75f06897608305fa5ce + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 2478235 + timestamp: 1773351663308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda + sha256: 78c516af87437f52d883193cf167378f592ad445294c69f7c69f56059087c40d + md5: 9bb149f49de3f322fca007283eaa2725 + depends: + - __glibc >=2.17,<3.0.a0 + - libattr 2.5.2 hb03c661_1 + - libgcc >=14 + license: GPL-2.0-or-later + license_family: GPL + size: 31386 + timestamp: 1773595914754 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda + sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 + md5: bdd464b33f6540ed70845b946c11a7b8 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 133443 + timestamp: 1764765235190 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda + sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064 + md5: 3c3d02681058c3d206b562b2e3bc337f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - libgcc >=14 + - openssl >=3.5.4,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 56230 + timestamp: 1764593147526 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda + sha256: 926a5b9de0a586e88669d81de717c8dd3218c51ce55658e8a16af7e7fe87c833 + md5: e36ad70a7e0b48f091ed6902f04c23b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 239605 + timestamp: 1763585595898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda + sha256: 96edccb326b8c653c8eb95a356e01d4aba159da1a97999577b7dd74461b040b4 + md5: f7ec84186dfe7a9e3a9f9e5a4d023e75 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 22272 + timestamp: 1764593718823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda + sha256: a5b151db1c8373b6ca2dacea65bc8bda02791a43685eebfa4ea987bb1a758ca9 + md5: 7b8e3f846353b75db163ad93248e5f9d + depends: + - libgcc >=14 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + license: Apache-2.0 + license_family: APACHE + size: 58806 + timestamp: 1764675439822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda + sha256: 5527224d6e0813e37426557d38cb04fed3753d6b1e544026cfbe2654f5e556be + md5: 3028f20dacafc00b22b88b324c8956cc + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 224580 + timestamp: 1764675497060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda + sha256: 07d7f2a4493ada676084c3f4313da1fab586cf0a7302572c5d8dde6606113bf4 + md5: 132e8f8f40f0ffc0bbde12bb4e8dd1a1 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - s2n >=1.6.2,<1.6.3.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 181361 + timestamp: 1765168239856 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda + sha256: fb102b0346a1f5c4f3bb680ec863c529b0333fa4119d78768c3e8a5d1cc2c812 + md5: 6a653aefdc5d83a4f959869d1759e6e3 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 216454 + timestamp: 1764681745427 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda + sha256: 8de2292329dce2fd512413d83988584d616582442a07990f67670f9bc793a98b + md5: 3689a4290319587e3b54a4f9e68f70c8 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - openssl >=3.5.4,<4.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-auth >=0.9.3,<0.9.4.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 151382 + timestamp: 1765174166541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda + sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc + md5: c7e3e08b7b1b285524ab9d74162ce40b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 59383 + timestamp: 1764610113765 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda + sha256: a8693d2e06903a09e98fe724ed5ec32e7cd1b25c405d754f0ab7efb299046f19 + md5: 68da5b56dde41e172b7b24f071c4b392 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 76915 + timestamp: 1764593731486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda + sha256: 524fc8aa2645e5701308b865bf5c523257feabc6dfa7000cb8207ccfbb1452a1 + md5: 113b9d9913280474c0868b0e290c0326 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - aws-c-event-stream >=0.5.7,<0.5.8.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-auth >=0.9.3,<0.9.4.0a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-mqtt >=0.13.3,<0.13.4.0a0 + - aws-c-s3 >=0.11.3,<0.11.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 408804 + timestamp: 1765200263609 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda + sha256: e0d81b7dd6d054d457a1c54d17733d430d96dc5ca9b2ca69a72eb41c3fc8c9bf + md5: 937d1d4c233adc6eeb2ac3d6e9a73e53 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.17.0,<9.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.35.4,<0.35.5.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-c-event-stream >=0.5.7,<0.5.8.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3472674 + timestamp: 1765257107074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + sha256: 321d1070905e467b6bc6f5067b97c1868d7345c272add82b82e08a0224e326f0 + md5: 5492abf806c45298ae642831c670bba0 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + size: 348729 + timestamp: 1768837519361 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + sha256: 2beb6ae8406f946b8963a67e72fe74453e1411c5ae7e992978340de6c512d13c + md5: 68bfb556bdf56d56e9f38da696e752ca + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 250511 + timestamp: 1770344967948 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + sha256: cef75b91bdd5a65c560b501df78905437cc2090a64b4c5ecd7da9e08e9e9af7c + md5: 939d9ce324e51961c7c4c0046733dbb7 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 579825 + timestamp: 1770321459546 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + sha256: ef7d1cae36910b21385d0816f8524a84dee1513e0306927e41a6bd32b5b9a0d0 + md5: 6400f73fe5ebe19fe7aca3616f1f1de7 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 150405 + timestamp: 1770240307002 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + sha256: 55aa8ad5217d358e0ccf4a715bd1f9bafef3cd1c2ea4021f0e916f174c20f8e3 + md5: 6d10339800840562b7dad7775f5d2c16 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 302524 + timestamp: 1770384269834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda + sha256: 74341b26a2b9475dc14ba3cf12432fcd10a23af285101883e720216d81d44676 + md5: 83aa53cb3f5fc849851a84d777a60551 + depends: + - ld_impl_linux-64 2.45.1 default_hbd61a6d_101 + - sysroot_linux-64 + - zstd >=1.5.7,<1.6.0a0 + license: GPL-3.0-only + license_family: GPL + size: 3744895 + timestamp: 1770267152681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda + sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d + md5: 2c2fae981fd2afd00812c92ac47d023d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 48427 + timestamp: 1733513201413 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda + sha256: c88dd33c89b33409ebcd558d78fdc66a63c18f8b06e04d170668ffb6c8ecfabd + md5: 983b92277d78c0d0ec498e460caa0e6d + depends: + - tk + license: TCL + size: 129594 + timestamp: 1750261567920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e + md5: 920bb03579f15389b9e512095ad995b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 207882 + timestamp: 1765214722852 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc + md5: 4492fd26db29495f0ba23f146cd5638d + depends: + - __unix + license: ISC + size: 147413 + timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a + md5: bb6c4808bfa69d6f7f6b07e5846ced37 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.1,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libglib >=2.86.3,<3.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libstdcxx >=14 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.1-only or MPL-1.1 + size: 989514 + timestamp: 1766415934926 +- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda + sha256: 783b7525ef535b67236c2773f5553b111ee5258ad9357df2ae1755cc62a0a014 + md5: a6993977a14feee4268e7be3ad0977ab + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcurl 8.19.0 hcf29cc6_0 + - libgcc >=14 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 191335 + timestamp: 1773218536473 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda + sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c + md5: 867127763fbe935bab59815b6e0b7b5c + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 270705 + timestamp: 1771382710863 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 + md5: a7970cd949a077b7cb9696379d338681 + depends: + - font-ttf-ubuntu + - font-ttf-inconsolata + - font-ttf-dejavu-sans-mono + - font-ttf-source-code-pro + license: BSD-3-Clause + license_family: BSD + size: 4059 + timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda + sha256: c8960e00a6db69b85c16c693ce05484facf20f1a80430552145f652a880e0d2a + md5: ecb5d11305b8ba1801543002e69d2f2f + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - minizip >=4.0.7,<5.0a0 + license: MPL-1.1 + license_family: MOZILLA + size: 59299 + timestamp: 1734014884486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d + md5: f9f81ea472684d75b9dd8d0b328cf655 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-or-later + size: 61244 + timestamp: 1757438574066 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda + sha256: a088cfd3ae6fa83815faa8703bc9d21cc915f17bd1b51aac9c16ddf678da21e4 + md5: cf56b6d74f580b91fd527e10d9a2e324 + depends: + - binutils_impl_linux-64 >=2.45 + - libgcc >=15.2.0 + - libgcc-devel_linux-64 15.2.0 hcc6f6b0_118 + - libgomp >=15.2.0 + - libsanitizer 15.2.0 h90f66d4_18 + - libstdcxx >=15.2.0 + - libstdcxx-devel_linux-64 15.2.0 hd446a21_118 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 81814135 + timestamp: 1771378369317 +- conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda + sha256: 08896dcd94e14a83f247e91748444e610f344ab42d80cbf2b6082b481c3f8f4b + md5: 4d4efd0645cd556fab54617c4ad477ef + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: LGPL-2.1-only + size: 1974942 + timestamp: 1761593471198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h281d09f_18.conda + sha256: 737c191cc768822d3d2ace8650e0cbec5edc4b48c63024876d0e6b0b5f120be2 + md5: d19ccc223bcd1d4e3f6b5884b7b58add + depends: + - gcc_impl_linux-64 >=15.2.0 + - libgcc >=15.2.0 + - libgfortran5 >=15.2.0 + - libstdcxx >=15.2.0 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 20044877 + timestamp: 1771378561135 +- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff + md5: 3bf7b9fd5a7136126e0234db4b87c8b6 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 77248 + timestamp: 1712692454246 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 + sha256: 0e19c61198ae9e188c43064414a40101f5df09970d4a2c483c0c46a6b1538966 + md5: efc4b0c33bdf47312ad5a8a0587fa653 + depends: + - gmp >=6.2.1,<7.0a0 + - libgcc-ng >=9.3.0 + license: GPL-3.0-or-later + license_family: GPL + size: 1047292 + timestamp: 1624569176979 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda + sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c + md5: 2cd94587f3a401ae05e03a6caf09539d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: LGPL-2.0-or-later + license_family: LGPL + size: 99596 + timestamp: 1755102025473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 + sha256: 132a918b676dd1f533d7c6f95e567abf7081a6ea3251c3280de35ef600e0da87 + md5: fec079ba39c9cca093bf4c00001825de + depends: + - libblas >=3.8.0,<4.0a0 + - libcblas >=3.8.0,<4.0a0 + - libgcc-ng >=9.3.0 + license: GPL-3.0-or-later + license_family: GPL + size: 3376423 + timestamp: 1626369596591 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_18.conda + sha256: 48946f1f43d699b68123fb39329ef5acf3d9cbf8f96bdb8fb14b6197f5402825 + md5: e39123ab71f2e4cf989aa6aa5fafdaaf + depends: + - gcc_impl_linux-64 15.2.0 he420e7e_18 + - libstdcxx-devel_linux-64 15.2.0 hd446a21_118 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 15587873 + timestamp: 1771378609722 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.0-h6083320_0.conda + sha256: 2b6958ab30b2ce330b0166e51fc5f20f761f71e09510d62f03f9729882707497 + md5: 71c2c966e17a65b08b995f571310fb9f + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - graphite2 >=1.3.14,<2.0a0 + - icu >=78.3,<79.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 2342310 + timestamp: 1773909324136 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda + sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 + md5: bd77f8da987968ec3927990495dc22e4 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 756742 + timestamp: 1695661547874 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + sha256: 1fc50ce3b86710fba3ec9c5714f1612b5ffa4230d70bfe43e2a1436eacba1621 + md5: c223ee1429ba538f3e48cfb4a0b97357 + depends: + - __glibc >=2.17,<3.0.a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3708864 + timestamp: 1770390337946 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a + md5: c80d8a3b84358cb967fa81e7075fbc8a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12723451 + timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda + sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da + md5: 38f5dbc9ac808e31c00650f7be1db93f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 82709 + timestamp: 1726487116178 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a + md5: 86d9cba083cd041bfbf242a01a7a1999 + constrains: + - sysroot_linux-64 ==2.28 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 1278712 + timestamp: 1765578681495 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + size: 134088 + timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 + depends: + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 1386730 + timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 + md5: 12bd9a3f089ee6c9266a37dab82afabd + depends: + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 725507 + timestamp: 1770267139900 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 + md5: a752488c68f2e7c456bcbd8f16eec275 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: Apache + size: 261513 + timestamp: 1773113328888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda + sha256: dcd1429a1782864c452057a6c5bc1860f2b637dc20a2b7e6eacd57395bbceff8 + md5: 83b160d4da3e1e847bf044997621ed63 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20250512.1=cxx17* + - abseil-cpp =20250512.1 + license: Apache-2.0 + license_family: Apache + size: 1310612 + timestamp: 1750194198254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda + sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688 + md5: 86f7414544ae606282352fa1e116b41f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: BSD-2-Clause + license_family: BSD + size: 36544 + timestamp: 1769221884824 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda + sha256: 69ea8da58658ad26cb64fb0bfccd8a3250339811f0b57c6b8a742e5e51bacf70 + md5: 981d372c31a23e1aa9965d4e74d085d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - lzo >=2.10,<3.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 887139 + timestamp: 1773243188979 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-h40b5c2d_10_cpu.conda + build_number: 10 + sha256: 6f991b03d4ea6d22e87bf23fa567abfbca899db88e44d85d225467d99a9a9a5c + md5: 861c27604ee02b6070bd8df1dadf245e + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.35.4,<0.35.5.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libgcc >=14 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.2.2,<2.2.3.0a0 + - snappy >=1.2.2,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 6335951 + timestamp: 1770434233985 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_10_cpu.conda + build_number: 10 + sha256: 14c9ffe81f50714fc304cd6d545214499e4c4c4e79edb8b7de16534235a20e6f + md5: c7df973d64be50fd15506eb560ae26b0 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 22.0.0 h40b5c2d_10_cpu + - libarrow-compute 22.0.0 h8c2c5c3_10_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 608792 + timestamp: 1770434470405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_10_cpu.conda + build_number: 10 + sha256: d50c3ffd546a0821ed4749a2ce12ef1cb0a74f7932c09fb6fb6d8166736daeff + md5: 4e6028d29da25ab0a7d006d1e13fcf5d + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 22.0.0 h40b5c2d_10_cpu + - libgcc >=14 + - libre2-11 >=2025.8.12 + - libstdcxx >=14 + - libutf8proc >=2.11.3,<2.12.0a0 + - re2 + license: Apache-2.0 + license_family: APACHE + size: 2988184 + timestamp: 1770434320056 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_10_cpu.conda + build_number: 10 + sha256: 77b50fbcca68784af720517916e0804a13bf536b5f809bb45e1d73c76f1e8f63 + md5: c7bd912f2da0e7ddba11a8b337ea6f81 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 22.0.0 h40b5c2d_10_cpu + - libarrow-acero 22.0.0 h635bf11_10_cpu + - libarrow-compute 22.0.0 h8c2c5c3_10_cpu + - libgcc >=14 + - libparquet 22.0.0 h7376487_10_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 606439 + timestamp: 1770434569080 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_10_cpu.conda + build_number: 10 + sha256: 4ab1e045c73d01976fb853a31abc080d34c4aec2fc6bb7df77686b36a9398e0d + md5: 422f1fbb96405207c70e6368a0de7498 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libarrow 22.0.0 h40b5c2d_10_cpu + - libarrow-acero 22.0.0 h635bf11_10_cpu + - libarrow-dataset 22.0.0 h635bf11_10_cpu + - libgcc >=14 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 509673 + timestamp: 1770434601939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda + sha256: 0cef37eb013dc7091f17161c357afbdef9a9bc79ef6462508face6db3f37db77 + md5: 7e7f0a692eb62b95d3010563e7f963b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-or-later + license_family: LGPL + size: 53316 + timestamp: 1773595896163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda + build_number: 5 + sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c + md5: c160954f7418d7b6e87eaf05a8913fa9 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - mkl <2026 + - liblapack 3.11.0 5*_openblas + - libcblas 3.11.0 5*_openblas + - blas 2.305 openblas + - liblapacke 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18213 + timestamp: 1765818813880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e + md5: 72c8fd1af66bd67bf580645b426513ed + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 79965 + timestamp: 1764017188531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b + md5: 366b40a69f0ad6072561c1d09301c886 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 34632 + timestamp: 1764017199083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d + md5: 4ffbb341c8b616aa2494b6afb26a0c5f + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 298378 + timestamp: 1764017210931 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda + build_number: 5 + sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 + md5: 6636a2b6f1a87572df2970d3ebc87cc0 + depends: + - libblas 3.11.0 5_h4a7cf45_openblas + constrains: + - liblapacke 3.11.0 5*_openblas + - blas 2.305 openblas + - liblapack 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18194 + timestamp: 1765818837135 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda + sha256: a0390fd0536ebcd2244e243f5f00ab8e76ab62ed9aa214cd54470fe7496620f4 + md5: d50608c443a30c341c24277d28290f76 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 466704 + timestamp: 1773218522665 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 + md5: 6c77a605a7a689d17d4819c0f8ac9a00 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 73490 + timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 + md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.7.4.* + license: MIT + license_family: MIT + size: 76798 + timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda + sha256: 2e1bfe1e856eb707d258f669ef6851af583ceaffab5e64821b503b0f7cd09e9e + md5: 26c746d14402a3b6c684d045b23b9437 + depends: + - libfreetype6 >=2.14.2 + license: GPL-2.0-only OR FTL + size: 8035 + timestamp: 1772757210108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda + sha256: aba65b94bdbed52de17ec3d0c6f2ebac2ef77071ad22d6900d1614d0dd702a0c + md5: 8eaba3d1a4d7525c6814e861614457fd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpng >=1.6.55,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.14.2 + license: GPL-2.0-only OR FTL + size: 386316 + timestamp: 1772757193822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 + md5: 0aa00f03f9e39fb9876085dee11a85d4 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1041788 + timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_118.conda + sha256: af69fc5852908d26e5b630b270982ac792506551dd6af1614bf0370dd5ab5746 + md5: 5d3a96d55f1be45fef88ee23155effd9 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3085932 + timestamp: 1771378098166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 + md5: d5e96b1ed75ca01906b3d2469b4ce493 + depends: + - libgcc 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27526 + timestamp: 1771378224552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-he63569f_2.conda + sha256: 564d9e27f9cb3eae53a945a70c25b92f22f74a27b450dc166a255964623b4383 + md5: 8aa8205bf4e18885c25149c3d391ed39 + depends: + - __glibc >=2.17,<3.0.a0 + - blosc >=1.21.6,<2.0a0 + - geos >=3.14.1,<3.14.2.0a0 + - giflib >=5.2.2,<5.3.0a0 + - json-c >=0.18,<0.19.0a0 + - lerc >=4.0.0,<5.0a0 + - libarchive >=3.8.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - libkml >=1.3.0,<1.4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libspatialite >=5.1.0,<5.2.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - muparser >=2.3.5,<2.4.0a0 + - openssl >=3.5.5,<4.0a0 + - pcre2 >=10.47,<10.48.0a0 + - proj >=9.7.1,<9.8.0a0 + - xerces-c >=3.3.0,<3.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - libgdal 3.12.2.* + license: MIT + license_family: MIT + size: 12954415 + timestamp: 1772336313866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee + md5: 9063115da5bc35fdc3e1002e69b9ef6e + depends: + - libgfortran5 15.2.0 h68bc16d_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27523 + timestamp: 1771378269450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda + sha256: cdc147bb0966be39b697b28d40b1ab5a2cd57fb29aff0fb0406598d419bddd70 + md5: 26d7b228de99d6fb032ba4d5c1679040 + depends: + - libgfortran 15.2.0 h69a702a_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27532 + timestamp: 1771378479717 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 + md5: 646855f357199a12f02a87382d429b75 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 2482475 + timestamp: 1771378241063 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.9.2-hc20babb_0.conda + sha256: 80d81a3d15c10f1fad867dfc9132e61d67c688af6adfd7ed76a139a25bfdfd53 + md5: 81da8986dad4d7fc47aec424098a8a54 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - openssl >=3.5.4,<4.0a0 + - libssh2 >=1.11.1,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GPL-2.0-only WITH GCC-exception-2.0 + license_family: GPL + size: 1035709 + timestamp: 1765030773589 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda + sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce + md5: bb26456332b07f68bf3b7622ed71c0da + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + constrains: + - glib 2.86.4 *_1 + license: LGPL-2.1-or-later + size: 4398701 + timestamp: 1771863239578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 + md5: 239c5e9546c38a1e884d69effcf4c882 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 603262 + timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda + sha256: d3341cf69cb02c07bbd1837968f993da01b7bd467e816b1559a3ca26c1ff14c5 + md5: a2e30ccd49f753fd30de0d30b1569789 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libcurl >=8.14.1,<9.0a0 + - libgcc >=14 + - libgrpc >=1.73.1,<1.74.0a0 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + - openssl >=3.5.1,<4.0a0 + constrains: + - libgoogle-cloud 2.39.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1307909 + timestamp: 1752048413383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda + sha256: 59eb8365f0aee384f2f3b2a64dcd454f1a43093311aa5f21a8bb4bd3c79a6db8 + md5: bd21962ff8a9d1ce4720d42a35a4af40 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=14 + - libgoogle-cloud 2.39.0 hdb79228_0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 804189 + timestamp: 1752048589800 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda + sha256: bc9d32af6167b1f5bcda216dc44eddcb27f3492440571ab12f6e577472a05e34 + md5: ff63bb12ac31c176ff257e3289f20770 + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.5,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libgcc >=14 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libre2-11 >=2025.8.12 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.4,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.73.1 + license: Apache-2.0 + license_family: APACHE + size: 8349777 + timestamp: 1761058442526 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda + sha256: 2bdd1cdd677b119abc5e83069bec2e28fe6bfb21ebaea3cd07acee67f38ea274 + md5: c2a0c1d0120520e979685034e0b79859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + size: 1448617 + timestamp: 1758894401402 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda + sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 + md5: 8397539e3a0bbd1695584fb4f927485a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 633710 + timestamp: 1762094827865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda + sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 + md5: 1df8c1b1d6665642107883685db6cf37 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libhwy >=1.3.0,<1.4.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1883476 + timestamp: 1770801977654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda + sha256: aa55f5779d6bc7bf24dc8257f053d5a0708b5910b6bc6ea1396f15febf812c98 + md5: 00f0f4a9d2eb174015931b1a234d61ca + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.1,<3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - uriparser >=0.9.8,<1.0a0 + license: BSD-3-Clause + license_family: BSD + size: 411495 + timestamp: 1761132836798 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda + build_number: 5 + sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 + md5: b38076eb5c8e40d0106beda6f95d7609 + depends: + - libblas 3.11.0 5_h4a7cf45_openblas + constrains: + - blas 2.305 openblas + - liblapacke 3.11.0 5*_openblas + - libcblas 3.11.0 5*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18200 + timestamp: 1765818857876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb + md5: c7c83eecbb72d88b940c249af56c8b17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 113207 + timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hbf2fc22_100.conda + sha256: f38b00b29c9495b71c12465397c735224ebaef71ad01278c3b9cb69dac685b65 + md5: 0eb36a09dad274e750d60b49aaec0af7 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.2,<2.6.0a0 + - blosc >=1.21.6,<2.0a0 + - bzip2 >=1.0.8,<2.0a0 + - hdf4 >=4.2.15,<4.2.16.0a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libzip >=1.11.2,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 862222 + timestamp: 1772190364667 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f + md5: 2a45e7f8af083626f009645a6481f12d + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 663344 + timestamp: 1773854035739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-only + license_family: GPL + size: 33731 + timestamp: 1750274110928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda + sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 + md5: be43915efc66345cccb3c310b6ed0374 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5927939 + timestamp: 1763114673331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda + sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 + md5: 1c0320794855f457dea27d35c4c71e23 + depends: + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libcurl >=8.14.1,<9.0a0 + - libgrpc >=1.73.1,<1.74.0a0 + - libopentelemetry-cpp-headers 1.21.0 ha770c72_1 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.21.0 + license: Apache-2.0 + license_family: APACHE + size: 885397 + timestamp: 1751782709380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda + sha256: b3a1b36d5f92fbbfd7b6426982a99561bdbd7e4adbafca1b7f127c9a5ab0a60f + md5: 9e298d76f543deb06eb0f3413675e13a + license: Apache-2.0 + license_family: APACHE + size: 363444 + timestamp: 1751782679053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda + build_number: 10 + sha256: bd26abdb1bcf370a3c17daa8638301b495860370caae9d6c0c86dba4e6a6ac46 + md5: af8cb58362579a429fe087cab43a0900 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 22.0.0 h40b5c2d_10_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1370331 + timestamp: 1770434436295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c + md5: 5f13ffc7d30ffec87864e678df9957b4 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 317669 + timestamp: 1770691470744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda + sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 + md5: 07479fc04ba3ddd5d9f760ef1635cfa7 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4372578 + timestamp: 1766316228461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda + sha256: eb5d5ef4d12cdf744e0f728b35bca910843c8cf1249f758cf15488ca04a21dbb + md5: a30848ebf39327ea078cf26d114cff53 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - re2 2025.11.05.* + license: BSD-3-Clause + license_family: BSD + size: 211099 + timestamp: 1762397758105 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda + sha256: eb4082a5135102f5ba9c302da13164d4ed1181d5f0db9d49e5e11a815a7b526f + md5: df81fd57eacf341588d728c97920e86d + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.14.1,<3.14.2.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: GPL-2.0-or-later + license_family: GPL + size: 231670 + timestamp: 1761670395043 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_18.conda + sha256: 0329e23d54a567c259adc962a62172eaa55e6ca33c105ef67b4f3cdb4ef70eaa + md5: ff754fbe790d4e70cf38aea3668c3cb3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.2.0 + - libstdcxx >=15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 8095113 + timestamp: 1771378289674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda + sha256: 64e5c80cbce4680a2d25179949739a6def695d72c40ca28f010711764e372d97 + md5: 7af961ef4aa2c1136e11dd43ded245ab + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: ISC + size: 277661 + timestamp: 1772479381288 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda + sha256: 403c1ad74ee70caaac02216a233ef9ec4531497ee14e7fea93a254a005ece88d + md5: 887245164c408c289d0cb45bd508ce5f + depends: + - __glibc >=2.17,<3.0.a0 + - freexl >=2 + - freexl >=2.0.0,<3.0a0 + - geos >=3.14.1,<3.14.2.0a0 + - libgcc >=14 + - librttopo >=1.1.0,<1.2.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libxml2-devel + - libzlib >=1.3.1,<2.0a0 + - proj >=9.7.0,<9.8.0a0 + - sqlite + - zlib + license: MPL-1.1 + license_family: MOZILLA + size: 4097449 + timestamp: 1761681679109 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda + sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 + md5: fd893f6a3002a635b5e50ceb9dd2c0f4 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 951405 + timestamp: 1772818874251 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 + md5: eecce068c7e4eddeb169591baac20ac4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304790 + timestamp: 1745608545575 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e + md5: 1b08cd684f34175e4514474793d44bcb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5852330 + timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_118.conda + sha256: 138ee40ba770abf4556ee9981879da9e33299f406a450831b48c1c397d7d0833 + md5: a50630d1810916fc252b2152f1dc9d6d + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 20669511 + timestamp: 1771378139786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + sha256: 3c902ffd673cb3c6ddde624cdb80f870b6c835f8bf28384b0016e7d444dd0145 + md5: 6235adb93d064ecdf3d44faee6f468de + depends: + - libstdcxx 15.2.0 h934c35e_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27575 + timestamp: 1771378314494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda + sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 + md5: 8ed82d90e6b1686f5e98f8b7825a15ef + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 424208 + timestamp: 1753277183984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 + md5: cd5a90476766d53e901500df9215e927 + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 435273 + timestamp: 1762022005702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda + sha256: c4b80ddcddc015ec696e53605e045954e4fe27e79aba65b754803a05ef4e3fe2 + md5: 4bdace082e911a3e1f1f0b721bed5b56 + depends: + - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + constrains: + - udunits2 2.2.28.* + license: LicenseRef-BSD-UCAR + size: 81441 + timestamp: 1696525535662 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda + sha256: ecbf4b7520296ed580498dc66a72508b8a79da5126e1d6dc650a7087171288f9 + md5: 1247168fe4a0b8912e3336bccdbf98a5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 85969 + timestamp: 1768735071295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee + md5: db409b7c1720428638e7c0d509d3e1b5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 40311 + timestamp: 1766271528534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b + md5: 0f03292cc56bf91a077a134ea8747118 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 895108 + timestamp: 1753948278280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b + md5: aea31d2e5b1091feca96fcfe945c3cf9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 429011 + timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda + sha256: 275c324f87bda1a3b67d2f4fcc3555eeff9e228a37655aa001284a7ceb6b0392 + md5: e49238a1609f9a4a844b09d9926f2c3d + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2-16 2.15.2 hca6bf5a_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 45968 + timestamp: 1772704614539 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda + sha256: 08d2b34b49bec9613784f868209bb7c3bb8840d6cf835ff692e036b09745188c + md5: f3bc152cb4f86babe30f3a4bf0dbef69 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.2 + license: MIT + license_family: MIT + size: 557492 + timestamp: 1772704601644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.2-he237659_0.conda + sha256: 4ac0f70a6b985573f057f839445044d6e8c0312599c4839488296666ee56a8dd + md5: 52a4ab30ceaaf314737892c82aadeca4 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2 2.15.2 he237659_0 + - libxml2-16 2.15.2 hca6bf5a_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 80239 + timestamp: 1772704626884 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 + md5: a7b27c075c9b7f459f1c022090697cba + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 109043 + timestamp: 1730442108429 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda + sha256: 5c6bbeec116e29f08e3dad3d0524e9bc5527098e12fc432c0e5ca53ea16337d4 + md5: 45161d96307e3a447cc3eb5896cf6f8c + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: GPL-2.0-or-later + license_family: GPL + size: 191060 + timestamp: 1753889274283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda + sha256: d652c7bd4d3b6f82b0f6d063b0d8df6f54cc47531092d7ff008e780f3261bdda + md5: 33405d2a66b1411db9f7242c8b97c9e7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: GPL-3.0-or-later + license_family: GPL + size: 513088 + timestamp: 1727801714848 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda + sha256: 6736158b195d9163adfcdd97e4e80a7a3c166ed534efa2efa27a4b83359b4b1f + md5: dd2974918f8e2534850866eddd42ee3c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 950599 + timestamp: 1747803179261 +- conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda + sha256: 0c3700d15377156937ddc89a856527ad77e7cf3fd73cb0dffc75fce8030ddd16 + md5: da01bb40572e689bd1535a5cee6b1d68 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Zlib + license_family: Other + size: 93471 + timestamp: 1746450475308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda + sha256: 320dfc59a94cb9e3635bda71b9e62278b34aa2fdaea0caa6832ddb9b37e9ccd5 + md5: ab3e3db511033340e75e7002e80ce8c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 203174 + timestamp: 1747116762269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63 + md5: 16c2a0e9c4a166e53632cfca4f68d020 + constrains: + - nlohmann_json-abi ==3.12.0 + license: MIT + license_family: MIT + size: 136216 + timestamp: 1758194284857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h6477eea_2.conda + sha256: 438592ead3783fd9f0394fcb52022555160cf465df39cfcab43b68b28126c22c + md5: db23ee637c7a5ff3f400846bdddc528a + depends: + - python + - libgcc >=14 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - numpy >=1.23,<3 + - python_abi 3.14.* *_cp314 + license: LGPL-2.1-or-later + size: 459736 + timestamp: 1773492085863 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda + sha256: e9c0a46c046fdffa22eb1f77030c95c46d2d6ec5cfaea89fc23710735f2c8d33 + md5: 9b929cfa0d6353227bae3cd63ecd7940 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - mbedtls >=3.6.3.1,<3.7.0a0 + license: MIT + license_family: MIT + size: 255583 + timestamp: 1748924914867 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda + sha256: f2ba8cb0d86a6461a6bcf0d315c80c7076083f72c6733c9290086640723f79ec + md5: 36f5b7eb328bdc204954a2225cf908e2 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 8927860 + timestamp: 1773839233468 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c + md5: f61eb8cd60ff9057122a3d338b99c00f + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3164551 + timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda + sha256: 84cfe4e11d3186c0c369f111700e978c849fb9e4ab7ed031acbe3663daacd141 + md5: a98b8d7cfdd20004f1bdd1a51cb22c58 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1317120 + timestamp: 1768247825733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.1-ha770c72_0.conda + sha256: 224c0f9970174009c82634c00ac90f3eecdf238154675a4055d02421a639aa1c + md5: 2e036aa3d69e03812e0eac334d162ef2 + license: GPL-2.0-or-later + license_family: GPL + size: 22360792 + timestamp: 1773855665852 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf + md5: 79f71230c069a287efe3a8614069ddf1 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libgcc >=13 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-or-later + size: 455420 + timestamp: 1751292466873 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff + md5: 7a3bff861a6583f1889021facefc08b1 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1222481 + timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a + md5: c01af13bdc553d1a8fbfff6e8db075f0 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + size: 450960 + timestamp: 1754665235234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda + sha256: c94d3d8ef40d1ea018860d66c416003bc03adede7d212efc9218bb64041fe2f7 + md5: 031e33ae075b336c0ce92b14efa886c5 + depends: + - sqlite + - libtiff + - libcurl + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libcurl >=8.18.0,<9.0a0 + - libsqlite >=3.51.2,<4.0a0 + constrains: + - proj4 ==999999999999 + license: MIT + license_family: MIT + size: 3593669 + timestamp: 1770890751115 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda + build_number: 101 + sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd + md5: c014ad06e60441661737121d3eae8a60 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + size: 36702440 + timestamp: 1770675584356 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda + sha256: 2af0ddd26c10dd1326774e57f9aa47607bd0c51b6a4122e8b68a023358280861 + md5: cc1055fbf899ff061909f934af18a20b + depends: + - r-base >=4.5,<4.6.0a0 + - r-recommended + license: GPL-3.0-only + license_family: GPL3 + size: 18543 + timestamp: 1757600488138 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda + sha256: 5055913d786b82f33a14f493f32945b3b2b5d528ea2f52856ca02b296f6511eb + md5: dde4691fe168112a90efba6aaa08f13d + depends: + - r-base >=4.5,<4.6.0a0 + license: LGPL (>= 2) + license_family: LGPL + size: 82526 + timestamp: 1757460261392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda + sha256: 50ee21025ed7770ae3dc1c0c825e517a9ac3a8bb9650d56997d6a7ea573bf71c + md5: 14732df51d9c418752387dd4c0de40ec + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow >=22.0.0,<22.1.0a0 + - libarrow-acero >=22.0.0,<22.1.0a0 + - libarrow-dataset >=22.0.0,<22.1.0a0 + - libarrow-substrait >=22.0.0,<22.1.0a0 + - libgcc >=14 + - libparquet >=22.0.0,<22.1.0a0 + - libstdcxx >=14 + - r-assertthat + - r-base >=4.5,<4.6.0a0 + - r-bit64 + - r-purrr + - r-r6 + - r-rlang + - r-tidyselect + license: Apache-2.0 + license_family: APACHE + size: 4577688 + timestamp: 1761634915444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.1-r45h54b55ab_1.conda + sha256: 5c4d2bcc1beba7703acbfe1610a846ce2a4010456714705dfa63989cee722a00 + md5: 1ae3c72e90c6a3871c594448d3e152e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-sys >=2.1 + license: MIT + license_family: MIT + size: 31983 + timestamp: 1758383536121 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r45hc72bb7e_6.conda + sha256: 90e7ae8aa427274d7d2e510060b68925e60e897ecaa5ea135bb33afa7eb12134 + md5: b5291c60f52b43108a2973ba6f5885d1 + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 72543 + timestamp: 1757447376176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r45h54b55ab_2.conda + sha256: 87e4078f7d6bed6beed4f8b17d733780e2349298310fb84d5a931bb2c5a342fa + md5: 4ae034345727e236c1fe871f6611ab33 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 130943 + timestamp: 1757441770893 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda + sha256: eb21b72dfa6cc767cebc0b348b8da3dc762a7e85627fc7a5afee72cc75e8f89c + md5: 0356c81af70570e685acc134ac740014 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - _r-mutex 1.* anacondar_1 + - bwidget + - bzip2 >=1.0.8,<2.0a0 + - cairo >=1.18.4,<2.0a0 + - curl + - gcc_impl_linux-64 >=10 + - gfortran_impl_linux-64 + - gsl >=2.7,<2.8.0a0 + - gxx_impl_linux-64 >=10 + - icu >=78.2,<79.0a0 + - libblas >=3.9.0,<4.0a0 + - libcurl >=8.19.0,<9.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc + - libgcc-ng >=12 + - libgfortran + - libgfortran-ng + - libgfortran5 >=10.4.0 + - libglib >=2.86.4,<3.0a0 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libstdcxx + - libstdcxx-ng >=12 + - libtiff >=4.7.1,<4.8.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - make + - pango >=1.56.4,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + - readline >=8.3,<9.0a0 + - sed + - tk >=8.6.13,<8.7.0a0 + - tktable + - tzdata >=2024a + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxt >=1.3.1,<2.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 27333030 + timestamp: 1773746047753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_6-r45h54b55ab_0.conda + sha256: 7a3751a340766ee25380a51df70c8356a64cfeb6ac3d982a86e92eb99fec2943 + md5: e573dc135976197e7f819eec202c93f1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 48616 + timestamp: 1770027796335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64url-1.4-r45h54b55ab_1008.conda + sha256: 1785c24e90a0939a78e9bdedf44b1e5ae278619479dfcfe39307c8c6a2171991 + md5: 0c269f8672632b38dd825e59e652d3ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-backports >=1.1.0 + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 44354 + timestamp: 1757586418914 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit-4.6.0-r45h54b55ab_1.conda + sha256: f5e7c54332bb79d1f992fa97088e206a1ba8037a1be8c77886e2f63b94a97a85 + md5: 6b666bedcfbe9dee03efb5fb95ac18e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 621466 + timestamp: 1757441575090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.6.0_1-r45h54b55ab_1.conda + sha256: 2e708cdbf5392cb9e0402999ca6ee3df9cbf4f3a434dba7df823dba6c87c5493 + md5: 8c2520b2dfcaad73dff21971d8092b28 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-bit >=4.0.0 + license: GPL-2.0-only + license_family: GPL2 + size: 504212 + timestamp: 1757457072548 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-blob-1.3.0-r45hc72bb7e_0.conda + sha256: c939f23050463f3f62d08eaa5bdcd567799ed8f78d5270e50884cfe5ea35048d + md5: a5401d5f7b44aa4b805abc756ddb403a + depends: + - r-base >=4.5,<4.6.0a0 + - r-rlang + - r-vctrs >=0.2.1 + license: GPL-3.0-only + license_family: GPL3 + size: 70126 + timestamp: 1768440582521 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r45hc72bb7e_1.conda + sha256: e2a347c8816f86515c479f9944515623bf120fedc09452246f105c568ae47381 + md5: 0a84930dd565d816d9fdb2473d6d3c8a + depends: + - r-base >=4.5,<4.6.0a0 + license: Unlimited + license_family: Other + size: 644786 + timestamp: 1757463841478 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-brew-1.0_10-r45hc72bb7e_2.conda + sha256: 9324cbb93b6c3a2903b5f12c57eb7f03355b35ca1f1db15becf57f15fc40b796 + md5: 91c64b596d193d6ea30fc491ec9ae50f + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-only + license_family: GPL2 + size: 68849 + timestamp: 1757447876801 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-brio-1.1.5-r45h54b55ab_2.conda + sha256: 3711f8f1b22725994382eb3253035c8b5190343a6724a7ceb0746637386a4f2e + md5: edc56a2b0886f78e1012467b421661e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 44436 + timestamp: 1757421422834 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.10.0-r45hc72bb7e_0.conda + sha256: a4e8329b0891190fa4fd11a79db95a81e1f6e23a0c780ba67d92dbe40f5bbd37 + md5: b0ab5d18eec0343aaa4790dd78087a87 + depends: + - r-base >=4.5,<4.6.0a0 + - r-base64enc + - r-cachem + - r-htmltools >=0.5.7 + - r-jquerylib >=0.1.3 + - r-jsonlite + - r-lifecycle + - r-memoise >=2.0.1 + - r-mime + - r-rlang + - r-sass >=0.4.0 + license: MIT + license_family: MIT + size: 5484359 + timestamp: 1769433938691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.1.0-r45h54b55ab_2.conda + sha256: 75a21c955abf03fa1804d47c94f5091cd772b614e074b63b02347a23f5649a53 + md5: 42617e710293f0b76ccc08855e0edbc4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-fastmap + - r-rlang + license: MIT + license_family: MIT + size: 76879 + timestamp: 1757441544326 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r45hc72bb7e_2.conda + sha256: f9f49b2b845f279af84a33c8af19a915b2731c0bd892c608205cbad8a34f423d + md5: a5cc8a8d0dc08dc769c65a13b3573739 + depends: + - r-base >=4.5,<4.6.0a0 + - r-processx >=3.4.0 + - r-r6 + license: MIT + license_family: MIT + size: 454090 + timestamp: 1757475635573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda + sha256: 127730343fc4950b464f82cb1488fe4bf7247fc73b032524898828be9fe7990d + md5: edaca7ff6cc2450fc98f556268b8277f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-mass + license: GPL-2.0-or-later + license_family: GPL3 + size: 109601 + timestamp: 1757458174286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda + sha256: aa67f775bd1150b4d09db051e3736a86336dcf56d69f7a43db029f0b08c9d865 + md5: 4763ac257891ff9423be47c469429319 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + - r-class + - r-e1071 + - r-kernsmooth + license: GPL-2.0-or-later + license_family: GPL2 + size: 493225 + timestamp: 1757486428213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r45h3697838_1.conda + sha256: 3797cb79cc1534f88c7f0d0e325351445f77de5d04e18110b7b7d7bf3840872a + md5: 25a61ba3c01e0d6d739c713774696019 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 1311871 + timestamp: 1757414956557 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda + sha256: df9c2315dcc8e271947d6fee8d805f1723ce1f41be4369aa820f572d272c042d + md5: 5deda37b255bc9dc837d00b89dbf2a21 + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 70829 + timestamp: 1757460210204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda + sha256: 521cb81e41e3a63717ec7cf317598b8a793969e60c57328b7d382bfea4178b5d + md5: 421758eee50879a9a7ff122543e38e14 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 592267 + timestamp: 1770285739523 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda + sha256: bba5175f4ec40d91fac457aa7c6ad21c64e5a5046106cfb57b7c4f4190a7935c + md5: c741a68680f3c1e4434b4dfb5d24dfa1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-globals + - r-narray + - r-progress + - r-r6 + - r-rcpp + - zeromq >=4.3.5,<4.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 463513 + timestamp: 1758679934710 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-coda-0.19_4.1-r45hc72bb7e_2.conda + sha256: 9bc21969322aca5a5ea34115e3e68a76742bc6a7d7752dee2dedf2bf49c0e72b + md5: ee569d089cf32f9e9ad15d27cc59cf72 + depends: + - r-base >=4.5,<4.6.0a0 + - r-lattice + license: GPL-2.0-or-later + license_family: GPL3 + size: 342172 + timestamp: 1757468179935 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r45hc72bb7e_2.conda + sha256: aec327dd836824278a2adf006f426a58d834828de74de7f8348f2f5f068de702 + md5: 8e9e5b14f74a6040c77e0b9c8bfa84ca + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 109200 + timestamp: 1757452164030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.11-r45h54b55ab_0.conda + sha256: cd120d417f272d5a64b07e55a91aab5b86f83d04934d1538757819755d17563c + md5: f5d223c226b5c4ac3a1f8c9c48a68d2c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 76668 + timestamp: 1770278750456 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda + sha256: 0499da963641d533d3b210373a2b430301f9f1593c57cb3aa2f790125548ad52 + md5: 9aa495fac7950f962e255cd1af855e95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2541378 + timestamp: 1758590590322 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-commonmark-2.0.0-r45h54b55ab_1.conda + sha256: 211423381b2e832619cdb964e7fe3833b09871d0140066ca90fd3e91eb86231b + md5: 769e161acb18575460780ab99acc454e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 139818 + timestamp: 1757422097696 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.3-r45h785f33e_0.conda + sha256: b1e78668d9022919767ef4d18f5a4d72698c5c1f7a0e3e1ec6b80ef41965bc2c + md5: 7af22463e03fc80fb0da52672f296ea2 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 243012 + timestamp: 1769011262793 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda + sha256: 9126a0408696133893e674549ca7aef317768dba503765a7ed032616aabe5b49 + md5: 4f111ce078b9690abaad6248b831a370 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 168201 + timestamp: 1757452410374 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-credentials-2.0.3-r45hc72bb7e_1.conda + sha256: 5db8dc6e14ab6ff3dc79292184c079b5492f6125193e05a99f0714792d3bdc4a + md5: a94730bc5fa7197875f58d4b092a541a + depends: + - r-askpass + - r-base >=4.5,<4.6.0a0 + - r-curl + - r-jsonlite + - r-openssl >=1.3 + - r-sys >=2.1 + license: MIT + license_family: MIT + size: 226814 + timestamp: 1758405193327 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-crew-1.3.0-r45hc72bb7e_0.conda + sha256: 082b5ccecb90e311319c224453b58b0afecf21e68c064d36110f08c1169d96b6 + md5: 75a133c71033108894e6b4b762a6cd04 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.1.0 + - r-collections >=0.3.9 + - r-data.table + - r-later + - r-mirai >=2.5.0 + - r-nanonext >=1.7.0 + - r-processx + - r-promises + - r-ps + - r-r6 + - r-rlang + - r-tibble + - r-tidyselect + license: MIT + license_family: MIT + size: 1072049 + timestamp: 1758449079698 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-crew.cluster-0.4.0-r45hc72bb7e_0.conda + sha256: 3f985894ebab7f9320edee03ab42fd5bbe524c1110eb2ce3356fa4cd8ac422d9 + md5: adb69850dee74e5ecb8708a30d8f9816 + depends: + - r-base >=4.5,<4.6.0a0 + - r-crew >=1.3.0 + - r-lifecycle + - r-nanonext + - r-ps + - r-r6 + - r-rlang + - r-vctrs + - r-xml2 + - r-yaml + license: MIT + license_family: MIT + size: 513514 + timestamp: 1758453915438 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-curl-7.0.0-r45h10955f1_1.conda + sha256: f69d86d1d2020d38a4ba085297e8c3460b58158846232db96e24baf71db279f9 + md5: b51b37b26b8105fa72abe12131165018 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.14.1,<9.0a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 479210 + timestamp: 1757581704371 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.2-r45hc72bb7e_0.conda + sha256: 40fab5c4f6fe83720179ef98bffb69c17f4b910273b4423149ebeac9fd68c513 + md5: e15b3fee61cf354698b772424b10147e + depends: + - r-base >=4.5,<4.6.0a0 + - r-callr + - r-crayon + - r-desc + - r-remotes + - r-withr + license: MIT + license_family: MIT + size: 41457 + timestamp: 1773232884771 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r45h1c8cec4_1.conda + sha256: c9ac7510c18e3258e227575a83f6caf0cc692da3cc2a8c4c344da2463529b07e + md5: d63403a16b7991fa5a6b7b05e110681a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + license: MPL-2.0 + license_family: OTHER + size: 2301313 + timestamp: 1757499556984 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.3.0-r45hc72bb7e_0.conda + sha256: 82dbc27e1db79f9a897626656c3b418a071a681a07f4c47f6f15f98ec12e09fe + md5: 8a912a3730695141b5566202130a11e1 + depends: + - r-base >=4.5,<4.6.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 892756 + timestamp: 1772009847613 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.2-r45hc72bb7e_0.conda + sha256: d20fb999446dceaa575d458974e5c446ee6807e67c8e5797cca398cf051dd9ac + md5: d1dc488c56da3d0078b552153bd02f74 + depends: + - r-base >=4.5,<4.6.0a0 + - r-blob >=1.2.0 + - r-cli >=3.6.1 + - r-dbi >=1.1.3 + - r-dplyr >=1.1.2 + - r-glue >=1.6.2 + - r-lifecycle >=1.0.3 + - r-magrittr + - r-pillar >=1.9.0 + - r-purrr >=1.0.1 + - r-r6 >=2.2.2 + - r-rlang >=1.1.1 + - r-tibble >=3.2.1 + - r-tidyr >=1.3.0 + - r-tidyselect >=1.2.1 + - r-vctrs >=0.6.3 + - r-withr >=2.5.0 + license: MIT + license_family: MIT + size: 1217410 + timestamp: 1770973839074 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r45hc72bb7e_2.conda + sha256: b54c00d2ab9cca150f92120664a8a24cd63213d28c3e951c19575b24d9b57b61 + md5: 2428c825ae5b2fc162edaeb3fa76b486 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-r6 + - r-rprojroot + license: MIT + license_family: MIT + size: 339976 + timestamp: 1757463164006 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.4.6-r45hc72bb7e_0.conda + sha256: 466f690f5dc221d551db91feb6f20b2b7cbfb79297a8962edbaca63473cab5fe + md5: fc430a20ebb7d08c5f319bab04106a04 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.3.0 + - r-desc >=1.4.1 + - r-ellipsis >=0.3.2 + - r-fs >=1.5.2 + - r-lifecycle >=1.0.1 + - r-memoise >=2.0.1 + - r-miniui >=0.1.1.1 + - r-pkgbuild >=1.3.1 + - r-pkgdown >=2.0.6 + - r-pkgload >=1.3.0 + - r-profvis >=0.3.7 + - r-rcmdcheck >=1.4.0 + - r-remotes >=2.4.2 + - r-rlang >=1.0.4 + - r-roxygen2 >=7.2.1 + - r-rversions >=2.1.1 + - r-sessioninfo >=1.2.2 + - r-testthat >=3.1.4 + - r-urlchecker >=1.0.1 + - r-usethis >=2.1.6 + - r-withr >=2.5.0 + license: MIT + license_family: MIT + size: 454124 + timestamp: 1759496014222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda + sha256: 9329c0ffdbfce664893d83add06fcf73f0f7046d12cacb074192176f236cabf6 + md5: 98a4d23fc0767e9f30473d10e0c7c0b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-crayon >=1.3.2 + license: GPL-2.0-or-later + license_family: GPL2 + size: 1009962 + timestamp: 1757459137210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda + sha256: 33ce40552bc1810252c4445082392638ff2fb883147cf36c3e4017e9b0dc5474 + md5: a0e856537aa7d62a6835e3a528d29517 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 218412 + timestamp: 1763566744987 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda + sha256: 73396f3432df8aac38aeb15f27ebdecb216d3b63bfa3c87fc6b996acf27b82f8 + md5: 49850c61c12fbd8dd19b30d9bc81833f + depends: + - r-base >=4.5,<4.6.0a0 + - r-brio + - r-desc + - r-digest + - r-evaluate + - r-fansi + - r-memoise + - r-rlang + - r-vctrs + - r-withr + - r-yaml + license: MIT + license_family: MIT + size: 121741 + timestamp: 1763113559895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda + sha256: c23ab3636e5725ac596c5e0a8f1c54f4ad51c14f22ecdaa51e2a97204d8a76ca + md5: fdc22df534d09e1a432ff01f0d5e2001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + - r-boot + - r-digest >=0.2.3 + - r-lattice >=0.13_6 + - r-lme4 + - r-matrix >=1.0_3 + - r-matrixstats >=0.50.2 + - r-plyr >=1.8 + - r-png >=0.1_2 + - r-r.utils >=1.32.1 + - r-signal + - r-stringi >=0.2_3 + - r-stringr >=0.4 + - r-xml >=2.1_0 + license: GPL-2.0-or-later + license_family: GPL + size: 1367542 + timestamp: 1758605011691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.0-r45h3697838_0.conda + sha256: fb9183d9817f3cd3e5c13f3c5d047862b5365b9a781db4d37b81d4a8b98d320e + md5: 049f6345a0a7ce19e707c43ca121d0b3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-ellipsis + - r-generics + - r-glue >=1.3.2 + - r-lifecycle >=1.0.0 + - r-magrittr >=1.5 + - r-pillar >=1.5.1 + - r-r6 + - r-rlang >=0.4.10 + - r-tibble >=2.1.3 + - r-tidyselect >=1.1.0 + - r-vctrs >=0.3.5 + license: MIT + license_family: MIT + size: 1446411 + timestamp: 1770119286924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda + sha256: a413df3f99883f6972cb58642c1ff5bbe660a38cfedb8d534e1b46ba943d66c9 + md5: 25bfa5c29f7b8f25f0cd76af2cf23e17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-class + - r-proxy + license: GPL-2.0-or-later + license_family: GPL3 + size: 598429 + timestamp: 1766072349527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r45h54b55ab_4.conda + sha256: 2e4660ab89eaa40874abc78b0c5462f8539da9f6c7a96d3afbc3ff1e233fc727 + md5: 7ab2ebe9016d83ae37d90080bb9e52d5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-rlang >=0.3.0 + license: MIT + license_family: MIT + size: 44022 + timestamp: 1757440899720 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda + sha256: d3accfeab1416151515c37e5edc94b18868998db4936183459f8040117d5c83c + md5: 4e0c71ab78d7292372a89d4daecb49af + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 111914 + timestamp: 1757447684244 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda + sha256: 68dcc5aa6fc4408f9cac5aeaa03a7e6a5d127a949fc72b3fed31fd1af3bbeee5 + md5: 309740f1b6a2d4cb16d395be786c85c5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 329435 + timestamp: 1763566090233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda + sha256: 06c5e73ed5c9c15e7ca944e3a5fabfbcabd9f4aec71804404ecf51c56f78fd8f + md5: 7896efcfd50f8c1f207acce5d4ab1cc0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 1429269 + timestamp: 1757441256046 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r45h3697838_2.conda + sha256: bfec10cec03b434d9010690c61d43a0be79418f67a0713ce31da207a40e1570c + md5: 245526991ad3b8a1dc97f2dcb5031065 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 73870 + timestamp: 1757421441326 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda + sha256: 865df12d8cdd8cf577abc8f785a0aa4ee50b4f8751256dffe4676a350943d591 + md5: e9fccb3617ec9776569c6496fa254e64 + depends: + - r-base >=4.5,<4.6.0a0 + - r-htmltools >=0.5.1.1 + - r-rlang >=0.4.10 + license: MIT + license_family: MIT + size: 1335664 + timestamp: 1757461248044 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda + sha256: c95d1e61946bf81128be213dea7a07b5196c6e13caf9c6452c38145da8d2dfb1 + md5: 5abe392c8f8c5b954ebdc5fe46fcc709 + depends: + - r-base >=4.5,<4.6.0a0 + - r-codetools + - r-iterators + license: Apache-2.0 + license_family: APACHE + size: 140909 + timestamp: 1757490449004 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda + sha256: 0f4f18874c9ba5d2a7c377672e68002cd83ec81647893591bed09927ba22f4c5 + md5: 64b7711ba8b74c96eed55237a1443408 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 269631 + timestamp: 1769731310506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.6-r45h3697838_1.conda + sha256: 9c4c4785e59daa305b2d99c53ee49bf316270af53feb3e2391490e52fcd3ee83 + md5: 83e475da65e64314507bb8da487cdc00 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 511417 + timestamp: 1757422447051 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.3.1-r45hc72bb7e_4.conda + sha256: a12b41d466479f5bb7c41d9fab411c5f135da5124f333be29327c53945602214 + md5: ca6f7f06bb35b0c5533a35815be11f3c + depends: + - r-base >=4.5,<4.6.0a0 + - r-ellipsis + - r-future >=1.19.1 + - r-globals >=0.13.1 + - r-lifecycle >=0.2.0 + - r-purrr >=0.3.0 + - r-rlang >=0.3.0 + - r-vctrs >=0.3.2 + license: MIT + license_family: MIT + size: 1018717 + timestamp: 1757511429103 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda + sha256: fbd8f8661edb4fac131bc18105fb9c9cb7427602ad525aee83f7dda6d9dc1695 + md5: aa881360b19ba5911181085679303d5d + depends: + - r-base >=4.5,<4.6.0a0 + - r-digest + - r-globals >=0.18.0 + - r-listenv >=0.8.0 + - r-parallelly >=1.44.0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 953162 + timestamp: 1773591953508 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-future.callr-0.10.2-r45hc72bb7e_0.conda + sha256: 9cdbdf1e02dc66928aae13b45a8408e5eabb3d2653907b886e8326747086a302 + md5: 86b2f5c2965e66750a757bcd13eb8078 + depends: + - r-base >=4.5,<4.6.0a0 + - r-callr >=2.0.3 + - r-future >=1.23.0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 103906 + timestamp: 1760166979748 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r45hc72bb7e_2.conda + sha256: db6626d97338f0664bb5a0b8eefb2abd953ab06c4f856c80831411a9b996f723 + md5: f563c7b895121cc06112923292e017ea + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 60373 + timestamp: 1757467353195 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r45hc72bb7e_1.conda + sha256: 88a5cf4bac0a553943996bc930b1ea28f2635c262c1b2c5a42b026b69f227f02 + md5: f19c9493b80f63a41fa017ec3b27bc2e + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 88225 + timestamp: 1757455977192 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-gert-2.3.1-r45h5e22a44_0.conda + sha256: d84f10e2eb1c5b04e74cae3b8847f09feaabc2b63b7c8b385e84a00df86f9c12 + md5: fb8003f08cff7c5ea407a7178097b697 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgit2 >=1.9.2,<1.10.0a0 + - r-askpass + - r-base >=4.5,<4.6.0a0 + - r-credentials >=1.2.1 + - r-openssl >=2.0.3 + - r-rstudioapi >=0.11 + - r-zip >=2.1.0 + license: MIT + license_family: MIT + size: 282398 + timestamp: 1768193980116 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-4.0.2-r45h785f33e_0.conda + sha256: 54b1fd62a41549452d4be61f26f999f0aaeda863e2ffcde5bfb4d6422207b8fd + md5: c707ec20fc03a712b525bb975367a1fb + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-glue + - r-gtable >=0.3.6 + - r-isoband + - r-lifecycle >=1.0.1 + - r-rlang >=1.1.0 + - r-s7 + - r-scales >=1.4.0 + - r-vctrs >=0.6.0 + - r-withr >=2.5.0 + license: MIT + license_family: MIT + size: 7843556 + timestamp: 1770120207776 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-gh-1.5.0-r45hc72bb7e_1.conda + sha256: 192cd751680077e36e7d4e2d7dd56bc479f1755652e0850d6467c148bfe93781 + md5: 63ad70a28896e7a2bb3c3d06c143c358 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.0.1 + - r-gitcreds + - r-httr2 + - r-ini + - r-jsonlite + - r-rlang >=1.0.0 + license: MIT + license_family: MIT + size: 129562 + timestamp: 1758411443631 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-gitcreds-0.1.2-r45hc72bb7e_4.conda + sha256: 8a2619d16e1148cd712446f47c39e53aa09708071f9fc46e9b8dd31a28fbf0ad + md5: 8864884cea757c51580b45be5c362068 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 96405 + timestamp: 1757482244466 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.19.1-r45hc72bb7e_0.conda + sha256: 05683862038020e679b6b1e30cebf4244416a7ffd73b7247f046b6155a351a05 + md5: 5bb935fc63812c4978f0ac443b8b3420 + depends: + - r-base >=4.5,<4.6.0a0 + - r-codetools + license: LGPL-2.1-or-later + license_family: LGPL + size: 181512 + timestamp: 1773583977537 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.8.0-r45h54b55ab_1.conda + sha256: 77aa73dbc9ad334bd07df737c279c4b710ce9fbd4d80df3e31dc7303c584552f + md5: 1183e4d2542ca14d0e7807864498b1a6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 165356 + timestamp: 1757421195953 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r45hc72bb7e_1.conda + sha256: fcd2601af8213f39af6f720e22c8f858b3451f8e3d93cbc9e6aedb2d6f88483e + md5: f686123cfba49e6299fae7e029a40266 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-glue + - r-lifecycle + - r-rlang + license: MIT + license_family: MIT + size: 228864 + timestamp: 1757463478042 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-here-1.0.2-r45hc72bb7e_0.conda + sha256: c40e1d74ccf393c27eba7f7588fdb915a1360df125c36ed18f9fbe0ea2c3fcb0 + md5: b285c2128264a05cd51477ebe6766d54 + depends: + - r-base >=4.5,<4.6.0a0 + - r-rprojroot >=2.0.2 + license: MIT + license_family: MIT + size: 56843 + timestamp: 1757929913101 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-highr-0.12-r45hc72bb7e_0.conda + sha256: e676112aac0dbfe123fcb3108cce376782211a096c898a3af46fdf32a37e12e9 + md5: 0b5902d6af02a23bda1794d46090db42 + depends: + - r-base >=4.5,<4.6.0a0 + - r-xfun >=0.18 + license: GPL-2.0-or-later + license_family: GPL + size: 57308 + timestamp: 1772794436225 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-hms-1.1.4-r45hc72bb7e_0.conda + sha256: be67527b52f98832ab2871d0182fb76499538ca7eb333506084620b7489ce6a0 + md5: 4677c1ad37a9452e27e27d9ed1b8ae90 + depends: + - r-base >=4.5,<4.6.0a0 + - r-ellipsis + - r-lifecycle + - r-pkgconfig + - r-rlang + - r-vctrs >=0.2.1 + license: MIT + license_family: MIT + size: 112799 + timestamp: 1760687922566 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-htmltools-0.5.9-r45h3697838_0.conda + sha256: 1fa1fcdf980d0da17a583e41810da190eb9caf586c3fdf36312d045d9bb812e7 + md5: 2a2297687ae137e7fa90d3c996895e61 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-base64enc + - r-digest + - r-ellipsis + - r-fastmap >=1.1.0 + - r-rlang >=0.4.10 + license: GPL-2.0-or-later + license_family: GPL3 + size: 367095 + timestamp: 1764860550376 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-htmlwidgets-1.6.4-r45h785f33e_4.conda + sha256: 4c3998ce4b4882429e52eed5c6c53d59056814d8fbc34a41ba79b990fdec1441 + md5: 6f767715f90e7caf17af72959bfcb11e + depends: + - r-base >=4.5,<4.6.0a0 + - r-htmltools >=0.5.7 + - r-jsonlite >=0.9.16 + - r-knitr >=1.8 + - r-rmarkdown + - r-yaml + license: MIT + license_family: MIT + size: 426023 + timestamp: 1757552859817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-httpuv-1.6.17-r45h6d565e7_0.conda + sha256: f0755cf37e28f0e1a142eef051918c90c9e8fece46edb5e40191a7898d8cb217 + md5: 1be1d81542b9c87b4d5197a41dbd0da9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libuv >=1.51.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + - r-later >=0.8.0 + - r-promises + - r-r6 + - r-rcpp >=1.0.7 + license: GPL-2.0-or-later + license_family: GPL3 + size: 553922 + timestamp: 1773825458255 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.8-r45hc72bb7e_0.conda + sha256: 4adb565d2b3365108d7efb926c2acdc68c11ef2ad32ed03d1108a3005cf8cdd8 + md5: 259658089c383f2915b167da3e7890aa + depends: + - r-base >=4.5,<4.6.0a0 + - r-curl >=0.9.1 + - r-jsonlite + - r-mime + - r-openssl >=0.8 + - r-r6 + license: MIT + license_family: MIT + size: 474019 + timestamp: 1771005817336 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-httr2-1.2.2-r45hc72bb7e_0.conda + sha256: b7a0dce6bbc69d504ac4398d7d7d4831c59389fcd193d5eaa77ba81169abe80d + md5: 37b687ccc11cd808f45e2efbc6e8e78a + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.0.0 + - r-curl >=5.1.0 + - r-glue + - r-lifecycle + - r-magrittr + - r-openssl + - r-r6 + - r-rappdirs + - r-rlang >=1.1.0 + - r-vctrs >=0.6.3 + - r-withr + license: MIT + license_family: MIT + size: 786857 + timestamp: 1765189940950 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-igraph-2.1.4-r45hf411e2a_2.conda + sha256: 6fe22a8d9cbb42fa39013fd12b509ac031975c6895b8492f3036934c4813f65b + md5: 92eca0a4f67020e01cf8a9cdad2a2864 + depends: + - __glibc >=2.17,<3.0.a0 + - glpk >=5.0,<6.0a0 + - gmp >=6.3.0,<7.0a0 + - libblas >=3.9.0,<4.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - liblapack >=3.9.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-cpp11 >=0.5.0 + - r-lifecycle + - r-magrittr + - r-matrix + - r-pkgconfig >=2.0.0 + - r-rlang + - r-vctrs + license: GPL-2.0-or-later + license_family: GPL3 + size: 5143602 + timestamp: 1759461201027 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-ini-0.3.1-r45hc72bb7e_1007.conda + sha256: 72ee2282467c148463ba8e8a8af4b5a6fdccd98e38b0820f442af187fcabbb13 + md5: e680ce2dae5ccc37ed94fc0696e6f10d + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 33444 + timestamp: 1757482041715 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.3.0-r45h3697838_0.conda + sha256: a09a6f2f37890560217117463f0722283f8939af945b3e616b9791f2429325b0 + md5: fb538d0b46d6a44aa1ff666b15422ba6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-cpp11 + - r-rlang + license: MIT + license_family: MIT + size: 1657523 + timestamp: 1766530500097 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r45hc72bb7e_4.conda + sha256: c90d0faa668d2753db9da9458ca085891a3030c6537f5675fe0c1a1b5af2103c + md5: 7746a41a4cb97cec59db2d5a2cac0701 + depends: + - r-base >=4.5,<4.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 350171 + timestamp: 1757459846270 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r45hc72bb7e_4.conda + sha256: 3b98f72bb32d4758854805b664b4404602a583da32c9b96026536f5676f41812 + md5: 49a9ed6ed01f4ae6067ead552795bfce + depends: + - r-base >=4.5,<4.6.0a0 + - r-htmltools + license: MIT + license_family: MIT + size: 307113 + timestamp: 1757459485295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-2.0.0-r45h54b55ab_1.conda + sha256: bd24c57226192b0decdcddd6fd5fa74db1f29685904e4aff87f2c16eb6493416 + md5: 026c72026f431daf8a5719e09e704faa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 638574 + timestamp: 1757419590757 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda + sha256: 032d445f1a7e4f35e5762a28ffefe90f6f68cc2bc3b6806e0d0fba89bb1e5b43 + md5: bd7ceffa31a5b9980641d9b40c27e85d + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + license: Unlimited + license_family: Other + size: 101583 + timestamp: 1757457788483 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.51-r45hc72bb7e_0.conda + sha256: e2184f1cb58aedacd94d1dbe6e8b5dfa3508151f454e80f6bd49486bdb90625c + md5: 35b31b96aa7bc052ad6347322a1481f1 + depends: + - r-base >=4.5,<4.6.0a0 + - r-evaluate >=0.15 + - r-highr >=0.11 + - r-xfun >=0.52 + - r-yaml >=2.1.19 + license: GPL-2.0-or-later + license_family: GPL + size: 988526 + timestamp: 1766309267127 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r45hc72bb7e_2.conda + sha256: 42a06b7c346d6e4550dca1024bbf89e3c22962d568cfe4e8b8be824dea326110 + md5: a41490fdf607381035aa0304c21407c9 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 70182 + timestamp: 1757456007088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-languageserver-0.3.17-r45h54b55ab_0.conda + sha256: d63bd6a70f140f08869d724e59a09c7ade2ec6647d44dcfc4b08c2b9b1c42f1a + md5: 23b3f3dca969a8c8ae477d7ec3bde40f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-callr >=3.0.0 + - r-collections >=0.3.0 + - r-desc >=1.2.0 + - r-fs >=1.3.1 + - r-jsonlite >=1.6 + - r-lintr >=2.0.0 + - r-r6 >=2.4.1 + - r-repr >=1.1.0 + - r-roxygen2 >=7.0.0 + - r-stringi >=1.1.7 + - r-styler >=1.2.0 + - r-xml2 >=1.2.2 + - r-xmlparsedata >=1.0.3 + license: MIT + license_family: MIT + size: 772652 + timestamp: 1772881062772 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-later-1.4.8-r45h3697838_0.conda + sha256: 895f18dfc5a0521c22ad9e38619ea6cf170e38d54aaa4596fb1d0dad7845703b + md5: a6b2c9882bb1d700f9108bc93c2c12a8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp >=0.12.9 + - r-rlang + license: MIT + license_family: MIT + size: 153472 + timestamp: 1772707291964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_9-r45h54b55ab_0.conda + sha256: ee233422c029d7b341dd05604d133db6f698ec1cdd4ad8690a312d0f7d958793 + md5: 234365e95fa3cf27bd7946f208d1ed0b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 1416943 + timestamp: 1770694116947 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r45h54b55ab_6.conda + sha256: 87e0229eb23b15272d0ac41758ec291ac0b4b278e039a0531909a81747a111fb + md5: 587b831cf674e5b0a10350cfda725fb7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 161183 + timestamp: 1757422197141 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda + sha256: b7a4d8d98a96d17d18c80fb7e1c8e6cb09b9bd2542e74d91a7f483afccb30ee6 + md5: 5f8369dfbdff08878e58bf15529fca3a + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.4.0 + - r-glue + - r-rlang >=1.0.6 + license: MIT + license_family: GPL3 + size: 132636 + timestamp: 1767865665455 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda + sha256: ee810b37dc0ac19be81312b79733d160877b5a86687df72cb7e0e4e4b34ad5e1 + md5: 3df860dc517bca287568d3a3a319b792 + depends: + - r-backports + - r-base >=4.5,<4.6.0a0 + - r-codetools + - r-crayon + - r-cyclocomp + - r-digest + - r-glue + - r-jsonlite + - r-knitr + - r-rex + - r-xml2 >=1.0.0 + - r-xmlparsedata >=1.0.5 + license: MIT + license_family: MIT + size: 1400490 + timestamp: 1764236203529 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda + sha256: 0574f35c491097dcd33e62d09b46dd8e8d38f1a077a998b2b40b8f66c2de4ba6 + md5: d36018071fc8b306cf9872fe0f9f27ba + depends: + - r-base >=4.5,<4.6.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 141012 + timestamp: 1773175132864 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda + sha256: dfe79479c9ef9e4a7f904a86d78e544b258e87c9795076fa316bb0426d738a89 + md5: 3213c34538e1c041098da42fd5e67517 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-boot + - r-lattice + - r-mass + - r-matrix 1.7_4 r45h0e4624f_1 + - r-minqa >=1.1.15 + - r-nlme >=3.1_123 + - r-nloptr >=1.0.4 + - r-rcpp >=0.10.5 + - r-rcppeigen >=0.3.3.9.4 + - r-reformulas >=0.3.0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 4684719 + timestamp: 1764694208302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda + sha256: 169ffbb02cd134949c806d521666a5b6fce7d59ea2ca39346c27a13b179a6627 + md5: cec48e713c16eb74b4984019282ad03a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-generics + - r-timechange >=0.4.0 + license: MIT + license_family: MIT + size: 977124 + timestamp: 1770225935525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.4-r45h54b55ab_0.conda + sha256: 6b6284d1323e50680f15c3e0b5e863478c106dd328ec4c2206b2426524dbc158 + md5: 247626d820a50ab24f95a2a6105a7831 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 211750 + timestamp: 1757678019400 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda + sha256: 5b2296e9486091991392571abd3f05e71506589543db7ae542cb7522934e26ff + md5: 36f1b40545cce670b19c1322483b91fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 1142241 + timestamp: 1757428334352 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.7_4-r45h0e4624f_1.conda + sha256: b15710324f7e365ac662fc0017b743d6f22b7a2ba989e7c1c83760cd3b603525 + md5: c6bafb33c4ace44ef33c18e543befe41 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libgcc >=14 + - liblapack >=3.9.0,<4.0a0 + - r-base >=4.5,<4.6.0a0 + - r-lattice + license: GPL-2.0-or-later + license_family: GPL3 + size: 4259495 + timestamp: 1757441312520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r45h54b55ab_1.conda + sha256: 06177df6c2f39df0a90b456557d226c2ffa9eaf55505b35d0ca9a81fe793dc49 + md5: 3deafa947ef32bf21d87b57e74d3711b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: Artistic-2.0 + license_family: OTHER + size: 484755 + timestamp: 1757442394466 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-memoise-2.0.1-r45hc72bb7e_4.conda + sha256: 91b0eedec5cf5de195b442b97eda508f22fdedbdbc487f74e3868d3e95380fdd + md5: 2b04206ff6ea5a92e8e36bdaa5feb3cc + depends: + - r-base >=4.5,<4.6.0a0 + - r-cachem + - r-rlang >=0.4.10 + license: MIT + license_family: MIT + size: 57750 + timestamp: 1757456335587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_4-r45h0e4624f_0.conda + sha256: 83a5233b6162c55f5021dea34464bd64d87f18b7815e738c42d06a046780e594 + md5: e33882c93c191f5d9a9b346431f02b43 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libblas >=3.9.0,<4.0a0 + - libgcc >=14 + - liblapack >=3.9.0,<4.0a0 + - r-base >=4.5,<4.6.0a0 + - r-matrix + - r-nlme >=3.1_64 + license: GPL-2.0-or-later + license_family: GPL2 + size: 3644492 + timestamp: 1762539595584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mime-0.13-r45h54b55ab_1.conda + sha256: 03116d6a8db71492d036c6c052d6cfbf5a98c06da071e42aedb5c740920d6b61 + md5: 26aa2fa52d4caed58336f2b4887916d6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 64912 + timestamp: 1757441376534 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-miniui-0.1.2-r45hc72bb7e_1.conda + sha256: 0e63708e94f3848e7212db1bd8e0b7f4b72084d2d96a523a63ddb3c3102135a8 + md5: 4940389ec03eea86358108ec4bb222a0 + depends: + - r-base >=4.5,<4.6.0a0 + - r-htmltools >=0.3 + - r-shiny >=0.13 + license: GPL-3.0-only + license_family: GPL3 + size: 55283 + timestamp: 1757517043723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r45ha36cffa_2.conda + sha256: e6facde4a2182d2fcf3571a66268a526483a6c5e9b4cb4583c1866fff9df4a0e + md5: d0cda11580905b07c959741e69aa9bd2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp >=0.9.10 + license: GPL-2.0-only + license_family: GPL2 + size: 148374 + timestamp: 1757490147377 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-mirai-2.6.1-r45hc72bb7e_0.conda + sha256: a01a0b3e7d00925305c4839b79e58a676d0b77eac21a001b1cc2e6216d32f4f0 + md5: ef9a1b8acf74223dedf78952bd9d870e + depends: + - r-base >=4.5,<4.6.0a0 + - r-nanonext >=1.1.0 + license: GPL-3.0-or-later + license_family: GPL3 + size: 313152 + timestamp: 1772631335425 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r45hc72bb7e_2.conda + sha256: 97d463c2146c483992a25fe497755e9cf714f95ca611a93d8adbb41c068e9e74 + md5: c78bd534986cde8fc0cb08cc9a1a2cc6 + depends: + - r-base >=4.5,<4.6.0a0 + - r-colorspace + license: MIT + license_family: MIT + size: 247241 + timestamp: 1757455926748 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda + sha256: ba1ada1c934d2253049a4e0add1915e3f39c73f792c35907e7efeaefcf1c1239 + md5: 078320bb744d4eb597dbf417bae870ad + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 619614 + timestamp: 1770720266561 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.1-r45h54b55ab_0.conda + sha256: 96590884ecb5a60ce291af7a2b424f1a7e634083e896088864ba4daa76206216 + md5: baa9e5ffa979146249c1b1aed452e41b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - mbedtls >=3.6.3.1,<3.7.0a0 + - nng >=1.11,<1.12.0a0 + - r-base >=4.5,<4.6.0a0 + - r-later + license: GPL-3.0-or-later + license_family: GPL + size: 402869 + timestamp: 1772956598005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda + sha256: c5e2901edb8fdb10e06dcf819b42ae0b6aafec7992e46c7d6a974c50a54c1046 + md5: 13919af864d1fd22747ce007f47c532a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-progress + - r-rcpp + - r-stringr + license: Apache-2.0 + license_family: APACHE + size: 225802 + timestamp: 1764331882493 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_4.conda + sha256: 906db096beae7d0fee62f90e6cb969196afc6c1eee1e9e840c3e771038f6f78c + md5: 2bb14f5b8bcf7c5dadda50e773ae0527 + depends: + - __glibc >=2.17,<3.0.a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - libgcc >=14 + - libnetcdf >=4.10.0,<4.10.1.0a0 + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-or-later + license_family: GPL3 + size: 300037 + timestamp: 1772304020267 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda + sha256: da4b17286e9df1c5db0de78534ee49ace3990e380a601e2e4369a80d31c7642e + md5: b75eb6b18bf2dcdc4f72c3f9cdc310b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + - r-lattice + license: GPL-2.0-or-later + license_family: GPL3 + size: 2351357 + timestamp: 1757441114604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda + sha256: 5123bdea8a23bea521ab41336be42f7d1e6f3cac749d451090366db794f6fcb6 + md5: 5a03c2310c966036265f16a91f808999 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - nlopt >=2.10.0,<2.11.0a0 + - r-base >=4.5,<4.6.0a0 + license: LGPL-3.0-only + license_family: LGPL + size: 273807 + timestamp: 1757533369995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda + sha256: 44fbbec1a27600b356422d593e8df961ad6e62d8a906aac2c016b9fe16836671 + md5: 08cba402a662bcfead7feee33923baee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-mass + license: GPL-2.0-or-later + license_family: GPL3 + size: 132257 + timestamp: 1757457922422 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda + sha256: 253de77f911a8f16b537322a1bc01f627bfc9d14610017dea348edbaa1d1ba96 + md5: acd96fd9041b5790fd32decd0117137f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + - r-askpass + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 681547 + timestamp: 1772126618023 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-otel-0.2.0-r45hc72bb7e_1.conda + sha256: f5de9737f59e1965db2de11c90cf1fdd426db322a7205c935a3e55150287b02f + md5: 560abd550c097e0d0af2e201b335f53d + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 286342 + timestamp: 1761151056217 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda + sha256: bf80a25cead88176880121ea7fefba2d143d1919420bcbef4b640cdad863a1ad + md5: a3b330fbc5ec2832ad37243a46817df4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 617825 + timestamp: 1767860028470 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.1-r45hc72bb7e_0.conda + sha256: b3f281041ecff2d4a9f40073ad5e7ec6fa7e0c841068ce85c550bcce0ff8938d + md5: 807ef77a70fc5156f830d6c683d07a29 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-crayon >=1.3.4 + - r-ellipsis + - r-fansi + - r-lifecycle + - r-rlang >=0.3.0 + - r-utf8 >=1.1.0 + - r-vctrs >=0.2.0 + license: GPL-3.0-only + license_family: GPL3 + size: 629867 + timestamp: 1758149763203 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgbuild-1.4.8-r45hc72bb7e_1.conda + sha256: 3d1b97a5616663fabcb165968e2d1ad3732d316a0d38be259ca84533986a0093 + md5: daea93b32bab57062ab586c9b6e3896e + depends: + - r-base >=4.5,<4.6.0a0 + - r-callr >=3.2.0 + - r-cli + - r-crayon + - r-desc + - r-prettyunits + - r-r6 + - r-rprojroot + - r-withr >=2.1.2 + license: GPL-3.0-only + license_family: GPL3 + size: 221277 + timestamp: 1757496221 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda + sha256: fda425435a533e86da5f0fc89cf45c9f889a4e6f1e2ed536ca23662a8461602c + md5: 40a5fdd06c7e7880758a021cf2df6c12 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 27236 + timestamp: 1757447537447 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda + sha256: e33f7255808935799a2bde0b7f19a66711b2abed5ad351d17fb2233e3e7879dd + md5: ac92b5648ff1ed7028576f00e8e30c57 + depends: + - r-base >=4.5,<4.6.0a0 + - r-bslib >=0.5.1 + - r-callr >=3.7.3 + - r-cli >=3.6.1 + - r-desc >=1.4.0 + - r-downlit >=0.4.4 + - r-fontawesome + - r-fs >=1.4.0 + - r-httr2 >=1.0.2 + - r-jsonlite + - r-openssl + - r-purrr >=1.0.0 + - r-ragg >=1.4.0 + - r-rlang >=1.1.4 + - r-rmarkdown >=2.27 + - r-tibble + - r-whisker + - r-withr >=2.4.3 + - r-xml2 >=1.3.1 + - r-yaml + license: MIT + license_family: MIT + size: 907520 + timestamp: 1762414187272 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.0-r45hc72bb7e_0.conda + sha256: 7d9a1ffc9b5c2c8c8b5cb69e8e79fad348cb7687503cf5d153b65966ab931d13 + md5: 66b42aecf1900e02b7d2eaf913980f18 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.3.0 + - r-desc + - r-fs + - r-glue + - r-lifecycle + - r-pkgbuild + - r-processx + - r-rlang >=1.1.1 + - r-rprojroot + - r-withr >=2.4.3 + license: GPL-3.0-only + license_family: GPL3 + size: 241326 + timestamp: 1770110557741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda + sha256: 353d5945d242b03c47ab0d051cf9058b4459303c96455dba9442100628a0bde1 + md5: 255fec0919919b14789eb30cc448ed20 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp >=0.11.0 + license: MIT + license_family: MIT + size: 787537 + timestamp: 1757441721952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r45h6b2d295_3.conda + sha256: a57dec7255d2ac3f4be1dd9c5723ef6c2c628f3959de8dcc92f805ec11a27756 + md5: 0063fba2d01cf430a62e51eefe8aaa94 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpng >=1.6.50,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-only OR GPL-3.0-only + license_family: GPL3 + size: 61470 + timestamp: 1757489735151 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda + sha256: 2f4b33c16d01df7d3a65cbb7a75989a2e3a1e068a354430da225d01d50870732 + md5: d9f7dfa06871712aaf768674dea06a0b + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 25995 + timestamp: 1757447352187 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda + sha256: 0306580de6e867b9060595f5eedde4dbf531ee89c16dd3738dde995b30f3fe14 + md5: 07465728b1fd99d28b286156dac895a3 + depends: + - r-assertthat + - r-base >=4.5,<4.6.0a0 + - r-magrittr + license: MIT + license_family: MIT + size: 161043 + timestamp: 1757463130831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.6-r45h54b55ab_1.conda + sha256: 1313a7cf1faa7a79ecc33d3e21201cb5593a22c5c6d2d300a347a8937ef5cc70 + md5: dc609ebc1bbdae46eae17615da337e45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-ps >=1.2.0 + - r-r6 + license: MIT + license_family: MIT + size: 340846 + timestamp: 1757460085027 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda + sha256: 21815d71c293933555e4258acff4f8de76eeca52a63ebeb6c10314e242dddebc + md5: b50603b1967acbdd5d8f78bb999e6841 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-htmlwidgets >=0.3.2 + - r-purrr + - r-rlang >=0.4.9 + - r-stringr + - r-vctrs + license: GPL-3.0-only + license_family: GPL3 + size: 229791 + timestamp: 1757585540168 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r45hc72bb7e_2.conda + sha256: 7dc34860af66a0305601d70714269d8e24766bc9780a43683c1b7989970a61a3 + md5: 619b691b0965c6894eb99d3851857df7 + depends: + - r-base >=4.5,<4.6.0a0 + - r-crayon + - r-hms + - r-prettyunits + - r-r6 + license: MIT + license_family: MIT + size: 96260 + timestamp: 1757484957523 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-promises-1.5.0-r45hc72bb7e_1.conda + sha256: 684dba5d20aae8da37868d603b662014e1944f5568e5f737e42d9d485892a26e + md5: b2c1b6ef8f12894fd2694b285fe8989a + depends: + - r-base >=4.5,<4.6.0a0 + - r-fastmap >=1.1.0 + - r-later + - r-lifecycle + - r-magrittr >=1.5 + - r-otel >=0.2.0 + - r-r6 + - r-rlang + license: MIT + license_family: MIT + size: 1597704 + timestamp: 1762426228446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_29-r45h54b55ab_0.conda + sha256: 45e7380c251eec3687bf6349f1bbce193fd87f6e351d0ad56f85d5dbce732911 + md5: 3cd143bab3297c33eaf8b11a47d1c6f9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-only + license_family: GPL2 + size: 183954 + timestamp: 1767043865593 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.1-r45h54b55ab_1.conda + sha256: 928e9200c2e6658c4d683a1d0c8c96f9fbc0b8becf759ff99fff3955977c199a + md5: cd3627a5e66f15c8e65f921ca88940a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 407941 + timestamp: 1757421229228 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda + sha256: cd296e0fc8a07eb4904c5936b3db93e985e3ff5a0699df7cc46ea809a89eb857 + md5: 44746443d3a9d657a09a7c8879ca8f7d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.4 + - r-lifecycle >=1.0.3 + - r-magrittr >=1.5 + - r-rlang >=0.4.10 + - r-vctrs >=0.5 + license: MIT + license_family: MIT + size: 547177 + timestamp: 1768061060476 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.17.0-r45hc72bb7e_1.conda + sha256: 07f54007ce71d864b97221b32963e697c41cabf6a38a93e940423818af5e8b36 + md5: 400cedaf94ac8d7a2ba92ec1dd1905f9 + depends: + - r-base >=4.5,<4.6.0a0 + - r-digest >=0.6.13 + - r-r.methodss3 >=1.7.1 + - r-r.oo >=1.23.0 + - r-r.utils >=2.8.0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 128291 + timestamp: 1757498815158 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r45hc72bb7e_4.conda + sha256: e37dd18b15526d87a949a380b941660bb5e323a5c8b9e05435554c73f27bd94f + md5: 491826d3aaedc8f5e71aec5ddd24df26 + depends: + - r-base >=4.5,<4.6.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 98887 + timestamp: 1757447830151 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.27.1-r45hc72bb7e_1.conda + sha256: e9874a6edc3af280493d2a5a331e6721f8ad26df221a4b22d4df8c65267cd4be + md5: 39bd43593006907bbea339b24a904ade + depends: + - r-base >=4.5,<4.6.0a0 + - r-r.methodss3 >=1.7.1 + license: LGPL-2.1-or-later + license_family: LGPL + size: 995845 + timestamp: 1757455958627 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.13.0-r45hc72bb7e_1.conda + sha256: 8907a11d1f208a5ae44efd57c2cea0fa5e0e22ae4427c9c0d830570f60fa4b56 + md5: 3e01265486a11af09548f143dd5c20f8 + depends: + - r-base >=4.5,<4.6.0a0 + - r-r.methodss3 >=1.8.0 + - r-r.oo >=1.23.0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 1429164 + timestamp: 1757484837409 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r45hc72bb7e_1.conda + sha256: bd92e91332eba5f0c689583e80adec85ef272c4e0d0b36ee17cb7c11b5693cf2 + md5: 750802806d7d640c286ed8491bb395dc + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 95073 + timestamp: 1757447661037 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.1-r45h9f1dc4d_0.conda + sha256: 4ae205861573fd5be66d9bb81338720e24a5f5d289eee7972918249165162f8d + md5: 8a77b7e5be794fba37fa73cfff35aa64 + depends: + - __glibc >=2.17,<3.0.a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + - r-systemfonts >=1.0.3 + - r-textshaping >=0.3.0 + license: MIT + license_family: MIT + size: 595881 + timestamp: 1772815509200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda + sha256: a9778d5fa6777ce286815eb0abef625ff54693532795ef48a1bc319967e0ecb4 + md5: 9fa763ece102dca3e50892bad36896ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 54376 + timestamp: 1768747300036 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.4.1-r45h54b55ab_0.conda + sha256: 87b7176a483778a289568a7addec3761b8ca1baaa3473be265be1ed0435b9ad5 + md5: b90cbfc2ce768daf004f0b97f3929738 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-xml2 + license: GPL-2.0-only + license_family: GPL2 + size: 988329 + timestamp: 1769164057985 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rcmdcheck-1.4.0-r45h785f33e_4.conda + sha256: 2511fd3049244f26c9bfee1f58823c6e9f200eded58fa893c928700b05271e9a + md5: 46cd08beb113bab9a16bc2a35ca9ea89 + depends: + - r-base >=4.5,<4.6.0a0 + - r-callr >=3.1.1.9000 + - r-cli >=3.0.0 + - r-curl + - r-desc >=1.2.0 + - r-digest + - r-pkgbuild + - r-prettyunits + - r-r6 + - r-rprojroot + - r-sessioninfo >=1.1.1 + - r-withr + - r-xopen + license: MIT + license_family: MIT + size: 179210 + timestamp: 1758407851979 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r45h785f33e_4.conda + sha256: ddd4e63616ee475bdf9dc63a0b16a89017237121e927d83fbdee07d5a5ccc890 + md5: d8fa238420cb6de47d463b7345a761eb + depends: + - r-base >=4.5,<4.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 68005 + timestamp: 1757452462302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.1-r45h3697838_0.conda + sha256: a92cb7db892c5c195c039d478d66912528d575ba2e742ba9de9ed6242d3891ee + md5: 6903480a85621c864d8d448c283b5294 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 2110489 + timestamp: 1768070822548 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r45h3704496_1.conda + sha256: fd1cc8ec804fede96bbd07867c58fd15c9fdb3fbae800ba0eb7b2779910734dc + md5: 743927aa75562d9a53b8fda4777bdf93 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libgcc >=14 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-matrix >=1.1_0 + - r-rcpp >=0.11.0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 1496128 + timestamp: 1757496030112 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda + sha256: e53806a09281774eb7c5e6e8572278dc4e82994d41bdc92a5e18793711301865 + md5: 2b9eb11b885d45d9810089deb8078f02 + depends: + - r-base >=4.5,<4.6.0a0 + - r-gbrd + - r-rbibutils >=1.3 + license: GPL-2.0-or-later + license_family: GPL3 + size: 638016 + timestamp: 1770551164495 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda + sha256: aabe4c91dd234e4cadc51f5a83cd501d269682d6e34320b336595fda71fbfb17 + md5: 340c190b18b45a12a1359d78467fba78 + depends: + - r-base >=4.5,<4.6.0a0 + - r-boot + - r-class + - r-cluster + - r-codetools + - r-foreign + - r-kernsmooth + - r-lattice + - r-mass + - r-matrix + - r-mgcv + - r-nlme + - r-nnet + - r-rpart + - r-spatial + - r-survival + license: GPL-3.0-or-later + license_family: GPL + size: 18561 + timestamp: 1757563842732 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.4-r45hc72bb7e_0.conda + sha256: 1fda0a06525975681e00bd562675bb9d21289663b254a91678f8a0b64bda51a4 + md5: 6103051aea9e4c49ad5dd047d054992d + depends: + - r-base >=4.5,<4.6.0a0 + - r-matrix + - r-rdpack + license: GPL-3.0-only + license_family: GPL3 + size: 170053 + timestamp: 1770043350015 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda + sha256: 20ec2130c80ac4b9f5488ea5b1d207b932e99b8a41beae62a58a3fcb98480025 + md5: 9190c3379d369e61841fe1bad6dc91e2 + depends: + - r-base >=4.5,<4.6.0a0 + - r-tibble + license: MIT + license_family: MIT + size: 56155 + timestamp: 1757496154915 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda + sha256: d0ffd9ce29b45dc3cbf3a49359feddc884cf404236c89dc0a9f0b704e542a406 + md5: 2587026beb4e8e8dc9aa0f39ad3f197e + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 437047 + timestamp: 1757451645190 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda + sha256: d8229a064695b7a0c36c70b148a76628f180693161bd35a77a9692481794ff37 + md5: 0442a7f2ecc741e142466a7edb5a606f + depends: + - r-base >=4.5,<4.6.0a0 + - r-base64enc + - r-htmltools + - r-jsonlite + - r-pillar >=1.4.0 + license: GPL-3.0-only + license_family: GPL3 + size: 147271 + timestamp: 1757481783597 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda + sha256: e8f6a44ed24e37df7a9a311ac00355294d09e0ad92e1aef9d0fc06045ec6c382 + md5: 461e9fef868aacbde6b73ba681ebce34 + depends: + - r-base >=4.5,<4.6.0a0 + - r-lazyeval + - r-magrittr + license: MIT + license_family: MIT + size: 126090 + timestamp: 1757451641758 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda + sha256: dd4df06afcc68d95473939cc1a6ff2b2fa190412ddefac214da1a48a87441d9f + md5: 4623f836bbe3b849519dd29cf55881a9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 1573027 + timestamp: 1767972528864 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.30-r45hc72bb7e_0.conda + sha256: f570ba9370e4d1a7ae0e423cd9faa21fca5c7f50818c2e270faaf2dadd41fdc6 + md5: 80cf6b03ed3e25ef9c2e4421cad9bee3 + depends: + - pandoc >=1.14 + - r-base >=4.5,<4.6.0a0 + - r-bslib >=0.2.5.1 + - r-evaluate >=0.13 + - r-fontawesome >=0.5.0 + - r-htmltools >=0.5.1 + - r-jquerylib + - r-jsonlite + - r-knitr >=1.43 + - r-tinytex >=0.31 + - r-xfun >=0.36 + - r-yaml >=2.1.19 + license: GPL-3.0-only + license_family: GPL3 + size: 2084939 + timestamp: 1759149840804 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda + sha256: f179efdabe890f0841eca544bbd0bc6c0f3957501020f90f22e1891ed822d1b7 + md5: 23bb3404049c0ffd3e5936198ea9b0c2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-brew + - r-commonmark + - r-cpp11 + - r-desc >=1.2.0 + - r-digest + - r-knitr + - r-pkgload >=1.0.2 + - r-purrr >=0.3.3 + - r-r6 >=2.1.2 + - r-rlang + - r-stringi + - r-stringr >=1.0.0 + - r-xml2 + license: MIT + license_family: GPL3 + size: 704023 + timestamp: 1757563768902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.24-r45h54b55ab_1.conda + sha256: 0f493b81cb5e549eddde7dbb18527611f80e49eea6115e20a1186141f4b0b49a + md5: 5c9436afd8f9306c61e9b2d48eb3f9bb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 705140 + timestamp: 1757454485574 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda + sha256: 9e359973b9433ffaef7a65a1f3483723048427aee4a3208512863c4c70c409a4 + md5: e1b7c51411ad3dd2a95aea6d466b12f7 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 117773 + timestamp: 1757447613700 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.18.0-r45hc72bb7e_0.conda + sha256: f5a35d4b7dfc17d7ae6eb92210906ccb1fbcc93acacb6d7b392e83bf15702fba + md5: e70e87e097876186fdac23d1a01faede + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 345783 + timestamp: 1768620480911 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rversions-3.0.0-r45hc72bb7e_0.conda + sha256: ce6e20e0836735760c76ea66393c3f5d3447834cc8b2c064247a1ca238821d30 + md5: 3154fa3ece90604a48de42393bd6f7b0 + depends: + - r-base >=4.5,<4.6.0a0 + - r-curl + - r-xml2 >=1.0.0 + license: MIT + license_family: MIT + size: 145145 + timestamp: 1760025497442 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.9-r45h7d5736c_3.conda + sha256: 16f53c606b08b36a25bffa3320846f83a67c98219fed83d1b930ab4775c33539 + md5: 8a24a638f422619267ff4075df4f47b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.3,<4.0a0 + - r-base >=4.5,<4.6.0a0 + - r-rcpp + - r-wk >=0.6.0 + license: Apache-2.0 + license_family: APACHE + size: 1853994 + timestamp: 1758418377092 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-s7-0.2.1-r45h54b55ab_0.conda + sha256: cff47950c714b4917a67584930a3856661d971c661d863b83ca9c8daf1f6d49d + md5: 71f513d1d758cb143586351ce8be035c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 311031 + timestamp: 1763154600918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda + sha256: 4d6d7db9d0187a9ede70d6d48278a8ba2b3160e823f5de239b86a6108f23172e + md5: a3ccf52eefa448628535ee758c5a8a37 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-digest + - r-fs + - r-htmltools + - r-r6 + - r-rappdirs + - r-rlang + license: MIT + license_family: MIT + size: 2319704 + timestamp: 1757464682768 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda + sha256: 260c384e952e5bd4d2c2de77b9e09b24ff1c1f680acd917c4657ab8c9e4e9a2f + md5: 8bc81cc6fd130cef963bc9e082726a14 + depends: + - r-base >=4.5,<4.6.0a0 + - r-farver >=2.0.0 + - r-labeling + - r-lifecycle + - r-munsell >=0.5 + - r-r6 + - r-rcolorbrewer + - r-viridislite + license: MIT + license_family: MIT + size: 777793 + timestamp: 1757487539496 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.0-r45h54b55ab_0.conda + sha256: 1be9da827db61f16a5b1c4131fc29e31b92bbc209dbd9e47d72602beb034d266 + md5: a4bb70c2336fba06a63f0fd2ef2c9ca4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-or-later + license_family: GPL3 + size: 93507 + timestamp: 1770286893349 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda + sha256: 83749d9ea9422d89e8e59e93dfee6423297e83a1fab325b03d412700784773bc + md5: e2d98358063814d40bcb9150b45fb6e9 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-withr + license: GPL-2.0-only + license_family: GPL2 + size: 210056 + timestamp: 1757547994444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda + sha256: 9ee2be978f2d1f70840623b0bceb3ab8a3336d686d0d8f9bcbab3135099507a3 + md5: 406cffb35cb8fe21edfce8c467d66774 + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.14.1,<3.14.2.0a0 + - libgcc >=14 + - libgdal-core >=3.12.2,<3.13.0a0 + - libgdal-core >=3.12.2,<4.0a0 + - libstdcxx >=14 + - proj >=9.7.1,<10.0a0 + - proj >=9.7.1,<9.8.0a0 + - r-base >=4.5,<4.6.0a0 + - r-classint >=0.4_1 + - r-dbi >=0.8 + - r-magrittr + - r-rcpp >=0.12.18 + - r-s2 >=1.1.0 + - r-units >=0.7_0 + license: GPL-2.0-only OR MIT + license_family: GPL2 + size: 7272917 + timestamp: 1771980153562 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda + sha256: 10515a454fe45fcadcb5e954fcebd59b8014a32d3d73e28b942fea64ecb54d97 + md5: 1f431e9c637e0e271d0f347829e09fa6 + depends: + - r-base >=4.5,<4.6.0a0 + - r-bslib >=0.6.0 + - r-cachem >=1.1.0 + - r-commonmark >=1.7 + - r-crayon + - r-fastmap >=1.1.1 + - r-fontawesome >=0.4.0 + - r-glue >=1.3.2 + - r-htmltools >=0.5.4 + - r-httpuv >=1.5.2 + - r-jsonlite >=0.9.16 + - r-later >=1.0.0 + - r-lifecycle >=0.2.0 + - r-mime >=0.3 + - r-promises >=1.1.0 + - r-r6 >=2.0 + - r-rlang >=0.4.10 + - r-sourcetools + - r-withr + - r-xtable + license: GPL-3.0-only + license_family: GPL3 + size: 3738931 + timestamp: 1771613508103 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda + sha256: 103acb741c940f330d412476fc8216f80a1bc315380918b2d4af7f09a206a065 + md5: 8563a5f8d8a48fec1e10d1194a0913dc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - r-base >=4.5,<4.6.0a0 + - r-mass + license: GPL-2.0-only + license_family: GPL + size: 349756 + timestamp: 1757725500389 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_1-r45h3697838_3.conda + sha256: 7b192f7ae44eecd6a6e2c30554f2a8b6c1496c0d95f8b6e3f08481357b5251de + md5: cbe71c070980bce3c26d6e7f6ca02da7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 54215 + timestamp: 1757441623281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda + sha256: 6c037194ac3ec2f4cbf79197efb531a9b2a57d87f2b505117add301782dca5a6 + md5: bc4a2f5d8de754e812d1ff53bf66b211 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL3 + size: 155963 + timestamp: 1757509276008 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda + sha256: 6d0d8d6f1465b3486996edaef7ccd1020cb2fcca1e69b543fc52dbad5262079b + md5: c7ce6f26b92398224c78b92c653b94c1 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: FOSS + license_family: OTHER + size: 939928 + timestamp: 1772032511209 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda + sha256: dea2a7676dd03ed93fa0ec961883c5075c361c8522659a1bc1e6b5c16525cb24 + md5: 8db438d8aa370726ee1ce8bf458f2e6d + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-glue >=1.6.1 + - r-lifecycle >=1.0.3 + - r-magrittr + - r-rlang >=1.0.0 + - r-stringi >=1.5.3 + - r-vctrs + license: MIT + license_family: MIT + size: 319328 + timestamp: 1762269757617 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda + sha256: 16d53f5fbafdba89624e5d4860120a538ee94ac4651d89d40e97eae02240603e + md5: e11d9f5eddc3c37ec8c6ddfe68ba8e1d + depends: + - r-backports >=1.1.0 + - r-base >=4.5,<4.6.0a0 + - r-cli >=1.1.0 + - r-magrittr >=2.0.0 + - r-purrr >=0.2.3 + - r-r.cache >=0.14.0 + - r-rematch2 >=2.0.1 + - r-rlang >=0.1.1 + - r-rprojroot >=1.1 + - r-tibble >=1.4.2 + - r-withr >=1.0.0 + - r-xfun >=0.1 + license: MIT + license_family: MIT + size: 807625 + timestamp: 1760338508835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_6-r45h54b55ab_0.conda + sha256: 66b6d9694f54e8af86b394dbdd65a7164af13869be05babb5e4e22d44eb04106 + md5: 55cc543da938b44c6b2106516815ac35 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-matrix + license: LGPL-2.0-or-later + license_family: LGPL + size: 8329223 + timestamp: 1768637162736 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.3-r45h54b55ab_1.conda + sha256: 0cf3a7af31b0396d5a2e1c932fffa360472f92a2b373a696f523b0b53ad1d682 + md5: f23bbac61ab0536f59f4caa4c2ebdf88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 50436 + timestamp: 1757441793835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.3.2-r45h74f4acd_0.conda + sha256: b7c3105c26b006e75a4c770cd4b4cdd88da4153860bb8becac2b1ab068c6aab6 + md5: 7982f08c8aabb6f0e4936a613b07a099 + depends: + - __glibc >=2.17,<3.0.a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-base64enc + - r-cpp11 >=0.2.1 + - r-jsonlite + - r-lifecycle + license: MIT + license_family: MIT + size: 710089 + timestamp: 1772797917239 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.0-r45hc72bb7e_0.conda + sha256: 4a0d862f027c16e389e979428f23e58adcb6d3afcb09c7fcab260b2a837a0470 + md5: 22112bb3d3c60dddb54dd29f5abd9bb9 + depends: + - r-base >=4.5,<4.6.0a0 + - r-digest >=0.6.25 + - r-dplyr >=1.0.0 + - r-fs >=1.4.2 + - r-furrr >=0.3.0 + - r-future >=1.0.0 + - r-future.callr >=0.2.0 + - r-rlang >=0.4.7 + - r-targets >=0.14.0 + - r-tibble >=3.0.1 + - r-tidyselect >=1.1.0 + - r-vctrs >=0.3.4 + - r-withr >=2.1.2 + license: MIT + license_family: MIT + size: 955905 + timestamp: 1770672624068 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda + sha256: 2dec43dfe7e53140b199872a9faa81f5ee02ad3b3a73b4a0b18ef93d53f3b54a + md5: 3867dd1e5cdb9597e15f6853d3419667 + depends: + - r-base >=4.5,<4.6.0a0 + - r-base64url >=1.4 + - r-callr >=3.7.0 + - r-cli >=2.0.2 + - r-codetools >=0.2.16 + - r-data.table >=1.12.8 + - r-igraph >=2.0.0 + - r-knitr >=1.34 + - r-prettyunits >=1.1.0 + - r-ps >=1.8.0 + - r-r6 >=2.4.1 + - r-rlang >=1.0.0 + - r-secretbase >=0.5.0 + - r-tibble >=3.0.1 + - r-tidyselect >=1.1.0 + - r-vctrs >=0.2.4 + - r-yaml >=2.2.1 + license: MIT + license_family: MIT + size: 2383796 + timestamp: 1770674208770 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_1-r45h1d36251_0.conda + sha256: 5e131bbd042f9ddd70b56a9fad97cf33e4bf2fc64ac398c710420882d4ffae10 + md5: 87f11de95cac304cd241459a637e8a30 + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.14.1,<3.14.2.0a0 + - libgcc >=14 + - libgdal-core >=3.12.2,<3.13.0a0 + - libgdal-core >=3.12.2,<4.0a0 + - libstdcxx >=14 + - proj >=9.7.1,<10.0a0 + - proj >=9.7.1,<9.8.0a0 + - r-base >=4.5,<4.6.0a0 + - r-rcpp >=1.0_10 + license: GPL-3.0-or-later + license_family: GPL3 + size: 4565091 + timestamp: 1772997530486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda + sha256: 0b526259e82140c26311dba589e65fd2fdcf3a559f8b07640464c2e5141f6468 + md5: be972259c1c9f78d44048aeae38f82ba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-brio >=1.1.3 + - r-callr >=3.7.3 + - r-cli >=3.6.1 + - r-desc >=1.4.2 + - r-digest >=0.6.33 + - r-evaluate >=1.0.1 + - r-jsonlite >=1.8.7 + - r-lifecycle >=1.0.3 + - r-magrittr >=2.0.3 + - r-pkgload >=1.3.2.1 + - r-praise >=1.0.0 + - r-processx >=3.8.2 + - r-ps >=1.7.5 + - r-r6 >=2.5.1 + - r-rlang >=1.1.1 + - r-waldo >=0.6.0 + - r-withr >=3.0.2 + license: MIT + license_family: MIT + size: 1848754 + timestamp: 1768138280795 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-1.0.5-r45h74f4acd_0.conda + sha256: f9dda3386d3ee05a333bbed492deb4c16b5a636b4007410dab21f264f3b5b780 + md5: 58b8dbafb469476a7a7dbffe184910f0 + depends: + - __glibc >=2.17,<3.0.a0 + - fribidi >=1.0.16,<2.0a0 + - harfbuzz >=12.3.2 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cpp11 >=0.2.1 + - r-lifecycle + - r-stringi + - r-systemfonts >=1.3.0 + license: MIT + license_family: MIT + size: 189924 + timestamp: 1772816656813 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.1-r45h54b55ab_0.conda + sha256: 256d782fb5773d678f29b88a2c987eb47065e2393a080ca16f400b0256de65bb + md5: ad28f67cbb0b10a5beaa7bf968761cad + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + - r-fansi >=0.4.0 + - r-lifecycle >=1.0.0 + - r-magrittr + - r-pillar >=1.8.1 + - r-pkgconfig + - r-rlang >=1.0.2 + - r-vctrs >=0.4.2 + license: MIT + license_family: MIT + size: 589666 + timestamp: 1768139121744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.2-r45h3697838_0.conda + sha256: 8c4560d92c1adfce9a37da2f963596a369688b0d5f44d1fa2f0fbfecb486d99f + md5: e571d4d42233dd2aa3bdb0057ffbdc63 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.4.1 + - r-dplyr >=1.0.10 + - r-glue + - r-lifecycle >=1.0.3 + - r-magrittr + - r-purrr >=1.0.1 + - r-rlang >=1.0.4 + - r-stringr >=1.5.0 + - r-tibble >=2.1.1 + - r-tidyselect >=1.2.0 + - r-vctrs >=0.5.2 + license: MIT + license_family: MIT + size: 1127263 + timestamp: 1766142073696 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r45hc72bb7e_2.conda + sha256: fca09d6b9940f1e1cda0425a0f55716bba202d6f55d6bd25fedec391006c7dc7 + md5: 15aa0f323385403fe182e46a1d095e1b + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.3.0 + - r-glue >=1.3.0 + - r-lifecycle >=1.0.3 + - r-rlang >=1.0.4 + - r-vctrs >=0.5.2 + - r-withr + license: MIT + license_family: MIT + size: 220192 + timestamp: 1757475791328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda + sha256: 47d03f8df0b40173e41a5b0a8d0318b0a274a5302d67aadad7e4769bad1b2509 + md5: 77b6b03b30183b189906b08ea0868b21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cpp11 >=0.2.7 + license: GPL-3.0-only AND Apache-2.0 + license_family: GPL3 + size: 193829 + timestamp: 1769737645751 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.58-r45hc72bb7e_0.conda + sha256: 65949b54c32059e6141b35499b8b574ac484c184aabfab907c6e1733b98cc756 + md5: 119e2b033f2a31aa2b53b490f6fc4c24 + depends: + - r-base >=4.5,<4.6.0a0 + - r-xfun >=0.5 + license: MIT + license_family: MIT + size: 153328 + timestamp: 1763537045699 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda + sha256: eb88a6157ec9a74e2f85d1216f01cd0c02d36a524595cf242677de8cea714ff3 + md5: bb80b8d38be888874fd716fdbcd50c80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp + license: MIT + license_family: MIT + size: 185274 + timestamp: 1757482938729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda + sha256: 8d8fe2da1482f3c7496d0959c05fb67a7db164e674343d01c74c6f417e01399a + md5: d2caba583b30269a834a053307f80a66 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libudunits2 >=2.2.28,<3.0a0 + - r-base >=4.5,<4.6.0a0 + - r-rcpp + license: GPL-2.0-only + license_family: GPL2 + size: 470649 + timestamp: 1760026427101 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda + sha256: 3c1ac479352099400b82b866db5a49b6c2f9802451e5ecf42385abaf4db73f4f + md5: d8603dd91958a841382fdced991aba9a + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-curl + - r-xml2 + license: GPL-3.0-only + license_family: GPL3 + size: 52246 + timestamp: 1758409118952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda + sha256: 4704c6ffa27e101caabb078ab5e01810cdd1c8175a26b7d7b1c63871e1dabb0d + md5: 34a60c139c9d11abe11a64cac9d8611e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp + - r-triebeard + license: MIT + license_family: MIT + size: 305032 + timestamp: 1757491498921 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda + sha256: 3c8dc056e071d002dfde20f14cd8b1bad4b210f6e7e2d26cfc5eaf8f1342b1b2 + md5: dcbfbae5c448a2e54f37457f16075468 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-clipr >=0.3.0 + - r-crayon + - r-curl >=2.7 + - r-desc + - r-ellipsis + - r-fs >=1.3.0 + - r-gert >=1.0.2 + - r-gh >=1.2.0 + - r-glue >=1.3.0 + - r-jsonlite + - r-lifecycle + - r-purrr + - r-rappdirs + - r-rlang >=0.4.3 + - r-rprojroot >=1.2 + - r-rstudioapi + - r-whisker + - r-withr >=2.3.0 + - r-yaml + license: MIT + license_family: MIT + size: 915479 + timestamp: 1758433263601 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda + sha256: 97186abdf7c29872e012c9fe05ec16c019b58c43ac7b778baa480a8acae9c914 + md5: 75cb2540ac930ea879e92d99e00e97c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 147244 + timestamp: 1757424673681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda + sha256: 25033570039c1a0ff96356fc4f867c268fc299b379a5e4e4f41ba1263cdce162 + md5: f6e3a62834212f3a44fa4a0a97fedcde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cli >=3.4.0 + - r-glue + - r-lifecycle >=1.0.3 + - r-rlang >=1.0.6 + license: MIT + license_family: MIT + size: 1393729 + timestamp: 1769235449223 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda + sha256: b9ec9606562f0f6bdefc237bbc6163eb1cb022f9d699c80771bc84af0ae37269 + md5: bcadc0a3726e2191e51449f67fa5e0a9 + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 1305542 + timestamp: 1770191459321 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda + sha256: 673666191b9e01fcf2dd5ff9bf9e06ee279faac1da3b34372e2113c328c9a9ff + md5: 3f29e5d2782e79eb5d66e2f59a7edee0 + depends: + - r-base >=4.5,<4.6.0a0 + - r-htmltools + - r-htmlwidgets + - r-jsonlite + - r-magrittr + license: MIT + license_family: MIT + size: 3724506 + timestamp: 1757566751580 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda + sha256: 57eb80cb919524dde77b4c19f257ac9b327aba900e28298d990fa622f30b6f09 + md5: 86406bcc46061e27fe7ec24f73eb6676 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-diffobj >=0.3.4 + - r-fansi + - r-glue + - r-rematch2 + - r-rlang >=1.0.0 + - r-tibble + license: MIT + license_family: MIT + size: 144204 + timestamp: 1757501656298 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda + sha256: f61bc764a85693d28dfc9dba60bc13acd89c3fd8fe85aa212530a3558bfecec0 + md5: 5cd861608ecbeab0574d59a7754deba7 + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-3.0-only + license_family: GPL3 + size: 83008 + timestamp: 1757468282426 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda + sha256: ce2d02905f29ae7e9e18a44d1985896628f6bb1ae6348a67e9534d5b8779485b + md5: 56c45a76870f89e39aeca8ba4d4e911a + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 235156 + timestamp: 1757447242401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.5-r45h3697838_0.conda + sha256: 69759dad4ee2a770f7763a7839b1dc32312642f8c221846d5e32fc0f3143b5bc + md5: 5b13c70543b3380816357e1d6fff23e3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cpp11 + license: MIT + license_family: MIT + size: 1723697 + timestamp: 1766049716560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.56-r45h3697838_0.conda + sha256: ed1c5ea8936a6f775ae4331926a5ced5979b40aa2a19cecf95d46fb215a55aed + md5: 1141e09b09648c582b353895bed4b934 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 594506 + timestamp: 1768794446551 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda + sha256: b8baf74e5bae3bcb8ca66d53595c59251a6fb937df23047dd869056e448bf726 + md5: c39ff975e024c2af2b2828e0147239d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libxml2-devel + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 1765607 + timestamp: 1770738628743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.5.2-r45he78afff_0.conda + sha256: f847cc5166f814ec9c35c28bd6abc20879750fe2b658e4503505fce78951df75 + md5: d7feead194c1df2c74bd11e37acc9573 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libzlib >=1.3.1,<2.0a0 + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-rlang >=1.1.0 + license: GPL-2.0-or-later + license_family: GPL2 + size: 354820 + timestamp: 1768764934482 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r45hc72bb7e_4.conda + sha256: 9f57360c5ead5ed2c425643d83976f0769bff821b7237625493a3e55050aaa97 + md5: 399cae3eda1b9bfa1140d2ad6aa0816a + depends: + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 28840 + timestamp: 1757451925197 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-xopen-1.0.1-r45hc72bb7e_2.conda + sha256: af8aecc4a3fe0bf7936ca178a3280ac5dcdcfe385c8337b9a29630cb96aa9bda + md5: c2a6b820f0a9d1ed0cf0e134933d0f84 + depends: + - r-base >=4.5,<4.6.0a0 + - r-processx + license: MIT + license_family: MIT + size: 33290 + timestamp: 1757570912406 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_8-r45hc72bb7e_0.conda + sha256: 972923364cfd616ccf38768477c435677cfe1ea18a72016f90344ea920e4fea5 + md5: e18fda0821f0fdc1c34276c5e0acdc92 + depends: + - r-base >=4.5,<4.6.0a0 + license: GPL (>= 2) + license_family: GPL3 + size: 744345 + timestamp: 1771859982217 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.12-r45h54b55ab_0.conda + sha256: f8944d47eccfdb2c04e27fd65797de7468ccc5d9f3fc3d9af296da613d75d79c + md5: d0d07c6f14b640a98cf6a5e3e4e2e723 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 124461 + timestamp: 1765372968808 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-zip-2.3.3-r45h54b55ab_1.conda + sha256: fb3162e2a6f7c55758e324689c33d1331f902d5d051608f0786ffc568bcf6868 + md5: 1b8549e282e0dde9fcbb5f8c88f43dbf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: CC + size: 156771 + timestamp: 1757447521128 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda + sha256: 2f225ddf4a274743045aded48053af65c31721e797a45beed6774fdc783febfb + md5: 0227d04521bc3d28c7995c7e1f99a721 + depends: + - libre2-11 2025.11.05 h7b12aa8_0 + license: BSD-3-Clause + license_family: BSD + size: 27316 + timestamp: 1762397780316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 345073 + timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda + sha256: dec76e9faa3173579d34d226dbc91892417a80784911daf8e3f0eb9bad19d7a6 + md5: bade189a194e66b93c03021bd36c337b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.4,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 394197 + timestamp: 1765160261434 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.9-h6688a6e_0.conda + sha256: ee826aa0c6157d4a947722b1205964482ff8e88136bd3161864f8cefdca85b5b + md5: 171afc5f7ca0408bbccbcb69ade85f92 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: GPL-3.0-only + license_family: GPL + size: 228948 + timestamp: 1746562045847 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 + md5: 98b6c9dc80eb87b2519b97bcf7e578dd + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 45829 + timestamp: 1762948049098 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda + sha256: c9af81e7830d9c4b67a7f48e512d060df2676b29cac59e3b31f09dbfcee29c58 + md5: 7d9d7efe9541d4bb71b5934e8ee348ea + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libsqlite 3.52.0 hf4e2dac_0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - readline >=8.3,<9.0a0 + license: blessing + size: 203641 + timestamp: 1772818888368 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 + md5: 13dc3adbc692664cd3beabd216434749 + depends: + - __glibc >=2.28 + - kernel-headers_linux-64 4.18.0 he073ed8_9 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 24008591 + timestamp: 1765578833462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h5a7a40f_8.conda + sha256: 3e20b2f2902a1f402ef2420ce2b9e8c91f9e02748d55530894ac1f640561fdd0 + md5: 72628f56d7a99b86efa435a0b97a4b47 + depends: + - tk + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - tk >=8.6.13,<8.7.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + license: TCL + size: 102544 + timestamp: 1773732786017 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda + sha256: 2aad2aeff7c69a2d7eecd7b662eef756b27d6a6b96f3e2c2a7071340ce14543e + md5: d71d3a66528853c0a1ac2c02d79a0284 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 48270 + timestamp: 1715010035325 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda + sha256: 605980121ad3ee9393a9b53fb0996929c9732f8fc6b9f796d25244ca6fa23032 + md5: 66a1db55ecdb7377d2b91f54cd56eafa + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.1,<79.0a0 + - libgcc >=14 + - libnsl >=2.0.1,<2.1.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: Apache + size: 1660075 + timestamp: 1766327494699 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 + md5: 1c74ff8c35dcadf952a16f752ca5aa49 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + license: MIT + license_family: MIT + size: 27590 + timestamp: 1741896361728 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 + md5: 861fb6ccbc677bb9a9fb2468430b9c6a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + size: 839652 + timestamp: 1770819209719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b + md5: b2895afaf55bf96a8c8282a2e47a5de0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 15321 + timestamp: 1762976464266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 + md5: 1dafce8548e38671bea82e3f5c6ce22f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 20591 + timestamp: 1762976546182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f + md5: 34e54f03dfea3e7a2dcf1453a85f1085 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + size: 50326 + timestamp: 1769445253162 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e + md5: 279b0de5f6ba95457190a1c459a64e31 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 379686 + timestamp: 1731860547604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda + sha256: 325d370b28e2b9cc1f765c5b4cdb394c91a5d958fbd15da1a14607a28fee09f6 + md5: 755b096086851e1193f3b10347415d7c + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - krb5 >=1.22.2,<1.23.0a0 + - libsodium >=1.0.21,<1.0.22.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 311150 + timestamp: 1772476812121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 + depends: + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 601375 + timestamp: 1764777111296 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 00000000000..d837eada88a --- /dev/null +++ b/pixi.toml @@ -0,0 +1,95 @@ +[workspace] +authors = ["Alexey Shiklomanov "] +channels = ["conda-forge"] +name = "cimis-et-complete" +platforms = ["linux-64"] +version = "0.1.0" + +[tasks] +[tasks.install_package] +args = [{arg = "pkg"}] +cmd = 'Rscript -e "install.packages(\"{{ pkg }} \")"' + +[tasks.rdinst] +args = [{arg = "path"}] +cmd = 'Rscript -e "devtools::install(\"{{ path }}\", upgrade = FALSE)"' + +[tasks.rdoc] +args = [{arg = "path"}] +cmd = 'Rscript -e "devtools::document(\"{{ path }}\")"' + +[tasks.inst_local] +depends-on = [ + {task = "rdinst", args = ["base/logger"]}, + {task = "rdinst", args = ["base/utils"]}, + {task = "rdinst", args = ["base/remote"]}, + {task = "rdinst", args = ["base/db"]}, + {task = "rdinst", args = ["modules/data.land"]}, + {task = "rdinst", args = ["modules/data.atmosphere"]}, + {task = "rdinst", args = ["models/sipnet"]}, +] + +[tasks.targets] +args = [{arg = "tar_project", default = "small"}] +cmd = "TAR_PROJECT={{ tar_project }} Rscript -e 'targets::tar_make()'" + +[tasks.outdated] +args = [{arg = "tar_project", default = "small"}] +cmd = "TAR_PROJECT={{ tar_project }} Rscript -e 'targets::tar_outdated()'" + +[tasks.target_build] +depends-on = [ + {task = "rdinst", args = ["modules/data.land"]}, + {task = "targets"} +] + +[dependencies] +r = ">=4" +r-roxygen2 = "==7.3.3" +r-abind = ">=1.4.5" +r-arrow = "*" +r-coda = "*" +r-curl = "*" +r-dbplyr = ">=2.4.0" +r-devtools = "*" +r-dplyr = ">=1.1.2" +r-dplR = "*" +r-foreach = "*" +r-fs = "*" +r-future = "*" +r-furrr = "*" +r-httr = "*" +r-httr2 = "*" +r-jsonlite = "*" +r-lubridate = "*" +r-magrittr = "*" +r-nanoarrow = "*" +r-ncdf4 = ">=1.15" +r-purrr = "*" +r-rlang = "*" +r-sf = "*" +r-stringi = "*" +r-stringr = "*" +r-terra = "*" +r-testthat = "*" +r-tibble = "*" +r-tidyr = "*" +r-tidyselect = "*" +r-withr = "*" +r-xml = ">=3.98" +r-dbi = "*" +r-glue = "*" +"r-R.utils" = "*" +r-units = "*" +r-urltools = "*" +r-languageserver = ">=0.3.17,<0.4" +r-targets = ">=1.12.0,<2" +r-here = ">=1.0.2,<2" +r-tarchetypes = ">=0.14.0,<0.15" +r-ggplot2 = ">=4.0.2,<5" +r-mirai = ">=2.6.1,<3" +r-clustermq = ">=0.9.8,<0.10" +r-crew = ">=1.3.0,<2" +"r-crew.cluster" = ">=0.4.0,<0.5" +air = ">=0.8.2,<0.9" +r-visnetwork = ">=2.1.4,<3" From dac5a9ece82f00e70dd87c4ac96c6b4446804c72 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 11:31:36 -0400 Subject: [PATCH 07/75] split prepare events from run workflow --- modules/data.land/.Rbuildignore | 1 + .../01-prepare-events.R | 122 +++++++++++++++ .../{workflow.R => 02-run-sipnet.R} | 142 ++---------------- .../inst/sipnet-restart-workflow/config.yml | 20 +++ pixi.lock | 118 +++++++++++++++ pixi.toml | 6 +- 6 files changed, 276 insertions(+), 133 deletions(-) create mode 100644 modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R rename modules/data.land/inst/sipnet-restart-workflow/{workflow.R => 02-run-sipnet.R} (50%) create mode 100644 modules/data.land/inst/sipnet-restart-workflow/config.yml diff --git a/modules/data.land/.Rbuildignore b/modules/data.land/.Rbuildignore index edd7e377255..d8e715679ba 100644 --- a/modules/data.land/.Rbuildignore +++ b/modules/data.land/.Rbuildignore @@ -2,3 +2,4 @@ contrib data-raw ^docs$ .*venv/ +.*/sipnet-restart-workflow/ diff --git a/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R b/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R new file mode 100644 index 00000000000..a3571a934a1 --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R @@ -0,0 +1,122 @@ +#!/usr/bin/env Rscript + +config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") + +# Pick a parcel from irrigation +pid <- config[["parcel_id"]] +site_id <- config[["site_id"]] + +# Find the closest design point to that parcel to use existing met +if (is.null(site_id)) { + parcel_path <- config[["parcel_path"]] + parcel <- sf::read_sf( + parcel_path, + query = glue::glue("SELECT * FROM parcels WHERE parcel_id = {pid}") + ) + + dp_path <- config[["dp_path"]] + design_points <- read.csv(dp_path) |> + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) |> + sf::st_transform(sf::st_crs(parcel)) + dp_idx <- sf::st_nearest_feature(parcel, design_points) + site_id <- design_points[dp_idx, ][["id"]] +} + +met <- file.path( + config[["met_dir"]], + site_id, + "ERA5.1.2016-01-01.2024-12-31.clim" +) +stopifnot(file.exists(met)) + +# Make the events.json +planting <- fs::dir_ls( + config[["planting_events_dir"]], + regexp = "planting_statewide_.*\\.parquet" +) |> + arrow::open_dataset() |> + dplyr::collect() |> + dplyr::filter(.data$site_id == as.character(.env$pid)) |> + dplyr::mutate(date = as.Date(.data$date)) |> + tibble::as_tibble() + +code_pft_mapping <- planting |> + dplyr::distinct(crop_code = .data$code, .data$PFT) + +planting_events <- planting |> + dplyr::select( + "site_id", "event_type", "date", + "crop_code" = "code", + "leaf_c_kg_m2" = "C_LEAF", + "wood_c_kg_m2" = "C_STEM", + "fine_root_c_kg_m2" = "C_FINEROOT", + "coarse_root_c_kg_m2" = "C_COARSEROOT", + "leaf_n_kg_m2" = "N_LEAF", + "wood_n_kg_m2" = "N_STEM", + "fine_root_n_kg_m2" = "N_FINEROOT", + "coarse_root_n_kg_m2" = "N_COARSEROOT" + ) + +# Harvest +mslsp_path <- config[["mslsp_path"]] +phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> + arrow::open_dataset() |> + dplyr::filter(.data$parcel_id == .env$pid, !is.na(.data$mslsp_cycle)) |> + dplyr::collect() |> + tibble::as_tibble() |> + dplyr::arrange(.data$year, .data$mslsp_cycle) |> + dplyr::relocate( + "year", "mslsp_cycle", dplyr::starts_with("landiq_"), + ) + +# Dummy values for testing +harvest_events <- phenology |> + dplyr::mutate( + event_type = "harvest", + site_id = as.character(.data$parcel_id), + frac_above_removed_0to1 = 0.85 + ) |> + dplyr::select( + "site_id", "event_type", "date" = mslsp_OGMn, "frac_above_removed_0to1" + ) + +start_date <- min(planting$date) +end_date <- max(harvest_events$date) + +irrigation_path <- config[["irrigation_path"]] + +irrigation_events <- arrow::open_dataset(irrigation_path) |> + dplyr::filter( + .data$parcel_id == .env$pid, + .data$ens_id == "irr_ens_001" + ) |> + dplyr::select(-"ens_id") |> + dplyr::collect() |> + tibble::as_tibble() |> + dplyr::filter(.data$date <= .env$end_date) |> + dplyr::mutate( + event_type = "irrigation", + site_id = as.character(.data$parcel_id), + .keep = "unused" + ) |> + dplyr::relocate("site_id", "event_type", "date") + +make_event_list <- function(df) { + df2list <- function(df) { + as.list(df) |> purrr::list_transpose() + } + df |> + tidyr::nest(.by = "site_id", .key = "events") |> + dplyr::mutate(events = purrr::map(.data$events, df2list)) +} + +planting_n <- make_event_list(planting_events) +harvest_n <- make_event_list(harvest_events) +irrigation_n <- make_event_list(irrigation_events) +all_events <- dplyr::bind_rows(planting_n, harvest_n, irrigation_n) |> + dplyr::summarize(events = list(c(events)), .by = "site_id") |> + dplyr::mutate(pecan_events_version = "0.1.1", .before = "site_id") + +outdir_root <- fs::dir_create(config[["outdir_root"]]) +events_json_file <- fs::path(outdir_root, "events.json") +jsonlite::write_json(all_events, events_json_file, pretty = TRUE, auto_unbox = TRUE) diff --git a/modules/data.land/inst/sipnet-restart-workflow/workflow.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R similarity index 50% rename from modules/data.land/inst/sipnet-restart-workflow/workflow.R rename to modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index 5a92c5a8197..f4e446ef7a3 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/workflow.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -1,143 +1,24 @@ #!/usr/bin/env Rscript -# devtools::install("~/projects/pecan/sipnet-events/modules/data.remote", upgrade = FALSE) -# devtools::install("~/projects/pecan/sipnet-events/base/workflow", upgrade = FALSE) -# devtools::install("~/projects/pecan/sipnet-events/models/sipnet", upgrade = FALSE) +devtools::load_all("~/projects/pecan/sipnet-events/modules/data.land") +devtools::load_all("~/projects/pecan/sipnet-events/models/sipnet") -# devtools::load_all("~/projects/pecan/sipnet-events/modules/data.land") -# devtools::load_all("~/projects/pecan/sipnet-events/models/sipnet") +config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") -# Pick a parcel from irrigation -pid <- 39011 +outdir_root <- config[["outdir_root"]] -irrigation_path <- "/projectnb/dietzelab/ccmmf/usr/ashiklom/event-outputs/irrigation_10000.parquet" +binary <- config[["sipnet_binary"]] +stopifnot(file.exists(binary)) -# Find the closest design point to that parcel to use existing met -parcel_path <- "/projectnb/dietzelab/ccmmf/LandIQ-harmonized-v4.1/parcels.gpkg" -parcel <- sf::read_sf( - parcel_path, - query = glue::glue("SELECT * FROM parcels WHERE parcel_id = {pid}") -) +site_id <- config[["site_id"]] -dp_path <- "/projectnb/dietzelab/ccmmf/management/irrigation/design_points.csv" -design_points <- read.csv(dp_path) |> - sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) |> - sf::st_transform(sf::st_crs(parcel)) -dp_idx <- sf::st_nearest_feature(parcel, design_points) -site_id <- design_points[dp_idx, ][["id"]] +events_json_file <- fs::path(outdir_root, "events.json") +events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) -# site1 <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1.json" -# site1_multi <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1_multi.json" -# site_12 <- "~/projects/pecan/sipnet-events/modules/data.land/inst/events_fixtures/events_site1_site2.json" - -binary <- "/projectnb/dietzelab/ccmmf/usr/ashiklom/pecan/sipnet/sipnet" -met <- file.path( - "/projectnb/dietzelab/ccmmf/ensemble/ERA5_SIPNET", - site_id, - "ERA5.1.2016-01-01.2024-12-31.clim" -) -stopifnot(file.exists(met)) - -# Make the events.json -planting <- fs::dir_ls( - "/projectnb/dietzelab/ccmmf/management/event_files", - regexp = "planting_statewide_.*\\.parquet" -) |> - arrow::open_dataset() |> - dplyr::collect() |> - dplyr::filter(.data$site_id == as.character(.env$pid)) |> - dplyr::mutate(date = as.Date(.data$date)) |> - tibble::as_tibble() - -code_pft_mapping <- planting |> - dplyr::distinct(crop_code = .data$code, .data$PFT) - -planting_events <- planting |> - dplyr::select( - "site_id", "event_type", "date", - "crop_code" = "code", - "leaf_c_kg_m2" = "C_LEAF", - "wood_c_kg_m2" = "C_STEM", - "fine_root_c_kg_m2" = "C_FINEROOT", - "coarse_root_c_kg_m2" = "C_COARSEROOT", - "leaf_n_kg_m2" = "N_LEAF", - "wood_n_kg_m2" = "N_STEM", - "fine_root_n_kg_m2" = "N_FINEROOT", - "coarse_root_n_kg_m2" = "N_COARSEROOT" - ) - -# Harvest -mslsp_path <- "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" -phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> - arrow::open_dataset() |> - dplyr::filter(.data$parcel_id == .env$pid, !is.na(.data$mslsp_cycle)) |> - dplyr::collect() |> - tibble::as_tibble() |> - dplyr::arrange(.data$year, .data$mslsp_cycle) |> - dplyr::relocate( - "year", "mslsp_cycle", dplyr::starts_with("landiq_"), - ) - -# Dummy values for testing -harvest_events <- phenology |> - dplyr::mutate( - event_type = "harvest", - site_id = as.character(.data$parcel_id), - frac_above_removed_0to1 = 0.85 - ) |> - dplyr::select( - "site_id", "event_type", "date" = mslsp_OGMn, "frac_above_removed_0to1" - ) - -start_date <- min(planting$date) -end_date <- max(harvest$date) - -irrigation_events <- arrow::open_dataset(irrigation_path) |> - dplyr::filter( - .data$parcel_id == .env$pid, - .data$ens_id == "irr_ens_001" - ) |> - dplyr::select(-"ens_id") |> - dplyr::collect() |> - tibble::as_tibble() |> - dplyr::filter(.data$date <= .env$end_date) |> - dplyr::mutate( - event_type = "irrigation", - site_id = as.character(.data$parcel_id), - .keep = "unused" - ) |> - dplyr::relocate("site_id", "event_type", "date") - -make_event_list <- function(df) { - df2list <- function(df) { - as.list(df) |> purrr::list_transpose() - } - df |> - tidyr::nest(.by = "site_id", .key = "events") |> - dplyr::mutate(events = purrr::map(.data$events, df2list)) -} - -planting_n <- make_event_list(planting_events) -harvest_n <- make_event_list(harvest_events) -irrigation_n <- make_event_list(irrigation_events) -all_events <- planting_n |> - dplyr::full_join(harvest_n, by = "site_id") |> - dplyr::full_join(irrigation_n, by = "site_id") |> - dplyr::mutate( - events = dplyr::starts_with("events") |> - dplyr::across() |> - purrr::pmap(c) |> - purrr::map(unname), - .keep = "unused" - ) - -jsonlite::toJSON(all_events, pretty = TRUE, auto_unbox = TRUE) +dates <- purrr:: ################################################################################ -events_json <- site1 - -outdir <- normalizePath("_test/segments") -dir.create(outdir, showWarnings = FALSE) +outdir <- fs::path(outdir_root, "segments") |> fs::dir_create() settings <- PEcAn.settings::as.Settings(list( outdir = file.path(outdir, "out"), @@ -168,7 +49,6 @@ settings <- PEcAn.settings::as.Settings(list( ) )) -events <- jsonlite::fromJSON(events_json, simplifyVector = FALSE) # TODO: Iterate over events site_events_obj <- events[[1]] diff --git a/modules/data.land/inst/sipnet-restart-workflow/config.yml b/modules/data.land/inst/sipnet-restart-workflow/config.yml new file mode 100644 index 00000000000..032e814ae3d --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/config.yml @@ -0,0 +1,20 @@ +default: + parcel_id: 39011 + site_id: "cf1c223d4e408116" + outdir_root: "modules/data.land/inst/sipnet-restart-workflow/_test" + irrigation_path: "/projectnb/dietzelab/ccmmf/usr/ashiklom/event-outputs/irrigation_10000.parquet" + parcel_path: "/projectnb/dietzelab/ccmmf/LandIQ-harmonized-v4.1/parcels.gpkg" + dp_path: "/projectnb/dietzelab/ccmmf/management/irrigation/design_points.csv" + sipnet_binary: "/projectnb/dietzelab/ccmmf/usr/ashiklom/pecan/sipnet/sipnet" + met_dir: "/projectnb/dietzelab/ccmmf/ensemble/ERA5_SIPNET" + planting_events_dir: "/projectnb/dietzelab/ccmmf/management/event_files" + mslsp_path: "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" + +ashiklom: + irrigation_path: !expr path.expand("~/data/irrigation-events-out/irrigation_10000.parquet") + parcel_path: !expr path.expand("~/data/LandIQ-harmonized-v4.1/parcels.gpkg") + dp_path: !expr path.expand("~/data/design_points.csv") + sipnet_binary: !expr normalizePath("../_helpers/sipnet/sipnet.master", mustWork = TRUE) + met_dir: !expr path.expand("~/data/ERA5-site-processed") + planting_events_dir: !expr path.expand("~/data/event-files/planting") + mslsp_path: !expr path.expand("~/data/matched_landiq_mslsp_v4.1") diff --git a/pixi.lock b/pixi.lock index 729d04086a2..9335daab155 100644 --- a/pixi.lock +++ b/pixi.lock @@ -187,6 +187,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda @@ -218,6 +219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r45h3697838_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-filelock-1.0.3-r45h54b55ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda @@ -259,6 +261,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lpsolve-5.6.23-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.4-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda @@ -280,15 +283,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-otel-0.2.0-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pak-0.9.2-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgbuild-1.4.8-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgcache-2.2.4-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r45h6b2d295_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettycode-1.1.0-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.6-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda @@ -328,6 +334,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.0-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda @@ -2747,6 +2754,25 @@ packages: license_family: MIT size: 1311871 timestamp: 1757414956557 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda + sha256: e6f8e916018d958aab7742fc4dca39d11e9fd71a6c9cbf706ae48b3f4aa68963 + md5: eda926ce6830fc811ca06adde8ae3630 + depends: + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-crayon + - r-fansi + - r-glue >=1.3.0 + - r-prettycode + - r-progress >=1.2.0 + - r-r6 + - r-selectr + - r-withr + - r-xml2 + license: MIT + license_family: MIT + size: 248879 + timestamp: 1757835846605 - conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda sha256: df9c2315dcc8e271947d6fee8d805f1723ce1f41be4369aa820f572d272c042d md5: 5deda37b255bc9dc837d00b89dbf2a21 @@ -3188,6 +3214,17 @@ packages: license_family: MIT size: 73870 timestamp: 1757421441326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-filelock-1.0.3-r45h54b55ab_2.conda + sha256: 669a2a6ac19e9ca817b7e6b6ec30643fbf08e423380987f356c3106b596d671a + md5: 67bb6dd33b269b3b3d8d6d6c7d7264c8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: MIT + license_family: MIT + size: 33681 + timestamp: 1757575946026 - conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda sha256: 865df12d8cdd8cf577abc8f785a0aa4ee50b4f8751256dffe4676a350943d591 md5: e9fccb3617ec9776569c6496fa254e64 @@ -3745,6 +3782,17 @@ packages: license_family: GPL3 size: 4684719 timestamp: 1764694208302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lpsolve-5.6.23-r45h54b55ab_1.conda + sha256: 44570160d4d90327de321f2631f6143747a7dff4772012de27f63b66f764e8aa + md5: b55b20eef247b07cf9a194dab27adc0d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - r-base >=4.5,<4.6.0a0 + license: LGPL-2.0-only + license_family: LGPL + size: 378203 + timestamp: 1757495634048 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda sha256: 169ffbb02cd134949c806d521666a5b6fce7d59ea2ca39346c27a13b179a6627 md5: cec48e713c16eb74b4984019282ad03a @@ -4006,6 +4054,36 @@ packages: license_family: MIT size: 286342 timestamp: 1761151056217 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pak-0.9.2-r45hc72bb7e_0.conda + sha256: 5d8b370c69e88f806d0f163dac91e69d24fe65743c43472fe36099658d8042e8 + md5: 6a487c2d5e67a5fc80d6619de02c708c + depends: + - r-assertthat + - r-base >=4.5,<4.6.0a0 + - r-base64enc + - r-callr >=3.0.0.9002 + - r-cli >=1.0.0 + - r-cliapp >=0.0.0.9002 + - r-crayon >=1.3.4 + - r-curl >=3.2 + - r-desc >=1.2.0 + - r-filelock >=1.0.2 + - r-glue >=1.3.0 + - r-jsonlite + - r-lpsolve + - r-pkgbuild >=1.0.2 + - r-pkgcache >=1.0.3 + - r-prettyunits + - r-processx >=3.2.1 + - r-ps >=1.3.0 + - r-r6 + - r-rematch2 + - r-rprojroot >=1.3.2 + - r-tibble + license: GPL-3.0-only + license_family: GPL3 + size: 5820251 + timestamp: 1766394791414 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda sha256: bf80a25cead88176880121ea7fefba2d143d1919420bcbef4b640cdad863a1ad md5: a3b330fbc5ec2832ad37243a46817df4 @@ -4051,6 +4129,24 @@ packages: license_family: GPL3 size: 221277 timestamp: 1757496221 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgcache-2.2.4-r45hc72bb7e_1.conda + sha256: 7cd5e76b7e4dfbd40aeb0a3bc1b8171dbf045571476c53b0c2d4e02e9d87496f + md5: c2f0a882d15573cda41289201873077c + depends: + - r-base >=4.5,<4.6.0a0 + - r-callr >=2.0.4.9000 + - r-cli >=3.2.0 + - r-curl >=3.2 + - r-filelock + - r-jsonlite + - r-prettyunits + - r-processx >=3.3.0.9001 + - r-r6 + - r-rappdirs + license: MIT + license_family: MIT + size: 921394 + timestamp: 1758416361320 - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda sha256: fda425435a533e86da5f0fc89cf45c9f889a4e6f1e2ed536ca23662a8461602c md5: 40a5fdd06c7e7880758a021cf2df6c12 @@ -4142,6 +4238,17 @@ packages: license_family: MIT size: 25995 timestamp: 1757447352187 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-prettycode-1.1.0-r45hc72bb7e_5.conda + sha256: fdac4ff464bf1fd8dfd33cff7f76143ca120296d9ea59d8c0b0a001d5d5b7b16 + md5: a8d5f73a68f4d4171c40cfbb3c195477 + depends: + - r-base >=4.5,<4.6.0a0 + - r-crayon + - r-withr + license: MIT + license_family: MIT + size: 251464 + timestamp: 1757801114578 - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda sha256: 0306580de6e867b9060595f5eedde4dbf531ee89c16dd3738dde995b30f3fe14 md5: 07465728b1fd99d28b286156dac895a3 @@ -4661,6 +4768,17 @@ packages: license_family: GPL3 size: 93507 timestamp: 1770286893349 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda + sha256: d5d4dddd88a5c282c345897bb9faaac4dcc2bca5e63269aec32fa6b21a77bfad + md5: cf2e9902cba2ba0ec9368910a6ae908e + depends: + - r-base >=4.5,<4.6.0a0 + - r-r6 + - r-stringr + license: BSD-3-Clause + license_family: BSD + size: 478871 + timestamp: 1765968903101 - conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda sha256: 83749d9ea9422d89e8e59e93dfee6423297e83a1fab325b03d412700784773bc md5: e2d98358063814d40bcb9150b45fb6e9 diff --git a/pixi.toml b/pixi.toml index d837eada88a..8bef15217b3 100644 --- a/pixi.toml +++ b/pixi.toml @@ -6,9 +6,9 @@ platforms = ["linux-64"] version = "0.1.0" [tasks] -[tasks.install_package] +[tasks.pak] args = [{arg = "pkg"}] -cmd = 'Rscript -e "install.packages(\"{{ pkg }} \")"' +cmd = 'Rscript -e "pak::pak(\"{{ pkg }}\")"' [tasks.rdinst] args = [{arg = "path"}] @@ -27,6 +27,7 @@ depends-on = [ {task = "rdinst", args = ["modules/data.land"]}, {task = "rdinst", args = ["modules/data.atmosphere"]}, {task = "rdinst", args = ["models/sipnet"]}, + {task = "rdinst", args = ["base/settings"]} ] [tasks.targets] @@ -93,3 +94,4 @@ r-crew = ">=1.3.0,<2" "r-crew.cluster" = ">=0.4.0,<0.5" air = ">=0.8.2,<0.9" r-visnetwork = ">=2.1.4,<3" +r-pak = "*" From 175f15a05eeba0804477c071a528a0af7bc92717 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 13:18:56 -0400 Subject: [PATCH 08/75] wip changes --- .../01-prepare-events.R | 9 +--- .../sipnet-restart-workflow/02-run-sipnet.R | 44 +++++++++++++------ pixi.lock | 28 ++++++++++++ pixi.toml | 1 + 4 files changed, 60 insertions(+), 22 deletions(-) diff --git a/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R b/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R index a3571a934a1..724bc75064c 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R +++ b/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R @@ -22,13 +22,6 @@ if (is.null(site_id)) { site_id <- design_points[dp_idx, ][["id"]] } -met <- file.path( - config[["met_dir"]], - site_id, - "ERA5.1.2016-01-01.2024-12-31.clim" -) -stopifnot(file.exists(met)) - # Make the events.json planting <- fs::dir_ls( config[["planting_events_dir"]], @@ -114,7 +107,7 @@ planting_n <- make_event_list(planting_events) harvest_n <- make_event_list(harvest_events) irrigation_n <- make_event_list(irrigation_events) all_events <- dplyr::bind_rows(planting_n, harvest_n, irrigation_n) |> - dplyr::summarize(events = list(c(events)), .by = "site_id") |> + dplyr::summarize(events = list(purrr::list_c(.data$events)), .by = "site_id") |> dplyr::mutate(pecan_events_version = "0.1.1", .before = "site_id") outdir_root <- fs::dir_create(config[["outdir_root"]]) diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index f4e446ef7a3..c8247d4762f 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -15,7 +15,20 @@ site_id <- config[["site_id"]] events_json_file <- fs::path(outdir_root, "events.json") events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) -dates <- purrr:: +all_dates <- events |> + purrr::pluck(1, "events") |> + purrr::map_chr("date") |> + as.Date() + +start_date <- min(all_dates) +end_date <- max(all_dates) + +met <- file.path( + config[["met_dir"]], + site_id, + "ERA5.1.2016-01-01.2024-12-31.clim" +) +stopifnot(file.exists(met)) ################################################################################ outdir <- fs::path(outdir_root, "segments") |> fs::dir_create() @@ -49,6 +62,14 @@ settings <- PEcAn.settings::as.Settings(list( ) )) +crop_cycles <- events_to_crop_cycle_starts(events_json_file) +# Empty example +# crop_cycles <- tibble::tibble( +# site_id = character(0), +# date = as.Date(NULL), +# crop_code = character(0) +# ) + # TODO: Iterate over events site_events_obj <- events[[1]] @@ -57,15 +78,6 @@ site_events_list <- site_events_obj[["events"]] site_events_common <- site_events_obj site_events_common[["events"]] <- NULL -crop_cycles <- events_to_crop_cycle_starts(site1_multi) - -# Empty example -# crop_cycles <- tibble::tibble( -# site_id = character(0), -# date = as.Date(NULL), -# crop_code = character(0) -# ) - # Get segments segments <- tibble::tibble( start_date = c(start_date, crop_cycles[["date"]]), @@ -95,20 +107,24 @@ for (isegment in seq_len(nrow(segments))) { # Segment-separated events file eventfile <- file.path(segment_dir, "events.json") - segment_event_obj <- list(c(site_events_common, events = list(events_sub)) ) - jsonlite::write_json(segment_event_obj, eventfile, auto_unbox = TRUE) + segment_event_obj <- list(c(site_events_common, events = list(events_sub))) + jsonlite::write_json(segment_event_obj, eventfile, auto_unbox = TRUE, pretty = TRUE) segment_eventfile <- PEcAn.SIPNET::write.events.SIPNET(eventfile, segment_dir) + metpath <- settings[[c("run", "inputs", "met", "path")]] + met_segment_file <- file.path(segment_dir, "met.clim") + # Subset the met to only the dates in this segment. SIPNET does not respect # start/end date, only the dates in the .clim file. - met_orig <- read.table(settings[[c("run", "inputs", "met", "path")]]) + # TODO: Use `split_inputs.SIPNET` here instead... + + met_orig <- read.table(metpath) met_segment <- met_orig |> # Create a date from the year + DOY dplyr::mutate(date = as.Date(paste0(V2, "-01-01")) + V3) |> dplyr::filter(date >= dstart, date <= dend) |> dplyr::select(-c("date")) - met_segment_file <- file.path(segment_dir, "met.clim") write.table( met_segment, met_segment_file, diff --git a/pixi.lock b/pixi.lock index 9335daab155..41766fa290c 100644 --- a/pixi.lock +++ b/pixi.lock @@ -250,6 +250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-2.0.0-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-jsonvalidate-1.5.0-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.51-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r45hc72bb7e_2.conda @@ -363,6 +364,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-v8-8.0.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda @@ -3623,6 +3625,17 @@ packages: license_family: MIT size: 638574 timestamp: 1757419590757 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-jsonvalidate-1.5.0-r45hc72bb7e_1.conda + sha256: 12921f3fe9e72d4c6396eb0847151df200951ee08a7f19047ead3eed7592d171 + md5: 39c5b5dbabffaee26021620971fd6b1b + depends: + - r-base >=4.5,<4.6.0a0 + - r-r6 + - r-v8 + license: MIT + license_family: MIT + size: 169177 + timestamp: 1758511478721 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda sha256: 032d445f1a7e4f35e5762a28ffefe90f6f68cc2bc3b6806e0d0fba89bb1e5b43 md5: bd7ceffa31a5b9980641d9b40c27e85d @@ -5253,6 +5266,21 @@ packages: license_family: APACHE size: 147244 timestamp: 1757424673681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-v8-8.0.1-r45h3697838_0.conda + sha256: d5b7ddd15efe71500090da3a2bd79453c5a4432bf9d87483ad2be1129b5cf0b4 + md5: 1861207714878e6df085591005681dc7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-curl >=1.0 + - r-jsonlite >=1.0 + - r-rcpp >=0.12.12 + license: MIT + license_family: MIT + size: 10399678 + timestamp: 1760099076903 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda sha256: 25033570039c1a0ff96356fc4f867c268fc299b379a5e4e4f41ba1263cdce162 md5: f6e3a62834212f3a44fa4a0a97fedcde diff --git a/pixi.toml b/pixi.toml index 8bef15217b3..f5a7a8ccd76 100644 --- a/pixi.toml +++ b/pixi.toml @@ -95,3 +95,4 @@ r-crew = ">=1.3.0,<2" air = ">=0.8.2,<0.9" r-visnetwork = ">=2.1.4,<3" r-pak = "*" +r-jsonvalidate = ">=1.5.0,<2" From a97a9463bb410163304b880cadbadc6fe1b55bfe Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 13:34:14 -0400 Subject: [PATCH 09/75] remove .Renviron --- .Renviron | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .Renviron diff --git a/.Renviron b/.Renviron deleted file mode 100644 index e69de29bb2d..00000000000 From 4174200fe4556e4300712e12ed4dfc613569e11b Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 16:17:30 -0400 Subject: [PATCH 10/75] sipnet output workaround --- models/sipnet/R/model2netcdf.SIPNET.R | 29 ++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/models/sipnet/R/model2netcdf.SIPNET.R b/models/sipnet/R/model2netcdf.SIPNET.R index 480467d2c8f..b7793b4f2b7 100644 --- a/models/sipnet/R/model2netcdf.SIPNET.R +++ b/models/sipnet/R/model2netcdf.SIPNET.R @@ -64,7 +64,34 @@ model2netcdf.SIPNET <- function(outdir, sitelat, sitelon, start_date, end_date, # if the first line starts with "year", there is no Notes line. first_line <- readLines(sipnet_out_file, n = 1) skip_n <- if (grepl("^year", first_line)) 0 else 1 - sipnet_output <- utils::read.table(sipnet_out_file, header = T, skip = skip_n, sep = "") + # Temporary workaround until + # https://github.com/PecanProject/sipnet/issues/304 is resolved. + sipnet_output <- tryCatch({ + utils::read.table(sipnet_out_file, header = TRUE, skip = skip_n, sep = "") + }, error = function(err) { + PEcAn.logger::logger.warn( + "Failed to read using `read.table`. ", + "Trying to parse output manually." + ) + raw_lines <- readLines(sipnet_out_file) + raw_header <- raw_lines[[1 + skip_n]] + raw_body <- tail(raw_lines, -(1 + skip_n)) + # SIPNET output is right-aligned with the column names in the header. + # We use this to figure out where the numbers end if there are no spaces. + token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) + proc_header <- regmatches(raw_header, token_matches)[[1]] + col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 + col_starts <- c(1, head(col_ends, -1) + 1) + col_widths <- col_ends - col_starts + 1 + result <- read.fwf( + textConnection(raw_body), + widths = col_widths, + col.names = proc_header, + na.strings = c("nan", "-nan") + ) + result[] <- lapply(result, as.numeric) + result + }) #sipnet_output_dims <- dim(sipnet_output) ### Determine number of years and output timestep From 236fb4a85ef2bb04b0365fdaa5b3dd3da2247096 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 16:17:43 -0400 Subject: [PATCH 11/75] pixi dependencies --- pixi.lock | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ pixi.toml | 5 ++ 2 files changed, 149 insertions(+) diff --git a/pixi.lock b/pixi.lock index 41766fa290c..d988cdf7e37 100644 --- a/pixi.lock +++ b/pixi.lock @@ -61,6 +61,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda @@ -210,6 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.4.6-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.0-r45h3697838_0.conda @@ -316,13 +318,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r45h785f33e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r45h3704496_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpptoml-0.2.3-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-readr-2.2.0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.4-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.45.0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.30-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda @@ -359,6 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.58-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r45h3697838_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda @@ -368,6 +375,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda @@ -1063,6 +1071,21 @@ packages: license_family: MIT size: 12723451 timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda + sha256: fbd5005100423c1baa95c7e5a962f636d12fcb40d08897b1d2a6a9925e093871 + md5: 3888dd884df92d5ea9993dc8338e91bc + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.4.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 1013020 + timestamp: 1721907912966 - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da md5: 38f5dbc9ac808e31c00650f7be1db93f @@ -3078,6 +3101,17 @@ packages: license_family: GPL2 size: 218412 timestamp: 1763566744987 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r45hc72bb7e_4.conda + sha256: 2edd40491f63166d242e4e092f37c793a9c51c45fc8eae6132c11d5831706205 + md5: af58987665d786f31bfd45264cb72ae4 + depends: + - r-base >=4.5,<4.6.0a0 + - r-foreach >=1.2.0 + - r-iterators >=1.0.0 + license: GPL-2.0-only + license_family: GPL2 + size: 200811 + timestamp: 1757511066319 - conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda sha256: 73396f3432df8aac38aeb15f27ebdecb216d3b63bfa3c87fc6b996acf27b82f8 md5: 49850c61c12fbd8dd19b30d9bc81833f @@ -4522,6 +4556,19 @@ packages: license_family: GPL2 size: 1496128 timestamp: 1757496030112 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpptoml-0.2.3-r45h3697838_1.conda + sha256: 8e10fa6f550c83cdc99175443ecc92db178369e82a7dcb743e1fe7ce87d39530 + md5: 707ba8dabbbffd03f5907406a0fe8368 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-rcpp >=0.11.5 + license: GPL-2.0-or-later + license_family: GPL2 + size: 227793 + timestamp: 1757490566643 - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda sha256: e53806a09281774eb7c5e6e8572278dc4e82994d41bdc92a5e18793711301865 md5: 2b9eb11b885d45d9810089deb8078f02 @@ -4533,6 +4580,29 @@ packages: license_family: GPL3 size: 638016 timestamp: 1770551164495 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-readr-2.2.0-r45h3697838_0.conda + sha256: 06a42932d182259540fd53dca6ac6e988bb28b70d4b09d5786b4260928090598 + md5: a5f0d7d99d912486b2d93a576fadb8e0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cli + - r-clipr + - r-cpp11 + - r-crayon + - r-hms >=0.4.1 + - r-lifecycle >=0.2.0 + - r-r6 + - r-rlang + - r-tibble + - r-tzdb >=0.1.1 + - r-vroom >=1.5.4 + license: MIT + license_family: MIT + size: 808559 + timestamp: 1771573588021 - conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda sha256: aabe4c91dd234e4cadc51f5a83cd501d269682d6e34320b336595fda71fbfb17 md5: 340c190b18b45a12a1359d78467fba78 @@ -4600,6 +4670,27 @@ packages: license_family: GPL3 size: 147271 timestamp: 1757481783597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.45.0-r45h3697838_0.conda + sha256: a24dd07d3f234effd6175b1f4aef8e7841896fe2d0f1bd95f7e37873b20109a5 + md5: d12318e8af8655d396b1f26ffb99fe09 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-here + - r-jsonlite + - r-matrix + - r-png + - r-rappdirs + - r-rcpp >=1.0.7 + - r-rcpptoml + - r-rlang + - r-withr + license: Apache-2.0 + license_family: APACHE + size: 1916204 + timestamp: 1771004475839 - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda sha256: e8f6a44ed24e37df7a9a311ac00355294d09e0ad92e1aef9d0fc06045ec6c382 md5: 461e9fef868aacbde6b73ba681ebce34 @@ -4611,6 +4702,20 @@ packages: license_family: MIT size: 126090 timestamp: 1757451641758 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda + sha256: b0d732923793090f4e91112a03a1bbb0f71e7180d6c89f95853ebf48fe0bb61e + md5: 3ef4fb93f36b0534412e661042f5403e + depends: + - __glibc >=2.17,<3.0.a0 + - jags 4.* + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-coda >=0.13 + license: GPL-2.0-only + license_family: GPL2 + size: 149658 + timestamp: 1757622623100 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda sha256: dd4df06afcc68d95473939cc1a6ff2b2fa190412ddefac214da1a48a87441d9f md5: 4623f836bbe3b849519dd29cf55881a9 @@ -5186,6 +5291,19 @@ packages: license_family: MIT size: 185274 timestamp: 1757482938729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r45h3697838_2.conda + sha256: d5e6baaf4063a7fb2c462e6f1a5ffda1c8928eb4b943887e4989e8eac9a98916 + md5: 54673c8b5186c85794f0bd40d7c49bb4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-cpp11 >=0.5.2 + license: MIT + license_family: MIT + size: 555420 + timestamp: 1757490039639 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda sha256: 8d8fe2da1482f3c7496d0959c05fb67a7db164e674343d01c74c6f417e01399a md5: d2caba583b30269a834a053307f80a66 @@ -5319,6 +5437,32 @@ packages: license_family: MIT size: 3724506 timestamp: 1757566751580 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.0-r45h3697838_0.conda + sha256: 71b7da0c90cbcc0430f34a30a38b71c754bc6fa90dbf955438be2db3021c693f + md5: e43318d3f2be7d5adf0c06d79520ac8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - r-base >=4.5,<4.6.0a0 + - r-bit64 + - r-cli + - r-cpp11 >=0.2.0 + - r-crayon + - r-glue + - r-hms + - r-lifecycle + - r-progress >=1.2.1 + - r-rlang >=0.4.2 + - r-tibble >=2.0.0 + - r-tidyselect + - r-tzdb >=0.1.1 + - r-vctrs >=0.2.0 + - r-withr + license: MIT + license_family: MIT + size: 935533 + timestamp: 1769540679531 - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda sha256: 57eb80cb919524dde77b4c19f257ac9b327aba900e28298d990fa622f30b6f09 md5: 86406bcc46061e27fe7ec24f73eb6676 diff --git a/pixi.toml b/pixi.toml index f5a7a8ccd76..0520d9a0cbb 100644 --- a/pixi.toml +++ b/pixi.toml @@ -96,3 +96,8 @@ air = ">=0.8.2,<0.9" r-visnetwork = ">=2.1.4,<3" r-pak = "*" r-jsonvalidate = ">=1.5.0,<2" +r-rjags = ">=4_17,<5" +r-rcpptoml = ">=0.2.3,<0.3" +r-doparallel = ">=1.0.17,<2" +r-reticulate = ">=1.45.0,<2" +r-readr = ">=2.2.0,<3" From b093d75b96a028c13ecb1c558bee112ae1dcb941 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 16:17:54 -0400 Subject: [PATCH 12/75] crop --> crop_code for parsing crop cycles --- modules/data.land/R/events_to_crop_cycle_starts.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R index 3d766d7b637..c9a64ebd1c4 100644 --- a/modules/data.land/R/events_to_crop_cycle_starts.R +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -45,8 +45,8 @@ find_crop_changes <- function(event_df) { event_df |> dplyr::filter(.data$event_type == "planting") |> dplyr::arrange(.data$site_id, .data$date) |> - dplyr::mutate(crop_cycle_id = dplyr::consecutive_id(.data$site_id, .data$crop)) |> + dplyr::mutate(crop_cycle_id = dplyr::consecutive_id(.data$site_id, .data$crop_code)) |> dplyr::group_by(.data$site_id, .data$crop_cycle_id) |> dplyr::slice_min(.data$date) |> - dplyr::select("site_id", "date", "crop") + dplyr::select("site_id", "date", "crop_code") } From c47817cc11c3d8195811ab12761d6952f692354c Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 27 Mar 2026 16:18:08 -0400 Subject: [PATCH 13/75] working run-sipnet workflow --- .../sipnet-restart-workflow/02-run-sipnet.R | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index c8247d4762f..6b59709410f 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -1,7 +1,7 @@ #!/usr/bin/env Rscript -devtools::load_all("~/projects/pecan/sipnet-events/modules/data.land") -devtools::load_all("~/projects/pecan/sipnet-events/models/sipnet") +devtools::load_all("modules/data.land") +devtools::load_all("models/sipnet") config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") @@ -11,6 +11,10 @@ binary <- config[["sipnet_binary"]] stopifnot(file.exists(binary)) site_id <- config[["site_id"]] +dp_data <- read.csv(config[["dp_path"]]) |> + dplyr::filter(.data$id == .env$site_id) +site_lat <- dp_data[["lat"]] +site_lon <- dp_data[["lon"]] events_json_file <- fs::path(outdir_root, "events.json") events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) @@ -50,8 +54,8 @@ settings <- PEcAn.settings::as.Settings(list( site = list( id = site_id, name = site_id, - lat = 32.71585, - lon = -115.47163 + lat = site_lat, + lon = site_lon ), start.date = start_date, end.date = end_date, @@ -88,7 +92,7 @@ segments <- tibble::tibble( ################################################################################ for (isegment in seq_len(nrow(segments))) { - # isegment <- 1 + message("Running segment ", isegment) segment <- segments[isegment, ] segment_id <- sprintf("%03d", isegment) dstart <- segment[["start_date"]] @@ -113,30 +117,22 @@ for (isegment in seq_len(nrow(segments))) { segment_eventfile <- PEcAn.SIPNET::write.events.SIPNET(eventfile, segment_dir) metpath <- settings[[c("run", "inputs", "met", "path")]] - met_segment_file <- file.path(segment_dir, "met.clim") # Subset the met to only the dates in this segment. SIPNET does not respect # start/end date, only the dates in the .clim file. - # TODO: Use `split_inputs.SIPNET` here instead... - - met_orig <- read.table(metpath) - met_segment <- met_orig |> - # Create a date from the year + DOY - dplyr::mutate(date = as.Date(paste0(V2, "-01-01")) + V3) |> - dplyr::filter(date >= dstart, date <= dend) |> - dplyr::select(-c("date")) - write.table( - met_segment, - met_segment_file, - quote = FALSE, - sep = "\t", - row.names = FALSE, - col.names = FALSE + met_segment_file <- split_inputs.SIPNET( + dstart, + dend, + metpath, + outpath = segment_dir, + overwrite = TRUE ) # Segment-specific settings segment_outdir <- file.path(segment_dir, "out") dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) + segment_outdir_withid <- file.path(segment_outdir, segment_id) + # Don't need to create the outdir here because it is created by write.configs segment_rundir <- file.path(segment_dir, "run") dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) segment_rundir_withid <- file.path(segment_rundir, segment_id) @@ -144,8 +140,8 @@ for (isegment in seq_len(nrow(segments))) { segment_settings <- settings segment_settings[["outdir"]] <- segment_outdir + segment_settings[["modeloutdir"]] <- segment_outdir segment_settings[["rundir"]] <- segment_rundir - segment_settings[["modeloutdir"]] <- segment_rundir segment_settings[[c("run", "start.date")]] <- dstart segment_settings[[c("run", "end.date")]] <- dend segment_settings[[c("run", "inputs", "met", "path")]] <- met_segment_file @@ -175,6 +171,16 @@ for (isegment in seq_len(nrow(segments))) { ) runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) + + model2netcdf.SIPNET( + outdir = segment_outdir_withid, + sitelat = segment_settings[[c("run", "site", "lat")]], + sitelon = segment_settings[[c("run", "site", "lon")]], + start_date = dstart, + end_date = dend, + revision = segment_settings[[c("model", "revision")]], + overwrite = TRUE + ) } # TODO: Post processing. Combine all the segments together and return output in From 4bf352f5247d8ac860fa4f9ee5e2de243140cf6a Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 3 Apr 2026 10:44:30 -0400 Subject: [PATCH 14/75] add cdo and r-stars to pixi environment --- pixi.lock | 377 +++++++++++++++++++++++++++++++++++++++++++++++------- pixi.toml | 2 + 2 files changed, 334 insertions(+), 45 deletions(-) diff --git a/pixi.lock b/pixi.lock index d988cdf7e37..3e0ca16fa62 100644 --- a/pixi.lock +++ b/pixi.lock @@ -36,7 +36,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-hbf53078_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h83bc92c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -44,6 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda @@ -62,6 +68,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda @@ -100,7 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.9.2-hc20babb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda @@ -113,10 +124,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hbf2fc22_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda @@ -147,15 +159,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h637ef6b_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h6477eea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h7173366_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314hd4f4903_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.1-ha770c72_0.conda @@ -165,8 +179,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-he1279bd_1_cp314t.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda @@ -280,7 +294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h5f38480_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda @@ -348,6 +362,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_1-r45h3697838_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda @@ -392,12 +407,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.9-h6688a6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py314h56549f7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h5a7a40f_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda @@ -406,8 +423,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda @@ -787,6 +807,33 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 989514 timestamp: 1766415934926 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-hbf53078_5.conda + sha256: c0e261e9f2507ab380f654a178ac270c25072198cb86b51d4094161f31fd675e + md5: 529f01c326bcd9bca4f393eb379c4cf5 + depends: + - __glibc >=2.17,<3.0.a0 + - eccodes + - fftw >=3.3.10,<4.0a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - jasper >=4.2.8,<5.0a0 + - libcurl >=8.14.1,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - libstdcxx >=14 + - libudunits2 >=2.2.28,<3.0a0 + - libuuid >=2.41.1,<3.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libxml2-devel + - magics + - proj >=9.7.0,<9.8.0a0 + - udunits2 + license: BSD-3-Clause + license_family: BSD + size: 64429633 + timestamp: 1757995610182 - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda sha256: 783b7525ef535b67236c2773f5553b111ee5258ad9357df2ae1755cc62a0a014 md5: a6993977a14feee4268e7be3ad0977ab @@ -803,6 +850,58 @@ packages: license_family: MIT size: 191335 timestamp: 1773218536473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h83bc92c_0.conda + sha256: 2a00d4fda4ce24dff71bc97b6a57cd61fa98be25da38d387d3935cfb8d84cdc3 + md5: 0f73a3e483c4fbc7bf6fb840d816c5a5 + depends: + - __glibc >=2.17,<3.0.a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - jasper >=4.2.8,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: Apache + size: 4796539 + timestamp: 1772362605927 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda + sha256: 0cc345e4dead417996ce9a1f088b28d858f03d113d43c1963d29194366dcce27 + md5: a0535741a4934b3e386051065c58761a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.7.4 hecca717_0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 145274 + timestamp: 1771259434699 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda + sha256: a564b8af44a113173c7d42ffe37a8d600e6ea21f6db87d252135ba07914a3d10 + md5: af1311c2d5e4bfc5cce2b86804c77972 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + license: GPL-2.0-or-later + license_family: GPL + size: 1925113 + timestamp: 1771754008607 +- conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda + sha256: d02d04e24b79003442751240a7c7ad251c30e368f38808fb44c5a6e925c0436a + md5: fa9e9ec7bf26619a8edd3e11155f15d6 + depends: + - python >=3.6 + license: Apache-2.0 + license_family: Apache + size: 16541 + timestamp: 1753777739225 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -867,6 +966,22 @@ packages: license_family: BSD size: 4059 timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda + sha256: 676540a8e7f73a894cb1fcb870e7bec623ec1c0a2d277094fd713261a02d8d56 + md5: 84ec3f5b46f3076be49f2cf3f1cfbf02 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxfixes + - xorg-libxi + license: MIT + license_family: MIT + size: 144010 + timestamp: 1719014356708 - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda sha256: c8960e00a6db69b85c16c693ce05484facf20f1a80430552145f652a880e0d2a md5: ecb5d11305b8ba1801543002e69d2f2f @@ -1086,6 +1201,21 @@ packages: license_family: GPL size: 1013020 timestamp: 1721907912966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda + sha256: a6a9858eadb4c794b56a1c954c1d4f4b57d96c9fb87092dd46f5bff9b0697b35 + md5: 115ecf05370670f93bc81a8c4f7fd57f + depends: + - __glibc >=2.17,<3.0.a0 + - freeglut >=3.2.2,<4.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - libgl >=1.7.0,<2.0a0 + - libglu >=9.0.3,<10.0a0 + - libglu >=9.0.3,<9.1.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + license: JasPer-2.0 + size: 684185 + timestamp: 1773677703432 - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da md5: 38f5dbc9ac808e31c00650f7be1db93f @@ -1599,6 +1729,16 @@ packages: license_family: GPL size: 1035709 timestamp: 1765030773589 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce md5: bb26456332b07f68bf3b7622ed71c0da @@ -1614,6 +1754,35 @@ packages: license: LGPL-2.1-or-later size: 4398701 timestamp: 1771863239578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda + sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef + md5: 8422fcc9e5e172c91e99aef703b3ce65 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopengl >=1.7.0,<2.0a0 + - libstdcxx >=13 + license: SGI-B-2.0 + size: 325262 + timestamp: 1748692137626 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 md5: 239c5e9546c38a1e884d69effcf4c882 @@ -1773,9 +1942,9 @@ packages: license_family: BSD size: 92400 timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hbf2fc22_100.conda - sha256: f38b00b29c9495b71c12465397c735224ebaef71ad01278c3b9cb69dac685b65 - md5: 0eb36a09dad274e750d60b49aaec0af7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda + sha256: cae2f8fe5258fc1a1d2b61cbc9190ed2c0a1b7cdf5d4aac98da071ade6dac152 + md5: a2956b63b1851e9d5eb9f882d02fa3a9 depends: - __glibc >=2.17,<3.0.a0 - attr >=2.5.2,<2.6.0a0 @@ -1795,8 +1964,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 862222 - timestamp: 1772190364667 + size: 870788 + timestamp: 1770718321021 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f md5: 2a45e7f8af083626f009645a6481f12d @@ -1837,6 +2006,15 @@ packages: license_family: BSD size: 5927939 timestamp: 1763114673331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda + sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead + md5: 7df50d44d4a14d6c31a2c54f2cd92157 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + license: LicenseRef-libglvnd + size: 50757 + timestamp: 1731330993524 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 md5: 1c0320794855f457dea27d35c4c71e23 @@ -2215,6 +2393,43 @@ packages: license_family: GPL size: 191060 timestamp: 1753889274283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h637ef6b_3.conda + sha256: cd1227d176d6f8437b31fc82e64b78d743a55473927764d2c1e4aa9400b3e88f + md5: de519f1c69a8e0963fb52ab9deff9999 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - eccodes >=2.21.0 + - expat + - libexpat >=2.7.1,<3.0a0 + - libgcc >=14 + - libglib >=2.86.0,<3.0a0 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - magics-python + - pango >=1.56.4,<2.0a0 + - proj >=9.7.0,<9.8.0a0 + - simplejson + - xorg-xorgproto + - zlib + constrains: + - magics-metview ==9999999999 + license: Apache-2.0 + license_family: Apache + size: 25793889 + timestamp: 1757971409125 +- conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda + sha256: 10d05b239e901f88394a2540a248d2c696d6ca40f76f62c5f20ec1861acf5384 + md5: 3fd7e3db129f12362642108f23fde521 + depends: + - findlibs + - numpy + - python >=3.6 + license: Apache-2.0 + license_family: Apache + size: 27202 + timestamp: 1675850182530 - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda sha256: d652c7bd4d3b6f82b0f6d063b0d8df6f54cc47531092d7ff008e780f3261bdda md5: 33405d2a66b1411db9f7242c8b97c9e7 @@ -2282,19 +2497,19 @@ packages: license_family: MIT size: 136216 timestamp: 1758194284857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h6477eea_2.conda - sha256: 438592ead3783fd9f0394fcb52022555160cf465df39cfcab43b68b28126c22c - md5: db23ee637c7a5ff3f400846bdddc528a +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h7173366_2.conda + sha256: 251c7eb17b9ac645b54ae2dabf5321b14bd97498d78a0df8435ed77d4ec573d7 + md5: 85aa09e550b144e83bc46418fe9d0ee3 depends: - python - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - numpy >=1.23,<3 - - python_abi 3.14.* *_cp314 + - python_abi 3.14.* *_cp314t license: LGPL-2.1-or-later - size: 459736 - timestamp: 1773492085863 + size: 456026 + timestamp: 1773492082997 - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda sha256: e9c0a46c046fdffa22eb1f77030c95c46d2d6ec5cfaea89fc23710735f2c8d33 md5: 9b929cfa0d6353227bae3cd63ecd7940 @@ -2307,24 +2522,24 @@ packages: license_family: MIT size: 255583 timestamp: 1748924914867 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda - sha256: f2ba8cb0d86a6461a6bcf0d315c80c7076083f72c6733c9290086640723f79ec - md5: 36f5b7eb328bdc204954a2225cf908e2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314hd4f4903_0.conda + sha256: 80bdebe25269b3a0ea5e3eae2ef7159615d4aa3a74b2aa1b408f35b5812312b7 + md5: ee2b2bb9e96a9cd64d68492842559adf depends: - python - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - python_abi 3.14.* *_cp314 + - python_abi 3.14.* *_cp314t - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - libblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 8927860 - timestamp: 1773839233468 + size: 8972010 + timestamp: 1773839212779 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c md5: f61eb8cd60ff9057122a3d338b99c00f @@ -2447,10 +2662,10 @@ packages: license_family: MIT size: 8252 timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda - build_number: 101 - sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd - md5: c014ad06e60441661737121d3eae8a60 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-he1279bd_1_cp314t.conda + build_number: 1 + sha256: 4212a85ccc69264eaf9e68b77ff9b504e78935a53d0923fa409900084418edce + md5: 19b5d632d02f56f9f95ce07dc1e086b5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -2465,25 +2680,27 @@ packages: - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.5,<4.0a0 - - python_abi 3.14.* *_cp314 + - python_abi 3.14.* *_cp314t - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - zstd >=1.5.7,<1.6.0a0 + track_features: + - py_freethreading license: Python-2.0 - size: 36702440 - timestamp: 1770675584356 - python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + size: 47583647 + timestamp: 1770675516163 + python_site_packages_path: lib/python3.14t/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda build_number: 8 - sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 - md5: 0539938c55b6b1a59b560e843ad864a4 + sha256: d9ed2538fba61265a330ee1b1afe99a4bb23ace706172b9464546c7e01259d63 + md5: 3251796e09870c978e0f69fa05e38fb6 constrains: - - python 3.14.* *_cp314 + - python 3.14.* *_cp314t license: BSD-3-Clause license_family: BSD - size: 6989 - timestamp: 1752805904792 + size: 7020 + timestamp: 1752805919426 - conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda sha256: 2af0ddd26c10dd1326774e57f9aa47607bd0c51b6a4122e8b68a023358280861 md5: cc1055fbf899ff061909f934af18a20b @@ -4025,19 +4242,19 @@ packages: license_family: APACHE size: 225802 timestamp: 1764331882493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_4.conda - sha256: 906db096beae7d0fee62f90e6cb969196afc6c1eee1e9e840c3e771038f6f78c - md5: 2bb14f5b8bcf7c5dadda50e773ae0527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h5f38480_3.conda + sha256: c884ac3901bc53e0317d7e19f28102d722baf27502df8b9b4715cea5c1bf0750 + md5: e075e7fc47e3c2c7ecaa85c628bc87fc depends: - __glibc >=2.17,<3.0.a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - - libnetcdf >=4.10.0,<4.10.1.0a0 + - libnetcdf >=4.9.3,<4.9.4.0a0 - r-base >=4.5,<4.6.0a0 license: GPL-3.0-or-later license_family: GPL3 - size: 300037 - timestamp: 1772304020267 + size: 299918 + timestamp: 1757542673765 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda sha256: da4b17286e9df1c5db0de78534ee49ace3990e380a601e2e4369a80d31c7642e md5: b75eb6b18bf2dcdc4f72c3f9cdc310b6 @@ -4996,6 +5213,20 @@ packages: license_family: GPL3 size: 155963 timestamp: 1757509276008 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_1-r45hc72bb7e_0.conda + sha256: f432d5b9d7ddad97f0aeb99fbb9e69459054cd3e1428170f7d9dae0639103154 + md5: 6da2005783692518aef1c4f435859c26 + depends: + - r-abind + - r-base >=4.5,<4.6.0a0 + - r-classint >=0.4_1 + - r-rlang + - r-sf >=1.0_19 + - r-units + license: Apache-2.0 + license_family: APACHE + size: 4407203 + timestamp: 1770994555091 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda sha256: 6d0d8d6f1465b3486996edaef7ccd1020cb2fcca1e69b543fc52dbad5262079b md5: c7ce6f26b92398224c78b92c653b94c1 @@ -5647,6 +5878,18 @@ packages: license_family: GPL size: 228948 timestamp: 1746562045847 +- conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py314h56549f7_1.conda + sha256: 7ef960870a6827599537fb434550848d75ce4bb5bf6ac3bc5317a80f941f8955 + md5: 3f9d3f6f3e67369b6b82112fc1144db6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314t + license: MIT + license_family: MIT + size: 136662 + timestamp: 1762507051896 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 md5: 98b6c9dc80eb87b2519b97bcf7e578dd @@ -5715,6 +5958,16 @@ packages: license: LicenseRef-Public-Domain size: 119135 timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda + sha256: 7beb28a13dd4206c54ed994434d843aabda57fc9e5a0835c2f504c77336a4087 + md5: 6bb8deb138f87c9d48320ac21b87e7a1 + depends: + - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + - libudunits2 2.2.28 h40f5838_3 + license: LicenseRef-BSD-UCAR + size: 112783 + timestamp: 1696525549258 - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda sha256: 2aad2aeff7c69a2d7eecd7b662eef756b27d6a6b96f3e2c2a7071340ce14543e md5: d71d3a66528853c0a1ac2c02d79a0284 @@ -5802,6 +6055,30 @@ packages: license_family: MIT size: 50326 timestamp: 1769445253162 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda + sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 + md5: ba231da7fccf9ea1e768caf5c7099b84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + size: 20071 + timestamp: 1759282564045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a + md5: 17dcc85db3c7886650b8908b183d6876 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: MIT + license_family: MIT + size: 47179 + timestamp: 1727799254088 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 md5: 96d57aba173e878a2089d5638016dc5e @@ -5826,6 +6103,16 @@ packages: license_family: MIT size: 379686 timestamp: 1731860547604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda + sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36 + md5: aa8d21be4b461ce612d8f5fb791decae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 570010 + timestamp: 1766154256151 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda sha256: 325d370b28e2b9cc1f765c5b4cdb394c91a5d958fbd15da1a14607a28fee09f6 md5: 755b096086851e1193f3b10347415d7c diff --git a/pixi.toml b/pixi.toml index 0520d9a0cbb..2643f1827f5 100644 --- a/pixi.toml +++ b/pixi.toml @@ -101,3 +101,5 @@ r-rcpptoml = ">=0.2.3,<0.3" r-doparallel = ">=1.0.17,<2" r-reticulate = ">=1.45.0,<2" r-readr = ">=2.2.0,<3" +cdo = ">=2.5.0,<3" +r-stars = ">=0.7_1,<0.8" From fc55b75a99757d6491d603d15075e29bb41a1eca Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 3 Apr 2026 10:54:30 -0400 Subject: [PATCH 15/75] workflow runs with outputs concatenated ...but we reset to initial conditions every time. --- .../sipnet-restart-workflow/02-run-sipnet.R | 36 ++++++++++++++----- .../sipnet-restart-workflow/03-plot-outputs.R | 25 +++++++++++++ 2 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index 6b59709410f..bc3327bed22 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -87,18 +87,21 @@ segments <- tibble::tibble( start_date = c(start_date, crop_cycles[["date"]]), end_date = c(crop_cycles[["date"]] - 1, end_date) ) |> - dplyr::mutate(segment_id = dplyr::row_number()) + dplyr::mutate( + segment_id = sprintf("%03d", dplyr::row_number()), + segment_dir = file.path(outdir, paste0("segment_", segment_id)) + ) ################################################################################ for (isegment in seq_len(nrow(segments))) { message("Running segment ", isegment) segment <- segments[isegment, ] - segment_id <- sprintf("%03d", isegment) + segment_id <- segment[["segment_id"]] dstart <- segment[["start_date"]] dend <- segment[["end_date"]] - segment_dir <- file.path(outdir, paste0("segment_", segment_id)) + segment_dir <- segment[["segment_dir"]] if (dir.exists(segment_dir)) { unlink(segment_dir, recursive = TRUE) } @@ -128,14 +131,15 @@ for (isegment in seq_len(nrow(segments))) { overwrite = TRUE ) + runid <- "1" # Segment-specific settings segment_outdir <- file.path(segment_dir, "out") dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) - segment_outdir_withid <- file.path(segment_outdir, segment_id) + segment_outdir_withid <- file.path(segment_outdir, runid) # Don't need to create the outdir here because it is created by write.configs segment_rundir <- file.path(segment_dir, "run") dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) - segment_rundir_withid <- file.path(segment_rundir, segment_id) + segment_rundir_withid <- file.path(segment_rundir, runid) dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) segment_settings <- settings @@ -156,7 +160,7 @@ for (isegment in seq_len(nrow(segments))) { segment_settings[[c("model", "restart_out")]] <- restart_out # Write runs file - writeLines(segment_id, file.path(segment_rundir, "runs.txt")) + writeLines(runid, file.path(segment_rundir, "runs.txt")) # TODO: Logic to get the trait values corresponding to the segment's PFT. # 1. Cross-reference crop_code against PFT @@ -167,7 +171,7 @@ for (isegment in seq_len(nrow(segments))) { defaults = settings[["pfts"]], trait.values = segment_traits, settings = segment_settings, - run.id = segment_id + run.id = runid ) runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) @@ -183,5 +187,19 @@ for (isegment in seq_len(nrow(segments))) { ) } -# TODO: Post processing. Combine all the segments together and return output in -# PEcAn standard. +# TODO: Concatenate the NetCDF files. This is annoyingly hard in R (unless I use `stars`?) + +segment_ncfiles <- lapply( + segments[["segment_dir"]], + \(x) list.files( + file.path(x, "out", "1"), + pattern = "\\d+\\.nc", + full.names = TRUE + ) +) |> + do.call(what = c) + +segment_files_byyear <- split(segment_ncfiles, factor(basename(segment_ncfiles))) +combined_outdir <- fs::dir_create(fs::path(outdir_root, "out")) +names(segment_files_byyear) <- fs::path(combined_outdir, names(segment_files_byyear)) +results <- purrr::imap(segment_files_byyear, PEcAn.SIPNET::mergeNC) diff --git a/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R b/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R new file mode 100644 index 00000000000..0884f1a12bd --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R @@ -0,0 +1,25 @@ +#!/usr/bin/env Rscript + +config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") + +outdir <- file.path(config$outdir_root, "out") +ncfiles <- list.files(outdir, full.names = TRUE) +nc <- ncdf4::nc_open(ncfiles[[1]]) + +results <- PEcAn.utils::read.output( + ncfiles = ncfiles, + variables = c("NPP", "GPP", "NEE", "LAI", "AGB", "TotSoilCarb"), + dataframe = TRUE +) + +library(ggplot2) +results |> + tidyr::pivot_longer( + -c("posix", "year"), + names_to = "variable", + values_to = "value" + ) |> + ggplot() + + aes(x = posix, y = value) + + geom_line() + + facet_wrap(vars(variable), scales = "free") From c33de6c4ecad31f39430f703d7e5b25abc9d7de6 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 3 Apr 2026 11:00:58 -0400 Subject: [PATCH 16/75] fix syntax for model restarts --- .../data.land/inst/sipnet-restart-workflow/02-run-sipnet.R | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index bc3327bed22..f1cd1f16fa6 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -150,14 +150,17 @@ for (isegment in seq_len(nrow(segments))) { segment_settings[[c("run", "end.date")]] <- dend segment_settings[[c("run", "inputs", "met", "path")]] <- met_segment_file segment_settings[[c("run", "inputs", "events")]] <- list(path = segment_eventfile) + if (is.null(segment_settings[[c("model", "options")]])) { + segment_settings[[c("model", "options")]] <- list() + } if (isegment > 1) { # For isegment > 1, we restart from the *previous* segment's restart.out - segment_settings[[c("model", "restart_in")]] <- restart_out + segment_settings[[c("model", "options", "RESTART_IN")]] <- restart_out } # ...and now, define a new restart.out for *this* segment restart_out <- file.path(segment_dir, "restart.out") - segment_settings[[c("model", "restart_out")]] <- restart_out + segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out # Write runs file writeLines(runid, file.path(segment_rundir, "runs.txt")) From a68f8cd14ad2781b2a63c0a4e5f1b80f633e630f Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 3 Apr 2026 15:28:05 -0400 Subject: [PATCH 17/75] working restart workflow --- base/remote/R/check_model_run.R | 4 +- .../sipnet-restart-workflow/02-run-sipnet.R | 26 +++++- .../sipnet-restart-workflow/03-plot-outputs.R | 30 ++++++- .../inst/sipnet-restart-workflow/91-debug.R | 83 +++++++++++++++++++ .../inst/sipnet-restart-workflow/config.yml | 2 + 5 files changed, 135 insertions(+), 10 deletions(-) create mode 100644 modules/data.land/inst/sipnet-restart-workflow/91-debug.R diff --git a/base/remote/R/check_model_run.R b/base/remote/R/check_model_run.R index c74184d7f01..2c733d875e5 100644 --- a/base/remote/R/check_model_run.R +++ b/base/remote/R/check_model_run.R @@ -10,9 +10,9 @@ check_model_run <- function(out, stop.on.error = TRUE) { success <- FALSE msg <- paste0("Model run aborted with the following error:\n", out) if (stop.on.error) { - PEcAn.logger::logger.severe(msg) + PEcAn.logger::logger.severe(msg, wrap = FALSE) } else { - PEcAn.logger::logger.error(msg) + PEcAn.logger::logger.error(msg, wrap = FALSE) } } else { success <- TRUE diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index f1cd1f16fa6..afc5b5a8f4b 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -34,8 +34,16 @@ met <- file.path( ) stopifnot(file.exists(met)) +icfile <- file.path( + config[["ic_dir"]], + site_id, + glue::glue("IC_site_{site_id}_1.nc") +) +stopifnot(file.exists(icfile)) + ################################################################################ -outdir <- fs::path(outdir_root, "segments") |> fs::dir_create() +outdir <- fs::path(outdir_root, "segments") +unlink(outdir, recursive = TRUE) settings <- PEcAn.settings::as.Settings(list( outdir = file.path(outdir, "out"), @@ -48,7 +56,13 @@ settings <- PEcAn.settings::as.Settings(list( model = list( type = "SIPNET", binary = binary, - revision = "v2" + revision = "v2", + options = list( + GDD = 0, + NITROGEN_CYCLE = 0, + ANAEROBIC = 0, + LITTER_POOL = 1 + ) ), run = list( site = list( @@ -59,7 +73,10 @@ settings <- PEcAn.settings::as.Settings(list( ), start.date = start_date, end.date = end_date, - inputs = list(met = list(path = met)) + inputs = list( + met = list(path = met), + poolinitcond = list(path = icfile) + ) ), host = list( name = "localhost" @@ -89,7 +106,7 @@ segments <- tibble::tibble( ) |> dplyr::mutate( segment_id = sprintf("%03d", dplyr::row_number()), - segment_dir = file.path(outdir, paste0("segment_", segment_id)) + segment_dir = file.path(fs::path_abs(outdir), paste0("segment_", segment_id)) ) ################################################################################ @@ -139,6 +156,7 @@ for (isegment in seq_len(nrow(segments))) { # Don't need to create the outdir here because it is created by write.configs segment_rundir <- file.path(segment_dir, "run") dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) + file.create(file.path(segment_rundir, "README.txt")) segment_rundir_withid <- file.path(segment_rundir, runid) dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) diff --git a/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R b/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R index 0884f1a12bd..f1822f4277c 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R +++ b/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R @@ -6,14 +6,27 @@ outdir <- file.path(config$outdir_root, "out") ncfiles <- list.files(outdir, full.names = TRUE) nc <- ncdf4::nc_open(ncfiles[[1]]) +outdir_root <- config[["outdir_root"]] +events_json_file <- fs::path(outdir_root, "events.json") +events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) + +events_df <- dplyr::bind_rows(events[[1]][["events"]]) |> + dplyr::mutate(date = as.Date(.data$date)) |> + dplyr::filter(.data$event_type != "irrigation") |> + dplyr::arrange(.data$date) + +events_df |> + dplyr::select("event_type":"crop_code") + results <- PEcAn.utils::read.output( ncfiles = ncfiles, - variables = c("NPP", "GPP", "NEE", "LAI", "AGB", "TotSoilCarb"), + variables = c("NEE", "LAI", "AGB", "TotSoilCarb"), dataframe = TRUE -) +) |> + dplyr::as_tibble() library(ggplot2) -results |> +plt <- results |> tidyr::pivot_longer( -c("posix", "year"), names_to = "variable", @@ -22,4 +35,13 @@ results |> ggplot() + aes(x = posix, y = value) + geom_line() + - facet_wrap(vars(variable), scales = "free") + geom_vline( + aes(xintercept = date, color = event_type), + data = events_df, + linetype = "dashed" + ) + + facet_wrap(vars(variable), scales = "free") + + theme_bw() + + theme(legend.position = "bottom") + +ggsave("~/Pictures/restarts.png", plt, width = 12, height = 9, units = "in") diff --git a/modules/data.land/inst/sipnet-restart-workflow/91-debug.R b/modules/data.land/inst/sipnet-restart-workflow/91-debug.R new file mode 100644 index 00000000000..f748910ff84 --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/91-debug.R @@ -0,0 +1,83 @@ +#!/usr/bin/env Rscript + +library(dplyr) +library(ggplot2) +library(readr) + +sipnet_out_file <- "modules/data.land/inst/sipnet-restart-workflow/_test/segments/segment_001/out/1/sipnet.out" + +skip_n <- 0 +sipnet_output <- tryCatch({ + utils::read.table(sipnet_out_file, header = TRUE, skip = skip_n, sep = "") +}, error = function(err) { + PEcAn.logger::logger.warn( + "Failed to read using `read.table`. ", + "Trying to parse output manually." + ) + raw_lines <- readLines(sipnet_out_file) + raw_header <- raw_lines[[1 + skip_n]] + raw_body <- tail(raw_lines, -(1 + skip_n)) + # SIPNET output is right-aligned with the column names in the header. + # We use this to figure out where the numbers end if there are no spaces. + token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) + proc_header <- regmatches(raw_header, token_matches)[[1]] + col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 + col_starts <- c(1, head(col_ends, -1) + 1) + col_widths <- col_ends - col_starts + 1 + result <- read.fwf( + textConnection(raw_body), + widths = col_widths, + col.names = proc_header, + na.strings = c("nan", "-nan") + ) + result[] <- lapply(result, as.numeric) + result +}) + +dat <- as_tibble(sipnet_output) |> + mutate( + date = PEcAn.SIPNET:::sipnet2datetime(year, day, time), + .before = 0 + ) + +head(dat, 20) + +dwide <- dat |> + select(-c("year", "day", "time")) |> + tidyr::pivot_longer( + -"date", + names_to = "variable", + values_to = "value" + ) + +dwide |> + # filter(date < "2016-07-15") |> + # filter(date < "2016-06-11") |> + ggplot() + + aes(x = date, y = value) + + geom_line() + + facet_wrap(vars(variable), scales = "free") + +ggsave("~/Pictures/bad-segment-early.png") + +# Find first NA +first_na_index <- which(rowSums(is.na(dat)) > 0)[1] +start_row <- pmax(1, first_na_index - 10) +end_row <- pmin(nrow(dat), first_na_index + 10) +result <- dat |> + slice(start_row:end_row) + +print(dat, n = Inf) + +dat |> + dplyr::filter(is.na(litter)) + +tail(dat, 30) |> dplyr::glimpse() + +ncfile <- "modules/data.land/inst/sipnet-restart-workflow/_test/segments/segment_001/out/1/2016.nc" +vnames <- c("") +dnc <- PEcAn.utils::read.output(ncfiles = ncfile, dataframe = TRUE) |> + as_tibble() +nc <- ncdf4::nc_open(ncfile) +names(nc$var) +time <- ncdf4::ncvar_get(nc, "time") diff --git a/modules/data.land/inst/sipnet-restart-workflow/config.yml b/modules/data.land/inst/sipnet-restart-workflow/config.yml index 032e814ae3d..39be52d49c5 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/config.yml +++ b/modules/data.land/inst/sipnet-restart-workflow/config.yml @@ -7,6 +7,7 @@ default: dp_path: "/projectnb/dietzelab/ccmmf/management/irrigation/design_points.csv" sipnet_binary: "/projectnb/dietzelab/ccmmf/usr/ashiklom/pecan/sipnet/sipnet" met_dir: "/projectnb/dietzelab/ccmmf/ensemble/ERA5_SIPNET" + ic_dir: "/projectnb/dietzelab/ccmmf/ensemble/IC_files" planting_events_dir: "/projectnb/dietzelab/ccmmf/management/event_files" mslsp_path: "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" @@ -16,5 +17,6 @@ ashiklom: dp_path: !expr path.expand("~/data/design_points.csv") sipnet_binary: !expr normalizePath("../_helpers/sipnet/sipnet.master", mustWork = TRUE) met_dir: !expr path.expand("~/data/ERA5-site-processed") + ic_dir: !expr path.expand("~/data/IC-site") planting_events_dir: !expr path.expand("~/data/event-files/planting") mslsp_path: !expr path.expand("~/data/matched_landiq_mslsp_v4.1") From 964b1741ac8453fb19ea11a34a72be13e1a6af59 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sat, 4 Apr 2026 13:54:19 -0400 Subject: [PATCH 18/75] WIP PFT configuration --- .../sipnet-restart-workflow/02-run-sipnet.R | 61 ++++++++++++++++--- .../inst/sipnet-restart-workflow/config.yml | 2 + 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index afc5b5a8f4b..274dad34c78 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -19,6 +19,29 @@ site_lon <- dp_data[["lon"]] events_json_file <- fs::path(outdir_root, "events.json") events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) +# Determine initial PFT +events_df <- events |> + purrr::pluck(1, "events") |> + dplyr::bind_rows() |> + dplyr::arrange(.data$date) + +crop2pft <- function(crop_code) { + # crop_code <- c("F1", "R1", "G2", "F16") + cls <- substr(crop_code, 1, 1) + dplyr::case_when( + cls == "D" ~ "temperate.deciduous", + cls == "F" ~ "annual_crop", + cls == "G" ~ "grassland", + cls == "P" ~ "grassland", + cls == "R" ~ "grassland", + is.na(crop_code) ~ "soil", + TRUE ~ "UNKNOWN_PFT" + ) +} + +# Before first planting event, assume soil +initial_pft <- "soil" + all_dates <- events |> purrr::pluck(1, "events") |> purrr::map_chr("date") |> @@ -41,18 +64,31 @@ icfile <- file.path( ) stopifnot(file.exists(icfile)) +pft_dir <- config[["pft_dir"]] +stopifnot(dir.exists(pft_dir)) + ################################################################################ outdir <- fs::path(outdir_root, "segments") unlink(outdir, recursive = TRUE) +pfts <- c("temperate.deciduous", "grass", "annual_crop") |> + purrr::map(~list( + name = .x, + posterior.files = file.path(pft_dir, .x, "post.distns.Rdata"), + outdir = paste0(file.path(pft_dir, .x), "/") + )) |> + c(list(list(name = "soil", outdir = file.path(pft_dir, "soil/")))) + +settings_outdir <- file.path(outdir, "out") +dir.create(settings_outdir, showWarnings = FALSE, recursive = TRUE) +settings_rundir <- file.path(outdir, "run") +dir.create(settings_rundir, showWarnings = FALSE, recursive = TRUE) + settings <- PEcAn.settings::as.Settings(list( - outdir = file.path(outdir, "out"), - rundir = file.path(outdir, "run"), - modeloutdir = file.path(outdir, "out"), - pfts = list(list( - name = "grassland", - constants = list(num = 1) - )), + outdir = settings_outdir, + modeloutdir = settings_outdir, + rundir = settings_rundir, + pfts = pfts, model = list( type = "SIPNET", binary = binary, @@ -69,7 +105,10 @@ settings <- PEcAn.settings::as.Settings(list( id = site_id, name = site_id, lat = site_lat, - lon = site_lon + lon = site_lon, + site.pft = list( + soil = "soil" + ) ), start.date = start_date, end.date = end_date, @@ -102,11 +141,13 @@ site_events_common[["events"]] <- NULL # Get segments segments <- tibble::tibble( start_date = c(start_date, crop_cycles[["date"]]), - end_date = c(crop_cycles[["date"]] - 1, end_date) + end_date = c(crop_cycles[["date"]] - 1, end_date), + crop_code = c(NA_character_, crop_cycles[["crop_code"]]) ) |> dplyr::mutate( + pft = crop2pft(.data$crop_code), segment_id = sprintf("%03d", dplyr::row_number()), - segment_dir = file.path(fs::path_abs(outdir), paste0("segment_", segment_id)) + segment_dir = file.path(fs::path_abs(outdir), paste0("segment_", .data$segment_id)) ) ################################################################################ diff --git a/modules/data.land/inst/sipnet-restart-workflow/config.yml b/modules/data.land/inst/sipnet-restart-workflow/config.yml index 39be52d49c5..d83f56178ac 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/config.yml +++ b/modules/data.land/inst/sipnet-restart-workflow/config.yml @@ -10,6 +10,7 @@ default: ic_dir: "/projectnb/dietzelab/ccmmf/ensemble/IC_files" planting_events_dir: "/projectnb/dietzelab/ccmmf/management/event_files" mslsp_path: "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" + pft_dir: "..." ashiklom: irrigation_path: !expr path.expand("~/data/irrigation-events-out/irrigation_10000.parquet") @@ -20,3 +21,4 @@ ashiklom: ic_dir: !expr path.expand("~/data/IC-site") planting_events_dir: !expr path.expand("~/data/event-files/planting") mslsp_path: !expr path.expand("~/data/matched_landiq_mslsp_v4.1") + pft_dir: !expr path.expand("~/data/pfts") From 0cf878288e99bb304c3d1afc62dc4bbce6af4df5 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 13:32:59 -0400 Subject: [PATCH 19/75] ensemble restart workflow --- models/sipnet/R/split_inputs.SIPNET.R | 82 +++- models/sipnet/R/write.configs.SIPNET.R | 4 +- .../sipnet-restart-workflow/02-run-sipnet.R | 365 +++++++++--------- .../inst/sipnet-restart-workflow/81-utils.R | 33 ++ .../inst/sipnet-restart-workflow/config.yml | 1 + .../R/generate_joint_ensemble_design.R | 4 +- 6 files changed, 306 insertions(+), 183 deletions(-) create mode 100644 modules/data.land/inst/sipnet-restart-workflow/81-utils.R diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 56aa09f786d..c58af889e89 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -1,6 +1,74 @@ +#!/usr/bin/env Rscript + +#' @export +split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE, outpath = NULL) { + result <- inputs + if ("met" %in% names(inputs)) { + result[["met"]][["path"]] <- split_sipnet_met( + start.time, + stop.time, + inputs$met$path, + overwrite = overwrite, + outpath = outpath + ) + } + + if ("events" %in% names(inputs)) { + result[["events"]][["path"]] <- split_sipnet_events( + start.time, + stop.time, + inputs$events$path, + overwrite = overwrite, + outpath = outpath + ) + } + result +} + +split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FALSE, outpath = FALSE) { + # Read events.in + # eventfile <- sipnet_eventfile + # start.time <- dstart + # stop.time <- dend + prefix <- sub(".in", "", basename(eventfile), fixed = TRUE) + outpath <- outpath %||% dirname(eventfile) + dir.create(outpath, recursive = TRUE, showWarnings = FALSE) + + #Changing the name of the files, so it would contain the name of the hour as well. + formatted_start <- strftime(start.time) + formatted_stop <- strftime(stop.time) + outfile <- file.path(outpath, paste0(prefix, ".", formatted_start, "-", formatted_stop, ".in")) + names(outfile) <- paste(start.time, "-", stop.time) + + if (file.exists(outfile) && !overwrite) { + PEcAn.logger::logger.warn( + outfile, + " already exists and overwrite is FALSE, so keeping existing file." + ) + return(outfile) + } + + # We can't use `read.table` or similar here because events file rows have + # different numbers of columns depending on event type. Instead, we just + # filter based on the event date, which is always the first two columns (year + # and doy). + events_in_raw <- readLines(eventfile) + events_in_list <- strsplit(events_in_raw, "[[:space:]]+") + years_in <- vapply(events_in_list, \(x) as.integer(x[[1]]), integer(1)) + doys_in <- vapply(events_in_list, \(x) as.integer(x[[2]]), integer(1)) + # Not using sipnet2datetime here because it returns times with time zones, + # which could cause subtle timezone-related bugs + dates_in <- as.Date(sprintf("%d-01-01", years_in)) + doys_in + idx_keep <- (dates_in >= start.time) & (dates_in <= stop.time) + if (length(idx_keep) == 0) { + PEcAn.logger::logger.warn("No events to keep, so `events.in` will be empty") + } + events_out_str <- events_in_raw[idx_keep] + writeLines(events_out_str, outfile) + invisible(outfile) +} + ## split clim file into smaller time units to use in KF -##' @title split_inputs.SIPNET -##' @name split_inputs.SIPNET ##' @author Mike Dietze and Ann Raiho ##' ##' @param start.time start date and time for each SDA ensemble @@ -14,9 +82,7 @@ ##' @importFrom rlang .data ##' @importFrom dplyr %>% ##' @export -split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE, outpath = NULL) { - #### Get met paths - met <- inputs +split_sipnet_met <- function(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) { path <- dirname(met) prefix <- sub(".clim", "", basename(met), fixed = TRUE) if(is.null(outpath)){ @@ -33,7 +99,11 @@ split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE formatted_stop <- gsub(' ',"_", as.character(stop.time)) file <- paste0(outpath, "/", prefix, ".", formatted_start, "-", formatted_stop, ".clim") - if(file.exists(file) & !overwrite){ + if(file.exists(file) && !overwrite){ + PEcAn.logger::logger.warn( + file, + " already exists and overwrite is FALSE, so keeping existing file." + ) return(file) } diff --git a/models/sipnet/R/write.configs.SIPNET.R b/models/sipnet/R/write.configs.SIPNET.R index 80ab6a2c830..9ea25e4753d 100755 --- a/models/sipnet/R/write.configs.SIPNET.R +++ b/models/sipnet/R/write.configs.SIPNET.R @@ -124,7 +124,7 @@ write.config.SIPNET <- function(defaults, trait.values, settings, run.id, inputs } } PEcAn.logger::logger.info(paste0("Writing SIPNET configs with input ", template.clim)) - + # find out where to write run/ouput rundir <- file.path(settings$host$rundir, as.character(run.id)) outdir <- file.path(settings$host$outdir, as.character(run.id)) @@ -132,7 +132,7 @@ write.config.SIPNET <- function(defaults, trait.values, settings, run.id, inputs rundir <- file.path(settings$rundir, as.character(run.id)) outdir <- file.path(settings$modeloutdir, as.character(run.id)) } - + # create launch script (which will create symlink) if (!is.null(settings$model$jobtemplate) && file.exists(settings$model$jobtemplate)) { jobsh <- readLines(con = settings$model$jobtemplate, n = -1) diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R index 274dad34c78..357f218bc63 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R @@ -1,47 +1,34 @@ #!/usr/bin/env Rscript -devtools::load_all("modules/data.land") +library(PEcAn.data.land) +# devtools::load_all("modules/data.land") devtools::load_all("models/sipnet") +source("modules/data.land/inst/sipnet-restart-workflow/81-utils.R") + config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] +# Cleanup some existing files to have a clean start +list.files(outdir_root, full.names = TRUE) |> + grepv(pattern = "events.json", invert = TRUE, fixed = TRUE) |> + unlink(recursive = TRUE) binary <- config[["sipnet_binary"]] stopifnot(file.exists(binary)) +n_ensemble <- config[["n_ensemble"]] + site_id <- config[["site_id"]] dp_data <- read.csv(config[["dp_path"]]) |> dplyr::filter(.data$id == .env$site_id) site_lat <- dp_data[["lat"]] site_lon <- dp_data[["lon"]] -events_json_file <- fs::path(outdir_root, "events.json") +events_json_file <- file.path(outdir_root, "events.json") +sipnet_eventfile <- PEcAn.SIPNET::write.events.SIPNET(events_json_file, outdir_root) events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) -# Determine initial PFT -events_df <- events |> - purrr::pluck(1, "events") |> - dplyr::bind_rows() |> - dplyr::arrange(.data$date) - -crop2pft <- function(crop_code) { - # crop_code <- c("F1", "R1", "G2", "F16") - cls <- substr(crop_code, 1, 1) - dplyr::case_when( - cls == "D" ~ "temperate.deciduous", - cls == "F" ~ "annual_crop", - cls == "G" ~ "grassland", - cls == "P" ~ "grassland", - cls == "R" ~ "grassland", - is.na(crop_code) ~ "soil", - TRUE ~ "UNKNOWN_PFT" - ) -} - -# Before first planting event, assume soil -initial_pft <- "soil" - all_dates <- events |> purrr::pluck(1, "events") |> purrr::map_chr("date") |> @@ -50,26 +37,22 @@ all_dates <- events |> start_date <- min(all_dates) end_date <- max(all_dates) -met <- file.path( - config[["met_dir"]], - site_id, - "ERA5.1.2016-01-01.2024-12-31.clim" -) -stopifnot(file.exists(met)) -icfile <- file.path( - config[["ic_dir"]], - site_id, - glue::glue("IC_site_{site_id}_1.nc") -) -stopifnot(file.exists(icfile)) +met <- file.path(config[["met_dir"]], site_id) |> + list.files("ERA5\\..*\\.clim", full.names = TRUE) |> + as.list() +names(met) <- paste0("path", seq_along(met)) + +icfile <- file.path(config[["ic_dir"]], site_id) |> + list.files("IC_site_.*\\.nc", full.names = TRUE) |> + as.list() +names(icfile) <- paste0("path", seq_along(icfile)) pft_dir <- config[["pft_dir"]] stopifnot(dir.exists(pft_dir)) ################################################################################ -outdir <- fs::path(outdir_root, "segments") -unlink(outdir, recursive = TRUE) +outdir <- fs::path_abs(file.path(outdir_root, "output")) pfts <- c("temperate.deciduous", "grass", "annual_crop") |> purrr::map(~list( @@ -78,17 +61,39 @@ pfts <- c("temperate.deciduous", "grass", "annual_crop") |> outdir = paste0(file.path(pft_dir, .x), "/") )) |> c(list(list(name = "soil", outdir = file.path(pft_dir, "soil/")))) +names(pfts) <- rep("pft", length(pfts)) settings_outdir <- file.path(outdir, "out") dir.create(settings_outdir, showWarnings = FALSE, recursive = TRUE) settings_rundir <- file.path(outdir, "run") dir.create(settings_rundir, showWarnings = FALSE, recursive = TRUE) -settings <- PEcAn.settings::as.Settings(list( - outdir = settings_outdir, +ensemble_settings <- list( + size = n_ensemble, + variable = "LAI", + variable = "SoilMoist", + variable = "GPP", + variable = "SoilResp", + variable = "AGB", + variable = "NEE", + samplingspace = list( + parameters = list(method = "uniform"), + events = list(method = "sampling"), + met = list(method = "sampling"), + poolinitcond = list(method = "sampling"), + # leaf_phenology = list(method = "sampling") + NULL + ), + start.year = lubridate::year(start_date), + end.year = lubridate::year(end_date) +) + +settings_raw <- PEcAn.settings::as.Settings(list( + outdir = outdir_root, modeloutdir = settings_outdir, rundir = settings_rundir, pfts = pfts, + ensemble = ensemble_settings, model = list( type = "SIPNET", binary = binary, @@ -114,154 +119,168 @@ settings <- PEcAn.settings::as.Settings(list( end.date = end_date, inputs = list( met = list(path = met), - poolinitcond = list(path = icfile) + poolinitcond = list(path = icfile), + events = list(path = sipnet_eventfile) ) ), host = list( name = "localhost" ) )) +# Get parameter samples for all relevant PFTs +sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( + settings_raw, + settings_raw$ensemble$size +) -crop_cycles <- events_to_crop_cycle_starts(events_json_file) -# Empty example -# crop_cycles <- tibble::tibble( -# site_id = character(0), -# date = as.Date(NULL), -# crop_code = character(0) -# ) - -# TODO: Iterate over events -site_events_obj <- events[[1]] - -site_id <- site_events_obj[["site_id"]] -site_events_list <- site_events_obj[["events"]] -site_events_common <- site_events_obj -site_events_common[["events"]] <- NULL - -# Get segments -segments <- tibble::tibble( - start_date = c(start_date, crop_cycles[["date"]]), - end_date = c(crop_cycles[["date"]] - 1, end_date), - crop_code = c(NA_character_, crop_cycles[["crop_code"]]) -) |> - dplyr::mutate( - pft = crop2pft(.data$crop_code), - segment_id = sprintf("%03d", dplyr::row_number()), - segment_dir = file.path(fs::path_abs(outdir), paste0("segment_", .data$segment_id)) - ) +settings <- PEcAn.workflow::runModule.run.write.configs( + settings_raw, + input_design = sens_design$X +) + +inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> + read.csv() |> + cbind(sens_design[["X"]]) + +write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) ################################################################################ +# Begin loop +for (irun in seq_len(nrow(inputs_runs))) { + # irun <- 1 + run_row <- inputs_runs[irun, ] + run_id <- run_row[["run_id"]] + run_dir <- file.path(settings$rundir, run_id) + run_outdir <- file.path(settings$modeloutdir, run_id) + run_settings <- subset_paths(settings, run_row) + + ens_samples_file <- file.path( + run_settings$outdir, + sprintf("ensemble.samples.%s.Rdata", run_settings$ensemble$ensemble.id) + ) + stopifnot(file.exists(ens_samples_file)) + ensemble_samples <- PEcAn.utils::load_local(ens_samples_file)[["ens.samples"]] + run_traits <- lapply(ensemble_samples, \(dat) dat[run_row[["param"]], ]) + + # TODO: Different runs might have different events.json files. But for now, + # this is hard coded to a single set of events. + run_events_json <- events_json_file + crop_cycles <- events_to_crop_cycle_starts(run_events_json) + + # Get segments + segments <- data.frame( + start_date = c(run_settings$run$start.date, crop_cycles[["date"]]), + end_date = c(crop_cycles[["date"]] - 1, run_settings$run$end.date), + crop_code = c(NA_character_, crop_cycles[["crop_code"]]) + ) + segments[["pft"]] <- crop2pft(segments[["crop_code"]]) + segments[["segment_id"]] <- sprintf("%03d", seq_len(nrow(segments))) + segments[["segment_dir"]] <- file.path( + run_dir, + "segments", + sprintf("segment_%s", segments[["segment_id"]]) + ) + + segment_root <- file.path() -for (isegment in seq_len(nrow(segments))) { - message("Running segment ", isegment) - segment <- segments[isegment, ] - segment_id <- segment[["segment_id"]] - dstart <- segment[["start_date"]] - dend <- segment[["end_date"]] + for (isegment in seq_len(nrow(segments))) { + # isegment <- 1 + segment <- segments[isegment, ] + segment_id <- segment[["segment_id"]] + dstart <- segment[["start_date"]] + dend <- segment[["end_date"]] + segment_dir <- segment[["segment_dir"]] + + runid_dummy <- "1" - segment_dir <- segment[["segment_dir"]] - if (dir.exists(segment_dir)) { unlink(segment_dir, recursive = TRUE) - } - dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) - - # Filter events to relevant dates - events_sub <- site_events_list |> - purrr::keep(~as.Date(.x[["date"]]) >= dstart) |> - purrr::keep(~as.Date(.x[["date"]]) <= dend) - - # Segment-separated events file - eventfile <- file.path(segment_dir, "events.json") - segment_event_obj <- list(c(site_events_common, events = list(events_sub))) - jsonlite::write_json(segment_event_obj, eventfile, auto_unbox = TRUE, pretty = TRUE) - - segment_eventfile <- PEcAn.SIPNET::write.events.SIPNET(eventfile, segment_dir) - - metpath <- settings[[c("run", "inputs", "met", "path")]] - - # Subset the met to only the dates in this segment. SIPNET does not respect - # start/end date, only the dates in the .clim file. - met_segment_file <- split_inputs.SIPNET( - dstart, - dend, - metpath, - outpath = segment_dir, - overwrite = TRUE - ) + dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) + + segment_inputs <- split_inputs.SIPNET( + dstart, + dend, + run_settings$run$inputs, + overwrite = TRUE, + outpath = segment_dir + ) - runid <- "1" - # Segment-specific settings - segment_outdir <- file.path(segment_dir, "out") - dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) - segment_outdir_withid <- file.path(segment_outdir, runid) - # Don't need to create the outdir here because it is created by write.configs - segment_rundir <- file.path(segment_dir, "run") - dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) - file.create(file.path(segment_rundir, "README.txt")) - segment_rundir_withid <- file.path(segment_rundir, runid) - dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) - - segment_settings <- settings - segment_settings[["outdir"]] <- segment_outdir - segment_settings[["modeloutdir"]] <- segment_outdir - segment_settings[["rundir"]] <- segment_rundir - segment_settings[[c("run", "start.date")]] <- dstart - segment_settings[[c("run", "end.date")]] <- dend - segment_settings[[c("run", "inputs", "met", "path")]] <- met_segment_file - segment_settings[[c("run", "inputs", "events")]] <- list(path = segment_eventfile) - if (is.null(segment_settings[[c("model", "options")]])) { - segment_settings[[c("model", "options")]] <- list() - } + # Segment-specific settings + segment_outdir <- file.path(segment_dir, "out") + dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) + segment_rundir <- file.path(segment_dir, "run") + dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) + file.create(file.path(segment_rundir, "README.txt")) + + segment_rundir_withid <- file.path(segment_rundir, runid_dummy) + dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) + segment_outdir_withid <- file.path(segment_outdir, runid_dummy) + dir.create(segment_outdir_withid, showWarnings = FALSE, recursive = TRUE) + + segment_settings <- run_settings + segment_settings[["outdir"]] <- segment_outdir + segment_settings[["modeloutdir"]] <- segment_outdir + segment_settings[["rundir"]] <- segment_rundir + segment_settings[[c("run", "start.date")]] <- dstart + segment_settings[[c("run", "end.date")]] <- dend + segment_settings[[c("run", "inputs")]] <- segment_inputs + segment_settings + if (is.null(segment_settings[[c("model", "options")]])) { + segment_settings[[c("model", "options")]] <- list() + } + + if (isegment > 1) { + # For isegment > 1, we restart from the *previous* segment's restart.out + segment_settings[[c("model", "options", "RESTART_IN")]] <- restart_out + } + # ...and now, define a new restart.out for *this* segment + restart_out <- file.path(segment_rundir, "restart.out") + segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out + + segment_traits <- run_traits[[segment[["pft"]]]] + + # Write dummy runs file + writeLines(runid_dummy, file.path(segment_rundir, "runs.txt")) + + config <- PEcAn.SIPNET::write.config.SIPNET( + defaults = segment_settings[["pfts"]], + trait.values = segment_traits, + settings = segment_settings, + run.id = runid_dummy + ) - if (isegment > 1) { - # For isegment > 1, we restart from the *previous* segment's restart.out - segment_settings[[c("model", "options", "RESTART_IN")]] <- restart_out + runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) + + model2netcdf.SIPNET( + outdir = segment_outdir_withid, + sitelat = segment_settings[[c("run", "site", "lat")]], + sitelon = segment_settings[[c("run", "site", "lon")]], + start_date = dstart, + end_date = dend, + revision = segment_settings[[c("model", "revision")]], + overwrite = TRUE + ) } - # ...and now, define a new restart.out for *this* segment - restart_out <- file.path(segment_dir, "restart.out") - segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out - - # Write runs file - writeLines(runid, file.path(segment_rundir, "runs.txt")) - - # TODO: Logic to get the trait values corresponding to the segment's PFT. - # 1. Cross-reference crop_code against PFT - # 2. Get traits from PFT posterior file. - segment_traits <- list(list()) - - config <- PEcAn.SIPNET::write.config.SIPNET( - defaults = settings[["pfts"]], - trait.values = segment_traits, - settings = segment_settings, - run.id = runid - ) - runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) + segment_ncfiles <- lapply( + segments[["segment_dir"]], + \(x) { + list.files( + file.path(x, "out", "1"), + pattern = "\\d+\\.nc", + full.names = TRUE + ) + } + ) |> + do.call(what = c) - model2netcdf.SIPNET( - outdir = segment_outdir_withid, - sitelat = segment_settings[[c("run", "site", "lat")]], - sitelon = segment_settings[[c("run", "site", "lon")]], - start_date = dstart, - end_date = dend, - revision = segment_settings[[c("model", "revision")]], - overwrite = TRUE + segment_files_byyear <- split( + segment_ncfiles, + factor(basename(segment_ncfiles)) ) -} - -# TODO: Concatenate the NetCDF files. This is annoyingly hard in R (unless I use `stars`?) - -segment_ncfiles <- lapply( - segments[["segment_dir"]], - \(x) list.files( - file.path(x, "out", "1"), - pattern = "\\d+\\.nc", - full.names = TRUE + segment_outfiles <- file.path(run_outdir, names(segment_files_byyear)) + results <- purrr::map2( + segment_files_byyear, + segment_outfiles, + PEcAn.SIPNET::mergeNC ) -) |> - do.call(what = c) - -segment_files_byyear <- split(segment_ncfiles, factor(basename(segment_ncfiles))) -combined_outdir <- fs::dir_create(fs::path(outdir_root, "out")) -names(segment_files_byyear) <- fs::path(combined_outdir, names(segment_files_byyear)) -results <- purrr::imap(segment_files_byyear, PEcAn.SIPNET::mergeNC) +} diff --git a/modules/data.land/inst/sipnet-restart-workflow/81-utils.R b/modules/data.land/inst/sipnet-restart-workflow/81-utils.R new file mode 100644 index 00000000000..558abf94542 --- /dev/null +++ b/modules/data.land/inst/sipnet-restart-workflow/81-utils.R @@ -0,0 +1,33 @@ +#' settings for whole run with many paths per input -> +#' settings for one ensemble member with one path per input +#' +#' @param settings single-site settings object (not Multisettings) +#' @param inputs named list of input indices (one row of the sample design) +subset_paths <- function(settings, path_nums) { + for (input in names(path_nums)) { + if (!(input %in% names(settings$run$inputs))) { + next + } + path_idx <- path_nums[[input]] + all_paths <- settings$run$inputs[[input]]$path + if (path_idx > length(all_paths)) { + PEcAn.logger::logger.severe("No path at input ", sQuote(input), " index ", path_idx) + } + settings$run$inputs[[input]]$path <- all_paths[[path_idx]] + } + settings +} + +crop2pft <- function(crop_code) { + # crop_code <- c("F1", "R1", "G2", "F16") + cls <- substr(crop_code, 1, 1) + dplyr::case_when( + cls == "D" ~ "temperate.deciduous", + cls == "F" ~ "annual_crop", + cls == "G" ~ "grass", + cls == "P" ~ "grass", + cls == "R" ~ "grass", + is.na(crop_code) ~ "soil", + TRUE ~ "UNKNOWN_PFT" + ) +} diff --git a/modules/data.land/inst/sipnet-restart-workflow/config.yml b/modules/data.land/inst/sipnet-restart-workflow/config.yml index d83f56178ac..bc2614cd962 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/config.yml +++ b/modules/data.land/inst/sipnet-restart-workflow/config.yml @@ -11,6 +11,7 @@ default: planting_events_dir: "/projectnb/dietzelab/ccmmf/management/event_files" mslsp_path: "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" pft_dir: "..." + n_ensemble: 3 ashiklom: irrigation_path: !expr path.expand("~/data/irrigation-events-out/irrigation_10000.parquet") diff --git a/modules/uncertainty/R/generate_joint_ensemble_design.R b/modules/uncertainty/R/generate_joint_ensemble_design.R index c94b0525127..e3faeb2656e 100644 --- a/modules/uncertainty/R/generate_joint_ensemble_design.R +++ b/modules/uncertainty/R/generate_joint_ensemble_design.R @@ -58,7 +58,7 @@ generate_joint_ensemble_design <- function(settings, if (sobol) { ensemble_size <- as.numeric(ensemble_size) * 2 } - ens.sample.method <- settings$ensemble$samplingspace$parameters$method + ens.sample.method <- settings$ensemble$samplingspace$parameters$method %||% "uniform" design_list <- list() sampled_inputs <- list() posterior.files <- settings$pfts %>% @@ -119,4 +119,4 @@ generate_joint_ensemble_design <- function(settings, # list includes additional info beyond just X that's required by the function that # does the sobol index calculations, but not required to do the runs themselves. return(list(X = design_matrix)) -} \ No newline at end of file +} From 3cc91715b74b4fe0803119a3557fca4cf5ef97ba Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 13:34:49 -0400 Subject: [PATCH 20/75] move to root workflows dir --- .../sipnet-restart-workflow/01-prepare-events.R | 2 +- .../sipnet-restart-workflow/02-run-sipnet.R | 4 ++-- .../sipnet-restart-workflow/03-plot-outputs.R | 0 .../inst => workflows}/sipnet-restart-workflow/81-utils.R | 0 .../inst => workflows}/sipnet-restart-workflow/91-debug.R | 0 .../inst => workflows}/sipnet-restart-workflow/config.yml | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/01-prepare-events.R (97%) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/02-run-sipnet.R (98%) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/03-plot-outputs.R (100%) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/81-utils.R (100%) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/91-debug.R (100%) rename {modules/data.land/inst => workflows}/sipnet-restart-workflow/config.yml (100%) diff --git a/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R b/workflows/sipnet-restart-workflow/01-prepare-events.R similarity index 97% rename from modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R rename to workflows/sipnet-restart-workflow/01-prepare-events.R index 724bc75064c..2e7bebe0fe5 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/01-prepare-events.R +++ b/workflows/sipnet-restart-workflow/01-prepare-events.R @@ -1,6 +1,6 @@ #!/usr/bin/env Rscript -config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") +config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") # Pick a parcel from irrigation pid <- config[["parcel_id"]] diff --git a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R b/workflows/sipnet-restart-workflow/02-run-sipnet.R similarity index 98% rename from modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R rename to workflows/sipnet-restart-workflow/02-run-sipnet.R index 357f218bc63..561300dc9e9 100644 --- a/modules/data.land/inst/sipnet-restart-workflow/02-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/02-run-sipnet.R @@ -4,9 +4,9 @@ library(PEcAn.data.land) # devtools::load_all("modules/data.land") devtools::load_all("models/sipnet") -source("modules/data.land/inst/sipnet-restart-workflow/81-utils.R") +source("workflows/sipnet-restart-workflow/81-utils.R") -config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") +config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] # Cleanup some existing files to have a clean start diff --git a/modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R b/workflows/sipnet-restart-workflow/03-plot-outputs.R similarity index 100% rename from modules/data.land/inst/sipnet-restart-workflow/03-plot-outputs.R rename to workflows/sipnet-restart-workflow/03-plot-outputs.R diff --git a/modules/data.land/inst/sipnet-restart-workflow/81-utils.R b/workflows/sipnet-restart-workflow/81-utils.R similarity index 100% rename from modules/data.land/inst/sipnet-restart-workflow/81-utils.R rename to workflows/sipnet-restart-workflow/81-utils.R diff --git a/modules/data.land/inst/sipnet-restart-workflow/91-debug.R b/workflows/sipnet-restart-workflow/91-debug.R similarity index 100% rename from modules/data.land/inst/sipnet-restart-workflow/91-debug.R rename to workflows/sipnet-restart-workflow/91-debug.R diff --git a/modules/data.land/inst/sipnet-restart-workflow/config.yml b/workflows/sipnet-restart-workflow/config.yml similarity index 100% rename from modules/data.land/inst/sipnet-restart-workflow/config.yml rename to workflows/sipnet-restart-workflow/config.yml From 5e8a404d83f8173cf841f9f8e2eeb8d3909a1879 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 14:13:45 -0400 Subject: [PATCH 21/75] refactor settings creation into own file --- .../02-prepare-settings.R | 116 ++++++++++++++ .../{02-run-sipnet.R => 03-run-sipnet.R} | 141 ++---------------- .../{03-plot-outputs.R => 04-plot-outputs.R} | 0 workflows/sipnet-restart-workflow/config.yml | 2 +- 4 files changed, 130 insertions(+), 129 deletions(-) create mode 100644 workflows/sipnet-restart-workflow/02-prepare-settings.R rename workflows/sipnet-restart-workflow/{02-run-sipnet.R => 03-run-sipnet.R} (56%) rename workflows/sipnet-restart-workflow/{03-plot-outputs.R => 04-plot-outputs.R} (100%) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R new file mode 100644 index 00000000000..b562ba3906d --- /dev/null +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -0,0 +1,116 @@ +#!/usr/bin/env Rscript + +config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") +outdir_root <- config[["outdir_root"]] + +outdir <- normalizePath(file.path(outdir_root, "output")) +modeloutdir <- file.path(outdir, "out") +dir.create(modeloutdir, showWarnings = FALSE, recursive = TRUE) +settings_rundir <- file.path(outdir, "run") +dir.create(settings_rundir, showWarnings = FALSE, recursive = TRUE) + +binary <- config[["sipnet_binary"]] +stopifnot(file.exists(binary)) + +n_ensemble <- config[["n_ensemble"]] + +site_id <- config[["site_id"]] + +dp_data <- read.csv(config[["dp_path"]]) |> + dplyr::filter(.data$id == .env$site_id) +site_lat <- dp_data[["lat"]] +site_lon <- dp_data[["lon"]] + +events_json_file <- file.path(outdir_root, "events.json") +sipnet_eventfile <- PEcAn.SIPNET::write.events.SIPNET(events_json_file, outdir_root) +events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) + +all_dates <- events |> + purrr::pluck(1, "events") |> + purrr::map_chr("date") |> + as.Date() + +start_date <- min(all_dates) +end_date <- max(all_dates) + +metfiles <- file.path(config[["met_dir"]], site_id) |> + list.files("ERA5\\..*\\.clim", full.names = TRUE) |> + as.list() +names(metfiles) <- paste0("path", seq_along(metfiles)) + +icfiles <- file.path(config[["ic_dir"]], site_id) |> + list.files("IC_site_.*\\.nc", full.names = TRUE) |> + as.list() +names(icfiles) <- paste0("path", seq_along(icfiles)) + +pft_dir <- config[["pft_dir"]] +stopifnot(dir.exists(pft_dir)) + +pfts <- c("temperate.deciduous", "grass", "annual_crop") |> + purrr::map(~list( + name = .x, + posterior.files = file.path(pft_dir, .x, "post.distns.Rdata"), + outdir = paste0(file.path(pft_dir, .x), "/") + )) |> + c(list(list(name = "soil", outdir = file.path(pft_dir, "soil/")))) +names(pfts) <- rep("pft", length(pfts)) + +ensemble_settings <- list( + size = n_ensemble, + variable = "LAI", + variable = "SoilMoist", + variable = "GPP", + variable = "SoilResp", + variable = "AGB", + variable = "NEE", + samplingspace = list( + parameters = list(method = "uniform"), + events = list(method = "sampling"), + met = list(method = "sampling"), + poolinitcond = list(method = "sampling") + ), + start.year = lubridate::year(start_date), + end.year = lubridate::year(end_date) +) + +settings_raw <- PEcAn.settings::as.Settings(list( + outdir = outdir, + modeloutdir = modeloutdir, + rundir = settings_rundir, + pfts = pfts, + ensemble = ensemble_settings, + model = list( + type = "SIPNET", + binary = binary, + revision = "v2", + options = list( + GDD = 0, + NITROGEN_CYCLE = 0, + ANAEROBIC = 0, + LITTER_POOL = 1 + ) + ), + run = list( + site = list( + id = site_id, + name = site_id, + lat = site_lat, + lon = site_lon, + site.pft = list( + soil = "soil" + ) + ), + start.date = start_date, + end.date = end_date, + inputs = list( + met = list(path = metfiles), + poolinitcond = list(path = icfiles), + events = list(path = sipnet_eventfile) + ) + ), + host = list( + name = "localhost" + ) +)) + +PEcAn.settings::write.settings(settings_raw, "settings.xml", outdir_root) diff --git a/workflows/sipnet-restart-workflow/02-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R similarity index 56% rename from workflows/sipnet-restart-workflow/02-run-sipnet.R rename to workflows/sipnet-restart-workflow/03-run-sipnet.R index 561300dc9e9..bee1a2adc33 100644 --- a/workflows/sipnet-restart-workflow/02-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -1,132 +1,22 @@ #!/usr/bin/env Rscript -library(PEcAn.data.land) -# devtools::load_all("modules/data.land") -devtools::load_all("models/sipnet") +if (FALSE) { + devtools::install("models/sipnet", upgrade = FALSE) + devtools::install("modules/data.land", upgrade = FALSE) +} source("workflows/sipnet-restart-workflow/81-utils.R") config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] -# Cleanup some existing files to have a clean start -list.files(outdir_root, full.names = TRUE) |> - grepv(pattern = "events.json", invert = TRUE, fixed = TRUE) |> - unlink(recursive = TRUE) - -binary <- config[["sipnet_binary"]] -stopifnot(file.exists(binary)) - -n_ensemble <- config[["n_ensemble"]] - -site_id <- config[["site_id"]] -dp_data <- read.csv(config[["dp_path"]]) |> - dplyr::filter(.data$id == .env$site_id) -site_lat <- dp_data[["lat"]] -site_lon <- dp_data[["lon"]] events_json_file <- file.path(outdir_root, "events.json") -sipnet_eventfile <- PEcAn.SIPNET::write.events.SIPNET(events_json_file, outdir_root) -events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) - -all_dates <- events |> - purrr::pluck(1, "events") |> - purrr::map_chr("date") |> - as.Date() - -start_date <- min(all_dates) -end_date <- max(all_dates) - - -met <- file.path(config[["met_dir"]], site_id) |> - list.files("ERA5\\..*\\.clim", full.names = TRUE) |> - as.list() -names(met) <- paste0("path", seq_along(met)) - -icfile <- file.path(config[["ic_dir"]], site_id) |> - list.files("IC_site_.*\\.nc", full.names = TRUE) |> - as.list() -names(icfile) <- paste0("path", seq_along(icfile)) - -pft_dir <- config[["pft_dir"]] -stopifnot(dir.exists(pft_dir)) -################################################################################ -outdir <- fs::path_abs(file.path(outdir_root, "output")) +settings_raw <- PEcAn.settings::read.settings(file.path(outdir_root, "settings.xml")) +unlink(settings_raw$outdir, recursive = TRUE) +dir.create(settings_raw$outdir, recursive = TRUE, showWarnings = FALSE) -pfts <- c("temperate.deciduous", "grass", "annual_crop") |> - purrr::map(~list( - name = .x, - posterior.files = file.path(pft_dir, .x, "post.distns.Rdata"), - outdir = paste0(file.path(pft_dir, .x), "/") - )) |> - c(list(list(name = "soil", outdir = file.path(pft_dir, "soil/")))) -names(pfts) <- rep("pft", length(pfts)) - -settings_outdir <- file.path(outdir, "out") -dir.create(settings_outdir, showWarnings = FALSE, recursive = TRUE) -settings_rundir <- file.path(outdir, "run") -dir.create(settings_rundir, showWarnings = FALSE, recursive = TRUE) - -ensemble_settings <- list( - size = n_ensemble, - variable = "LAI", - variable = "SoilMoist", - variable = "GPP", - variable = "SoilResp", - variable = "AGB", - variable = "NEE", - samplingspace = list( - parameters = list(method = "uniform"), - events = list(method = "sampling"), - met = list(method = "sampling"), - poolinitcond = list(method = "sampling"), - # leaf_phenology = list(method = "sampling") - NULL - ), - start.year = lubridate::year(start_date), - end.year = lubridate::year(end_date) -) - -settings_raw <- PEcAn.settings::as.Settings(list( - outdir = outdir_root, - modeloutdir = settings_outdir, - rundir = settings_rundir, - pfts = pfts, - ensemble = ensemble_settings, - model = list( - type = "SIPNET", - binary = binary, - revision = "v2", - options = list( - GDD = 0, - NITROGEN_CYCLE = 0, - ANAEROBIC = 0, - LITTER_POOL = 1 - ) - ), - run = list( - site = list( - id = site_id, - name = site_id, - lat = site_lat, - lon = site_lon, - site.pft = list( - soil = "soil" - ) - ), - start.date = start_date, - end.date = end_date, - inputs = list( - met = list(path = met), - poolinitcond = list(path = icfile), - events = list(path = sipnet_eventfile) - ) - ), - host = list( - name = "localhost" - ) -)) # Get parameter samples for all relevant PFTs sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( settings_raw, @@ -144,14 +34,12 @@ inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) -################################################################################ # Begin loop for (irun in seq_len(nrow(inputs_runs))) { - # irun <- 1 run_row <- inputs_runs[irun, ] run_id <- run_row[["run_id"]] run_dir <- file.path(settings$rundir, run_id) - run_outdir <- file.path(settings$modeloutdir, run_id) + run_modeloutdir <- file.path(settings$modeloutdir, run_id) run_settings <- subset_paths(settings, run_row) ens_samples_file <- file.path( @@ -165,12 +53,12 @@ for (irun in seq_len(nrow(inputs_runs))) { # TODO: Different runs might have different events.json files. But for now, # this is hard coded to a single set of events. run_events_json <- events_json_file - crop_cycles <- events_to_crop_cycle_starts(run_events_json) + crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts(run_events_json) # Get segments segments <- data.frame( - start_date = c(run_settings$run$start.date, crop_cycles[["date"]]), - end_date = c(crop_cycles[["date"]] - 1, run_settings$run$end.date), + start_date = c(as.Date(run_settings$run$start.date), crop_cycles[["date"]]), + end_date = c(crop_cycles[["date"]] - 1, as.Date(run_settings$run$end.date)), crop_code = c(NA_character_, crop_cycles[["crop_code"]]) ) segments[["pft"]] <- crop2pft(segments[["crop_code"]]) @@ -181,10 +69,7 @@ for (irun in seq_len(nrow(inputs_runs))) { sprintf("segment_%s", segments[["segment_id"]]) ) - segment_root <- file.path() - for (isegment in seq_len(nrow(segments))) { - # isegment <- 1 segment <- segments[isegment, ] segment_id <- segment[["segment_id"]] dstart <- segment[["start_date"]] @@ -196,7 +81,7 @@ for (irun in seq_len(nrow(inputs_runs))) { unlink(segment_dir, recursive = TRUE) dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) - segment_inputs <- split_inputs.SIPNET( + segment_inputs <- PEcAn.SIPNET::split_inputs.SIPNET( dstart, dend, run_settings$run$inputs, @@ -277,7 +162,7 @@ for (irun in seq_len(nrow(inputs_runs))) { segment_ncfiles, factor(basename(segment_ncfiles)) ) - segment_outfiles <- file.path(run_outdir, names(segment_files_byyear)) + segment_outfiles <- file.path(run_modeloutdir, names(segment_files_byyear)) results <- purrr::map2( segment_files_byyear, segment_outfiles, diff --git a/workflows/sipnet-restart-workflow/03-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R similarity index 100% rename from workflows/sipnet-restart-workflow/03-plot-outputs.R rename to workflows/sipnet-restart-workflow/04-plot-outputs.R diff --git a/workflows/sipnet-restart-workflow/config.yml b/workflows/sipnet-restart-workflow/config.yml index bc2614cd962..d2f8659e651 100644 --- a/workflows/sipnet-restart-workflow/config.yml +++ b/workflows/sipnet-restart-workflow/config.yml @@ -1,7 +1,7 @@ default: parcel_id: 39011 site_id: "cf1c223d4e408116" - outdir_root: "modules/data.land/inst/sipnet-restart-workflow/_test" + outdir_root: "workflows/sipnet-restart-workflow/_test" irrigation_path: "/projectnb/dietzelab/ccmmf/usr/ashiklom/event-outputs/irrigation_10000.parquet" parcel_path: "/projectnb/dietzelab/ccmmf/LandIQ-harmonized-v4.1/parcels.gpkg" dp_path: "/projectnb/dietzelab/ccmmf/management/irrigation/design_points.csv" From f0b07c7b9fe988ff8a54025d22369ca1fcdfab8d Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 14:28:22 -0400 Subject: [PATCH 22/75] pull run_sipnet_segmented into own function --- .../sipnet-restart-workflow/03-run-sipnet.R | 132 +---------------- workflows/sipnet-restart-workflow/81-utils.R | 137 ++++++++++++++++++ 2 files changed, 138 insertions(+), 131 deletions(-) diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index bee1a2adc33..483dba03ef1 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -37,135 +37,5 @@ write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) # Begin loop for (irun in seq_len(nrow(inputs_runs))) { run_row <- inputs_runs[irun, ] - run_id <- run_row[["run_id"]] - run_dir <- file.path(settings$rundir, run_id) - run_modeloutdir <- file.path(settings$modeloutdir, run_id) - run_settings <- subset_paths(settings, run_row) - - ens_samples_file <- file.path( - run_settings$outdir, - sprintf("ensemble.samples.%s.Rdata", run_settings$ensemble$ensemble.id) - ) - stopifnot(file.exists(ens_samples_file)) - ensemble_samples <- PEcAn.utils::load_local(ens_samples_file)[["ens.samples"]] - run_traits <- lapply(ensemble_samples, \(dat) dat[run_row[["param"]], ]) - - # TODO: Different runs might have different events.json files. But for now, - # this is hard coded to a single set of events. - run_events_json <- events_json_file - crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts(run_events_json) - - # Get segments - segments <- data.frame( - start_date = c(as.Date(run_settings$run$start.date), crop_cycles[["date"]]), - end_date = c(crop_cycles[["date"]] - 1, as.Date(run_settings$run$end.date)), - crop_code = c(NA_character_, crop_cycles[["crop_code"]]) - ) - segments[["pft"]] <- crop2pft(segments[["crop_code"]]) - segments[["segment_id"]] <- sprintf("%03d", seq_len(nrow(segments))) - segments[["segment_dir"]] <- file.path( - run_dir, - "segments", - sprintf("segment_%s", segments[["segment_id"]]) - ) - - for (isegment in seq_len(nrow(segments))) { - segment <- segments[isegment, ] - segment_id <- segment[["segment_id"]] - dstart <- segment[["start_date"]] - dend <- segment[["end_date"]] - segment_dir <- segment[["segment_dir"]] - - runid_dummy <- "1" - - unlink(segment_dir, recursive = TRUE) - dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) - - segment_inputs <- PEcAn.SIPNET::split_inputs.SIPNET( - dstart, - dend, - run_settings$run$inputs, - overwrite = TRUE, - outpath = segment_dir - ) - - # Segment-specific settings - segment_outdir <- file.path(segment_dir, "out") - dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) - segment_rundir <- file.path(segment_dir, "run") - dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) - file.create(file.path(segment_rundir, "README.txt")) - - segment_rundir_withid <- file.path(segment_rundir, runid_dummy) - dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) - segment_outdir_withid <- file.path(segment_outdir, runid_dummy) - dir.create(segment_outdir_withid, showWarnings = FALSE, recursive = TRUE) - - segment_settings <- run_settings - segment_settings[["outdir"]] <- segment_outdir - segment_settings[["modeloutdir"]] <- segment_outdir - segment_settings[["rundir"]] <- segment_rundir - segment_settings[[c("run", "start.date")]] <- dstart - segment_settings[[c("run", "end.date")]] <- dend - segment_settings[[c("run", "inputs")]] <- segment_inputs - segment_settings - if (is.null(segment_settings[[c("model", "options")]])) { - segment_settings[[c("model", "options")]] <- list() - } - - if (isegment > 1) { - # For isegment > 1, we restart from the *previous* segment's restart.out - segment_settings[[c("model", "options", "RESTART_IN")]] <- restart_out - } - # ...and now, define a new restart.out for *this* segment - restart_out <- file.path(segment_rundir, "restart.out") - segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out - - segment_traits <- run_traits[[segment[["pft"]]]] - - # Write dummy runs file - writeLines(runid_dummy, file.path(segment_rundir, "runs.txt")) - - config <- PEcAn.SIPNET::write.config.SIPNET( - defaults = segment_settings[["pfts"]], - trait.values = segment_traits, - settings = segment_settings, - run.id = runid_dummy - ) - - runs <- PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) - - model2netcdf.SIPNET( - outdir = segment_outdir_withid, - sitelat = segment_settings[[c("run", "site", "lat")]], - sitelon = segment_settings[[c("run", "site", "lon")]], - start_date = dstart, - end_date = dend, - revision = segment_settings[[c("model", "revision")]], - overwrite = TRUE - ) - } - - segment_ncfiles <- lapply( - segments[["segment_dir"]], - \(x) { - list.files( - file.path(x, "out", "1"), - pattern = "\\d+\\.nc", - full.names = TRUE - ) - } - ) |> - do.call(what = c) - - segment_files_byyear <- split( - segment_ncfiles, - factor(basename(segment_ncfiles)) - ) - segment_outfiles <- file.path(run_modeloutdir, names(segment_files_byyear)) - results <- purrr::map2( - segment_files_byyear, - segment_outfiles, - PEcAn.SIPNET::mergeNC - ) + run_sipnet_segmented(settings, run_row, events_json_file) } diff --git a/workflows/sipnet-restart-workflow/81-utils.R b/workflows/sipnet-restart-workflow/81-utils.R index 558abf94542..d9e150edf7d 100644 --- a/workflows/sipnet-restart-workflow/81-utils.R +++ b/workflows/sipnet-restart-workflow/81-utils.R @@ -31,3 +31,140 @@ crop2pft <- function(crop_code) { TRUE ~ "UNKNOWN_PFT" ) } + +run_sipnet_segmented <- function( + settings, + run_row, + events_json_file, + crop2pft = crop2pft +) { + run_id <- run_row[["run_id"]] + run_dir <- file.path(settings$rundir, run_id) + run_modeloutdir <- file.path(settings$modeloutdir, run_id) + run_settings <- subset_paths(settings, run_row) + + ens_samples_file <- file.path( + run_settings$outdir, + sprintf("ensemble.samples.%s.Rdata", run_settings$ensemble$ensemble.id) + ) + stopifnot(file.exists(ens_samples_file)) + ensemble_samples <- PEcAn.utils::load_local(ens_samples_file)[["ens.samples"]] + run_traits <- lapply(ensemble_samples, \(dat) dat[run_row[["param"]], ]) + + # TODO: Store this in settings or something? + crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts(events_json_file) + + # Get segments + segments <- data.frame( + start_date = c(as.Date(run_settings$run$start.date), crop_cycles[["date"]]), + end_date = c(crop_cycles[["date"]] - 1, as.Date(run_settings$run$end.date)), + crop_code = c(NA_character_, crop_cycles[["crop_code"]]) + ) + segments[["pft"]] <- crop2pft(segments[["crop_code"]]) + segments[["segment_id"]] <- sprintf("%03d", seq_len(nrow(segments))) + segment_rootdir <- file.path(file.path(run_dir, "segments")) + segments[["segment_dir"]] <- file.path( + segment_rootdir, + sprintf("segment_%s", segments[["segment_id"]]) + ) + + for (isegment in seq_len(nrow(segments))) { + segment <- segments[isegment, ] + dstart <- segment[["start_date"]] + dend <- segment[["end_date"]] + segment_dir <- segment[["segment_dir"]] + + unlink(segment_dir, recursive = TRUE) + dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) + + runid_dummy <- "1" + + segment_inputs <- PEcAn.SIPNET::split_inputs.SIPNET( + dstart, + dend, + run_settings$run$inputs, + overwrite = TRUE, + outpath = segment_dir + ) + + # Segment-specific settings + segment_outdir <- file.path(segment_dir, "out") + dir.create(segment_outdir, showWarnings = FALSE, recursive = TRUE) + segment_rundir <- file.path(segment_dir, "run") + dir.create(segment_rundir, showWarnings = FALSE, recursive = TRUE) + file.create(file.path(segment_rundir, "README.txt")) + + segment_rundir_withid <- file.path(segment_rundir, runid_dummy) + dir.create(segment_rundir_withid, showWarnings = FALSE, recursive = TRUE) + segment_outdir_withid <- file.path(segment_outdir, runid_dummy) + dir.create(segment_outdir_withid, showWarnings = FALSE, recursive = TRUE) + + segment_settings <- run_settings + segment_settings[["outdir"]] <- segment_outdir + segment_settings[["modeloutdir"]] <- segment_outdir + segment_settings[["rundir"]] <- segment_rundir + segment_settings[[c("run", "start.date")]] <- dstart + segment_settings[[c("run", "end.date")]] <- dend + segment_settings[[c("run", "inputs")]] <- segment_inputs + segment_settings + if (is.null(segment_settings[[c("model", "options")]])) { + segment_settings[[c("model", "options")]] <- list() + } + + if (isegment > 1) { + # For isegment > 1, we restart from the *previous* segment's restart.out + segment_settings[[c("model", "options", "RESTART_IN")]] <- restart_out + } + # ...and now, define a new restart.out for *this* segment + restart_out <- file.path(segment_rundir, "restart.out") + segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out + + segment_traits <- run_traits[[segment[["pft"]]]] + + # Write dummy runs file + writeLines(runid_dummy, file.path(segment_rundir, "runs.txt")) + + PEcAn.SIPNET::write.config.SIPNET( + defaults = segment_settings[["pfts"]], + trait.values = segment_traits, + settings = segment_settings, + run.id = runid_dummy + ) + + PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) + + PEcAn.SIPNET::model2netcdf.SIPNET( + outdir = segment_outdir_withid, + sitelat = segment_settings[[c("run", "site", "lat")]], + sitelon = segment_settings[[c("run", "site", "lon")]], + start_date = dstart, + end_date = dend, + revision = segment_settings[[c("model", "revision")]], + overwrite = TRUE + ) + } + + segment_ncfiles <- lapply( + segments[["segment_dir"]], + \(x) { + list.files( + file.path(x, "out", "1"), + pattern = "\\d+\\.nc", + full.names = TRUE + ) + } + ) |> + do.call(what = c) + + segment_files_byyear <- split( + segment_ncfiles, + factor(basename(segment_ncfiles)) + ) + segment_outfiles <- file.path(run_modeloutdir, names(segment_files_byyear)) + results <- purrr::map2( + segment_files_byyear, + segment_outfiles, + PEcAn.SIPNET::mergeNC + ) + results +} From 0df2bbc9fe7bd912ab7103cfddeea851097ffd6e Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 14:37:16 -0400 Subject: [PATCH 23/75] update plotting code --- .../sipnet-restart-workflow/04-plot-outputs.R | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/workflows/sipnet-restart-workflow/04-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R index f1822f4277c..683c728d2f5 100644 --- a/workflows/sipnet-restart-workflow/04-plot-outputs.R +++ b/workflows/sipnet-restart-workflow/04-plot-outputs.R @@ -1,10 +1,8 @@ #!/usr/bin/env Rscript -config <- config::get(file = "modules/data.land/inst/sipnet-restart-workflow/config.yml") +library(ggplot2) -outdir <- file.path(config$outdir_root, "out") -ncfiles <- list.files(outdir, full.names = TRUE) -nc <- ncdf4::nc_open(ncfiles[[1]]) +config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] events_json_file <- fs::path(outdir_root, "events.json") @@ -15,33 +13,39 @@ events_df <- dplyr::bind_rows(events[[1]][["events"]]) |> dplyr::filter(.data$event_type != "irrigation") |> dplyr::arrange(.data$date) -events_df |> - dplyr::select("event_type":"crop_code") +modeloutdir <- file.path(config$outdir_root, "output", "out") +runids <- list.files(modeloutdir) + +read_output <- function(modeloutdir, runid) { + PEcAn.utils::read.output( + runid, + file.path(modeloutdir, runid), + variables = c("NEE", "LAI", "AGB", "TotSoilCarb"), + dataframe = TRUE + ) |> + dplyr::mutate(run_id = .env$runid) |> + dplyr::as_tibble() +} -results <- PEcAn.utils::read.output( - ncfiles = ncfiles, - variables = c("NEE", "LAI", "AGB", "TotSoilCarb"), - dataframe = TRUE -) |> - dplyr::as_tibble() +results <- purrr::map(runids, read_output, modeloutdir = modeloutdir) |> + dplyr::bind_rows() -library(ggplot2) plt <- results |> tidyr::pivot_longer( - -c("posix", "year"), + -c("posix", "year", "run_id"), names_to = "variable", values_to = "value" ) |> ggplot() + - aes(x = posix, y = value) + + aes(x = posix, y = value, color = run_id) + geom_line() + geom_vline( - aes(xintercept = date, color = event_type), - data = events_df, - linetype = "dashed" + aes(xintercept = date, linetype = event_type), + data = events_df ) + facet_wrap(vars(variable), scales = "free") + theme_bw() + theme(legend.position = "bottom") +plt ggsave("~/Pictures/restarts.png", plt, width = 12, height = 9, units = "in") From 2b4bf9ede1a0ae04f607ed82b8e81d8472cb2ee5 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 15:50:33 -0400 Subject: [PATCH 24/75] support event ensembles --- .../01-prepare-events.R | 82 ++++++++++++++----- .../02-prepare-settings.R | 17 +++- .../sipnet-restart-workflow/03-run-sipnet.R | 11 +-- .../sipnet-restart-workflow/04-plot-outputs.R | 8 +- .../{81-utils.R => utils.R} | 35 ++++++-- 5 files changed, 115 insertions(+), 38 deletions(-) rename workflows/sipnet-restart-workflow/{81-utils.R => utils.R} (82%) diff --git a/workflows/sipnet-restart-workflow/01-prepare-events.R b/workflows/sipnet-restart-workflow/01-prepare-events.R index 2e7bebe0fe5..03659d183b6 100644 --- a/workflows/sipnet-restart-workflow/01-prepare-events.R +++ b/workflows/sipnet-restart-workflow/01-prepare-events.R @@ -23,9 +23,10 @@ if (is.null(site_id)) { } # Make the events.json -planting <- fs::dir_ls( +planting <- list.files( config[["planting_events_dir"]], - regexp = "planting_statewide_.*\\.parquet" + "planting_statewide_.*\\.parquet", + full.names = TRUE ) |> arrow::open_dataset() |> dplyr::collect() |> @@ -33,9 +34,6 @@ planting <- fs::dir_ls( dplyr::mutate(date = as.Date(.data$date)) |> tibble::as_tibble() -code_pft_mapping <- planting |> - dplyr::distinct(crop_code = .data$code, .data$PFT) - planting_events <- planting |> dplyr::select( "site_id", "event_type", "date", @@ -78,22 +76,27 @@ end_date <- max(harvest_events$date) irrigation_path <- config[["irrigation_path"]] -irrigation_events <- arrow::open_dataset(irrigation_path) |> - dplyr::filter( - .data$parcel_id == .env$pid, - .data$ens_id == "irr_ens_001" - ) |> - dplyr::select(-"ens_id") |> +irrigation_events_raw <- arrow::open_dataset(irrigation_path) |> + dplyr::filter(.data$parcel_id == .env$pid) |> dplyr::collect() |> - tibble::as_tibble() |> + tibble::as_tibble() + +# Irrigation events include uncertainty ensembles, so we process them +# accordingly. +irrigation_events_all <- irrigation_events_raw |> dplyr::filter(.data$date <= .env$end_date) |> dplyr::mutate( event_type = "irrigation", - site_id = as.character(.data$parcel_id), - .keep = "unused" + site_id = as.character(.data$parcel_id) ) |> + dplyr::select(-c("parcel_id")) |> dplyr::relocate("site_id", "event_type", "date") +irrigation_events_list <- split( + dplyr::select(irrigation_events_all, -"ens_id"), + irrigation_events_all[["ens_id"]] +) + make_event_list <- function(df) { df2list <- function(df) { as.list(df) |> purrr::list_transpose() @@ -105,11 +108,46 @@ make_event_list <- function(df) { planting_n <- make_event_list(planting_events) harvest_n <- make_event_list(harvest_events) -irrigation_n <- make_event_list(irrigation_events) -all_events <- dplyr::bind_rows(planting_n, harvest_n, irrigation_n) |> - dplyr::summarize(events = list(purrr::list_c(.data$events)), .by = "site_id") |> - dplyr::mutate(pecan_events_version = "0.1.1", .before = "site_id") - -outdir_root <- fs::dir_create(config[["outdir_root"]]) -events_json_file <- fs::path(outdir_root, "events.json") -jsonlite::write_json(all_events, events_json_file, pretty = TRUE, auto_unbox = TRUE) +irrigation_n_list <- purrr::map(irrigation_events_list, make_event_list) + +make_all_events <- function(...) { + dplyr::bind_rows(...) |> + dplyr::summarize(events = list(purrr::list_c(.data$events)), .by = "site_id") |> + dplyr::mutate(pecan_events_version = "0.1.1", .before = "site_id") +} + +# NOTE: This only works if we each event type has either 1 ensemble or the same +# number of ensembles. For varying names of ensembles, we need a more +# sophisticated strategy. +all_events_list <- purrr::pmap( + list(list(planting_n), list(harvest_n), irrigation_n_list), + make_all_events +) + +outdir_root <- config[["outdir_root"]] +events_dir <- file.path(outdir_root, "events") +dir.create(events_dir, showWarnings = FALSE, recursive = TRUE) + +names(all_events_list) <- file.path( + events_dir, + paste0(gsub("^irr_", "event_", names(irrigation_events_list)), ".json") +) + +purrr::iwalk( + all_events_list, + jsonlite::write_json, + pretty = TRUE, + auto_unbox = TRUE +) + +# NOTE: Right now, `write.events.SIPNET` has no way to customize the filename, +# only the output directory. So we have to create a bunch of individual +# directories here, with each one containing one SIPNET event file (but +# possibly for multiple sites). +sipnet_event_dirs <- gsub("\\.json$", ".sipnet", names(all_events_list)) + +purrr::walk2( + names(all_events_list), + sipnet_event_dirs, + PEcAn.SIPNET::write.events.SIPNET +) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index b562ba3906d..8b973ed5e1e 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -21,9 +21,15 @@ dp_data <- read.csv(config[["dp_path"]]) |> site_lat <- dp_data[["lat"]] site_lon <- dp_data[["lon"]] -events_json_file <- file.path(outdir_root, "events.json") -sipnet_eventfile <- PEcAn.SIPNET::write.events.SIPNET(events_json_file, outdir_root) -events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) +events_dir <- file.path(outdir_root, "events") +events_files <- list.files(events_dir, recursive = TRUE, full.names = TRUE) +events_json_files <- as.list(grepv(".*\\.json$", events_files)) +names(events_json_files) <- paste0("path", seq_along(events_json_files)) +sipnet_eventfiles <- as.list(grepv(".*\\.sipnet/events-.*\\.in", events_files)) +names(sipnet_eventfiles) <- paste0("path", seq_along(sipnet_eventfiles)) + +# HACK: Get the start and end date from the limits of the first event file. +events <- jsonlite::read_json(events_json_files[[1]], simplifyVector = FALSE) all_dates <- events |> purrr::pluck(1, "events") |> @@ -105,7 +111,10 @@ settings_raw <- PEcAn.settings::as.Settings(list( inputs = list( met = list(path = metfiles), poolinitcond = list(path = icfiles), - events = list(path = sipnet_eventfile) + events = list( + path = sipnet_eventfiles, + source = events_json_files + ) ) ), host = list( diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index 483dba03ef1..be37c28d7b4 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -5,15 +5,15 @@ if (FALSE) { devtools::install("modules/data.land", upgrade = FALSE) } -source("workflows/sipnet-restart-workflow/81-utils.R") +source("workflows/sipnet-restart-workflow/utils.R") config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] -events_json_file <- file.path(outdir_root, "events.json") - settings_raw <- PEcAn.settings::read.settings(file.path(outdir_root, "settings.xml")) + +# Delete existing outdir so we always start fresh unlink(settings_raw$outdir, recursive = TRUE) dir.create(settings_raw$outdir, recursive = TRUE, showWarnings = FALSE) @@ -34,8 +34,9 @@ inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) -# Begin loop +# Loop over runs. Within each run, loop over segments. Individual runs should +# be naively parallelizable and therefore suitable for `clustermq`, etc. for (irun in seq_len(nrow(inputs_runs))) { run_row <- inputs_runs[irun, ] - run_sipnet_segmented(settings, run_row, events_json_file) + run_sipnet_segmented(settings, run_row) } diff --git a/workflows/sipnet-restart-workflow/04-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R index 683c728d2f5..2539c2f47d8 100644 --- a/workflows/sipnet-restart-workflow/04-plot-outputs.R +++ b/workflows/sipnet-restart-workflow/04-plot-outputs.R @@ -48,4 +48,10 @@ plt <- results |> theme(legend.position = "bottom") plt -ggsave("~/Pictures/restarts.png", plt, width = 12, height = 9, units = "in") +ggsave( + file.path(outdir_root, "restarts.png"), + plt, + width = 12, + height = 9, + units = "in" +) diff --git a/workflows/sipnet-restart-workflow/81-utils.R b/workflows/sipnet-restart-workflow/utils.R similarity index 82% rename from workflows/sipnet-restart-workflow/81-utils.R rename to workflows/sipnet-restart-workflow/utils.R index d9e150edf7d..ba62ac0f5dc 100644 --- a/workflows/sipnet-restart-workflow/81-utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -5,7 +5,7 @@ #' @param inputs named list of input indices (one row of the sample design) subset_paths <- function(settings, path_nums) { for (input in names(path_nums)) { - if (!(input %in% names(settings$run$inputs))) { + if (!is.list(settings$run$inputs[[input]])) { next } path_idx <- path_nums[[input]] @@ -14,11 +14,32 @@ subset_paths <- function(settings, path_nums) { PEcAn.logger::logger.severe("No path at input ", sQuote(input), " index ", path_idx) } settings$run$inputs[[input]]$path <- all_paths[[path_idx]] + # If we define a list of `source`s, also try to subset that (if the lengths + # match). This is especially useful for processing events (because we store + # the original JSON path in the `source`). + if (!is.list(settings$run$inputs[[input]]$source)) { + next + } + all_source_paths <- settings$run$inputs[[input]]$source + n_source <- length(all_source_paths) + n_path <- length(all_paths) + if (n_source != n_path) { + PEcAn.logger::logger.warn(sprintf( + paste( + "For input %s, number of paths (%d) ", + "is not equal to number of sources (%d). ", + "Assuming these are different things and therefore leaving sources as is." + ), + input, n_path, n_source + )) + next + } + settings$run$inputs[[input]]$source <- all_source_paths[[path_idx]] } settings } -crop2pft <- function(crop_code) { +crop2pft_example <- function(crop_code) { # crop_code <- c("F1", "R1", "G2", "F16") cls <- substr(crop_code, 1, 1) dplyr::case_when( @@ -35,8 +56,7 @@ crop2pft <- function(crop_code) { run_sipnet_segmented <- function( settings, run_row, - events_json_file, - crop2pft = crop2pft + crop2pft = crop2pft_example ) { run_id <- run_row[["run_id"]] run_dir <- file.path(settings$rundir, run_id) @@ -51,8 +71,9 @@ run_sipnet_segmented <- function( ensemble_samples <- PEcAn.utils::load_local(ens_samples_file)[["ens.samples"]] run_traits <- lapply(ensemble_samples, \(dat) dat[run_row[["param"]], ]) - # TODO: Store this in settings or something? - crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts(events_json_file) + crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts( + run_settings$run$inputs$events$source + ) # Get segments segments <- data.frame( @@ -144,6 +165,7 @@ run_sipnet_segmented <- function( ) } + # Get the list of all segment output NetCDFs segment_ncfiles <- lapply( segments[["segment_dir"]], \(x) { @@ -156,6 +178,7 @@ run_sipnet_segmented <- function( ) |> do.call(what = c) + # ...and concatenate them together into annual NetCDFs. segment_files_byyear <- split( segment_ncfiles, factor(basename(segment_ncfiles)) From e3cf5fbd70c3f624bdbcc649a85b6d99d2a339eb Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sun, 5 Apr 2026 15:57:47 -0400 Subject: [PATCH 25/75] add README --- workflows/sipnet-restart-workflow/README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 workflows/sipnet-restart-workflow/README.md diff --git a/workflows/sipnet-restart-workflow/README.md b/workflows/sipnet-restart-workflow/README.md new file mode 100644 index 00000000000..13df30fac36 --- /dev/null +++ b/workflows/sipnet-restart-workflow/README.md @@ -0,0 +1,19 @@ +# SIPNET restart workflow for events + +This is a demonstration of a workaround for running SIPNET with event files that include crop changes/rotations. + +## Execution + +1. Install PEcAn locally (`make install`, etc.). +2. Inspect the `config.yml` and add/modify paths or other values as needed. +3. Run the numbered R scripts in order. + +## Organization + +- `config.yml` --- Configuration file for use with the [`config`](https://rstudio.github.io/config/index.html) package. Mostly used for setting machine-specific paths to various inputs. This is pre-populated with inputs for @ashiklom 's local machine and the BU GEO cluster (under the `default` profile). + +- `01-prepare-events.R` --- Read raw events data (in parquet format) and write out ensembles of PEcAn `event.json` files and SIPNET-specific versions thereof +- `02-prepare-settings.R` --- Generate a PEcAn `settings.xml` file populated with machine-specific paths and appropriate configurations. +- `03-run-sipnet.R` --- Run the workflow sequentially. + - Almost all of the functionality is implemented in `utils.R`. +- `04-plot-outputs.R` --- Load outputs (using `PEcAn.utils::read.output`) and visualize From 15052977e3bcc407269a864a4ca1389f649eff3c Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:14:10 -0400 Subject: [PATCH 26/75] sipnet: make sure trait.values is a list --- models/sipnet/R/write.configs.SIPNET.R | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/models/sipnet/R/write.configs.SIPNET.R b/models/sipnet/R/write.configs.SIPNET.R index 9ea25e4753d..cd5b1cac9e0 100755 --- a/models/sipnet/R/write.configs.SIPNET.R +++ b/models/sipnet/R/write.configs.SIPNET.R @@ -78,6 +78,13 @@ write.config.SIPNET <- function(defaults, trait.values, settings, run.id, inputs = NULL, IC = NULL, restart = NULL, spinup = NULL) { + if (!is.list(trait.values)) { + PEcAn.logger::logger.severe(paste0( + "Even though SIPNET only takes one PFT at a time, ", + "`trait.values` must be a list with names corresponding to PFTs." + )) + } + rev_raw <- settings$model$revision legacy_v1 <- c("102319", "136", "r136", "ssr", "git") if (is.null(rev_raw) || rev_raw %in% legacy_v1) { From f33d822b89b5e4f9e6fc95384eab1829931b8014 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:37:00 -0400 Subject: [PATCH 27/75] sipnet: coerce start/end time to datetime in split inputs. otherwise, data.frame subsetting doesn't work (but only raises an error), which ultimately leads to empty files. --- models/sipnet/R/split_inputs.SIPNET.R | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index c58af889e89..407cc48b61b 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -83,6 +83,8 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA ##' @importFrom dplyr %>% ##' @export split_sipnet_met <- function(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) { + start.time <- coerce_to_datetime(start.time) + stop.time <- coerce_to_datetime(stop.time) path <- dirname(met) prefix <- sub(".clim", "", basename(met), fixed = TRUE) if(is.null(outpath)){ @@ -130,3 +132,21 @@ split_sipnet_met <- function(start.time, stop.time, met, overwrite = FALSE, outp #settings$run$inputs$met$path <- file return(file) } # split_inputs.SIPNET + +coerce_to_datetime <- function(x) { + if (inherits(x, "POSIXt")) { + return(x) + } + xname <- deparse(substitute(x)) + if (!inherits(x, "Date")) { + PEcAn.logger::logger.severe( + "Invalid ", xname, " : ", x, + " (class: ", class(x), ")" + ) + } + PEcAn.logger::logger.warn(paste0( + xname, " is a date, but this function expects a datetime. ", + "Coercing to datetime by setting to midnight UTC." + )) + as.POSIXct(x) +} From 0e4cb639151890f71518ae8dbd23cdc12c3bdd9b Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:38:54 -0400 Subject: [PATCH 28/75] use real harvest events --- .../sipnet-restart-workflow/01-prepare-events.R | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/workflows/sipnet-restart-workflow/01-prepare-events.R b/workflows/sipnet-restart-workflow/01-prepare-events.R index 03659d183b6..ffb83c4aa2d 100644 --- a/workflows/sipnet-restart-workflow/01-prepare-events.R +++ b/workflows/sipnet-restart-workflow/01-prepare-events.R @@ -32,6 +32,8 @@ planting <- list.files( dplyr::collect() |> dplyr::filter(.data$site_id == as.character(.env$pid)) |> dplyr::mutate(date = as.Date(.data$date)) |> + # Start no earlier than 2016 because our met doesn't go back before 2015 + dplyr::filter(date >= as.Date("2016-01-01")) |> tibble::as_tibble() planting_events <- planting |> @@ -61,14 +63,15 @@ phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> ) # Dummy values for testing -harvest_events <- phenology |> - dplyr::mutate( - event_type = "harvest", - site_id = as.character(.data$parcel_id), - frac_above_removed_0to1 = 0.85 - ) |> +harvest_dir <- config[["harvest_events_dir"]] +pidc <- as.character(pid) +harvest_events <- list.files(harvest_dir, "*.parquet", full.names = TRUE) |> + arrow::open_dataset() |> + dplyr::filter(.data$site_id == .env$pidc) |> + dplyr::collect() |> + tibble::as_tibble() |> dplyr::select( - "site_id", "event_type", "date" = mslsp_OGMn, "frac_above_removed_0to1" + "site_id", "event_type", "date", dplyr::starts_with("frac_") ) start_date <- min(planting$date) From d155df7f28a386f065a8554966e213db25796781 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:39:16 -0400 Subject: [PATCH 29/75] allow prepare-events to work without irrigation --- .../01-prepare-events.R | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/workflows/sipnet-restart-workflow/01-prepare-events.R b/workflows/sipnet-restart-workflow/01-prepare-events.R index ffb83c4aa2d..e740a3b6a66 100644 --- a/workflows/sipnet-restart-workflow/01-prepare-events.R +++ b/workflows/sipnet-restart-workflow/01-prepare-events.R @@ -122,19 +122,27 @@ make_all_events <- function(...) { # NOTE: This only works if we each event type has either 1 ensemble or the same # number of ensembles. For varying names of ensembles, we need a more # sophisticated strategy. -all_events_list <- purrr::pmap( - list(list(planting_n), list(harvest_n), irrigation_n_list), - make_all_events +pmap_args <- c( + if (length(planting_n) > 0) list(list(planting_n)), + if (length(harvest_n) > 0) list(list(harvest_n)), + if (length(irrigation_n_list) > 0) irrigation_n_list ) +all_events_list <- purrr::pmap(pmap_args, make_all_events) outdir_root <- config[["outdir_root"]] events_dir <- file.path(outdir_root, "events") +unlink(events_dir, recursive = TRUE) dir.create(events_dir, showWarnings = FALSE, recursive = TRUE) names(all_events_list) <- file.path( - events_dir, - paste0(gsub("^irr_", "event_", names(irrigation_events_list)), ".json") + events_dir, paste0("event_", seq_along(all_events_list), ".json") ) +if (length(irrigation_events_list) > 0) { + names(all_events_list) <- file.path( + events_dir, + paste0(gsub("^irr_", "event_", names(irrigation_events_list)), ".json") + ) +} purrr::iwalk( all_events_list, From cb5cc1cfb6a39a4432ebd71a1140535ffd2c049f Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:39:37 -0400 Subject: [PATCH 30/75] update met paths to use xxN_yy.yE -type naming --- workflows/sipnet-restart-workflow/02-prepare-settings.R | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index 8b973ed5e1e..e393bb12a4f 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -39,9 +39,15 @@ all_dates <- events |> start_date <- min(all_dates) end_date <- max(all_dates) -metfiles <- file.path(config[["met_dir"]], site_id) |> +met_dir <- sprintf( + "%sN_%sW", + format(round(abs(site_lat) * 2) / 2, nsmall = 0, drop0trailing = TRUE), + format(round(abs(site_lon) * 2) / 2, nsmall = 0, drop0trailing = TRUE) +) +metfiles <- file.path(config[["met_dir"]], met_dir) |> list.files("ERA5\\..*\\.clim", full.names = TRUE) |> as.list() +stopifnot(length(metfiles) > 0) names(metfiles) <- paste0("path", seq_along(metfiles)) icfiles <- file.path(config[["ic_dir"]], site_id) |> From 22bc879b038d618af483fba21a94460a59d50c3a Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:40:13 -0400 Subject: [PATCH 31/75] put all settings logic into prepare-settings --- .../02-prepare-settings.R | 23 +++++++++- .../sipnet-restart-workflow/03-run-sipnet.R | 46 +++++++------------ 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index e393bb12a4f..b7854c97487 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -128,4 +128,25 @@ settings_raw <- PEcAn.settings::as.Settings(list( ) )) -PEcAn.settings::write.settings(settings_raw, "settings.xml", outdir_root) +# Delete existing outdir so we always start fresh +unlink(settings_raw$outdir, recursive = TRUE) +dir.create(settings_raw$outdir, recursive = TRUE, showWarnings = FALSE) + +# Get parameter samples for all relevant PFTs +sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( + settings_raw, + settings_raw$ensemble$size +) + +settings <- PEcAn.workflow::runModule.run.write.configs( + settings_raw, + input_design = sens_design$X +) + +inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> + read.csv() |> + cbind(sens_design[["X"]]) + +write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) + +PEcAn.settings::write.settings(settings, "settings.xml", outdir_root) diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index be37c28d7b4..066e78c1f3a 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -5,38 +5,24 @@ if (FALSE) { devtools::install("modules/data.land", upgrade = FALSE) } -source("workflows/sipnet-restart-workflow/utils.R") - config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") -outdir_root <- config[["outdir_root"]] - -settings_raw <- PEcAn.settings::read.settings(file.path(outdir_root, "settings.xml")) - -# Delete existing outdir so we always start fresh -unlink(settings_raw$outdir, recursive = TRUE) -dir.create(settings_raw$outdir, recursive = TRUE, showWarnings = FALSE) - -# Get parameter samples for all relevant PFTs -sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( - settings_raw, - settings_raw$ensemble$size -) +do_run_sipnet_segmented <- function(irun) { + source("workflows/sipnet-restart-workflow/utils.R", local = TRUE) + config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") + settings <- PEcAn.settings::read.settings(file.path(config[["outdir_root"]], "settings.xml")) + inputs_runs <- read.csv(file.path(settings$outdir, "inputs_runs.csv")) + run_sipnet_segmented(settings, inputs_runs[irun, ]) # nolint +} -settings <- PEcAn.workflow::runModule.run.write.configs( - settings_raw, - input_design = sens_design$X +# Run in parallel using crew +nworkers <- pmin(config[["n_ensemble"]], parallel::detectCores()) +controller <- crew::crew_controller_local(workers = nworkers) +crew_results <- controller$map( + command = do_run_sipnet_segmented(irun), + iterate = list(irun = seq_len(config[["n_ensemble"]])), + data = list(settings = settings, do_run_sipnet_segmented = do_run_sipnet_segmented) ) -inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> - read.csv() |> - cbind(sens_design[["X"]]) - -write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) - -# Loop over runs. Within each run, loop over segments. Individual runs should -# be naively parallelizable and therefore suitable for `clustermq`, etc. -for (irun in seq_len(nrow(inputs_runs))) { - run_row <- inputs_runs[irun, ] - run_sipnet_segmented(settings, run_row) -} +# Or, to run sequentially: +# for (i in seq_len(config[["n_ensemble"]])) do_run_sipnet_segmented(i) # nolint From d1d825242a3806ff89da1e0e3ae7f7c191a14090 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:41:00 -0400 Subject: [PATCH 32/75] better plotting --- .../sipnet-restart-workflow/04-plot-outputs.R | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/workflows/sipnet-restart-workflow/04-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R index 2539c2f47d8..2c595b66c9f 100644 --- a/workflows/sipnet-restart-workflow/04-plot-outputs.R +++ b/workflows/sipnet-restart-workflow/04-plot-outputs.R @@ -5,7 +5,11 @@ library(ggplot2) config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") outdir_root <- config[["outdir_root"]] -events_json_file <- fs::path(outdir_root, "events.json") + +settings <- PEcAn.settings::read.settings(file.path(outdir_root, "settings.xml")) +events_json_file <- settings |> + purrr::chuck("run", "inputs", "events", "source", "path1") + events <- jsonlite::read_json(events_json_file, simplifyVector = FALSE) events_df <- dplyr::bind_rows(events[[1]][["events"]]) |> @@ -20,7 +24,8 @@ read_output <- function(modeloutdir, runid) { PEcAn.utils::read.output( runid, file.path(modeloutdir, runid), - variables = c("NEE", "LAI", "AGB", "TotSoilCarb"), + variables = c("NEE", "LAI", "AGB", "TotSoilCarb", "leaf_carbon_content", "litter_carbon_content"), + # variables = NULL, dataframe = TRUE ) |> dplyr::mutate(run_id = .env$runid) |> @@ -43,6 +48,7 @@ plt <- results |> aes(xintercept = date, linetype = event_type), data = events_df ) + + scale_linetype_manual(values = c("planting" = "dotted", "harvest" = "dashed")) + facet_wrap(vars(variable), scales = "free") + theme_bw() + theme(legend.position = "bottom") @@ -51,7 +57,19 @@ plt ggsave( file.path(outdir_root, "restarts.png"), plt, - width = 12, + width = 14.5, height = 9, units = "in" ) + +zoomed <- plt + + xlim( + lubridate::ymd_h("2017-10-01T00"), + lubridate::ymd_h("2017-10-17T01") + ) +zoomed +ggsave( + file.path(outdir_root, "zoomed.png"), + zoomed, + width = 14.5, height = 9, units = "in" +) From 4f9781ce85f311eb51a14e9a16ae6b0990dba336 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:41:20 -0400 Subject: [PATCH 33/75] bugfix handling of trait.values it must be a list! --- workflows/sipnet-restart-workflow/utils.R | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index ba62ac0f5dc..f39b07bb3f9 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -43,6 +43,8 @@ crop2pft_example <- function(crop_code) { # crop_code <- c("F1", "R1", "G2", "F16") cls <- substr(crop_code, 1, 1) dplyr::case_when( + crop_code == "P1" ~ "annual_crop", + crop_code == "G2" ~ "annual_crop", cls == "D" ~ "temperate.deciduous", cls == "F" ~ "annual_crop", cls == "G" ~ "grass", @@ -127,7 +129,6 @@ run_sipnet_segmented <- function( segment_settings[[c("run", "start.date")]] <- dstart segment_settings[[c("run", "end.date")]] <- dend segment_settings[[c("run", "inputs")]] <- segment_inputs - segment_settings if (is.null(segment_settings[[c("model", "options")]])) { segment_settings[[c("model", "options")]] <- list() } @@ -140,7 +141,12 @@ run_sipnet_segmented <- function( restart_out <- file.path(segment_rundir, "restart.out") segment_settings[[c("model", "options", "RESTART_OUT")]] <- restart_out - segment_traits <- run_traits[[segment[["pft"]]]] + # trait.values must be a list of pfts, even though SIPNET takes only one + # PFT as input. However, we can pass soil params through a "soil" PFT. + # Here, if the segment PFT is soil, that's what we send. If the segment PFT + # is anything else, we send that *and* the soil params. + choose_pft <- unique(c(segment[["pft"]], "soil")) + segment_traits <- run_traits[choose_pft] # Write dummy runs file writeLines(runid_dummy, file.path(segment_rundir, "runs.txt")) From 2c9521d9ffcda86b1aa98d7000a5c1ba7ee2d386 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:41:41 -0400 Subject: [PATCH 34/75] pixi updates + script to find winter crops --- pixi.lock | 939 +++++++++--------- .../92-find-winter-crop.R | 40 + 2 files changed, 506 insertions(+), 473 deletions(-) create mode 100644 workflows/sipnet-restart-workflow/92-find-winter-crop.R diff --git a/pixi.lock b/pixi.lock index 3e0ca16fa62..7c0c3bfb476 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,8 +9,7 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda @@ -29,17 +28,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-hbf53078_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-h54830fc_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h83bc92c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h1c03fa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -50,6 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda @@ -63,9 +63,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.0-h6083320_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.1.0-h6083320_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_108.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda @@ -73,7 +73,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda @@ -83,26 +83,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_10_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_10_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_118.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-he63569f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.3-he63569f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda @@ -121,18 +120,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.57-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda @@ -148,7 +147,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda @@ -156,10 +155,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.2-he237659_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h637ef6b_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h1a1f456_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda @@ -170,23 +169,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h7173366_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314hd4f4903_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.1-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-he1279bd_1_cp314t.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-hf9ea5aa_0_cp314t.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.1-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r45hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r45h54b55ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_6-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64url-1.4-r45h54b55ab_1008.conda @@ -201,17 +200,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r45h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.6-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-coda-0.19_4.1-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.11-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.12-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-commonmark-2.0.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.3-r45h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.4-r45h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-credentials-2.0.3-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crew-1.3.0-r45hc72bb7e_0.conda @@ -222,15 +221,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.3.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.2-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.4.6-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.5.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r45h54b55ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.3-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda @@ -239,8 +238,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.6-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.3.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.7-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.4.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.callr-0.10.2-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r45hc72bb7e_2.conda @@ -273,14 +272,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-languageserver-0.3.17-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-later-1.4.8-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_9-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r45h54b55ab_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.3-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lpsolve-5.6.23-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.4-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.5-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.7_4-r45h0e4624f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r45h54b55ab_1.conda @@ -292,10 +291,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-mirai-2.6.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.1-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.2-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h5f38480_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_169-r45heaba542_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda @@ -307,25 +306,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgcache-2.2.4-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r45h6b2d295_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_9-r45haf2892b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettycode-1.1.0-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.6-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.7-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-promises-1.5.0-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_29-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.1-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.2-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.17.0-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.27.1-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.13.0-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.1-r45h9f1dc4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.2-r45h9f1dc4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.4.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcmdcheck-1.4.0-r45h785f33e_4.conda @@ -340,13 +339,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.45.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.46.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.2-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.30-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.2.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.31-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.24-r45h54b55ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.27-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.18.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rversions-3.0.0-r45hc72bb7e_0.conda @@ -354,48 +353,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-s7-0.2.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.0-r45h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_1-r45h3697838_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_2-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_1-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_2-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_6-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.3-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.3.2-r45h74f4acd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.0-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.1-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_1-r45h1d36251_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_11-r45h1d36251_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-1.0.5-r45h74f4acd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.1-r45h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.2-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r45hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.58-r45hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.59-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r45h3697838_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-v8-8.0.1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.2-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.0-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.1-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.5-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.56-r45h3697838_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.57-r45h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.5.2-r45he78afff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r45hc72bb7e_4.conda @@ -429,7 +428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda @@ -451,29 +450,18 @@ packages: license: BSD size: 3566 timestamp: 1562343890778 -- conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_0.conda - sha256: 5921a9f40ae4fc4023604fe125089e1dea7420284ac480d1f9d86d3b77dccc87 - md5: 1db5efbbc2dfe75f06897608305fa5ce +- conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_1.conda + sha256: 529be8165fab6cf0fc3bdc02c5ae3a6726f84087aa64b8fe7c84bebbdbf5a39c + md5: 1dce05b673b4f33943c9b3845f58e0ae depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 2478235 - timestamp: 1773351663308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda - sha256: 78c516af87437f52d883193cf167378f592ad445294c69f7c69f56059087c40d - md5: 9bb149f49de3f322fca007283eaa2725 - depends: - - __glibc >=2.17,<3.0.a0 - - libattr 2.5.2 hb03c661_1 - - libgcc >=14 - license: GPL-2.0-or-later - license_family: GPL - size: 31386 - timestamp: 1773595914754 + size: 2478957 + timestamp: 1774463596664 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 md5: bdd464b33f6540ed70845b946c11a7b8 @@ -719,17 +707,17 @@ packages: license_family: MIT size: 302524 timestamp: 1770384269834 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda - sha256: 74341b26a2b9475dc14ba3cf12432fcd10a23af285101883e720216d81d44676 - md5: 83aa53cb3f5fc849851a84d777a60551 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda + sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917 + md5: 8165352fdce2d2025bf884dc0ee85700 depends: - - ld_impl_linux-64 2.45.1 default_hbd61a6d_101 + - ld_impl_linux-64 2.45.1 default_hbd61a6d_102 - sysroot_linux-64 - zstd >=1.5.7,<1.6.0a0 license: GPL-3.0-only license_family: GPL - size: 3744895 - timestamp: 1770267152681 + size: 3661455 + timestamp: 1774197460085 - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d md5: 2c2fae981fd2afd00812c92ac47d023d @@ -807,33 +795,33 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 989514 timestamp: 1766415934926 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-hbf53078_5.conda - sha256: c0e261e9f2507ab380f654a178ac270c25072198cb86b51d4094161f31fd675e - md5: 529f01c326bcd9bca4f393eb379c4cf5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-h54830fc_7.conda + sha256: 72a3089bfcc78c5afb1f3803ae9cfdcea2348158680d3667edb46c42f9de307f + md5: 77c9c3513186ffedea1c0dcf60cf2c53 depends: - __glibc >=2.17,<3.0.a0 - eccodes - fftw >=3.3.10,<4.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - jasper >=4.2.8,<5.0a0 - - libcurl >=8.14.1,<9.0a0 + - jasper >=4.2.9,<5.0a0 + - libcurl >=8.19.0,<9.0a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 - - libnetcdf >=4.9.3,<4.9.4.0a0 + - libnetcdf >=4.10.0,<4.10.1.0a0 - libstdcxx >=14 - libudunits2 >=2.2.28,<3.0a0 - - libuuid >=2.41.1,<3.0a0 + - libuuid >=2.42,<3.0a0 - libxml2 - libxml2-16 >=2.14.6 - libxml2-devel - magics - - proj >=9.7.0,<9.8.0a0 + - proj >=9.7.1,<9.8.0a0 - udunits2 license: BSD-3-Clause license_family: BSD - size: 64429633 - timestamp: 1757995610182 + size: 64408382 + timestamp: 1775654485757 - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda sha256: 783b7525ef535b67236c2773f5553b111ee5258ad9357df2ae1755cc62a0a014 md5: a6993977a14feee4268e7be3ad0977ab @@ -850,36 +838,36 @@ packages: license_family: MIT size: 191335 timestamp: 1773218536473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h83bc92c_0.conda - sha256: 2a00d4fda4ce24dff71bc97b6a57cd61fa98be25da38d387d3935cfb8d84cdc3 - md5: 0f73a3e483c4fbc7bf6fb840d816c5a5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h1c03fa5_2.conda + sha256: 77d84533e8ace11ecb6d0d98b1dea7cd4cfac1bbba7484a4e2630baa1d251581 + md5: 8212731348c41ecc1cbe65076ea6db0f depends: - __glibc >=2.17,<3.0.a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - jasper >=4.2.8,<5.0a0 + - jasper >=4.2.9,<5.0a0 - libaec >=1.1.5,<2.0a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 - - libnetcdf >=4.9.3,<4.9.4.0a0 + - libnetcdf >=4.10.0,<4.10.1.0a0 - libpng >=1.6.55,<1.7.0a0 - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 license: Apache-2.0 license_family: Apache - size: 4796539 - timestamp: 1772362605927 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda - sha256: 0cc345e4dead417996ce9a1f088b28d858f03d113d43c1963d29194366dcce27 - md5: a0535741a4934b3e386051065c58761a + size: 4778971 + timestamp: 1774358620801 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda + sha256: 210155553489739765f31001f84eba91e58d9c692b032eed33f1a20340c78acb + md5: 7de50d165039df32d38be74c1b34a910 depends: - __glibc >=2.17,<3.0.a0 - - libexpat 2.7.4 hecca717_0 + - libexpat 2.7.5 hecca717_0 - libgcc >=14 license: MIT license_family: MIT - size: 145274 - timestamp: 1771259434699 + size: 146195 + timestamp: 1774719191740 - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda sha256: a564b8af44a113173c7d42ffe37a8d600e6ea21f6db87d252135ba07914a3d10 md5: af1311c2d5e4bfc5cce2b86804c77972 @@ -982,6 +970,15 @@ packages: license_family: MIT size: 144010 timestamp: 1719014356708 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda + sha256: c934c385889c7836f034039b43b05ccfa98f53c900db03d8411189892ced090b + md5: 8462b5322567212beeb025f3519fb3e2 + depends: + - libfreetype 2.14.3 ha770c72_0 + - libfreetype6 2.14.3 h73754d4_0 + license: GPL-2.0-only OR FTL + size: 173839 + timestamp: 1774298173462 - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda sha256: c8960e00a6db69b85c16c693ce05484facf20f1a80430552145f652a880e0d2a md5: ecb5d11305b8ba1801543002e69d2f2f @@ -1127,25 +1124,25 @@ packages: license_family: GPL size: 15587873 timestamp: 1771378609722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.0-h6083320_0.conda - sha256: 2b6958ab30b2ce330b0166e51fc5f20f761f71e09510d62f03f9729882707497 - md5: 71c2c966e17a65b08b995f571310fb9f +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.1.0-h6083320_0.conda + sha256: 22c4f6df7eb4684a4b60e62de84211e7d80a0df2d7cfdbbd093a73650e3f2d45 + md5: ca8a94b613db5d805c3d2498a7c30997 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - icu >=78.3,<79.0a0 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 + - libexpat >=2.7.5,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 - libgcc >=14 - libglib >=2.86.4,<3.0a0 - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT - size: 2342310 - timestamp: 1773909324136 + size: 2338203 + timestamp: 1775569314754 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 md5: bd77f8da987968ec3927990495dc22e4 @@ -1158,23 +1155,23 @@ packages: license_family: BSD size: 756742 timestamp: 1695661547874 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda - sha256: 1fc50ce3b86710fba3ec9c5714f1612b5ffa4230d70bfe43e2a1436eacba1621 - md5: c223ee1429ba538f3e48cfb4a0b97357 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_108.conda + sha256: 795c3a34643aa766450b8363b8c5dd6e65ad40e5cc64d138c3678d05068a380a + md5: cbb2d15a6e9aeb85f18f1a8f01c29b81 depends: - __glibc >=2.17,<3.0.a0 - libaec >=1.1.5,<2.0a0 - - libcurl >=8.18.0,<9.0a0 + - libcurl >=8.19.0,<9.0a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3708864 - timestamp: 1770390337946 + size: 3719931 + timestamp: 1774406907641 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a md5: c80d8a3b84358cb967fa81e7075fbc8a @@ -1259,9 +1256,9 @@ packages: license_family: MIT size: 1386730 timestamp: 1769769569681 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda - sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 - md5: 12bd9a3f089ee6c9266a37dab82afabd +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c + md5: 18335a698559cdbcd86150a48bf54ba6 depends: - __glibc >=2.17,<3.0.a0 - zstd >=1.5.7,<1.6.0a0 @@ -1269,8 +1266,8 @@ packages: - binutils_impl_linux-64 2.45.1 license: GPL-3.0-only license_family: GPL - size: 725507 - timestamp: 1770267139900 + size: 728002 + timestamp: 1774197446916 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 md5: a752488c68f2e7c456bcbd8f16eec275 @@ -1427,33 +1424,23 @@ packages: license_family: APACHE size: 509673 timestamp: 1770434601939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda - sha256: 0cef37eb013dc7091f17161c357afbdef9a9bc79ef6462508face6db3f37db77 - md5: 7e7f0a692eb62b95d3010563e7f963b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda + build_number: 6 + sha256: 7bfe936dbb5db04820cf300a9cc1f5ee8d5302fc896c2d66e30f1ee2f20fbfd6 + md5: 6d6d225559bfa6e2f3c90ee9c03d4e2e depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: LGPL-2.1-or-later - license_family: LGPL - size: 53316 - timestamp: 1773595896163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda - build_number: 5 - sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c - md5: c160954f7418d7b6e87eaf05a8913fa9 - depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 + - libopenblas >=0.3.32,<0.3.33.0a0 + - libopenblas >=0.3.32,<1.0a0 constrains: + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas - mkl <2026 - - liblapack 3.11.0 5*_openblas - - libcblas 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause license_family: BSD - size: 18213 - timestamp: 1765818813880 + size: 18621 + timestamp: 1774503034895 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e md5: 72c8fd1af66bd67bf580645b426513ed @@ -1486,20 +1473,20 @@ packages: license_family: MIT size: 298378 timestamp: 1764017210931 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda - build_number: 5 - sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 - md5: 6636a2b6f1a87572df2970d3ebc87cc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda + build_number: 6 + sha256: 57edafa7796f6fa3ebbd5367692dd4c7f552be42109c2dd1a7c89b55089bf374 + md5: 36ae340a916635b97ac8a0655ace2a35 depends: - - libblas 3.11.0 5_h4a7cf45_openblas + - libblas 3.11.0 6_h4a7cf45_openblas constrains: - - liblapacke 3.11.0 5*_openblas - - blas 2.305 openblas - - liblapack 3.11.0 5*_openblas + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas license: BSD-3-Clause license_family: BSD - size: 18194 - timestamp: 1765818837135 + size: 18622 + timestamp: 1774503050205 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -1567,18 +1554,18 @@ packages: license_family: BSD size: 427426 timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda - sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 - md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda + sha256: e8c2b57f6aacabdf2f1b0924bd4831ce5071ba080baa4a9e8c0d720588b6794c + md5: 49f570f3bc4c874a06ea69b7225753af depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: - - expat 2.7.4.* + - expat 2.7.5.* license: MIT license_family: MIT - size: 76798 - timestamp: 1771259418166 + size: 76624 + timestamp: 1774719175983 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 md5: a360c33a5abe61c07959e449fa1453eb @@ -1589,27 +1576,27 @@ packages: license_family: MIT size: 58592 timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.2-ha770c72_0.conda - sha256: 2e1bfe1e856eb707d258f669ef6851af583ceaffab5e64821b503b0f7cd09e9e - md5: 26c746d14402a3b6c684d045b23b9437 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda + sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 + md5: e289f3d17880e44b633ba911d57a321b depends: - - libfreetype6 >=2.14.2 + - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL - size: 8035 - timestamp: 1772757210108 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.2-h73754d4_0.conda - sha256: aba65b94bdbed52de17ec3d0c6f2ebac2ef77071ad22d6900d1614d0dd702a0c - md5: 8eaba3d1a4d7525c6814e861614457fd + size: 8049 + timestamp: 1774298163029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda + sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d + md5: fb16b4b69e3f1dcfe79d80db8fd0c55d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libpng >=1.6.55,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - - freetype >=2.14.2 + - freetype >=2.14.3 license: GPL-2.0-only OR FTL - size: 386316 - timestamp: 1772757193822 + size: 384575 + timestamp: 1774298162622 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 md5: 0aa00f03f9e39fb9876085dee11a85d4 @@ -1641,47 +1628,47 @@ packages: license_family: GPL size: 27526 timestamp: 1771378224552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-he63569f_2.conda - sha256: 564d9e27f9cb3eae53a945a70c25b92f22f74a27b450dc166a255964623b4383 - md5: 8aa8205bf4e18885c25149c3d391ed39 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.3-he63569f_3.conda + sha256: 298497351f4a7dc94938a1ad8dc3df545a07efdc5f1b91b9256d04e65959a430 + md5: 83666e2c330f47ee6268396ee4467b63 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 - geos >=3.14.1,<3.14.2.0a0 - giflib >=5.2.2,<5.3.0a0 - json-c >=0.18,<0.19.0a0 - - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.5,<3.9.0a0 - - libcurl >=8.18.0,<9.0a0 + - lerc >=4.1.0,<5.0a0 + - libarchive >=3.8.6,<3.9.0a0 + - libcurl >=8.19.0,<9.0a0 - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.4,<3.0a0 + - libexpat >=2.7.5,<3.0a0 - libgcc >=14 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - libjxl >=0.11,<1.0a0 - libkml >=1.3.0,<1.4.0a0 - liblzma >=5.8.2,<6.0a0 - - libpng >=1.6.55,<1.7.0a0 + - libpng >=1.6.57,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.2,<4.0a0 + - libsqlite >=3.52.0,<4.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.5,<4.0a0 + - openssl >=3.5.6,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - proj >=9.7.1,<9.8.0a0 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - libgdal 3.12.2.* + - libgdal 3.12.3.* license: MIT license_family: MIT - size: 12954415 - timestamp: 1772336313866 + size: 12920201 + timestamp: 1775712965350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee md5: 9063115da5bc35fdc3e1002e69b9ef6e @@ -1907,20 +1894,20 @@ packages: license_family: BSD size: 411495 timestamp: 1761132836798 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda - build_number: 5 - sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 - md5: b38076eb5c8e40d0106beda6f95d7609 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda + build_number: 6 + sha256: 371f517eb7010b21c6cc882c7606daccebb943307cb9a3bf2c70456a5c024f7d + md5: 881d801569b201c2e753f03c84b85e15 depends: - - libblas 3.11.0 5_h4a7cf45_openblas + - libblas 3.11.0 6_h4a7cf45_openblas constrains: - - blas 2.305 openblas - - liblapacke 3.11.0 5*_openblas - - libcblas 3.11.0 5*_openblas + - blas 2.306 openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas license: BSD-3-Clause license_family: BSD - size: 18200 - timestamp: 1765818857876 + size: 18624 + timestamp: 1774503065378 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb md5: c7c83eecbb72d88b940c249af56c8b17 @@ -1942,30 +1929,29 @@ packages: license_family: BSD size: 92400 timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - sha256: cae2f8fe5258fc1a1d2b61cbc9190ed2c0a1b7cdf5d4aac98da071ade6dac152 - md5: a2956b63b1851e9d5eb9f882d02fa3a9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_103.conda + sha256: 657a4eaf5b9dfb3e8ef76bb4c5a682951ae8dcc9d35cd73c4ff62c144b356d13 + md5: 737fd40c9bfa4076d007f6ff7fa405e3 depends: - __glibc >=2.17,<3.0.a0 - - attr >=2.5.2,<2.6.0a0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libaec >=1.1.5,<2.0a0 - - libcurl >=8.18.0,<9.0a0 + - libcurl >=8.19.0,<9.0a0 - libgcc >=14 - libstdcxx >=14 - libxml2 - libxml2-16 >=2.14.6 - libzip >=1.11.2,<2.0a0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 870788 - timestamp: 1770718321021 + size: 861141 + timestamp: 1774633364108 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f md5: 2a45e7f8af083626f009645a6481f12d @@ -1992,20 +1978,20 @@ packages: license_family: GPL size: 33731 timestamp: 1750274110928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda - sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 - md5: be43915efc66345cccb3c310b6ed0374 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda + sha256: 6dc30b28f32737a1c52dada10c8f3a41bc9e021854215efca04a7f00487d09d9 + md5: 89d61bc91d3f39fda0ca10fcd3c68594 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - openblas >=0.3.32,<0.3.33.0a0 license: BSD-3-Clause license_family: BSD - size: 5927939 - timestamp: 1763114673331 + size: 5928890 + timestamp: 1774471724897 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead md5: 7df50d44d4a14d6c31a2c54f2cd92157 @@ -2056,16 +2042,16 @@ packages: license_family: APACHE size: 1370331 timestamp: 1770434436295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda - sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c - md5: 5f13ffc7d30ffec87864e678df9957b4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.57-h421ea60_0.conda + sha256: 06323fb0a831440f0b72a53013182e1d4bb219e3ea958bb37af98b25dc0cf518 + md5: 06f225e6d8c549ad6c0201679828a882 depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libzlib >=1.3.1,<2.0a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement - size: 317669 - timestamp: 1770691470744 + size: 317779 + timestamp: 1775692841709 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 md5: 07479fc04ba3ddd5d9f760ef1635cfa7 @@ -2255,16 +2241,16 @@ packages: license_family: MIT size: 85969 timestamp: 1768735071295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee - md5: db409b7c1720428638e7c0d509d3e1b5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda + sha256: bc1b08c92626c91500fd9f26f2c797f3eb153b627d53e9c13cd167f1e12b2829 + md5: 38ffe67b78c9d4de527be8315e5ada2c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: BSD-3-Clause license_family: BSD - size: 40311 - timestamp: 1766271528534 + size: 40297 + timestamp: 1775052476770 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b md5: 0f03292cc56bf91a077a134ea8747118 @@ -2360,18 +2346,17 @@ packages: license_family: BSD size: 109043 timestamp: 1730442108429 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 + md5: d87ff7921124eccd67248aa483c23fec depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 constrains: - - zlib 1.3.1 *_2 + - zlib 1.3.2 *_2 license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 + size: 63629 + timestamp: 1774072609062 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -2393,32 +2378,39 @@ packages: license_family: GPL size: 191060 timestamp: 1753889274283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h637ef6b_3.conda - sha256: cd1227d176d6f8437b31fc82e64b78d743a55473927764d2c1e4aa9400b3e88f - md5: de519f1c69a8e0963fb52ab9deff9999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h1a1f456_4.conda + sha256: d90c1f2b6a7f6da1052b4f28c18c5811bd5e5b51bff7416b7e8f1587d9804de0 + md5: 71975455784f2903a277e920813a5299 depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - eccodes >=2.21.0 - expat - - libexpat >=2.7.1,<3.0a0 - - libgcc >=14 - - libglib >=2.86.0,<3.0a0 - - libnetcdf >=4.9.3,<4.9.4.0a0 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - magics-python - - pango >=1.56.4,<2.0a0 - - proj >=9.7.0,<9.8.0a0 - - simplejson + - freetype + - pango - xorg-xorgproto + - cairo + - proj + - eccodes >=2.21.0 + - simplejson + - libnetcdf - zlib + - magics-python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - libglib >=2.86.4,<3.0a0 + - libnetcdf >=4.10.0,<4.10.1.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - proj >=9.7.1,<9.8.0a0 + - pango >=1.56.4,<2.0a0 + - libexpat >=2.7.5,<3.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - magics-metview ==9999999999 license: Apache-2.0 - license_family: Apache - size: 25793889 - timestamp: 1757971409125 + license_family: APACHE + size: 27267045 + timestamp: 1775632906282 - conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda sha256: 10d05b239e901f88394a2540a248d2c696d6ca40f76f62c5f20ec1861acf5384 md5: 3fd7e3db129f12362642108f23fde521 @@ -2540,17 +2532,17 @@ packages: license_family: BSD size: 8972010 timestamp: 1773839212779 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c - md5: f61eb8cd60ff9057122a3d338b99c00f +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda + sha256: c0ef482280e38c71a08ad6d71448194b719630345b0c9c60744a2010e8a8e0cb + md5: da1b85b6a87e141f5140bb9924cecab0 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=14 license: Apache-2.0 license_family: Apache - size: 3164551 - timestamp: 1769555830639 + size: 3167099 + timestamp: 1775587756857 - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda sha256: 84cfe4e11d3186c0c369f111700e978c849fb9e4ab7ed031acbe3663daacd141 md5: a98b8d7cfdd20004f1bdd1a51cb22c58 @@ -2568,33 +2560,33 @@ packages: license_family: Apache size: 1317120 timestamp: 1768247825733 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.1-ha770c72_0.conda - sha256: 224c0f9970174009c82634c00ac90f3eecdf238154675a4055d02421a639aa1c - md5: 2e036aa3d69e03812e0eac334d162ef2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda + sha256: d46f76ed09396e3bd1dc11030b3d0d222c25ba8d92f3cde08bc6fbd1eec4f9e0 + md5: de8ccf9ffba55bd20ee56301cfc7e6db license: GPL-2.0-or-later license_family: GPL - size: 22360792 - timestamp: 1773855665852 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf - md5: 79f71230c069a287efe3a8614069ddf1 + size: 22364689 + timestamp: 1773933354952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 + md5: d53ffc0edc8eabf4253508008493c5bc depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 + - fontconfig >=2.17.1,<3.0a0 - fonts-conda-ecosystem - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.1 - - libexpat >=2.7.0,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - libgcc >=13 - - libglib >=2.84.2,<3.0a0 - - libpng >=1.6.49,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - fribidi >=1.0.16,<2.0a0 + - harfbuzz >=13.2.1 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later - size: 455420 - timestamp: 1751292466873 + size: 458036 + timestamp: 1774281947855 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff md5: 7a3bff861a6583f1889021facefc08b1 @@ -2662,24 +2654,23 @@ packages: license_family: MIT size: 8252 timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-he1279bd_1_cp314t.conda - build_number: 1 - sha256: 4212a85ccc69264eaf9e68b77ff9b504e78935a53d0923fa409900084418edce - md5: 19b5d632d02f56f9f95ce07dc1e086b5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-hf9ea5aa_0_cp314t.conda + sha256: 60b64046b273c5ae1508d860bda2cb1c02c9af8d0973a9873ce416496132933d + md5: f9c864fd19f2e57a6624520c63262a16 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.3,<3.0a0 + - libexpat >=2.7.5,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuuid >=2.42,<3.0a0 + - libzlib >=1.3.2,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 + - openssl >=3.5.6,<4.0a0 - python_abi 3.14.* *_cp314t - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 @@ -2688,8 +2679,8 @@ packages: track_features: - py_freethreading license: Python-2.0 - size: 47583647 - timestamp: 1770675516163 + size: 47768693 + timestamp: 1775614324184 python_site_packages_path: lib/python3.14t/site-packages - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda build_number: 8 @@ -2764,17 +2755,17 @@ packages: license_family: GPL3 size: 72543 timestamp: 1757447376176 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r45h54b55ab_2.conda - sha256: 87e4078f7d6bed6beed4f8b17d733780e2349298310fb84d5a931bb2c5a342fa - md5: 4ae034345727e236c1fe871f6611ab33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.1-r45h54b55ab_0.conda + sha256: fee4a4edfc81b45a79fa7da152b8a46cccf5caad6f0fcf86758a55dcb366af63 + md5: dac02364873fe7c75047d7a21741977c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: GPL-2.0-or-later license_family: GPL2 - size: 130943 - timestamp: 1757441770893 + size: 131442 + timestamp: 1775202754185 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda sha256: eb21b72dfa6cc767cebc0b348b8da3dc762a7e85627fc7a5afee72cc75e8f89c md5: 0356c81af70570e685acc134ac740014 @@ -2984,9 +2975,9 @@ packages: license_family: GPL2 size: 493225 timestamp: 1757486428213 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r45h3697838_1.conda - sha256: 3797cb79cc1534f88c7f0d0e325351445f77de5d04e18110b7b7d7bf3840872a - md5: 25a61ba3c01e0d6d739c713774696019 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.6-r45h3697838_0.conda + sha256: a894e558a680a31444090de217b73f8fc06a3f4c07746d2cde4b6f86acdae0b1 + md5: ed8dcbbe9d66e9093ba58891e3b6065a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -2994,8 +2985,8 @@ packages: - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 1311871 - timestamp: 1757414956557 + size: 1323795 + timestamp: 1775733704549 - conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda sha256: e6f8e916018d958aab7742fc4dca39d11e9fd71a6c9cbf706ae48b3f4aa68963 md5: eda926ce6830fc811ca06adde8ae3630 @@ -3074,17 +3065,17 @@ packages: license_family: GPL size: 109200 timestamp: 1757452164030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.11-r45h54b55ab_0.conda - sha256: cd120d417f272d5a64b07e55a91aab5b86f83d04934d1538757819755d17563c - md5: f5d223c226b5c4ac3a1f8c9c48a68d2c +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.12-r45h54b55ab_0.conda + sha256: 8203ecac493244bce98bc745b51fd839b0dbb56c3b9e986df58b7dfcb1fa206f + md5: 6157f48d0ec902dc3db2080afabed4bf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 76668 - timestamp: 1770278750456 + size: 76849 + timestamp: 1774169828508 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda sha256: 0499da963641d533d3b210373a2b430301f9f1593c57cb3aa2f790125548ad52 md5: 9aa495fac7950f962e255cd1af855e95 @@ -3107,15 +3098,15 @@ packages: license_family: BSD size: 139818 timestamp: 1757422097696 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.3-r45h785f33e_0.conda - sha256: b1e78668d9022919767ef4d18f5a4d72698c5c1f7a0e3e1ec6b80ef41965bc2c - md5: 7af22463e03fc80fb0da52672f296ea2 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.4-r45h785f33e_0.conda + sha256: 32a37046e884f2c4125baff219dc7dc97cfe96c1db7d30355d2414e500a00ca9 + md5: 8ffdfacba9fb160f880ecdc4b450fdf5 depends: - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 243012 - timestamp: 1769011262793 + size: 243945 + timestamp: 1775286035216 - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda sha256: 9126a0408696133893e674549ca7aef317768dba503765a7ed032616aabe5b49 md5: 4f111ce078b9690abaad6248b831a370 @@ -3264,9 +3255,9 @@ packages: license_family: MIT size: 339976 timestamp: 1757463164006 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.4.6-r45hc72bb7e_0.conda - sha256: 466f690f5dc221d551db91feb6f20b2b7cbfb79297a8962edbaca63473cab5fe - md5: fc430a20ebb7d08c5f319bab04106a04 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.5.0-r45hc72bb7e_0.conda + sha256: 31c88d4d79fe92a74e902a837515d0b5d0dc22c7b5ebccacaac9a786e5d246af + md5: b4b3197ab2588fafcffbad206cd9985e depends: - r-base >=4.5,<4.6.0a0 - r-cli >=3.3.0 @@ -3276,6 +3267,7 @@ packages: - r-lifecycle >=1.0.1 - r-memoise >=2.0.1 - r-miniui >=0.1.1.1 + - r-pak - r-pkgbuild >=1.3.1 - r-pkgdown >=2.0.6 - r-pkgload >=1.3.0 @@ -3292,8 +3284,8 @@ packages: - r-withr >=2.5.0 license: MIT license_family: MIT - size: 454124 - timestamp: 1759496014222 + size: 470197 + timestamp: 1773988198941 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda sha256: 9329c0ffdbfce664893d83add06fcf73f0f7046d12cacb074192176f236cabf6 md5: 98a4d23fc0767e9f30473d10e0c7c0b7 @@ -3374,9 +3366,9 @@ packages: license_family: GPL size: 1367542 timestamp: 1758605011691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.0-r45h3697838_0.conda - sha256: fb9183d9817f3cd3e5c13f3c5d047862b5365b9a781db4d37b81d4a8b98d320e - md5: 049f6345a0a7ce19e707c43ca121d0b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.1-r45h3697838_0.conda + sha256: 42067805b0742b933de7e1ca4311645797ac687cee6aacd630d9d4c585dfa830 + md5: 7c8e643f764769a184f0d0d06ac0e789 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -3395,8 +3387,8 @@ packages: - r-vctrs >=0.3.5 license: MIT license_family: MIT - size: 1446411 - timestamp: 1770119286924 + size: 1445950 + timestamp: 1775207093582 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda sha256: a413df3f99883f6972cb58642c1ff5bbe660a38cfedb8d534e1b46ba943d66c9 md5: 25bfa5c29f7b8f25f0cd76af2cf23e17 @@ -3411,9 +3403,9 @@ packages: license_family: GPL3 size: 598429 timestamp: 1766072349527 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r45h54b55ab_4.conda - sha256: 2e4660ab89eaa40874abc78b0c5462f8539da9f6c7a96d3afbc3ff1e233fc727 - md5: 7ab2ebe9016d83ae37d90080bb9e52d5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.3-r45h54b55ab_0.conda + sha256: 19d03273f9d5e1aa41302e1cf080dcb95ced5b955bc978df39eee71a9686a86c + md5: e43b3e7101a90ac57f58a21da67c99a4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -3421,8 +3413,8 @@ packages: - r-rlang >=0.3.0 license: MIT license_family: MIT - size: 44022 - timestamp: 1757440899720 + size: 33411 + timestamp: 1775287239478 - conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda sha256: d3accfeab1416151515c37e5edc94b18868998db4936183459f8040117d5c83c md5: 4e0c71ab78d7292372a89d4daecb49af @@ -3511,9 +3503,9 @@ packages: license_family: GPL2 size: 269631 timestamp: 1769731310506 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.6-r45h3697838_1.conda - sha256: 9c4c4785e59daa305b2d99c53ee49bf316270af53feb3e2391490e52fcd3ee83 - md5: 83e475da65e64314507bb8da487cdc00 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.7-r45h3697838_0.conda + sha256: 97d033bc3cc132893e11925eab2a64e5f6daf15c468688cc7364e0613853795e + md5: 68e44c944dd77e9c8455e720a59c64fd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -3521,11 +3513,11 @@ packages: - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 511417 - timestamp: 1757422447051 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.3.1-r45hc72bb7e_4.conda - sha256: a12b41d466479f5bb7c41d9fab411c5f135da5124f333be29327c53945602214 - md5: ca6f7f06bb35b0c5533a35815be11f3c + size: 518079 + timestamp: 1773966918671 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.4.0-r45hc72bb7e_0.conda + sha256: 2d5c82529d7aff7ed2af68015009b13542adbf6b788198e142df4e499598b705 + md5: 2813f7fa1b9d4e249ee29ed520df180c depends: - r-base >=4.5,<4.6.0a0 - r-ellipsis @@ -3537,8 +3529,8 @@ packages: - r-vctrs >=0.3.2 license: MIT license_family: MIT - size: 1018717 - timestamp: 1757511429103 + size: 1012055 + timestamp: 1774978764114 - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda sha256: fbd8f8661edb4fac131bc18105fb9c9cb7427602ad525aee83f7dda6d9dc1695 md5: aa881360b19ba5911181085679303d5d @@ -3972,17 +3964,18 @@ packages: license_family: GPL3 size: 1416943 timestamp: 1770694116947 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.2-r45h54b55ab_6.conda - sha256: 87e0229eb23b15272d0ac41758ec291ac0b4b278e039a0531909a81747a111fb - md5: 587b831cf674e5b0a10350cfda725fb7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.3-r45h54b55ab_0.conda + sha256: 581fec2d1215b6d7b6d35ce9588271ba4bd89c75b0f131c04a718b79cbe2180f + md5: 5634c3ee3e3c77f7462047a70ed35321 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 + - r-rlang license: GPL-3.0-only license_family: GPL3 - size: 161183 - timestamp: 1757422197141 + size: 192307 + timestamp: 1775429492578 - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda sha256: b7a4d8d98a96d17d18c80fb7e1c8e6cb09b9bd2542e74d91a7f483afccb30ee6 md5: 5f8369dfbdff08878e58bf15529fca3a @@ -4070,17 +4063,17 @@ packages: license_family: MIT size: 977124 timestamp: 1770225935525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.4-r45h54b55ab_0.conda - sha256: 6b6284d1323e50680f15c3e0b5e863478c106dd328ec4c2206b2426524dbc158 - md5: 247626d820a50ab24f95a2a6105a7831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.5-r45h54b55ab_0.conda + sha256: 5b09fdee8ef5426082844d17d360756922ba74f9e3c428f501373295a5e9228d + md5: 2e26e018edc1f198aa72a8f2127fab00 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 211750 - timestamp: 1757678019400 + size: 211086 + timestamp: 1775298609420 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda sha256: 5b2296e9486091991392571abd3f05e71506589543db7ae542cb7522934e26ff md5: 36f1b40545cce670b19c1322483b91fa @@ -4213,9 +4206,9 @@ packages: license_family: APACHE size: 619614 timestamp: 1770720266561 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.1-r45h54b55ab_0.conda - sha256: 96590884ecb5a60ce291af7a2b424f1a7e634083e896088864ba4daa76206216 - md5: baa9e5ffa979146249c1b1aed452e41b +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.2-r45h54b55ab_0.conda + sha256: 71f66a72d4d04330fb2fe33bed1c2507f8a5a92b13cca9fa62e8f0636d2705d5 + md5: 3f5d7478ce1e2d381b990cdb82bbd72f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4225,8 +4218,8 @@ packages: - r-later license: GPL-3.0-or-later license_family: GPL - size: 402869 - timestamp: 1772956598005 + size: 402622 + timestamp: 1775286719522 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda sha256: c5e2901edb8fdb10e06dcf819b42ae0b6aafec7992e46c7d6a974c50a54c1046 md5: 13919af864d1fd22747ce007f47c532a @@ -4242,22 +4235,22 @@ packages: license_family: APACHE size: 225802 timestamp: 1764331882493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h5f38480_3.conda - sha256: c884ac3901bc53e0317d7e19f28102d722baf27502df8b9b4715cea5c1bf0750 - md5: e075e7fc47e3c2c7ecaa85c628bc87fc +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_5.conda + sha256: 77b4262433c2b18c3933dd1898d099d06d943b83704241337b5befcca86db055 + md5: d6664f4323ba2aebce4677de6d7c588e depends: - __glibc >=2.17,<3.0.a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - - libnetcdf >=4.9.3,<4.9.4.0a0 + - libnetcdf >=4.10.0,<4.10.1.0a0 - r-base >=4.5,<4.6.0a0 license: GPL-3.0-or-later license_family: GPL3 - size: 299918 - timestamp: 1757542673765 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r45heaba542_1.conda - sha256: da4b17286e9df1c5db0de78534ee49ace3990e380a601e2e4369a80d31c7642e - md5: b75eb6b18bf2dcdc4f72c3f9cdc310b6 + size: 300182 + timestamp: 1774358028857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_169-r45heaba542_0.conda + sha256: a2f1bca12bb07811bcc1d0827178052cbdcc8e60f480276c5272ebae4bcb7811 + md5: 50eabe982f85b409888ed89a7451379c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4267,8 +4260,8 @@ packages: - r-lattice license: GPL-2.0-or-later license_family: GPL3 - size: 2351357 - timestamp: 1757441114604 + size: 2355015 + timestamp: 1774815523735 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda sha256: 5123bdea8a23bea521ab41336be42f7d1e6f3cac749d451090366db794f6fcb6 md5: 5a03c2310c966036265f16a91f808999 @@ -4448,9 +4441,9 @@ packages: license_family: MIT size: 907520 timestamp: 1762414187272 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.0-r45hc72bb7e_0.conda - sha256: 7d9a1ffc9b5c2c8c8b5cb69e8e79fad348cb7687503cf5d153b65966ab931d13 - md5: 66b42aecf1900e02b7d2eaf913980f18 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.1-r45hc72bb7e_0.conda + sha256: 9b052c9c2311d50c335338cfc12017f903aa3cc02236c5d76cbd425f8010cb1f + md5: 6f6a62f9c5b02afc64293ab04120e542 depends: - r-base >=4.5,<4.6.0a0 - r-cli >=3.3.0 @@ -4465,8 +4458,8 @@ packages: - r-withr >=2.4.3 license: GPL-3.0-only license_family: GPL3 - size: 241326 - timestamp: 1770110557741 + size: 241861 + timestamp: 1775029626216 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda sha256: 353d5945d242b03c47ab0d051cf9058b4459303c96455dba9442100628a0bde1 md5: 255fec0919919b14789eb30cc448ed20 @@ -4480,19 +4473,19 @@ packages: license_family: MIT size: 787537 timestamp: 1757441721952 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r45h6b2d295_3.conda - sha256: a57dec7255d2ac3f4be1dd9c5723ef6c2c628f3959de8dcc92f805ec11a27756 - md5: 0063fba2d01cf430a62e51eefe8aaa94 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_9-r45haf2892b_0.conda + sha256: 5eb37ba0e1d8e53750f6f8b6b1fe0f534ef30796bdabbcb93dd66a6adef415dc + md5: 9d3a0fd2c5ff1c247ad48dbc4974449c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.55,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - r-base >=4.5,<4.6.0a0 license: GPL-2.0-only OR GPL-3.0-only license_family: GPL3 - size: 61470 - timestamp: 1757489735151 + size: 62336 + timestamp: 1773974133045 - conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda sha256: 2f4b33c16d01df7d3a65cbb7a75989a2e3a1e068a354430da225d01d50870732 md5: d9f7dfa06871712aaf768674dea06a0b @@ -4524,9 +4517,9 @@ packages: license_family: MIT size: 161043 timestamp: 1757463130831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.6-r45h54b55ab_1.conda - sha256: 1313a7cf1faa7a79ecc33d3e21201cb5593a22c5c6d2d300a347a8937ef5cc70 - md5: dc609ebc1bbdae46eae17615da337e45 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.7-r45h54b55ab_0.conda + sha256: 954ed49638c21e9138d5c9594626c253bec8369a0ab6f4cfcb3cee6e6aa9c015 + md5: 89e528621bddb245fbae9eb3670fa6c4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4535,8 +4528,8 @@ packages: - r-r6 license: MIT license_family: MIT - size: 340846 - timestamp: 1757460085027 + size: 341638 + timestamp: 1775051118140 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda sha256: 21815d71c293933555e4258acff4f8de76eeca52a63ebeb6c10314e242dddebc md5: b50603b1967acbdd5d8f78bb999e6841 @@ -4593,17 +4586,17 @@ packages: license_family: GPL2 size: 183954 timestamp: 1767043865593 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.1-r45h54b55ab_1.conda - sha256: 928e9200c2e6658c4d683a1d0c8c96f9fbc0b8becf759ff99fff3955977c199a - md5: cd3627a5e66f15c8e65f921ca88940a3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.2-r45h54b55ab_0.conda + sha256: 8d4b0256e99a3cf25b7cd755cb3616b8834cf4bfe17d84eb01714d3fb1550d16 + md5: eec32645518b02cb429393c47331bf57 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: BSD-3-Clause license_family: BSD - size: 407941 - timestamp: 1757421229228 + size: 411203 + timestamp: 1774994697725 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda sha256: cd296e0fc8a07eb4904c5936b3db93e985e3ff5a0699df7cc46ea809a89eb857 md5: 44746443d3a9d657a09a7c8879ca8f7d @@ -4672,9 +4665,9 @@ packages: license_family: MIT size: 95073 timestamp: 1757447661037 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.1-r45h9f1dc4d_0.conda - sha256: 4ae205861573fd5be66d9bb81338720e24a5f5d289eee7972918249165162f8d - md5: 8a77b7e5be794fba37fa73cfff35aa64 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.2-r45h9f1dc4d_0.conda + sha256: 0e99b7597024257949edd390184fa0ecfd84eea655f192640d1227866b61eb97 + md5: 3bbbc6a7401baca55f71a2811bee0aef depends: - __glibc >=2.17,<3.0.a0 - libfreetype >=2.14.2 @@ -4684,14 +4677,14 @@ packages: - libpng >=1.6.55,<1.7.0a0 - libstdcxx >=14 - libtiff >=4.7.1,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - r-base >=4.5,<4.6.0a0 - r-systemfonts >=1.0.3 - r-textshaping >=0.3.0 license: MIT license_family: MIT - size: 595881 - timestamp: 1772815509200 + size: 596604 + timestamp: 1774267940113 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda sha256: a9778d5fa6777ce286815eb0abef625ff54693532795ef48a1bc319967e0ecb4 md5: 9fa763ece102dca3e50892bad36896ff @@ -4887,9 +4880,9 @@ packages: license_family: GPL3 size: 147271 timestamp: 1757481783597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.45.0-r45h3697838_0.conda - sha256: a24dd07d3f234effd6175b1f4aef8e7841896fe2d0f1bd95f7e37873b20109a5 - md5: d12318e8af8655d396b1f26ffb99fe09 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.46.0-r45h3697838_0.conda + sha256: 042bcaf14ce5751b8c7219eca1af5539d184ecca18ba050a34fc609703438514 + md5: bdf574d7f1eb94958b39e0d672ae0a7c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4906,19 +4899,20 @@ packages: - r-withr license: Apache-2.0 license_family: APACHE - size: 1916204 - timestamp: 1771004475839 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.1-r45hc72bb7e_4.conda - sha256: e8f6a44ed24e37df7a9a311ac00355294d09e0ad92e1aef9d0fc06045ec6c382 - md5: 461e9fef868aacbde6b73ba681ebce34 + size: 1910307 + timestamp: 1775743928708 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.2-r45hc72bb7e_0.conda + sha256: 645df2da4f945926e7fb98b7c0827caf37d390bbc48590636f28398bddbd1d2d + md5: ac173f9080a1b44112fe709319625541 depends: - r-base >=4.5,<4.6.0a0 - r-lazyeval - r-magrittr + - r-withr license: MIT license_family: MIT - size: 126090 - timestamp: 1757451641758 + size: 125461 + timestamp: 1774815471389 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda sha256: b0d732923793090f4e91112a03a1bbb0f71e7180d6c89f95853ebf48fe0bb61e md5: 3ef4fb93f36b0534412e661042f5403e @@ -4933,9 +4927,9 @@ packages: license_family: GPL2 size: 149658 timestamp: 1757622623100 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.7-r45h3697838_0.conda - sha256: dd4df06afcc68d95473939cc1a6ff2b2fa190412ddefac214da1a48a87441d9f - md5: 4623f836bbe3b849519dd29cf55881a9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.2.0-r45h3697838_0.conda + sha256: d311a9320326f46ec7372aa4944fcbfaa62f9d976dec6be32f3e44f9bc1c720c + md5: f4fb1a80e2e11b92cfc654e9871dc2b7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4943,11 +4937,11 @@ packages: - r-base >=4.5,<4.6.0a0 license: GPL-3.0-only license_family: GPL3 - size: 1573027 - timestamp: 1767972528864 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.30-r45hc72bb7e_0.conda - sha256: f570ba9370e4d1a7ae0e423cd9faa21fca5c7f50818c2e270faaf2dadd41fdc6 - md5: 80cf6b03ed3e25ef9c2e4421cad9bee3 + size: 1590688 + timestamp: 1775483709345 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.31-r45hc72bb7e_0.conda + sha256: b3735a4e75eca023b24678251da041854b94a8b96588d81b605928d6ecf74f11 + md5: 25b9dbf0ff990b8b3111774878e3bb07 depends: - pandoc >=1.14 - r-base >=4.5,<4.6.0a0 @@ -4963,8 +4957,8 @@ packages: - r-yaml >=2.1.19 license: GPL-3.0-only license_family: GPL3 - size: 2084939 - timestamp: 1759149840804 + size: 2085382 + timestamp: 1774555006202 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda sha256: f179efdabe890f0841eca544bbd0bc6c0f3957501020f90f22e1891ed822d1b7 md5: 23bb3404049c0ffd3e5936198ea9b0c2 @@ -4990,17 +4984,17 @@ packages: license_family: GPL3 size: 704023 timestamp: 1757563768902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.24-r45h54b55ab_1.conda - sha256: 0f493b81cb5e549eddde7dbb18527611f80e49eea6115e20a1186141f4b0b49a - md5: 5c9436afd8f9306c61e9b2d48eb3f9bb +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.27-r45h54b55ab_0.conda + sha256: 361ec301129b0f03cb560a45dd09f97690fb486e71f4f49e63071437742e2e6b + md5: 072cbea77e0705c0126f04a883ab912b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: GPL-2.0-or-later license_family: GPL3 - size: 705140 - timestamp: 1757454485574 + size: 704022 + timestamp: 1774600677333 - conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda sha256: 9e359973b9433ffaef7a65a1f3483723048427aee4a3208512863c4c70c409a4 md5: e1b7c51411ad3dd2a95aea6d466b12f7 @@ -5092,17 +5086,17 @@ packages: license_family: MIT size: 777793 timestamp: 1757487539496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.0-r45h54b55ab_0.conda - sha256: 1be9da827db61f16a5b1c4131fc29e31b92bbc209dbd9e47d72602beb034d266 - md5: a4bb70c2336fba06a63f0fd2ef2c9ca4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.1-r45h54b55ab_0.conda + sha256: b750a03dd47d233a18dd0da1d6057a472d78fe40cd4fe78d58f274380e53d151 + md5: 57b954013ae2fd78829114558c15f1bf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - r-base >=4.5,<4.6.0a0 license: GPL-3.0-or-later license_family: GPL3 - size: 93507 - timestamp: 1770286893349 + size: 93509 + timestamp: 1774868879405 - conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda sha256: d5d4dddd88a5c282c345897bb9faaac4dcc2bca5e63269aec32fa6b21a77bfad md5: cf2e9902cba2ba0ec9368910a6ae908e @@ -5190,9 +5184,9 @@ packages: license_family: GPL size: 349756 timestamp: 1757725500389 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_1-r45h3697838_3.conda - sha256: 7b192f7ae44eecd6a6e2c30554f2a8b6c1496c0d95f8b6e3f08481357b5251de - md5: cbe71c070980bce3c26d6e7f6ca02da7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_2-r45h3697838_0.conda + sha256: 885a784f4258b491e48947dbed71bd18b2e2e7da0f0b53ee1dcfed93cfdcd48a + md5: 1bd0042c176bde3dd1971eac76497219 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5200,8 +5194,8 @@ packages: - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 54215 - timestamp: 1757441623281 + size: 54650 + timestamp: 1774682292388 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda sha256: 6c037194ac3ec2f4cbf79197efb531a9b2a57d87f2b505117add301782dca5a6 md5: bc4a2f5d8de754e812d1ff53bf66b211 @@ -5213,9 +5207,9 @@ packages: license_family: GPL3 size: 155963 timestamp: 1757509276008 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_1-r45hc72bb7e_0.conda - sha256: f432d5b9d7ddad97f0aeb99fbb9e69459054cd3e1428170f7d9dae0639103154 - md5: 6da2005783692518aef1c4f435859c26 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_2-r45hc72bb7e_0.conda + sha256: a86d13b11df2f79dfb417a1852a6591e20cef4a5d6c6d40e84eee8f39fce6fe9 + md5: 540fcd52a52c31e765b5b4fbe1da8979 depends: - r-abind - r-base >=4.5,<4.6.0a0 @@ -5225,8 +5219,8 @@ packages: - r-units license: Apache-2.0 license_family: APACHE - size: 4407203 - timestamp: 1770994555091 + size: 4407677 + timestamp: 1775426575770 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda sha256: 6d0d8d6f1465b3486996edaef7ccd1020cb2fcca1e69b543fc52dbad5262079b md5: c7ce6f26b92398224c78b92c653b94c1 @@ -5317,9 +5311,9 @@ packages: license_family: MIT size: 710089 timestamp: 1772797917239 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.0-r45hc72bb7e_0.conda - sha256: 4a0d862f027c16e389e979428f23e58adcb6d3afcb09c7fcab260b2a837a0470 - md5: 22112bb3d3c60dddb54dd29f5abd9bb9 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.1-r45hc72bb7e_0.conda + sha256: 90fac76a58a897bdbb5ebc8a00d1d13e6c65f93a3de2372d06a049e50fcceaef + md5: 0eeec0b61c93c1146dbd89562821c04f depends: - r-base >=4.5,<4.6.0a0 - r-digest >=0.6.25 @@ -5336,8 +5330,8 @@ packages: - r-withr >=2.1.2 license: MIT license_family: MIT - size: 955905 - timestamp: 1770672624068 + size: 957483 + timestamp: 1774336307654 - conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda sha256: 2dec43dfe7e53140b199872a9faa81f5ee02ad3b3a73b4a0b18ef93d53f3b54a md5: 3867dd1e5cdb9597e15f6853d3419667 @@ -5363,9 +5357,9 @@ packages: license_family: MIT size: 2383796 timestamp: 1770674208770 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_1-r45h1d36251_0.conda - sha256: 5e131bbd042f9ddd70b56a9fad97cf33e4bf2fc64ac398c710420882d4ffae10 - md5: 87f11de95cac304cd241459a637e8a30 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_11-r45h1d36251_0.conda + sha256: dc442d0f75518e2f76b102e48e202bff199c414aaeec158eb3811f617bc41a9a + md5: d03391a37a69abef783b4e8da198cb50 depends: - __glibc >=2.17,<3.0.a0 - geos >=3.14.1,<3.14.2.0a0 @@ -5379,8 +5373,8 @@ packages: - r-rcpp >=1.0_10 license: GPL-3.0-or-later license_family: GPL3 - size: 4565091 - timestamp: 1772997530486 + size: 4571753 + timestamp: 1774814461047 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda sha256: 0b526259e82140c26311dba589e65fd2fdcf3a559f8b07640464c2e5141f6468 md5: be972259c1c9f78d44048aeae38f82ba @@ -5499,16 +5493,16 @@ packages: license_family: GPL3 size: 193829 timestamp: 1769737645751 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.58-r45hc72bb7e_0.conda - sha256: 65949b54c32059e6141b35499b8b574ac484c184aabfab907c6e1733b98cc756 - md5: 119e2b033f2a31aa2b53b490f6fc4c24 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.59-r45hc72bb7e_0.conda + sha256: cabc58da08c6398846a9150447bef28da09ea440e10d4dcf39e46cbb26424848 + md5: 23e96bde077293a06d1f16ca1d33e009 depends: - r-base >=4.5,<4.6.0a0 - r-xfun >=0.5 license: MIT license_family: MIT - size: 153328 - timestamp: 1763537045699 + size: 157337 + timestamp: 1774815071643 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda sha256: eb88a6157ec9a74e2f85d1216f01cd0c02d36a524595cf242677de8cea714ff3 md5: bb80b8d38be888874fd716fdbcd50c80 @@ -5535,9 +5529,9 @@ packages: license_family: MIT size: 555420 timestamp: 1757490039639 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_0-r45h3697838_0.conda - sha256: 8d8fe2da1482f3c7496d0959c05fb67a7db164e674343d01c74c6f417e01399a - md5: d2caba583b30269a834a053307f80a66 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_1-r45h3697838_0.conda + sha256: 1e869c06ef65f068f821c975134b1f554842e23a0a10897d3f4375be4107a766 + md5: 2724fdcf9b2ec679146b972df3f31b2f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5547,8 +5541,8 @@ packages: - r-rcpp license: GPL-2.0-only license_family: GPL2 - size: 470649 - timestamp: 1760026427101 + size: 476969 + timestamp: 1773974259444 - conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda sha256: 3c1ac479352099400b82b866db5a49b6c2f9802451e5ecf42385abaf4db73f4f md5: d8603dd91958a841382fdced991aba9a @@ -5630,9 +5624,9 @@ packages: license_family: MIT size: 10399678 timestamp: 1760099076903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.1-r45h3697838_0.conda - sha256: 25033570039c1a0ff96356fc4f867c268fc299b379a5e4e4f41ba1263cdce162 - md5: f6e3a62834212f3a44fa4a0a97fedcde +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.2-r45h3697838_0.conda + sha256: 36c857e7ca159d01f7bd295d6b09edb716fd5948a44e3d761e24bddbc17bc2e1 + md5: fc66ffed8a4bd9176dd17d2eec7bcca7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5644,8 +5638,8 @@ packages: - r-rlang >=1.0.6 license: MIT license_family: MIT - size: 1393729 - timestamp: 1769235449223 + size: 1393433 + timestamp: 1774123916873 - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda sha256: b9ec9606562f0f6bdefc237bbc6163eb1cb022f9d699c80771bc84af0ae37269 md5: bcadc0a3726e2191e51449f67fa5e0a9 @@ -5668,9 +5662,9 @@ packages: license_family: MIT size: 3724506 timestamp: 1757566751580 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.0-r45h3697838_0.conda - sha256: 71b7da0c90cbcc0430f34a30a38b71c754bc6fa90dbf955438be2db3021c693f - md5: e43318d3f2be7d5adf0c06d79520ac8f +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.1-r45h3697838_0.conda + sha256: c322b1115a9e066505deb292ab38c76ad9d2a983c8269c82e89229dbf6bf5494 + md5: 8e45deb7cb8502dda9073be1a5e664df depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5692,8 +5686,8 @@ packages: - r-withr license: MIT license_family: MIT - size: 935533 - timestamp: 1769540679531 + size: 934319 + timestamp: 1774940641597 - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda sha256: 57eb80cb919524dde77b4c19f257ac9b327aba900e28298d990fa622f30b6f09 md5: 86406bcc46061e27fe7ec24f73eb6676 @@ -5741,9 +5735,9 @@ packages: license_family: MIT size: 1723697 timestamp: 1766049716560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.56-r45h3697838_0.conda - sha256: ed1c5ea8936a6f775ae4331926a5ced5979b40aa2a19cecf95d46fb215a55aed - md5: 1141e09b09648c582b353895bed4b934 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.57-r45h3697838_0.conda + sha256: 29e388ad6532d694f84407f97adb1043ef2d92c25b01affaeed19a6487ad4cba + md5: 5016c4e6a78579e1fd3156d2894b474f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5751,8 +5745,8 @@ packages: - r-base >=4.5,<4.6.0a0 license: MIT license_family: MIT - size: 594506 - timestamp: 1768794446551 + size: 597036 + timestamp: 1774807163423 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda sha256: b8baf74e5bae3bcb8ca66d53595c59251a6fb937df23047dd869056e448bf726 md5: c39ff975e024c2af2b2828e0147239d3 @@ -6126,17 +6120,16 @@ packages: license_family: MOZILLA size: 311150 timestamp: 1772476812121 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 + md5: c2a01a08fc991620a74b32420e97868a depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 + - libzlib 1.3.2 h25fd6f3_2 license: Zlib license_family: Other - size: 92286 - timestamp: 1727963153079 + size: 95931 + timestamp: 1774072620848 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 diff --git a/workflows/sipnet-restart-workflow/92-find-winter-crop.R b/workflows/sipnet-restart-workflow/92-find-winter-crop.R new file mode 100644 index 00000000000..71f6b40bdea --- /dev/null +++ b/workflows/sipnet-restart-workflow/92-find-winter-crop.R @@ -0,0 +1,40 @@ +#!/usr/bin/env Rscript + +config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") + +planting <- list.files( + config[["planting_events_dir"]], + "planting_statewide_.*\\.parquet", + full.names = TRUE +) |> + arrow::open_dataset() |> + dplyr::collect() |> + dplyr::mutate(date = as.Date(.data$date)) |> + tibble::as_tibble() + +planting |> + dplyr::filter(lubridate::month(date) >= 11) |> + dplyr::arrange(date) |> + print(n = 30) + +pid <- "101007" # hay + +pid <- "106453" # hay --> row --> hay +pid <- "10726" # woody +pid <- "154989" # woody --> hay --> row --> hay + +planting_site <- planting |> + dplyr::filter(.data$site_id == .env$pid) +harvest <- list.files( + config[["harvest_events_dir"]], + ".*\\.parquet", + full.names = TRUE +) |> + arrow::open_dataset() |> + dplyr::filter(.data$site_id == .env$pid) |> + dplyr::collect() |> + dplyr::mutate(date = as.Date(.data$date)) |> + dplyr::as_tibble() +events <- dplyr::bind_rows(planting_site, harvest) |> + dplyr::arrange(.data$date) +events From 959ed7b743c2729e5248d5f9c4ebca194aaea0eb Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 16:50:17 -0400 Subject: [PATCH 35/75] better variable list handling in plots --- .../sipnet-restart-workflow/04-plot-outputs.R | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/workflows/sipnet-restart-workflow/04-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R index 2c595b66c9f..eabf14dd56d 100644 --- a/workflows/sipnet-restart-workflow/04-plot-outputs.R +++ b/workflows/sipnet-restart-workflow/04-plot-outputs.R @@ -20,21 +20,28 @@ events_df <- dplyr::bind_rows(events[[1]][["events"]]) |> modeloutdir <- file.path(config$outdir_root, "output", "out") runids <- list.files(modeloutdir) -read_output <- function(modeloutdir, runid) { +vars_some <- c("NEE", "LAI", "AGB", "TotSoilCarb", "leaf_carbon_content", "litter_carbon_content") +vars_more <- c( + "GPP", "NPP", "TotalResp", "AutoResp", "HeteroResp", "SoilResp", "NEE", "AbvGrndWood", + "leaf_carbon_content", "TotLivBiom", "TotSoilCarb", "Qle", "Transp", "SoilMoist", "SoilMoistFrac", + "litter_carbon_content", "LAI", "fine_root_carbon_content", "coarse_root_carbon_content", + "AGB", "GWBI" + # "mineral_N", "soil_organic_N", "litter_N", "N2O_flux", "N_leaching", "N_fixation", "N_uptake", "CH4_flux", "SWE" +) + +read_output <- function(modeloutdir, runid, variables = vars_some) { PEcAn.utils::read.output( runid, file.path(modeloutdir, runid), - variables = c("NEE", "LAI", "AGB", "TotSoilCarb", "leaf_carbon_content", "litter_carbon_content"), - # variables = NULL, + variables = variables, dataframe = TRUE ) |> dplyr::mutate(run_id = .env$runid) |> dplyr::as_tibble() } -results <- purrr::map(runids, read_output, modeloutdir = modeloutdir) |> +results <- purrr::map(runids, read_output, modeloutdir = modeloutdir, variables = vars_more) |> dplyr::bind_rows() - plt <- results |> tidyr::pivot_longer( -c("posix", "year", "run_id"), From f2d384d843e8da3e600eaad6881f24e167d25148 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Thu, 9 Apr 2026 17:28:06 -0400 Subject: [PATCH 36/75] fix start/end handling & interaction with segments --- .../data.land/R/events_to_crop_cycle_starts.R | 1 + .../01-prepare-events.R | 38 +++++++++++-------- .../02-prepare-settings.R | 16 +++++--- workflows/sipnet-restart-workflow/utils.R | 22 +++++------ 4 files changed, 45 insertions(+), 32 deletions(-) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R index c9a64ebd1c4..65dbaed77f1 100644 --- a/modules/data.land/R/events_to_crop_cycle_starts.R +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -48,5 +48,6 @@ find_crop_changes <- function(event_df) { dplyr::mutate(crop_cycle_id = dplyr::consecutive_id(.data$site_id, .data$crop_code)) |> dplyr::group_by(.data$site_id, .data$crop_cycle_id) |> dplyr::slice_min(.data$date) |> + dplyr::ungroup() |> dplyr::select("site_id", "date", "crop_code") } diff --git a/workflows/sipnet-restart-workflow/01-prepare-events.R b/workflows/sipnet-restart-workflow/01-prepare-events.R index e740a3b6a66..7992c51224d 100644 --- a/workflows/sipnet-restart-workflow/01-prepare-events.R +++ b/workflows/sipnet-restart-workflow/01-prepare-events.R @@ -36,6 +36,9 @@ planting <- list.files( dplyr::filter(date >= as.Date("2016-01-01")) |> tibble::as_tibble() +# Start date is the first planting (after 2016) +start_date <- min(planting$date) + planting_events <- planting |> dplyr::select( "site_id", "event_type", "date", @@ -50,31 +53,33 @@ planting_events <- planting |> "coarse_root_n_kg_m2" = "N_COARSEROOT" ) -# Harvest -mslsp_path <- config[["mslsp_path"]] -phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> - arrow::open_dataset() |> - dplyr::filter(.data$parcel_id == .env$pid, !is.na(.data$mslsp_cycle)) |> - dplyr::collect() |> - tibble::as_tibble() |> - dplyr::arrange(.data$year, .data$mslsp_cycle) |> - dplyr::relocate( - "year", "mslsp_cycle", dplyr::starts_with("landiq_"), - ) +# Phenology is not currently used... +# mslsp_path <- config[["mslsp_path"]] +# phenology <- fs::dir_ls(mslsp_path, glob = "*.parquet") |> +# arrow::open_dataset() |> +# dplyr::filter(.data$parcel_id == .env$pid, !is.na(.data$mslsp_cycle)) |> +# dplyr::collect() |> +# tibble::as_tibble() |> +# dplyr::arrange(.data$year, .data$mslsp_cycle) |> +# dplyr::relocate( +# "year", "mslsp_cycle", dplyr::starts_with("landiq_"), +# ) -# Dummy values for testing harvest_dir <- config[["harvest_events_dir"]] pidc <- as.character(pid) harvest_events <- list.files(harvest_dir, "*.parquet", full.names = TRUE) |> arrow::open_dataset() |> - dplyr::filter(.data$site_id == .env$pidc) |> + dplyr::filter( + .data$site_id == .env$pidc, + .data$date >= .env$start_date + ) |> dplyr::collect() |> tibble::as_tibble() |> dplyr::select( "site_id", "event_type", "date", dplyr::starts_with("frac_") ) -start_date <- min(planting$date) +# End with the final harvest end_date <- max(harvest_events$date) irrigation_path <- config[["irrigation_path"]] @@ -87,7 +92,10 @@ irrigation_events_raw <- arrow::open_dataset(irrigation_path) |> # Irrigation events include uncertainty ensembles, so we process them # accordingly. irrigation_events_all <- irrigation_events_raw |> - dplyr::filter(.data$date <= .env$end_date) |> + dplyr::filter( + .data$date >= .env$start_date, + .data$date <= .env$end_date + ) |> dplyr::mutate( event_type = "irrigation", site_id = as.character(.data$parcel_id) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index b7854c97487..bda1b93c49b 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -28,16 +28,22 @@ names(events_json_files) <- paste0("path", seq_along(events_json_files)) sipnet_eventfiles <- as.list(grepv(".*\\.sipnet/events-.*\\.in", events_files)) names(sipnet_eventfiles) <- paste0("path", seq_along(sipnet_eventfiles)) -# HACK: Get the start and end date from the limits of the first event file. +# NOTE: We start from the first planting (after 2016) and end at the last harvest events <- jsonlite::read_json(events_json_files[[1]], simplifyVector = FALSE) -all_dates <- events |> - purrr::pluck(1, "events") |> +planting_dates <- events |> + purrr::chuck(1, "events") |> + purrr::keep(\(x) x$event_type == "planting") |> purrr::map_chr("date") |> as.Date() +start_date <- min(planting_dates) -start_date <- min(all_dates) -end_date <- max(all_dates) +harvest_dates <- events |> + purrr::pluck(1, "events") |> + purrr::keep(\(x) x$event_type == "harvest") |> + purrr::map_chr("date") |> + as.Date() +end_date <- max(harvest_dates) met_dir <- sprintf( "%sN_%sW", diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index f39b07bb3f9..f29cc4eaa07 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -75,21 +75,19 @@ run_sipnet_segmented <- function( crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts( run_settings$run$inputs$events$source - ) + ) |> + dplyr::ungroup() # Get segments - segments <- data.frame( - start_date = c(as.Date(run_settings$run$start.date), crop_cycles[["date"]]), - end_date = c(crop_cycles[["date"]] - 1, as.Date(run_settings$run$end.date)), - crop_code = c(NA_character_, crop_cycles[["crop_code"]]) - ) - segments[["pft"]] <- crop2pft(segments[["crop_code"]]) - segments[["segment_id"]] <- sprintf("%03d", seq_len(nrow(segments))) segment_rootdir <- file.path(file.path(run_dir, "segments")) - segments[["segment_dir"]] <- file.path( - segment_rootdir, - sprintf("segment_%s", segments[["segment_id"]]) - ) + segments <- crop_cycles |> + dplyr::rename(start_date = "date") |> + dplyr::mutate( + end_date = dplyr::lead(.data$start_date - 1, default = as.Date(run_settings$run$end.date)), + pft = crop2pft(.data$crop_code), + segment_id = sprintf("%03d", dplyr::row_number()), + segment_dir = file.path(segment_rootdir, sprintf("segment_%s", .data$segment_id)) + ) for (isegment in seq_len(nrow(segments))) { segment <- segments[isegment, ] From 9a378cbede656a3b31fef284f92d328bb2518e34 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 10 Apr 2026 12:58:05 -0400 Subject: [PATCH 37/75] simplify crew config --- workflows/sipnet-restart-workflow/03-run-sipnet.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index 066e78c1f3a..066f469c76e 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -21,7 +21,7 @@ controller <- crew::crew_controller_local(workers = nworkers) crew_results <- controller$map( command = do_run_sipnet_segmented(irun), iterate = list(irun = seq_len(config[["n_ensemble"]])), - data = list(settings = settings, do_run_sipnet_segmented = do_run_sipnet_segmented) + data = list(do_run_sipnet_segmented = do_run_sipnet_segmented) ) # Or, to run sequentially: From 67b10394fc65617958b65359e1a189341ff0d491 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 10 Apr 2026 16:47:07 -0400 Subject: [PATCH 38/75] add `combine_sipnet_out`; document new split funcs --- models/sipnet/NAMESPACE | 2 +- models/sipnet/R/combine_sipnet_out.R | 30 ++++++++++++++ models/sipnet/R/model2netcdf.SIPNET.R | 33 +--------------- models/sipnet/R/read_sipnet_out.R | 40 +++++++++++++++++++ models/sipnet/R/split_inputs.SIPNET.R | 50 ++++++++++++++++-------- models/sipnet/man/combine_sipnet_out.Rd | 24 ++++++++++++ models/sipnet/man/read_restart.SIPNET.Rd | 13 ------ models/sipnet/man/read_sipnet_out.Rd | 17 ++++++++ models/sipnet/man/split_inputs.SIPNET.Rd | 26 +++++++----- models/sipnet/man/split_sipnet_events.Rd | 28 +++++++++++++ models/sipnet/man/split_sipnet_met.Rd | 28 +++++++++++++ 11 files changed, 220 insertions(+), 71 deletions(-) create mode 100644 models/sipnet/R/combine_sipnet_out.R create mode 100644 models/sipnet/R/read_sipnet_out.R create mode 100644 models/sipnet/man/combine_sipnet_out.Rd create mode 100644 models/sipnet/man/read_sipnet_out.Rd create mode 100644 models/sipnet/man/split_sipnet_events.Rd create mode 100644 models/sipnet/man/split_sipnet_met.Rd diff --git a/models/sipnet/NAMESPACE b/models/sipnet/NAMESPACE index efa0bc19570..f9f6ca518e8 100644 --- a/models/sipnet/NAMESPACE +++ b/models/sipnet/NAMESPACE @@ -1,5 +1,6 @@ # Generated by roxygen2: do not edit by hand +export(combine_sipnet_out) export(mergeNC) export(met2model.SIPNET) export(model2netcdf.SIPNET) @@ -13,4 +14,3 @@ export(write.events.SIPNET) export(write_restart.SIPNET) importFrom(dplyr,"%>%") importFrom(rlang,"%||%") -importFrom(rlang,.data) diff --git a/models/sipnet/R/combine_sipnet_out.R b/models/sipnet/R/combine_sipnet_out.R new file mode 100644 index 00000000000..5093c25d8de --- /dev/null +++ b/models/sipnet/R/combine_sipnet_out.R @@ -0,0 +1,30 @@ +#!/usr/bin/env Rscript + +#' Combine a bunch of `sipnet.out` files into a single file +#' +#' @param directory Parent directory to search for `sipnet.out` files. You must +#' provide either this or an explicit vector of `files`. +#' @param outfile File to which combined `sipnet.out` will be written +#' @param files (optional) Explicit vector of paths to `sipnet.out` files to +#' combine. Note that files need not be named `sipnet.out`, but they must be +#' readable with [read_sipnet_out()]. +#' +#' @return `outfile` (path to output file), invisibly +#' @export +combine_sipnet_out <- function(directory, outfile, files = NULL) { + if (missing(directory) && is.null(files)) { + PEcAn.logger::logger.severe("Must provide either `directory` or `files`") + } + if (is.null(files)) { + files <- sort(list.files(directory, "sipnet\\.out", full.names = TRUE, recursive = TRUE)) + } + if (!(length(files) > 0)) { + PEcAn.logger::logger.severe("No files provided; nothing to combine.") + } + flist <- lapply(files, read_sipnet_out) + combined <- do.call(rbind.data.frame, flist) + # Mimic the SIPNET fixed-width right-aligned format + combined_fwf <- format(combined, justify = "right") + write.table(combined_fwf, outfile, row.names = FALSE, col.names = TRUE, quote = FALSE, sep = " ") + invisible(outfile) +} diff --git a/models/sipnet/R/model2netcdf.SIPNET.R b/models/sipnet/R/model2netcdf.SIPNET.R index b7793b4f2b7..2353f3500c6 100644 --- a/models/sipnet/R/model2netcdf.SIPNET.R +++ b/models/sipnet/R/model2netcdf.SIPNET.R @@ -60,38 +60,7 @@ model2netcdf.SIPNET <- function(outdir, sitelat, sitelon, start_date, end_date, overwrite = FALSE, conflict = FALSE) { ### Read in model output in SIPNET format sipnet_out_file <- file.path(outdir, prefix) - # SIPNET v1 had a "Notes" comment line before the header; v2 removed it. - # if the first line starts with "year", there is no Notes line. - first_line <- readLines(sipnet_out_file, n = 1) - skip_n <- if (grepl("^year", first_line)) 0 else 1 - # Temporary workaround until - # https://github.com/PecanProject/sipnet/issues/304 is resolved. - sipnet_output <- tryCatch({ - utils::read.table(sipnet_out_file, header = TRUE, skip = skip_n, sep = "") - }, error = function(err) { - PEcAn.logger::logger.warn( - "Failed to read using `read.table`. ", - "Trying to parse output manually." - ) - raw_lines <- readLines(sipnet_out_file) - raw_header <- raw_lines[[1 + skip_n]] - raw_body <- tail(raw_lines, -(1 + skip_n)) - # SIPNET output is right-aligned with the column names in the header. - # We use this to figure out where the numbers end if there are no spaces. - token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) - proc_header <- regmatches(raw_header, token_matches)[[1]] - col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 - col_starts <- c(1, head(col_ends, -1) + 1) - col_widths <- col_ends - col_starts + 1 - result <- read.fwf( - textConnection(raw_body), - widths = col_widths, - col.names = proc_header, - na.strings = c("nan", "-nan") - ) - result[] <- lapply(result, as.numeric) - result - }) + sipnet_output <- read_sipnet_out(sipnet_output) #sipnet_output_dims <- dim(sipnet_output) ### Determine number of years and output timestep diff --git a/models/sipnet/R/read_sipnet_out.R b/models/sipnet/R/read_sipnet_out.R new file mode 100644 index 00000000000..810a0d68b5b --- /dev/null +++ b/models/sipnet/R/read_sipnet_out.R @@ -0,0 +1,40 @@ +#' Read `sipnet.out` file to `data.frame` +#' +#' @param sipnet_out_file Path to `sipnet.out` file +#' +#' @return `data.frame` of SIPNET output +read_sipnet_out <- function(sipnet_out_file) { + # SIPNET v1 had a "Notes" comment line before the header; v2 removed it. + # if the first line starts with "year", there is no Notes line. + first_line <- readLines(sipnet_out_file, n = 1) + skip_n <- if (grepl("^year", first_line)) 0 else 1 + # Temporary workaround until + # https://github.com/PecanProject/sipnet/issues/304 is resolved. + sipnet_output <- tryCatch({ + utils::read.table(sipnet_out_file, header = TRUE, skip = skip_n, sep = "") + }, error = function(err) { + PEcAn.logger::logger.warn( + "Failed to read using `read.table`. ", + "Trying to parse output manually." + ) + raw_lines <- readLines(sipnet_out_file) + raw_header <- raw_lines[[1 + skip_n]] + raw_body <- tail(raw_lines, -(1 + skip_n)) + # SIPNET output is right-aligned with the column names in the header. + # We use this to figure out where the numbers end if there are no spaces. + token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) + proc_header <- regmatches(raw_header, token_matches)[[1]] + col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 + col_starts <- c(1, head(col_ends, -1) + 1) + col_widths <- col_ends - col_starts + 1 + result <- read.fwf( + textConnection(raw_body), + widths = col_widths, + col.names = proc_header, + na.strings = c("nan", "-nan") + ) + result[] <- lapply(result, as.numeric) + result + }) + sipnet_output +} diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 407cc48b61b..9dc9f5be3ad 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -1,5 +1,25 @@ #!/usr/bin/env Rscript +#' Split SIPNET inputs into multiple files based on start and end time +#' +#' Subset each SIPNET input file and write a new file containing values `>= +#' start.time` and `<= end.time` (note: `end.time` is inclusive!) +#' +#' NOTE that sipnet met files contain dates _and_ times, while sipnet event +#' files contain only dates. Comparing a datetime to a date will coerce the +#' date to midnight UTC. +#' +#' @param start.time Start date or datetime for splitting +#' @param stop.time End date or datetime for splitting +#' @param inputs Named `inputs` list as provided by PEcAn `settings`. Must have +#' structure like: +#' `list(met = list(path = "path/to/sipnet.clim"), events = list(path = "path/to/events.in"), ...)` +#' +#' @inheritParams split_sipnet_met +#' @author Alexey Shiklomanov +#' +#' @return Modified `inputs` list with all `path` entries replaced with new +#' paths (suitable for inserting back into `settings$run$inputs`). #' @export split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE, outpath = NULL) { result <- inputs @@ -25,11 +45,12 @@ split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE result } +#' Split sipnet `events.in` files according to start and stop date +#' +#' @param eventfile Path to `events.in` file. +#' @inheritParams split_inputs.SIPNET split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FALSE, outpath = FALSE) { # Read events.in - # eventfile <- sipnet_eventfile - # start.time <- dstart - # stop.time <- dend prefix <- sub(".in", "", basename(eventfile), fixed = TRUE) outpath <- outpath %||% dirname(eventfile) dir.create(outpath, recursive = TRUE, showWarnings = FALSE) @@ -58,7 +79,7 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA doys_in <- vapply(events_in_list, \(x) as.integer(x[[2]]), integer(1)) # Not using sipnet2datetime here because it returns times with time zones, # which could cause subtle timezone-related bugs - dates_in <- as.Date(sprintf("%d-01-01", years_in)) + doys_in + dates_in <- as.Date(sprintf("%d-01-01", years_in)) + (doys_in - 1) idx_keep <- (dates_in >= start.time) & (dates_in <= stop.time) if (length(idx_keep) == 0) { PEcAn.logger::logger.warn("No events to keep, so `events.in` will be empty") @@ -68,20 +89,17 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA invisible(outfile) } -## split clim file into smaller time units to use in KF -##' @author Mike Dietze and Ann Raiho -##' +##' split sipnet clim file based on start and end time +##' +##' @author Mike Dietze, Ann Raiho, Alexey Shiklomanov +##' ##' @param start.time start date and time for each SDA ensemble ##' @param stop.time stop date and time for each SDA ensemble -##' @param inputs list of model inputs to use in write.configs.SIPNET -##' @param overwrite Default FALSE -##' @param outpath if specified, write output to a new directory. Default NULL writes back to the directory being read -##' @description Splits climate met for SIPNET -##' -##' @return file split up climate file -##' @importFrom rlang .data -##' @importFrom dplyr %>% -##' @export +##' @param met path to sipnet clim file to be split +##' @param overwrite if `TRUE`, overwrite existing target file (Default `FALSE`) +##' @param outpath if specified, write output to a new directory. Default `NULL` writes back to the directory being read +##' +##' @return path to split up climate file split_sipnet_met <- function(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) { start.time <- coerce_to_datetime(start.time) stop.time <- coerce_to_datetime(stop.time) diff --git a/models/sipnet/man/combine_sipnet_out.Rd b/models/sipnet/man/combine_sipnet_out.Rd new file mode 100644 index 00000000000..4fedd52cded --- /dev/null +++ b/models/sipnet/man/combine_sipnet_out.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/combine_sipnet_out.R +\name{combine_sipnet_out} +\alias{combine_sipnet_out} +\title{Combine a bunch of \code{sipnet.out} files into a single file} +\usage{ +combine_sipnet_out(directory, outfile, files = NULL) +} +\arguments{ +\item{directory}{Parent directory to search for \code{sipnet.out} files. You must +provide either this or an explicit vector of \code{files}.} + +\item{outfile}{File to which combined \code{sipnet.out} will be written} + +\item{files}{(optional) Explicit vector of paths to \code{sipnet.out} files to +combine. Note that files need not be named \code{sipnet.out}, but they must be +readable with \code{\link[=read_sipnet_out]{read_sipnet_out()}}.} +} +\value{ +\code{outfile} (path to output file), invisibly +} +\description{ +Combine a bunch of \code{sipnet.out} files into a single file +} diff --git a/models/sipnet/man/read_restart.SIPNET.Rd b/models/sipnet/man/read_restart.SIPNET.Rd index 7bb8f4553e6..6bbc4d07fdb 100644 --- a/models/sipnet/man/read_restart.SIPNET.Rd +++ b/models/sipnet/man/read_restart.SIPNET.Rd @@ -6,19 +6,6 @@ \usage{ read_restart.SIPNET(outdir, runid, stop.time, settings, var.names, params) } -\arguments{ -\item{outdir}{Output directory} - -\item{runid}{Run ID} - -\item{stop.time}{Year that is being read} - -\item{settings}{PEcAn settings object} - -\item{var.names}{Variable names to be extracted} - -\item{params}{Any parameters required for state calculations} -} \value{ X.vec vector of forecasts } diff --git a/models/sipnet/man/read_sipnet_out.Rd b/models/sipnet/man/read_sipnet_out.Rd new file mode 100644 index 00000000000..be533af4c89 --- /dev/null +++ b/models/sipnet/man/read_sipnet_out.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/read_sipnet_out.R +\name{read_sipnet_out} +\alias{read_sipnet_out} +\title{Read \code{sipnet.out} file to \code{data.frame}} +\usage{ +read_sipnet_out(sipnet_out_file) +} +\arguments{ +\item{sipnet_out_file}{Path to \code{sipnet.out} file} +} +\value{ +\code{data.frame} of SIPNET output +} +\description{ +Read \code{sipnet.out} file to \code{data.frame} +} diff --git a/models/sipnet/man/split_inputs.SIPNET.Rd b/models/sipnet/man/split_inputs.SIPNET.Rd index 96fc565c94d..80fe14fa63a 100644 --- a/models/sipnet/man/split_inputs.SIPNET.Rd +++ b/models/sipnet/man/split_inputs.SIPNET.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/split_inputs.SIPNET.R \name{split_inputs.SIPNET} \alias{split_inputs.SIPNET} -\title{split_inputs.SIPNET} +\title{Split SIPNET inputs into multiple files based on start and end time} \usage{ split_inputs.SIPNET( start.time, @@ -13,22 +13,30 @@ split_inputs.SIPNET( ) } \arguments{ -\item{start.time}{start date and time for each SDA ensemble} +\item{start.time}{Start date or datetime for splitting} -\item{stop.time}{stop date and time for each SDA ensemble} +\item{stop.time}{End date or datetime for splitting} -\item{inputs}{list of model inputs to use in write.configs.SIPNET} +\item{inputs}{Named \code{inputs} list as provided by PEcAn \code{settings}. Must have +structure like: +\code{list(met = list(path = "path/to/sipnet.clim"), events = list(path = "path/to/events.in"), ...)}} -\item{overwrite}{Default FALSE} +\item{overwrite}{if \code{TRUE}, overwrite existing target file (Default \code{FALSE})} -\item{outpath}{if specified, write output to a new directory. Default NULL writes back to the directory being read} +\item{outpath}{if specified, write output to a new directory. Default \code{NULL} writes back to the directory being read} } \value{ -file split up climate file +Modified \code{inputs} list with all \code{path} entries replaced with new +paths (suitable for inserting back into \code{settings$run$inputs}). } \description{ -Splits climate met for SIPNET +Subset each SIPNET input file and write a new file containing values \verb{>= start.time} and \verb{<= end.time} (note: \code{end.time} is inclusive!) +} +\details{ +NOTE that sipnet met files contain dates \emph{and} times, while sipnet event +files contain only dates. Comparing a datetime to a date will coerce the +date to midnight UTC. } \author{ -Mike Dietze and Ann Raiho +Alexey Shiklomanov } diff --git a/models/sipnet/man/split_sipnet_events.Rd b/models/sipnet/man/split_sipnet_events.Rd new file mode 100644 index 00000000000..6bb609546f2 --- /dev/null +++ b/models/sipnet/man/split_sipnet_events.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/split_inputs.SIPNET.R +\name{split_sipnet_events} +\alias{split_sipnet_events} +\title{Split sipnet \code{events.in} files according to start and stop date} +\usage{ +split_sipnet_events( + start.time, + stop.time, + eventfile, + overwrite = FALSE, + outpath = FALSE +) +} +\arguments{ +\item{start.time}{Start date or datetime for splitting} + +\item{stop.time}{End date or datetime for splitting} + +\item{eventfile}{Path to \code{events.in} file.} + +\item{overwrite}{if \code{TRUE}, overwrite existing target file (Default \code{FALSE})} + +\item{outpath}{if specified, write output to a new directory. Default \code{NULL} writes back to the directory being read} +} +\description{ +Split sipnet \code{events.in} files according to start and stop date +} diff --git a/models/sipnet/man/split_sipnet_met.Rd b/models/sipnet/man/split_sipnet_met.Rd new file mode 100644 index 00000000000..2d714d75f51 --- /dev/null +++ b/models/sipnet/man/split_sipnet_met.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/split_inputs.SIPNET.R +\name{split_sipnet_met} +\alias{split_sipnet_met} +\title{split sipnet clim file based on start and end time} +\usage{ +split_sipnet_met(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) +} +\arguments{ +\item{start.time}{start date and time for each SDA ensemble} + +\item{stop.time}{stop date and time for each SDA ensemble} + +\item{met}{path to sipnet clim file to be split} + +\item{overwrite}{if \code{TRUE}, overwrite existing target file (Default \code{FALSE})} + +\item{outpath}{if specified, write output to a new directory. Default \code{NULL} writes back to the directory being read} +} +\value{ +path to split up climate file +} +\description{ +split sipnet clim file based on start and end time +} +\author{ +Mike Dietze, Ann Raiho, Alexey Shiklomanov +} From df8f712c9d1886a7b55c4f83c3b3b76353b669e4 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 10 Apr 2026 17:17:45 -0400 Subject: [PATCH 39/75] write new job.sh instead of actually doing runs --- .../sipnet-restart-workflow/03-run-sipnet.R | 25 ++---- workflows/sipnet-restart-workflow/utils.R | 76 ++++++++++--------- 2 files changed, 49 insertions(+), 52 deletions(-) diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index 066f469c76e..376b4e1b41b 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -7,22 +7,13 @@ if (FALSE) { config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") -do_run_sipnet_segmented <- function(irun) { - source("workflows/sipnet-restart-workflow/utils.R", local = TRUE) - config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") - settings <- PEcAn.settings::read.settings(file.path(config[["outdir_root"]], "settings.xml")) - inputs_runs <- read.csv(file.path(settings$outdir, "inputs_runs.csv")) - run_sipnet_segmented(settings, inputs_runs[irun, ]) # nolint -} +settings <- PEcAn.settings::read.settings(file.path(config[["outdir_root"]], "settings.xml")) +inputs_runs <- read.csv(file.path(settings$outdir, "inputs_runs.csv")) + +source("workflows/sipnet-restart-workflow/utils.R") -# Run in parallel using crew -nworkers <- pmin(config[["n_ensemble"]], parallel::detectCores()) -controller <- crew::crew_controller_local(workers = nworkers) -crew_results <- controller$map( - command = do_run_sipnet_segmented(irun), - iterate = list(irun = seq_len(config[["n_ensemble"]])), - data = list(do_run_sipnet_segmented = do_run_sipnet_segmented) -) +for (i in seq_len(nrow(inputs_runs))) { + run_sipnet_segmented(settings, inputs_runs[i, ], replace_and_link = TRUE) +} -# Or, to run sequentially: -# for (i in seq_len(config[["n_ensemble"]])) do_run_sipnet_segmented(i) # nolint +PEcAn.workflow::runModule_start_model_runs(settings) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index f29cc4eaa07..0a9d7561ad3 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -58,7 +58,8 @@ crop2pft_example <- function(crop_code) { run_sipnet_segmented <- function( settings, run_row, - crop2pft = crop2pft_example + crop2pft = crop2pft_example, + replace_and_link = FALSE ) { run_id <- run_row[["run_id"]] run_dir <- file.path(settings$rundir, run_id) @@ -89,6 +90,8 @@ run_sipnet_segmented <- function( segment_dir = file.path(segment_rootdir, sprintf("segment_%s", .data$segment_id)) ) + jobsh_files <- character() + for (isegment in seq_len(nrow(segments))) { segment <- segments[isegment, ] dstart <- segment[["start_date"]] @@ -156,42 +159,45 @@ run_sipnet_segmented <- function( run.id = runid_dummy ) - PEcAn.workflow::start_model_runs(segment_settings, write = FALSE) + segment_jobsh <- file.path(segment_settings$rundir, runid_dummy, "job.sh") + stopifnot(file.exists(segment_jobsh)) + jobsh_files <- c(jobsh_files, segment_jobsh) + } - PEcAn.SIPNET::model2netcdf.SIPNET( - outdir = segment_outdir_withid, - sitelat = segment_settings[[c("run", "site", "lat")]], - sitelon = segment_settings[[c("run", "site", "lon")]], - start_date = dstart, - end_date = dend, - revision = segment_settings[[c("model", "revision")]], - overwrite = TRUE + # Now, get the run's jobsh file + run_jobsh <- file.path(run_dir, "job.sh") + target_sipnet_out <- file.path(run_modeloutdir, "sipnet.out") + segmented_jobsh_file <- file.path(run_dir, "job_segmented.sh") + segmented_jobsh_lines <- c( + "#!/usr/bin/env bash", + "", + "# Redirect output", + "exec 3>&1", + paste("exec &>", shQuote(file.path(run_modeloutdir, "logfile.txt"))), + "", + "# Run model segments", + paste("bash", jobsh_files), + "", + "# Concatenate sipnet out files", + sprintf( + "Rscript -e \"PEcAn.SIPNET::combine_sipnet_out(directory = %s, outfile = %s)\"", + shQuote(segment_rootdir), + shQuote(target_sipnet_out) ) + ) + writeLines(segmented_jobsh_lines, segmented_jobsh_file) + if (replace_and_link) { + run_jobsh_backup <- file.path(run_dir, "job_original.sh") + file.rename(run_jobsh, run_jobsh_backup) + file.symlink(segmented_jobsh_file, run_jobsh) + Sys.chmod(run_jobsh, mode = "0755") } + invisible(segmented_jobsh_file) +} - # Get the list of all segment output NetCDFs - segment_ncfiles <- lapply( - segments[["segment_dir"]], - \(x) { - list.files( - file.path(x, "out", "1"), - pattern = "\\d+\\.nc", - full.names = TRUE - ) - } - ) |> - do.call(what = c) - - # ...and concatenate them together into annual NetCDFs. - segment_files_byyear <- split( - segment_ncfiles, - factor(basename(segment_ncfiles)) - ) - segment_outfiles <- file.path(run_modeloutdir, names(segment_files_byyear)) - results <- purrr::map2( - segment_files_byyear, - segment_outfiles, - PEcAn.SIPNET::mergeNC - ) - results +if (FALSE) { + for (fname in jobsh_files) { + print(fname) + system2("bash", fname) + } } From b7fac24f7cc5cbca6aa3043e6c7bb9c54b93a975 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 10 Apr 2026 17:54:03 -0400 Subject: [PATCH 40/75] bugfix model2netcdf.sipnet --- models/sipnet/R/model2netcdf.SIPNET.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/sipnet/R/model2netcdf.SIPNET.R b/models/sipnet/R/model2netcdf.SIPNET.R index 2353f3500c6..57c99878a52 100644 --- a/models/sipnet/R/model2netcdf.SIPNET.R +++ b/models/sipnet/R/model2netcdf.SIPNET.R @@ -60,7 +60,7 @@ model2netcdf.SIPNET <- function(outdir, sitelat, sitelon, start_date, end_date, overwrite = FALSE, conflict = FALSE) { ### Read in model output in SIPNET format sipnet_out_file <- file.path(outdir, prefix) - sipnet_output <- read_sipnet_out(sipnet_output) + sipnet_output <- read_sipnet_out(sipnet_out_file) #sipnet_output_dims <- dim(sipnet_output) ### Determine number of years and output timestep From 546ee44fc6f8eadcdde29e64d072870ae2b4668d Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 10 Apr 2026 17:54:26 -0400 Subject: [PATCH 41/75] complete more pecanic workflow --- .../02-prepare-settings.R | 19 +------- .../sipnet-restart-workflow/03-run-sipnet.R | 19 +++++--- workflows/sipnet-restart-workflow/utils.R | 46 +++++++++++++++---- 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index bda1b93c49b..7910b9695d0 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -138,21 +138,4 @@ settings_raw <- PEcAn.settings::as.Settings(list( unlink(settings_raw$outdir, recursive = TRUE) dir.create(settings_raw$outdir, recursive = TRUE, showWarnings = FALSE) -# Get parameter samples for all relevant PFTs -sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( - settings_raw, - settings_raw$ensemble$size -) - -settings <- PEcAn.workflow::runModule.run.write.configs( - settings_raw, - input_design = sens_design$X -) - -inputs_runs <- file.path(settings$outdir, "runs_manifest.csv") |> - read.csv() |> - cbind(sens_design[["X"]]) - -write.csv(inputs_runs, file = file.path(settings$outdir, "inputs_runs.csv")) - -PEcAn.settings::write.settings(settings, "settings.xml", outdir_root) +PEcAn.settings::write.settings(settings_raw, "settings.xml", outdir_root) diff --git a/workflows/sipnet-restart-workflow/03-run-sipnet.R b/workflows/sipnet-restart-workflow/03-run-sipnet.R index 376b4e1b41b..534ad4512f2 100644 --- a/workflows/sipnet-restart-workflow/03-run-sipnet.R +++ b/workflows/sipnet-restart-workflow/03-run-sipnet.R @@ -7,13 +7,20 @@ if (FALSE) { config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") -settings <- PEcAn.settings::read.settings(file.path(config[["outdir_root"]], "settings.xml")) -inputs_runs <- read.csv(file.path(settings$outdir, "inputs_runs.csv")) +settings_raw <- PEcAn.settings::read.settings(file.path(config[["outdir_root"]], "settings.xml")) -source("workflows/sipnet-restart-workflow/utils.R") +sens_design <- PEcAn.uncertainty::generate_joint_ensemble_design( + settings_raw, + settings_raw$ensemble$size +) +write.csv(sens_design$X, file.path(settings_raw$outdir, "input_design.csv")) -for (i in seq_len(nrow(inputs_runs))) { - run_sipnet_segmented(settings, inputs_runs[i, ], replace_and_link = TRUE) -} +settings <- PEcAn.workflow::runModule.run.write.configs( + settings_raw, + input_design = sens_design$X +) + +source("workflows/sipnet-restart-workflow/utils.R") +jobfiles <- write_segmented_configs.SIPNET(settings, sens_design$X) PEcAn.workflow::runModule_start_model_runs(settings) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index 0a9d7561ad3..8e43e8d4f9f 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -55,11 +55,29 @@ crop2pft_example <- function(crop_code) { ) } -run_sipnet_segmented <- function( +write_segmented_configs.SIPNET <- function(settings, input_design = NULL, ...) { + manifest_file <- file.path(settings$outdir, "runs_manifest.csv") + if (!file.exists(manifest_file)) { + PEcAn.logger::logger.severe("Could not find manifest file: ", manifest_file) + } + inputs_runs <- read.csv(manifest_file) + if (!is.null(input_design)) { + inputs_runs <- cbind.data.frame(inputs_runs, input_design) + } + + new_jobfiles <- character() + + for (i in seq_along(nrow(inputs_runs))) { + new_jobfiles[[i]] <- write_segment_configs(settings, inputs_runs[i, ], ...) + } + invisible(new_jobfiles) +} + +write_segment_configs <- function( settings, run_row, crop2pft = crop2pft_example, - replace_and_link = FALSE + replace_and_link = TRUE ) { run_id <- run_row[["run_id"]] run_dir <- file.path(settings$rundir, run_id) @@ -72,7 +90,8 @@ run_sipnet_segmented <- function( ) stopifnot(file.exists(ens_samples_file)) ensemble_samples <- PEcAn.utils::load_local(ens_samples_file)[["ens.samples"]] - run_traits <- lapply(ensemble_samples, \(dat) dat[run_row[["param"]], ]) + i_param <- run_row[["param"]] %||% 1 + run_traits <- lapply(ensemble_samples, \(dat) dat[i_param, ]) crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts( run_settings$run$inputs$events$source @@ -183,6 +202,20 @@ run_sipnet_segmented <- function( "Rscript -e \"PEcAn.SIPNET::combine_sipnet_out(directory = %s, outfile = %s)\"", shQuote(segment_rootdir), shQuote(target_sipnet_out) + ), + "", + "# Convert output to PEcAn standard", + sprintf( + "Rscript -e \"PEcAn.SIPNET::model2netcdf.SIPNET(%s)\"", + paste( + sprintf("outdir = %s", shQuote(run_modeloutdir)), + sprintf("sitelat = %s", as.character(settings$run$site$lat)), + sprintf("sitelon = %s", as.character(settings$run$site$lon)), + sprintf("start_date = %s", shQuote(settings$run$start.date)), + sprintf("end_date = %s", shQuote(settings$run$end.date)), + sprintf("revision = %s", shQuote(settings$model$revision)), + sep = ", " + ) ) ) writeLines(segmented_jobsh_lines, segmented_jobsh_file) @@ -194,10 +227,3 @@ run_sipnet_segmented <- function( } invisible(segmented_jobsh_file) } - -if (FALSE) { - for (fname in jobsh_files) { - print(fname) - system2("bash", fname) - } -} From c0317a45680eb7905898de922af471ea41299cd5 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sat, 11 Apr 2026 08:22:31 -0400 Subject: [PATCH 42/75] grepv --> grep(..., values = TRUE) Co-authored-by: Akash B V --- workflows/sipnet-restart-workflow/02-prepare-settings.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index 7910b9695d0..73c1fd5f8b3 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -23,9 +23,9 @@ site_lon <- dp_data[["lon"]] events_dir <- file.path(outdir_root, "events") events_files <- list.files(events_dir, recursive = TRUE, full.names = TRUE) -events_json_files <- as.list(grepv(".*\\.json$", events_files)) +events_json_files <- as.list(grep(".*\\.json$", events_files, value = TRUE)) names(events_json_files) <- paste0("path", seq_along(events_json_files)) -sipnet_eventfiles <- as.list(grepv(".*\\.sipnet/events-.*\\.in", events_files)) +sipnet_eventfiles <- as.list(grep(".*\\.sipnet/events-.*\\.in", events_files, value = TRUE)) names(sipnet_eventfiles) <- paste0("path", seq_along(sipnet_eventfiles)) # NOTE: We start from the first planting (after 2016) and end at the last harvest From 390e5d88f78a69b349fdc939c3f926f557832c2d Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sat, 11 Apr 2026 08:23:07 -0400 Subject: [PATCH 43/75] bugfix: seq_along --> seq_len Co-authored-by: Akash B V --- workflows/sipnet-restart-workflow/utils.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index 8e43e8d4f9f..9e16b4b3037 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -67,7 +67,7 @@ write_segmented_configs.SIPNET <- function(settings, input_design = NULL, ...) { new_jobfiles <- character() - for (i in seq_along(nrow(inputs_runs))) { + for (i in seq_len(nrow(inputs_runs))) { new_jobfiles[[i]] <- write_segment_configs(settings, inputs_runs[i, ], ...) } invisible(new_jobfiles) From ea4ca660d906739b9662e3bf0863d12de7357421 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Sat, 11 Apr 2026 08:35:06 -0400 Subject: [PATCH 44/75] typo extra file.path Co-authored-by: Akash B V --- workflows/sipnet-restart-workflow/utils.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index 9e16b4b3037..00c30d2cb79 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -99,7 +99,7 @@ write_segment_configs <- function( dplyr::ungroup() # Get segments - segment_rootdir <- file.path(file.path(run_dir, "segments")) + segment_rootdir <- file.path(run_dir, "segments") segments <- crop_cycles |> dplyr::rename(start_date = "date") |> dplyr::mutate( From dc4e8bbbefe15dba9495c31b10c4c60382b48c75 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 09:28:14 -0400 Subject: [PATCH 45/75] More robust segment logic Allows for run start.date to be earlier than the first planting (in which case, add a "spin-up" segment), or after the first planting (in which case, clip the segments accordingly). --- workflows/sipnet-restart-workflow/utils.R | 65 +++++++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index 00c30d2cb79..c07a80fb8ff 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -73,6 +73,58 @@ write_segmented_configs.SIPNET <- function(settings, input_design = NULL, ...) { invisible(new_jobfiles) } +segment_dataframe <- function(run_settings) { + events_json <- run_settings$run$inputs$events$source + stopifnot(file.exists(events_json)) + + crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts(events_json) |> + dplyr::ungroup() + + run_start <- as.Date(run_settings$run$start.date) + run_end <- as.Date(run_settings$run$end.date) + + # First, build segment data.frame just from the crop cycles. Note that we + # already include the run end date (lead(..., default = run_end)). + segments <- crop_cycles |> + dplyr::rename(start_date = "date") |> + dplyr::mutate( + end_date = dplyr::lead(.data$start_date - 1, default = run_end), + ) + + # If we start *before* the first planting, add a segment for that. + if (run_start < min(segments[["start_date"]])) { + first_segment <- tibble::tibble( + crop_cycle_id = 0, + site_id = segments[["site_id"]][[1]], + start_date = run_start, + end_date = segments[["start_date"]][[1]] - 1, + crop_code = NA_character_ + ) + segments <- dplyr::bind_rows(first_segment, segments) + } + + # If the run start is *after* the first planting, clip to the start date. + if (run_start > min(segments[["start_date"]])) { + segments <- segments |> + dplyr::filter( + .data$start_date >= .env$run_start, + # Also clip the end date to avoid edge cases where run_start == end_date + .data$end_date > .env$run_start + ) + if (nrow(segments) < 1) { + PEcAn.logger::logger.severe( + "Filtering resulted in no segments. ", + "This is an invalid state; check settings and events.json." + ) + } + segments[1, "start_date"] <- run_start + } + + segments |> + dplyr::arrange(.data$start_date) |> + dplyr::mutate(segment_id = sprintf("%03d", dplyr::row_number())) +} + write_segment_configs <- function( settings, run_row, @@ -83,6 +135,7 @@ write_segment_configs <- function( run_dir <- file.path(settings$rundir, run_id) run_modeloutdir <- file.path(settings$modeloutdir, run_id) run_settings <- subset_paths(settings, run_row) + segment_rootdir <- file.path(run_dir, "segments") ens_samples_file <- file.path( run_settings$outdir, @@ -93,19 +146,9 @@ write_segment_configs <- function( i_param <- run_row[["param"]] %||% 1 run_traits <- lapply(ensemble_samples, \(dat) dat[i_param, ]) - crop_cycles <- PEcAn.data.land::events_to_crop_cycle_starts( - run_settings$run$inputs$events$source - ) |> - dplyr::ungroup() - - # Get segments - segment_rootdir <- file.path(run_dir, "segments") - segments <- crop_cycles |> - dplyr::rename(start_date = "date") |> + segments <- segment_dataframe(run_settings) |> dplyr::mutate( - end_date = dplyr::lead(.data$start_date - 1, default = as.Date(run_settings$run$end.date)), pft = crop2pft(.data$crop_code), - segment_id = sprintf("%03d", dplyr::row_number()), segment_dir = file.path(segment_rootdir, sprintf("segment_%s", .data$segment_id)) ) From 8ab19bdcbe7a3da0ec949f6755abea2b2c860f78 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 09:37:16 -0400 Subject: [PATCH 46/75] crop -> crop_code in tests --- .../tests/testthat/test-events_to_crop_cycle_starts.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R index 19c92de805b..4a00cd0c0c9 100644 --- a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R +++ b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R @@ -1,6 +1,6 @@ test_that("non-planting events are ignored", { dat <- dplyr::tribble( - ~site_id, ~date, ~event_type, ~crop, + ~site_id, ~date, ~event_type, ~crop_code, "a", "2016-01-01", "planting", "almond", "a", "2016-05-01", "irrigation", NA_character_, "a", "2017-01-01", "planting", "almond", @@ -14,7 +14,7 @@ test_that("non-planting events are ignored", { test_that("nonconsecutive runs of the same crop counted separately", { dat <- dplyr::tribble( - ~site_id, ~date, ~event_type, ~crop, + ~site_id, ~date, ~event_type, ~crop_code, "b", "2016-03-01", "planting", "tomato", "b", "2017-03-05", "planting", "tomato", "b", "2018-04-15", "planting", "potato", @@ -27,7 +27,7 @@ test_that("nonconsecutive runs of the same crop counted separately", { test_that("sites are counted separately", { dat <- dplyr::tribble( - ~site_id, ~date, ~event_type, ~crop, + ~site_id, ~date, ~event_type, ~crop_code, "a", "2016-03-01", "planting", "grape", "b", "2016-03-01", "planting", "grape", "c", "2023-03-01", "planting", "grape", @@ -45,5 +45,5 @@ test_that("reads from JSON", { ) res <- events_to_crop_cycle_starts(path) expect_equal(res$date, "2022-02-19") - expect_equal(res$crop, "EX1") + expect_equal(res$crop_code, "EX1") }) From 7f03d0464d79b27548431c1b3b1257c5d6156090 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 09:40:40 -0400 Subject: [PATCH 47/75] outpath should be NULL, not FALSE --- models/sipnet/R/split_inputs.SIPNET.R | 2 +- models/sipnet/man/split_sipnet_events.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 9dc9f5be3ad..4b95724779c 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -49,7 +49,7 @@ split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE #' #' @param eventfile Path to `events.in` file. #' @inheritParams split_inputs.SIPNET -split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FALSE, outpath = FALSE) { +split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FALSE, outpath = NULL) { # Read events.in prefix <- sub(".in", "", basename(eventfile), fixed = TRUE) outpath <- outpath %||% dirname(eventfile) diff --git a/models/sipnet/man/split_sipnet_events.Rd b/models/sipnet/man/split_sipnet_events.Rd index 6bb609546f2..2ebdba2091c 100644 --- a/models/sipnet/man/split_sipnet_events.Rd +++ b/models/sipnet/man/split_sipnet_events.Rd @@ -9,7 +9,7 @@ split_sipnet_events( stop.time, eventfile, overwrite = FALSE, - outpath = FALSE + outpath = NULL ) } \arguments{ From 10eec01d741b07d7cca92a868c15d04f26e47639 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 09:51:14 -0400 Subject: [PATCH 48/75] better docs + warnings for sipnet trait.values --- models/sipnet/R/write.configs.SIPNET.R | 16 ++++++++++++++-- models/sipnet/man/write.config.SIPNET.Rd | 4 +++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/models/sipnet/R/write.configs.SIPNET.R b/models/sipnet/R/write.configs.SIPNET.R index cd5b1cac9e0..1956ad3519a 100755 --- a/models/sipnet/R/write.configs.SIPNET.R +++ b/models/sipnet/R/write.configs.SIPNET.R @@ -64,8 +64,10 @@ #' #' @param defaults nested list of named constant parameter values. The #' structure is `list(list(constants = list(trait1 = , trait2 = , ...)))`. -#' Only `defaults[[1]]$constants` is used; all other elements are silently ignored. -#' @param trait.values vector of samples for a given trait +#' Only `defaults[[1]]$constants` is used; all other elements are silently ignored. +#' @param trait.values named list of trait values for each PFT. SIPNET can +#' handle only one vegetation PFT, and an optional "soil" PFT for soil constants. +#' `trait.values` that do not fit this format will throw a warning. #' @param settings PEcAn settings object #' @param run.id run ID #' @param inputs list of model inputs @@ -85,6 +87,16 @@ write.config.SIPNET <- function(defaults, trait.values, settings, run.id, inputs )) } + if ( + (length(trait.values) > 2) || + (length(trait.values) == 2 && !("soil" %in% names(trait.values))) + ) { + PEcAn.logger::logger.warn(paste0( + "SIPNET can only handle one vegetation PFT and one optional soil PFT. ", + "Passing multiple vegetation PFTs may lead to unexpected behavior." + )) + } + rev_raw <- settings$model$revision legacy_v1 <- c("102319", "136", "r136", "ssr", "git") if (is.null(rev_raw) || rev_raw %in% legacy_v1) { diff --git a/models/sipnet/man/write.config.SIPNET.Rd b/models/sipnet/man/write.config.SIPNET.Rd index b241757e2b6..37ef098e459 100644 --- a/models/sipnet/man/write.config.SIPNET.Rd +++ b/models/sipnet/man/write.config.SIPNET.Rd @@ -20,7 +20,9 @@ write.config.SIPNET( structure is \verb{list(list(constants = list(trait1 = , trait2 = , ...)))}. Only \code{defaults[[1]]$constants} is used; all other elements are silently ignored.} -\item{trait.values}{vector of samples for a given trait} +\item{trait.values}{named list of trait values for each PFT. SIPNET can +handle only one vegetation PFT, and an optional "soil" PFT for soil constants. +\code{trait.values} that do not fit this format will throw a warning.} \item{settings}{PEcAn settings object} From c31c63bc1806203ae17316d5076d0d325f19aab1 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 09:55:32 -0400 Subject: [PATCH 49/75] comment about file sorting --- models/sipnet/R/combine_sipnet_out.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/models/sipnet/R/combine_sipnet_out.R b/models/sipnet/R/combine_sipnet_out.R index 5093c25d8de..8465ae5ad8f 100644 --- a/models/sipnet/R/combine_sipnet_out.R +++ b/models/sipnet/R/combine_sipnet_out.R @@ -16,6 +16,12 @@ combine_sipnet_out <- function(directory, outfile, files = NULL) { PEcAn.logger::logger.severe("Must provide either `directory` or `files`") } if (is.null(files)) { + # NOTE that this expects file paths (including parent directories) to be + # lexicographically sorted. For the common case of segmented SIPNET runs, + # the parent directories are named `segment_001`, `segment_002`, etc., so + # this will work automatically. + # If you don't want to make this assumption, or have a custom sort order, + # pass `files` directly to this function. files <- sort(list.files(directory, "sipnet\\.out", full.names = TRUE, recursive = TRUE)) } if (!(length(files) > 0)) { From d6555db706cc7eac35dd613982e2e4f06ca209b0 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 10:11:12 -0400 Subject: [PATCH 50/75] warn on non-alternating harvest-planting cycles --- .../data.land/R/events_to_crop_cycle_starts.R | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R index 65dbaed77f1..f17982cb8c3 100644 --- a/modules/data.land/R/events_to_crop_cycle_starts.R +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -31,12 +31,30 @@ #' events_to_crop_cycle_starts(evts) #' } events_to_crop_cycle_starts <- function(event_json) { - jsonlite::read_json(event_json) |> + event_df <- jsonlite::read_json(event_json) |> dplyr::bind_rows() |> dplyr::mutate(events = purrr::map(.data$events, as.data.frame)) |> - tidyr::unnest(.data$events) |> + tidyr::unnest("events") |> + dplyr::filter(event_type %in% c("planting", "harvest")) |> dplyr::mutate(date = as.Date(.data$date)) |> - find_crop_changes() + dplyr::arrange(.data$date) + # We should always have alternating planting-harvest-planting-harvest cycles. + # If we don't, raise a warning. + dup_events <- event_df |> + dplyr::filter( + (.data$event_type == dplyr::lag(.data$event_type)) | + (.data$event_type == dplyr::lead(.data$event_type)) + ) |> + dplyr::select("site_id", "date", "event_type", "crop_code") + if ((ndup <- nrow(dup_events)) > 0) { + dfdump <- paste("# ", capture.output(print(dup_events)), collapse = "\n") + PEcAn.logger::logger.warn( + "Detected", ndup, "instances of non-alternating harvest-planting cycles:", + "\n", dfdump, + wrap = FALSE + ) + } + find_crop_changes(event_df) } # helper for events_to_crop_cyle_starts, From 2173db96bcadc2a8d223a492f24db131fb0efcad Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 10:14:10 -0400 Subject: [PATCH 51/75] remove pixi and WIP files --- pixi.lock | 6142 ----------------- pixi.toml | 105 - workflows/sipnet-restart-workflow/91-debug.R | 83 - .../92-find-winter-crop.R | 40 - 4 files changed, 6370 deletions(-) delete mode 100644 pixi.lock delete mode 100644 pixi.toml delete mode 100644 workflows/sipnet-restart-workflow/91-debug.R delete mode 100644 workflows/sipnet-restart-workflow/92-find-winter-crop.R diff --git a/pixi.lock b/pixi.lock deleted file mode 100644 index 7c0c3bfb476..00000000000 --- a/pixi.lock +++ /dev/null @@ -1,6142 +0,0 @@ -version: 6 -environments: - default: - channels: - - url: https://conda.anaconda.org/conda-forge/ - options: - pypi-prerelease-mode: if-necessary-or-explicit - packages: - linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-h54830fc_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h1c03fa5_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h281d09f_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.1.0-h6083320_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_108.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-h40b5c2d_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_118.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.3-he63569f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.9.2-hc20babb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.57-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_118.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.2-he237659_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h1a1f456_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h7173366_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314hd4f4903_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-hf9ea5aa_0_cp314t.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.1-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r45hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_6-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64url-1.4-r45h54b55ab_1008.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit-4.6.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.6.0_1-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-blob-1.3.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-brew-1.0_10-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-brio-1.1.5-r45h54b55ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.10.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.1.0-r45h54b55ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.6-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-coda-0.19_4.1-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.12-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-commonmark-2.0.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.4-r45h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-credentials-2.0.3-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-crew-1.3.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-crew.cluster-0.4.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-curl-7.0.0-r45h10955f1_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r45h1c8cec4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.3.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.5.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.3-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r45h3697838_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-filelock-1.0.3-r45h54b55ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.7-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.4.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.callr-0.10.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-gert-2.3.1-r45h5e22a44_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-4.0.2-r45h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gh-1.5.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gitcreds-0.1.2-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.19.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.8.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-here-1.0.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-highr-0.12-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-hms-1.1.4-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-htmltools-0.5.9-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-htmlwidgets-1.6.4-r45h785f33e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-httpuv-1.6.17-r45h6d565e7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.8-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-httr2-1.2.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-igraph-2.1.4-r45hf411e2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-ini-0.3.1-r45hc72bb7e_1007.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.3.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-2.0.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-jsonvalidate-1.5.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.51-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-languageserver-0.3.17-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-later-1.4.8-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_9-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.3-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lpsolve-5.6.23-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.5-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.7_4-r45h0e4624f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-memoise-2.0.1-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_4-r45h0e4624f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mime-0.13-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-miniui-0.1.2-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r45ha36cffa_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-mirai-2.6.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.2-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_169-r45heaba542_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-otel-0.2.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pak-0.9.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgbuild-1.4.8-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgcache-2.2.4-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_9-r45haf2892b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettycode-1.1.0-r45hc72bb7e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.7-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-promises-1.5.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_29-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.2-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.17.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.27.1-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.13.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.2-r45h9f1dc4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.4.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcmdcheck-1.4.0-r45h785f33e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r45h785f33e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r45h3704496_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpptoml-0.2.3-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-readr-2.2.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.4-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.46.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.2.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.31-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.27-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.18.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rversions-3.0.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.9-r45h7d5736c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-s7-0.2.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_2-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_6-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.3-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.3.2-r45h74f4acd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.1-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_11-r45h1d36251_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-1.0.5-r45h74f4acd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.1-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.59-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r45h3697838_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-v8-8.0.1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.2-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.1-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.5-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.57-r45h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.5.2-r45he78afff_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r45hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-xopen-1.0.1-r45hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_8-r45hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.12-r45h54b55ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-zip-2.3.3-r45h54b55ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.9-h6688a6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py314h56549f7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h5a7a40f_8.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - build_number: 20 - sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 - md5: a9f577daf3de00bca7c3c76c0ecbd1de - depends: - - __glibc >=2.17,<3.0.a0 - - libgomp >=7.5.0 - constrains: - - openmp_impl <0.0a0 - license: BSD-3-Clause - license_family: BSD - size: 28948 - timestamp: 1770939786096 -- conda: https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2 - sha256: e58f9eeb416b92b550e824bcb1b9fb1958dee69abfe3089dfd1a9173e3a0528a - md5: 19f9db5f4f1b7f5ef5f6d67207f25f38 - license: BSD - size: 3566 - timestamp: 1562343890778 -- conda: https://conda.anaconda.org/conda-forge/linux-64/air-0.8.2-hb17b654_1.conda - sha256: 529be8165fab6cf0fc3bdc02c5ae3a6726f84087aa64b8fe7c84bebbdbf5a39c - md5: 1dce05b673b4f33943c9b3845f58e0ae - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - size: 2478957 - timestamp: 1774463596664 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda - sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 - md5: bdd464b33f6540ed70845b946c11a7b8 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 - - aws-c-cal >=0.9.13,<0.9.14.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 133443 - timestamp: 1764765235190 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda - sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064 - md5: 3c3d02681058c3d206b562b2e3bc337f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - libgcc >=14 - - openssl >=3.5.4,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 56230 - timestamp: 1764593147526 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda - sha256: 926a5b9de0a586e88669d81de717c8dd3218c51ce55658e8a16af7e7fe87c833 - md5: e36ad70a7e0b48f091ed6902f04c23b8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: Apache-2.0 - license_family: Apache - size: 239605 - timestamp: 1763585595898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda - sha256: 96edccb326b8c653c8eb95a356e01d4aba159da1a97999577b7dd74461b040b4 - md5: f7ec84186dfe7a9e3a9f9e5a4d023e75 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 22272 - timestamp: 1764593718823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda - sha256: a5b151db1c8373b6ca2dacea65bc8bda02791a43685eebfa4ea987bb1a758ca9 - md5: 7b8e3f846353b75db163ad93248e5f9d - depends: - - libgcc >=14 - - libstdcxx >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - aws-checksums >=0.2.7,<0.2.8.0a0 - license: Apache-2.0 - license_family: APACHE - size: 58806 - timestamp: 1764675439822 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda - sha256: 5527224d6e0813e37426557d38cb04fed3753d6b1e544026cfbe2654f5e556be - md5: 3028f20dacafc00b22b88b324c8956cc - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.9.13,<0.9.14.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-compression >=0.3.1,<0.3.2.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 224580 - timestamp: 1764675497060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda - sha256: 07d7f2a4493ada676084c3f4313da1fab586cf0a7302572c5d8dde6606113bf4 - md5: 132e8f8f40f0ffc0bbde12bb4e8dd1a1 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - s2n >=1.6.2,<1.6.3.0a0 - - aws-c-cal >=0.9.13,<0.9.14.0a0 - license: Apache-2.0 - license_family: APACHE - size: 181361 - timestamp: 1765168239856 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda - sha256: fb102b0346a1f5c4f3bb680ec863c529b0333fa4119d78768c3e8a5d1cc2c812 - md5: 6a653aefdc5d83a4f959869d1759e6e3 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 216454 - timestamp: 1764681745427 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda - sha256: 8de2292329dce2fd512413d83988584d616582442a07990f67670f9bc793a98b - md5: 3689a4290319587e3b54a4f9e68f70c8 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - openssl >=3.5.4,<4.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-auth >=0.9.3,<0.9.4.0a0 - - aws-checksums >=0.2.7,<0.2.8.0a0 - - aws-c-cal >=0.9.13,<0.9.14.0a0 - license: Apache-2.0 - license_family: APACHE - size: 151382 - timestamp: 1765174166541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda - sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc - md5: c7e3e08b7b1b285524ab9d74162ce40b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 59383 - timestamp: 1764610113765 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda - sha256: a8693d2e06903a09e98fe724ed5ec32e7cd1b25c405d754f0ab7efb299046f19 - md5: 68da5b56dde41e172b7b24f071c4b392 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - aws-c-common >=0.12.6,<0.12.7.0a0 - license: Apache-2.0 - license_family: APACHE - size: 76915 - timestamp: 1764593731486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda - sha256: 524fc8aa2645e5701308b865bf5c523257feabc6dfa7000cb8207ccfbb1452a1 - md5: 113b9d9913280474c0868b0e290c0326 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - aws-c-event-stream >=0.5.7,<0.5.8.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - aws-c-cal >=0.9.13,<0.9.14.0a0 - - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-auth >=0.9.3,<0.9.4.0a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-mqtt >=0.13.3,<0.13.4.0a0 - - aws-c-s3 >=0.11.3,<0.11.4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 408804 - timestamp: 1765200263609 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda - sha256: e0d81b7dd6d054d457a1c54d17733d430d96dc5ca9b2ca69a72eb41c3fc8c9bf - md5: 937d1d4c233adc6eeb2ac3d6e9a73e53 - depends: - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.17.0,<9.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 - - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - - libzlib >=1.3.1,<2.0a0 - - aws-c-event-stream >=0.5.7,<0.5.8.0a0 - license: Apache-2.0 - license_family: APACHE - size: 3472674 - timestamp: 1765257107074 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda - sha256: 321d1070905e467b6bc6f5067b97c1868d7345c272add82b82e08a0224e326f0 - md5: 5492abf806c45298ae642831c670bba0 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.18.0,<9.0a0 - - libgcc >=14 - - libstdcxx >=14 - - openssl >=3.5.4,<4.0a0 - license: MIT - license_family: MIT - size: 348729 - timestamp: 1768837519361 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda - sha256: 2beb6ae8406f946b8963a67e72fe74453e1411c5ae7e992978340de6c512d13c - md5: 68bfb556bdf56d56e9f38da696e752ca - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.2,<1.16.3.0a0 - - libgcc >=14 - - libstdcxx >=14 - - openssl >=3.5.5,<4.0a0 - license: MIT - license_family: MIT - size: 250511 - timestamp: 1770344967948 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda - sha256: cef75b91bdd5a65c560b501df78905437cc2090a64b4c5ecd7da9e08e9e9af7c - md5: 939d9ce324e51961c7c4c0046733dbb7 - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.2,<1.16.3.0a0 - - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - - libgcc >=14 - - libstdcxx >=14 - license: MIT - license_family: MIT - size: 579825 - timestamp: 1770321459546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda - sha256: ef7d1cae36910b21385d0816f8524a84dee1513e0306927e41a6bd32b5b9a0d0 - md5: 6400f73fe5ebe19fe7aca3616f1f1de7 - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.2,<1.16.3.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 - - openssl >=3.5.5,<4.0a0 - license: MIT - license_family: MIT - size: 150405 - timestamp: 1770240307002 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda - sha256: 55aa8ad5217d358e0ccf4a715bd1f9bafef3cd1c2ea4021f0e916f174c20f8e3 - md5: 6d10339800840562b7dad7775f5d2c16 - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.2,<1.16.3.0a0 - - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - - libgcc >=14 - - libstdcxx >=14 - license: MIT - license_family: MIT - size: 302524 - timestamp: 1770384269834 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917 - md5: 8165352fdce2d2025bf884dc0ee85700 - depends: - - ld_impl_linux-64 2.45.1 default_hbd61a6d_102 - - sysroot_linux-64 - - zstd >=1.5.7,<1.6.0a0 - license: GPL-3.0-only - license_family: GPL - size: 3661455 - timestamp: 1774197460085 -- conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d - md5: 2c2fae981fd2afd00812c92ac47d023d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 48427 - timestamp: 1733513201413 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda - sha256: c88dd33c89b33409ebcd558d78fdc66a63c18f8b06e04d170668ffb6c8ecfabd - md5: 983b92277d78c0d0ec498e460caa0e6d - depends: - - tk - license: TCL - size: 129594 - timestamp: 1750261567920 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 - md5: d2ffd7602c02f2b316fd921d39876885 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: bzip2-1.0.6 - license_family: BSD - size: 260182 - timestamp: 1771350215188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e - md5: 920bb03579f15389b9e512095ad995b7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 207882 - timestamp: 1765214722852 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda - sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc - md5: 4492fd26db29495f0ba23f146cd5638d - depends: - - __unix - license: ISC - size: 147413 - timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a - md5: bb6c4808bfa69d6f7f6b07e5846ced37 - depends: - - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - icu >=78.1,<79.0a0 - - libexpat >=2.7.3,<3.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - libgcc >=14 - - libglib >=2.86.3,<3.0a0 - - libpng >=1.6.53,<1.7.0a0 - - libstdcxx >=14 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - pixman >=0.46.4,<1.0a0 - - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.6,<2.0a0 - - xorg-libx11 >=1.8.12,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxrender >=0.9.12,<0.10.0a0 - license: LGPL-2.1-only or MPL-1.1 - size: 989514 - timestamp: 1766415934926 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cdo-2.5.0-h54830fc_7.conda - sha256: 72a3089bfcc78c5afb1f3803ae9cfdcea2348158680d3667edb46c42f9de307f - md5: 77c9c3513186ffedea1c0dcf60cf2c53 - depends: - - __glibc >=2.17,<3.0.a0 - - eccodes - - fftw >=3.3.10,<4.0a0 - - hdf5 >=1.14.6,<1.14.7.0a0 - - jasper >=4.2.9,<5.0a0 - - libcurl >=8.19.0,<9.0a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libnetcdf >=4.10.0,<4.10.1.0a0 - - libstdcxx >=14 - - libudunits2 >=2.2.28,<3.0a0 - - libuuid >=2.42,<3.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libxml2-devel - - magics - - proj >=9.7.1,<9.8.0a0 - - udunits2 - license: BSD-3-Clause - license_family: BSD - size: 64408382 - timestamp: 1775654485757 -- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.19.0-hcf29cc6_0.conda - sha256: 783b7525ef535b67236c2773f5553b111ee5258ad9357df2ae1755cc62a0a014 - md5: a6993977a14feee4268e7be3ad0977ab - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.22.2,<1.23.0a0 - - libcurl 8.19.0 hcf29cc6_0 - - libgcc >=14 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.5,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: curl - license_family: MIT - size: 191335 - timestamp: 1773218536473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.46.0-h1c03fa5_2.conda - sha256: 77d84533e8ace11ecb6d0d98b1dea7cd4cfac1bbba7484a4e2630baa1d251581 - md5: 8212731348c41ecc1cbe65076ea6db0f - depends: - - __glibc >=2.17,<3.0.a0 - - hdf5 >=1.14.6,<1.14.7.0a0 - - jasper >=4.2.9,<5.0a0 - - libaec >=1.1.5,<2.0a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libnetcdf >=4.10.0,<4.10.1.0a0 - - libpng >=1.6.55,<1.7.0a0 - - libstdcxx >=14 - - libzlib >=1.3.2,<2.0a0 - license: Apache-2.0 - license_family: Apache - size: 4778971 - timestamp: 1774358620801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda - sha256: 210155553489739765f31001f84eba91e58d9c692b032eed33f1a20340c78acb - md5: 7de50d165039df32d38be74c1b34a910 - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat 2.7.5 hecca717_0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 146195 - timestamp: 1774719191740 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h3b011a4_112.conda - sha256: a564b8af44a113173c7d42ffe37a8d600e6ea21f6db87d252135ba07914a3d10 - md5: af1311c2d5e4bfc5cce2b86804c77972 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - license: GPL-2.0-or-later - license_family: GPL - size: 1925113 - timestamp: 1771754008607 -- conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - sha256: d02d04e24b79003442751240a7c7ad251c30e368f38808fb44c5a6e925c0436a - md5: fa9e9ec7bf26619a8edd3e11155f15d6 - depends: - - python >=3.6 - license: Apache-2.0 - license_family: Apache - size: 16541 - timestamp: 1753777739225 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b - md5: 0c96522c6bdaed4b1566d11387caaf45 - license: BSD-3-Clause - license_family: BSD - size: 397370 - timestamp: 1566932522327 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c - md5: 34893075a5c9e55cdafac56607368fc6 - license: OFL-1.1 - license_family: Other - size: 96530 - timestamp: 1620479909603 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 - md5: 4d59c254e01d9cde7957100457e2d5fb - license: OFL-1.1 - license_family: Other - size: 700814 - timestamp: 1620479612257 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 - md5: 49023d73832ef61042f6a237cb2687e7 - license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 - license_family: Other - size: 1620504 - timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c - md5: 867127763fbe935bab59815b6e0b7b5c - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - libgcc >=14 - - libuuid >=2.41.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 270705 - timestamp: 1771382710863 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 - md5: fee5683a3f04bd15cbd8318b096a27ab - depends: - - fonts-conda-forge - license: BSD-3-Clause - license_family: BSD - size: 3667 - timestamp: 1566974674465 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 - md5: a7970cd949a077b7cb9696379d338681 - depends: - - font-ttf-ubuntu - - font-ttf-inconsolata - - font-ttf-dejavu-sans-mono - - font-ttf-source-code-pro - license: BSD-3-Clause - license_family: BSD - size: 4059 - timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda - sha256: 676540a8e7f73a894cb1fcb870e7bec623ec1c0a2d277094fd713261a02d8d56 - md5: 84ec3f5b46f3076be49f2cf3f1cfbf02 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxfixes - - xorg-libxi - license: MIT - license_family: MIT - size: 144010 - timestamp: 1719014356708 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - sha256: c934c385889c7836f034039b43b05ccfa98f53c900db03d8411189892ced090b - md5: 8462b5322567212beeb025f3519fb3e2 - depends: - - libfreetype 2.14.3 ha770c72_0 - - libfreetype6 2.14.3 h73754d4_0 - license: GPL-2.0-only OR FTL - size: 173839 - timestamp: 1774298173462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - sha256: c8960e00a6db69b85c16c693ce05484facf20f1a80430552145f652a880e0d2a - md5: ecb5d11305b8ba1801543002e69d2f2f - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat >=2.6.4,<3.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - minizip >=4.0.7,<5.0a0 - license: MPL-1.1 - license_family: MOZILLA - size: 59299 - timestamp: 1734014884486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d - md5: f9f81ea472684d75b9dd8d0b328cf655 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: LGPL-2.1-or-later - size: 61244 - timestamp: 1757438574066 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he420e7e_18.conda - sha256: a088cfd3ae6fa83815faa8703bc9d21cc915f17bd1b51aac9c16ddf678da21e4 - md5: cf56b6d74f580b91fd527e10d9a2e324 - depends: - - binutils_impl_linux-64 >=2.45 - - libgcc >=15.2.0 - - libgcc-devel_linux-64 15.2.0 hcc6f6b0_118 - - libgomp >=15.2.0 - - libsanitizer 15.2.0 h90f66d4_18 - - libstdcxx >=15.2.0 - - libstdcxx-devel_linux-64 15.2.0 hd446a21_118 - - sysroot_linux-64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 81814135 - timestamp: 1771378369317 -- conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda - sha256: 08896dcd94e14a83f247e91748444e610f344ab42d80cbf2b6082b481c3f8f4b - md5: 4d4efd0645cd556fab54617c4ad477ef - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: LGPL-2.1-only - size: 1974942 - timestamp: 1761593471198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h281d09f_18.conda - sha256: 737c191cc768822d3d2ace8650e0cbec5edc4b48c63024876d0e6b0b5f120be2 - md5: d19ccc223bcd1d4e3f6b5884b7b58add - depends: - - gcc_impl_linux-64 >=15.2.0 - - libgcc >=15.2.0 - - libgfortran5 >=15.2.0 - - libstdcxx >=15.2.0 - - sysroot_linux-64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 20044877 - timestamp: 1771378561135 -- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda - sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff - md5: 3bf7b9fd5a7136126e0234db4b87c8b6 - depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 77248 - timestamp: 1712692454246 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 - sha256: 0e19c61198ae9e188c43064414a40101f5df09970d4a2c483c0c46a6b1538966 - md5: efc4b0c33bdf47312ad5a8a0587fa653 - depends: - - gmp >=6.2.1,<7.0a0 - - libgcc-ng >=9.3.0 - license: GPL-3.0-or-later - license_family: GPL - size: 1047292 - timestamp: 1624569176979 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c - md5: c94a5994ef49749880a8139cf9afcbe1 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: GPL-2.0-or-later OR LGPL-3.0-or-later - size: 460055 - timestamp: 1718980856608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c - md5: 2cd94587f3a401ae05e03a6caf09539d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: LGPL-2.0-or-later - license_family: LGPL - size: 99596 - timestamp: 1755102025473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 - sha256: 132a918b676dd1f533d7c6f95e567abf7081a6ea3251c3280de35ef600e0da87 - md5: fec079ba39c9cca093bf4c00001825de - depends: - - libblas >=3.8.0,<4.0a0 - - libcblas >=3.8.0,<4.0a0 - - libgcc-ng >=9.3.0 - license: GPL-3.0-or-later - license_family: GPL - size: 3376423 - timestamp: 1626369596591 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_18.conda - sha256: 48946f1f43d699b68123fb39329ef5acf3d9cbf8f96bdb8fb14b6197f5402825 - md5: e39123ab71f2e4cf989aa6aa5fafdaaf - depends: - - gcc_impl_linux-64 15.2.0 he420e7e_18 - - libstdcxx-devel_linux-64 15.2.0 hd446a21_118 - - sysroot_linux-64 - - tzdata - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 15587873 - timestamp: 1771378609722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.1.0-h6083320_0.conda - sha256: 22c4f6df7eb4684a4b60e62de84211e7d80a0df2d7cfdbbd093a73650e3f2d45 - md5: ca8a94b613db5d805c3d2498a7c30997 - depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - graphite2 >=1.3.14,<2.0a0 - - icu >=78.3,<79.0a0 - - libexpat >=2.7.5,<3.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libgcc >=14 - - libglib >=2.86.4,<3.0a0 - - libstdcxx >=14 - - libzlib >=1.3.2,<2.0a0 - license: MIT - license_family: MIT - size: 2338203 - timestamp: 1775569314754 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 - md5: bd77f8da987968ec3927990495dc22e4 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: BSD-3-Clause - license_family: BSD - size: 756742 - timestamp: 1695661547874 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_108.conda - sha256: 795c3a34643aa766450b8363b8c5dd6e65ad40e5cc64d138c3678d05068a380a - md5: cbb2d15a6e9aeb85f18f1a8f01c29b81 - depends: - - __glibc >=2.17,<3.0.a0 - - libaec >=1.1.5,<2.0a0 - - libcurl >=8.19.0,<9.0a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.5,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 3719931 - timestamp: 1774406907641 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a - md5: c80d8a3b84358cb967fa81e7075fbc8a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: MIT - license_family: MIT - size: 12723451 - timestamp: 1773822285671 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jags-4.3.2-h647a790_1.conda - sha256: fbd5005100423c1baa95c7e5a962f636d12fcb40d08897b1d2a6a9925e093871 - md5: 3888dd884df92d5ea9993dc8338e91bc - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - libgfortran-ng - - libgfortran5 >=12.4.0 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - license: GPL-2.0-only - license_family: GPL - size: 1013020 - timestamp: 1721907912966 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda - sha256: a6a9858eadb4c794b56a1c954c1d4f4b57d96c9fb87092dd46f5bff9b0697b35 - md5: 115ecf05370670f93bc81a8c4f7fd57f - depends: - - __glibc >=2.17,<3.0.a0 - - freeglut >=3.2.2,<4.0a0 - - libexpat >=2.7.4,<3.0a0 - - libgcc >=14 - - libgl >=1.7.0,<2.0a0 - - libglu >=9.0.3,<10.0a0 - - libglu >=9.0.3,<9.1.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - license: JasPer-2.0 - size: 684185 - timestamp: 1773677703432 -- conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da - md5: 38f5dbc9ac808e31c00650f7be1db93f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 82709 - timestamp: 1726487116178 -- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a - md5: 86d9cba083cd041bfbf242a01a7a1999 - constrains: - - sysroot_linux-64 ==2.28 - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later - license_family: GPL - size: 1278712 - timestamp: 1765578681495 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 - md5: b38117a3c920364aff79f870c984b4a3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: LGPL-2.1-or-later - size: 134088 - timestamp: 1754905959823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 - md5: fb53fb07ce46a575c5d004bbc96032c2 - depends: - - __glibc >=2.17,<3.0.a0 - - keyutils >=1.6.3,<2.0a0 - - libedit >=3.1.20250104,<3.2.0a0 - - libedit >=3.1.20250104,<4.0a0 - - libgcc >=14 - - libstdcxx >=14 - - openssl >=3.5.5,<4.0a0 - license: MIT - license_family: MIT - size: 1386730 - timestamp: 1769769569681 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c - md5: 18335a698559cdbcd86150a48bf54ba6 - depends: - - __glibc >=2.17,<3.0.a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - binutils_impl_linux-64 2.45.1 - license: GPL-3.0-only - license_family: GPL - size: 728002 - timestamp: 1774197446916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda - sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 - md5: a752488c68f2e7c456bcbd8f16eec275 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: Apache-2.0 - license_family: Apache - size: 261513 - timestamp: 1773113328888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - sha256: dcd1429a1782864c452057a6c5bc1860f2b637dc20a2b7e6eacd57395bbceff8 - md5: 83b160d4da3e1e847bf044997621ed63 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20250512.1=cxx17* - - abseil-cpp =20250512.1 - license: Apache-2.0 - license_family: Apache - size: 1310612 - timestamp: 1750194198254 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688 - md5: 86f7414544ae606282352fa1e116b41f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: BSD-2-Clause - license_family: BSD - size: 36544 - timestamp: 1769221884824 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.6-gpl_hc2c16d8_100.conda - sha256: 69ea8da58658ad26cb64fb0bfccd8a3250339811f0b57c6b8a742e5e51bacf70 - md5: 981d372c31a23e1aa9965d4e74d085d5 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.5.5,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 887139 - timestamp: 1773243188979 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-h40b5c2d_10_cpu.conda - build_number: 10 - sha256: 6f991b03d4ea6d22e87bf23fa567abfbca899db88e44d85d225467d99a9a9a5c - md5: 861c27604ee02b6070bd8df1dadf245e - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 - - azure-core-cpp >=1.16.2,<1.16.3.0a0 - - azure-identity-cpp >=1.13.3,<1.13.4.0a0 - - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libbrotlidec >=1.2.0,<1.3.0a0 - - libbrotlienc >=1.2.0,<1.3.0a0 - - libgcc >=14 - - libgoogle-cloud >=2.39.0,<2.40.0a0 - - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 - - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.2.2,<2.2.3.0a0 - - snappy >=1.2.2,<1.3.0a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - license: Apache-2.0 - license_family: APACHE - size: 6335951 - timestamp: 1770434233985 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_10_cpu.conda - build_number: 10 - sha256: 14c9ffe81f50714fc304cd6d545214499e4c4c4e79edb8b7de16534235a20e6f - md5: c7df973d64be50fd15506eb560ae26b0 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 h40b5c2d_10_cpu - - libarrow-compute 22.0.0 h8c2c5c3_10_cpu - - libgcc >=14 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - size: 608792 - timestamp: 1770434470405 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_10_cpu.conda - build_number: 10 - sha256: d50c3ffd546a0821ed4749a2ce12ef1cb0a74f7932c09fb6fb6d8166736daeff - md5: 4e6028d29da25ab0a7d006d1e13fcf5d - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 h40b5c2d_10_cpu - - libgcc >=14 - - libre2-11 >=2025.8.12 - - libstdcxx >=14 - - libutf8proc >=2.11.3,<2.12.0a0 - - re2 - license: Apache-2.0 - license_family: APACHE - size: 2988184 - timestamp: 1770434320056 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_10_cpu.conda - build_number: 10 - sha256: 77b50fbcca68784af720517916e0804a13bf536b5f809bb45e1d73c76f1e8f63 - md5: c7bd912f2da0e7ddba11a8b337ea6f81 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 h40b5c2d_10_cpu - - libarrow-acero 22.0.0 h635bf11_10_cpu - - libarrow-compute 22.0.0 h8c2c5c3_10_cpu - - libgcc >=14 - - libparquet 22.0.0 h7376487_10_cpu - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - size: 606439 - timestamp: 1770434569080 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_10_cpu.conda - build_number: 10 - sha256: 4ab1e045c73d01976fb853a31abc080d34c4aec2fc6bb7df77686b36a9398e0d - md5: 422f1fbb96405207c70e6368a0de7498 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h40b5c2d_10_cpu - - libarrow-acero 22.0.0 h635bf11_10_cpu - - libarrow-dataset 22.0.0 h635bf11_10_cpu - - libgcc >=14 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - size: 509673 - timestamp: 1770434601939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda - build_number: 6 - sha256: 7bfe936dbb5db04820cf300a9cc1f5ee8d5302fc896c2d66e30f1ee2f20fbfd6 - md5: 6d6d225559bfa6e2f3c90ee9c03d4e2e - depends: - - libopenblas >=0.3.32,<0.3.33.0a0 - - libopenblas >=0.3.32,<1.0a0 - constrains: - - blas 2.306 openblas - - liblapack 3.11.0 6*_openblas - - liblapacke 3.11.0 6*_openblas - - libcblas 3.11.0 6*_openblas - - mkl <2026 - license: BSD-3-Clause - license_family: BSD - size: 18621 - timestamp: 1774503034895 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e - md5: 72c8fd1af66bd67bf580645b426513ed - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 79965 - timestamp: 1764017188531 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b - md5: 366b40a69f0ad6072561c1d09301c886 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.2.0 hb03c661_1 - - libgcc >=14 - license: MIT - license_family: MIT - size: 34632 - timestamp: 1764017199083 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d - md5: 4ffbb341c8b616aa2494b6afb26a0c5f - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.2.0 hb03c661_1 - - libgcc >=14 - license: MIT - license_family: MIT - size: 298378 - timestamp: 1764017210931 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda - build_number: 6 - sha256: 57edafa7796f6fa3ebbd5367692dd4c7f552be42109c2dd1a7c89b55089bf374 - md5: 36ae340a916635b97ac8a0655ace2a35 - depends: - - libblas 3.11.0 6_h4a7cf45_openblas - constrains: - - blas 2.306 openblas - - liblapack 3.11.0 6*_openblas - - liblapacke 3.11.0 6*_openblas - license: BSD-3-Clause - license_family: BSD - size: 18622 - timestamp: 1774503050205 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda - sha256: a0390fd0536ebcd2244e243f5f00ab8e76ab62ed9aa214cd54470fe7496620f4 - md5: d50608c443a30c341c24277d28290f76 - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.22.2,<1.23.0a0 - - libgcc >=14 - - libnghttp2 >=1.67.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.5,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: curl - license_family: MIT - size: 466704 - timestamp: 1773218522665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 - md5: 6c77a605a7a689d17d4819c0f8ac9a00 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 73490 - timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda - sha256: e8c2b57f6aacabdf2f1b0924bd4831ce5071ba080baa4a9e8c0d720588b6794c - md5: 49f570f3bc4c874a06ea69b7225753af - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - expat 2.7.5.* - license: MIT - license_family: MIT - size: 76624 - timestamp: 1774719175983 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 - md5: a360c33a5abe61c07959e449fa1453eb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 58592 - timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 - md5: e289f3d17880e44b633ba911d57a321b - depends: - - libfreetype6 >=2.14.3 - license: GPL-2.0-only OR FTL - size: 8049 - timestamp: 1774298163029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d - md5: fb16b4b69e3f1dcfe79d80db8fd0c55d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libpng >=1.6.55,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 - constrains: - - freetype >=2.14.3 - license: GPL-2.0-only OR FTL - size: 384575 - timestamp: 1774298162622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda - sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 - md5: 0aa00f03f9e39fb9876085dee11a85d4 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==15.2.0=*_18 - - libgomp 15.2.0 he0feb66_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1041788 - timestamp: 1771378212382 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_118.conda - sha256: af69fc5852908d26e5b630b270982ac792506551dd6af1614bf0370dd5ab5746 - md5: 5d3a96d55f1be45fef88ee23155effd9 - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3085932 - timestamp: 1771378098166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 - md5: d5e96b1ed75ca01906b3d2469b4ce493 - depends: - - libgcc 15.2.0 he0feb66_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27526 - timestamp: 1771378224552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.3-he63569f_3.conda - sha256: 298497351f4a7dc94938a1ad8dc3df545a07efdc5f1b91b9256d04e65959a430 - md5: 83666e2c330f47ee6268396ee4467b63 - depends: - - __glibc >=2.17,<3.0.a0 - - blosc >=1.21.6,<2.0a0 - - geos >=3.14.1,<3.14.2.0a0 - - giflib >=5.2.2,<5.3.0a0 - - json-c >=0.18,<0.19.0a0 - - lerc >=4.1.0,<5.0a0 - - libarchive >=3.8.6,<3.9.0a0 - - libcurl >=8.19.0,<9.0a0 - - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.5,<3.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libjxl >=0.11,<1.0a0 - - libkml >=1.3.0,<1.4.0a0 - - liblzma >=5.8.2,<6.0a0 - - libpng >=1.6.57,<1.7.0a0 - - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.52.0,<4.0a0 - - libstdcxx >=14 - - libwebp-base >=1.6.0,<2.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.2,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.6,<4.0a0 - - pcre2 >=10.47,<10.48.0a0 - - proj >=9.7.1,<9.8.0a0 - - xerces-c >=3.3.0,<3.4.0a0 - - zstd >=1.5.7,<1.6.0a0 - constrains: - - libgdal 3.12.3.* - license: MIT - license_family: MIT - size: 12920201 - timestamp: 1775712965350 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda - sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee - md5: 9063115da5bc35fdc3e1002e69b9ef6e - depends: - - libgfortran5 15.2.0 h68bc16d_18 - constrains: - - libgfortran-ng ==15.2.0=*_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27523 - timestamp: 1771378269450 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda - sha256: cdc147bb0966be39b697b28d40b1ab5a2cd57fb29aff0fb0406598d419bddd70 - md5: 26d7b228de99d6fb032ba4d5c1679040 - depends: - - libgfortran 15.2.0 h69a702a_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27532 - timestamp: 1771378479717 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 - md5: 646855f357199a12f02a87382d429b75 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 2482475 - timestamp: 1771378241063 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.9.2-hc20babb_0.conda - sha256: 80d81a3d15c10f1fad867dfc9132e61d67c688af6adfd7ed76a139a25bfdfd53 - md5: 81da8986dad4d7fc47aec424098a8a54 - depends: - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - openssl >=3.5.4,<4.0a0 - - libssh2 >=1.11.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - - libzlib >=1.3.1,<2.0a0 - license: GPL-2.0-only WITH GCC-exception-2.0 - license_family: GPL - size: 1035709 - timestamp: 1765030773589 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d - md5: 928b8be80851f5d8ffb016f9c81dae7a - depends: - - __glibc >=2.17,<3.0.a0 - - libglvnd 1.7.0 ha4b6fd6_2 - - libglx 1.7.0 ha4b6fd6_2 - license: LicenseRef-libglvnd - size: 134712 - timestamp: 1731330998354 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda - sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce - md5: bb26456332b07f68bf3b7622ed71c0da - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - constrains: - - glib 2.86.4 *_1 - license: LGPL-2.1-or-later - size: 4398701 - timestamp: 1771863239578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef - md5: 8422fcc9e5e172c91e99aef703b3ce65 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libopengl >=1.7.0,<2.0a0 - - libstdcxx >=13 - license: SGI-B-2.0 - size: 325262 - timestamp: 1748692137626 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 - md5: 434ca7e50e40f4918ab701e3facd59a0 - depends: - - __glibc >=2.17,<3.0.a0 - license: LicenseRef-libglvnd - size: 132463 - timestamp: 1731330968309 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 - md5: c8013e438185f33b13814c5c488acd5c - depends: - - __glibc >=2.17,<3.0.a0 - - libglvnd 1.7.0 ha4b6fd6_2 - - xorg-libx11 >=1.8.10,<2.0a0 - license: LicenseRef-libglvnd - size: 75504 - timestamp: 1731330988898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 - md5: 239c5e9546c38a1e884d69effcf4c882 - depends: - - __glibc >=2.17,<3.0.a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 603262 - timestamp: 1771378117851 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - sha256: d3341cf69cb02c07bbd1837968f993da01b7bd467e816b1559a3ca26c1ff14c5 - md5: a2e30ccd49f753fd30de0d30b1569789 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libcurl >=8.14.1,<9.0a0 - - libgcc >=14 - - libgrpc >=1.73.1,<1.74.0a0 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libstdcxx >=14 - - openssl >=3.5.1,<4.0a0 - constrains: - - libgoogle-cloud 2.39.0 *_0 - license: Apache-2.0 - license_family: Apache - size: 1307909 - timestamp: 1752048413383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - sha256: 59eb8365f0aee384f2f3b2a64dcd454f1a43093311aa5f21a8bb4bd3c79a6db8 - md5: bd21962ff8a9d1ce4720d42a35a4af40 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=14 - - libgoogle-cloud 2.39.0 hdb79228_0 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 804189 - timestamp: 1752048589800 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda - sha256: bc9d32af6167b1f5bcda216dc44eddcb27f3492440571ab12f6e577472a05e34 - md5: ff63bb12ac31c176ff257e3289f20770 - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.5,<2.0a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libgcc >=14 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libre2-11 >=2025.8.12 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.73.1 - license: Apache-2.0 - license_family: APACHE - size: 8349777 - timestamp: 1761058442526 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda - sha256: 2bdd1cdd677b119abc5e83069bec2e28fe6bfb21ebaea3cd07acee67f38ea274 - md5: c2a0c1d0120520e979685034e0b79859 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: Apache-2.0 OR BSD-3-Clause - size: 1448617 - timestamp: 1758894401402 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f - md5: 915f5995e94f60e9a4826e0b0920ee88 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: LGPL-2.1-only - size: 790176 - timestamp: 1754908768807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda - sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 - md5: 8397539e3a0bbd1695584fb4f927485a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 633710 - timestamp: 1762094827865 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda - sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 - md5: 1df8c1b1d6665642107883685db6cf37 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libhwy >=1.3.0,<1.4.0a0 - - libbrotlienc >=1.2.0,<1.3.0a0 - - libbrotlidec >=1.2.0,<1.3.0a0 - license: BSD-3-Clause - license_family: BSD - size: 1883476 - timestamp: 1770801977654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - sha256: aa55f5779d6bc7bf24dc8257f053d5a0708b5910b6bc6ea1396f15febf812c98 - md5: 00f0f4a9d2eb174015931b1a234d61ca - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat >=2.7.1,<3.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - uriparser >=0.9.8,<1.0a0 - license: BSD-3-Clause - license_family: BSD - size: 411495 - timestamp: 1761132836798 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda - build_number: 6 - sha256: 371f517eb7010b21c6cc882c7606daccebb943307cb9a3bf2c70456a5c024f7d - md5: 881d801569b201c2e753f03c84b85e15 - depends: - - libblas 3.11.0 6_h4a7cf45_openblas - constrains: - - blas 2.306 openblas - - liblapacke 3.11.0 6*_openblas - - libcblas 3.11.0 6*_openblas - license: BSD-3-Clause - license_family: BSD - size: 18624 - timestamp: 1774503065378 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb - md5: c7c83eecbb72d88b940c249af56c8b17 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - xz 5.8.2.* - license: 0BSD - size: 113207 - timestamp: 1768752626120 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda - sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 - md5: 2c21e66f50753a083cbe6b80f38268fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: BSD-2-Clause - license_family: BSD - size: 92400 - timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_103.conda - sha256: 657a4eaf5b9dfb3e8ef76bb4c5a682951ae8dcc9d35cd73c4ff62c144b356d13 - md5: 737fd40c9bfa4076d007f6ff7fa405e3 - depends: - - __glibc >=2.17,<3.0.a0 - - blosc >=1.21.6,<2.0a0 - - bzip2 >=1.0.8,<2.0a0 - - hdf4 >=4.2.15,<4.2.16.0a0 - - hdf5 >=1.14.6,<1.14.7.0a0 - - libaec >=1.1.5,<2.0a0 - - libcurl >=8.19.0,<9.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 - - libzip >=1.11.2,<2.0a0 - - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.5,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: MIT - license_family: MIT - size: 861141 - timestamp: 1774633364108 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f - md5: 2a45e7f8af083626f009645a6481f12d - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.6,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.5,<4.0a0 - license: MIT - license_family: MIT - size: 663344 - timestamp: 1773854035739 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 - md5: d864d34357c3b65a4b731f78c0801dc4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: LGPL-2.1-only - license_family: GPL - size: 33731 - timestamp: 1750274110928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda - sha256: 6dc30b28f32737a1c52dada10c8f3a41bc9e021854215efca04a7f00487d09d9 - md5: 89d61bc91d3f39fda0ca10fcd3c68594 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - constrains: - - openblas >=0.3.32,<0.3.33.0a0 - license: BSD-3-Clause - license_family: BSD - size: 5928890 - timestamp: 1774471724897 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead - md5: 7df50d44d4a14d6c31a2c54f2cd92157 - depends: - - __glibc >=2.17,<3.0.a0 - - libglvnd 1.7.0 ha4b6fd6_2 - license: LicenseRef-libglvnd - size: 50757 - timestamp: 1731330993524 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 - md5: 1c0320794855f457dea27d35c4c71e23 - depends: - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libcurl >=8.14.1,<9.0a0 - - libgrpc >=1.73.1,<1.74.0a0 - - libopentelemetry-cpp-headers 1.21.0 ha770c72_1 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.21.0 - license: Apache-2.0 - license_family: APACHE - size: 885397 - timestamp: 1751782709380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - sha256: b3a1b36d5f92fbbfd7b6426982a99561bdbd7e4adbafca1b7f127c9a5ab0a60f - md5: 9e298d76f543deb06eb0f3413675e13a - license: Apache-2.0 - license_family: APACHE - size: 363444 - timestamp: 1751782679053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_10_cpu.conda - build_number: 10 - sha256: bd26abdb1bcf370a3c17daa8638301b495860370caae9d6c0c86dba4e6a6ac46 - md5: af8cb58362579a429fe087cab43a0900 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 h40b5c2d_10_cpu - - libgcc >=14 - - libstdcxx >=14 - - libthrift >=0.22.0,<0.22.1.0a0 - - openssl >=3.5.5,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 1370331 - timestamp: 1770434436295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.57-h421ea60_0.conda - sha256: 06323fb0a831440f0b72a53013182e1d4bb219e3ea958bb37af98b25dc0cf518 - md5: 06f225e6d8c549ad6c0201679828a882 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libzlib >=1.3.2,<2.0a0 - license: zlib-acknowledgement - size: 317779 - timestamp: 1775692841709 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 - md5: 07479fc04ba3ddd5d9f760ef1635cfa7 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4372578 - timestamp: 1766316228461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - sha256: eb5d5ef4d12cdf744e0f728b35bca910843c8cf1249f758cf15488ca04a21dbb - md5: a30848ebf39327ea078cf26d114cff53 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libgcc >=14 - - libstdcxx >=14 - constrains: - - re2 2025.11.05.* - license: BSD-3-Clause - license_family: BSD - size: 211099 - timestamp: 1762397758105 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda - sha256: eb4082a5135102f5ba9c302da13164d4ed1181d5f0db9d49e5e11a815a7b526f - md5: df81fd57eacf341588d728c97920e86d - depends: - - __glibc >=2.17,<3.0.a0 - - geos >=3.14.1,<3.14.2.0a0 - - libgcc >=14 - - libstdcxx >=14 - license: GPL-2.0-or-later - license_family: GPL - size: 231670 - timestamp: 1761670395043 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_18.conda - sha256: 0329e23d54a567c259adc962a62172eaa55e6ca33c105ef67b4f3cdb4ef70eaa - md5: ff754fbe790d4e70cf38aea3668c3cb3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 - - libstdcxx >=15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 8095113 - timestamp: 1771378289674 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda - sha256: 64e5c80cbce4680a2d25179949739a6def695d72c40ca28f010711764e372d97 - md5: 7af961ef4aa2c1136e11dd43ded245ab - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - license: ISC - size: 277661 - timestamp: 1772479381288 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - sha256: 403c1ad74ee70caaac02216a233ef9ec4531497ee14e7fea93a254a005ece88d - md5: 887245164c408c289d0cb45bd508ce5f - depends: - - __glibc >=2.17,<3.0.a0 - - freexl >=2 - - freexl >=2.0.0,<3.0a0 - - geos >=3.14.1,<3.14.2.0a0 - - libgcc >=14 - - librttopo >=1.1.0,<1.2.0a0 - - libsqlite >=3.50.4,<4.0a0 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 - - libxml2-devel - - libzlib >=1.3.1,<2.0a0 - - proj >=9.7.0,<9.8.0a0 - - sqlite - - zlib - license: MPL-1.1 - license_family: MOZILLA - size: 4097449 - timestamp: 1761681679109 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda - sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 - md5: fd893f6a3002a635b5e50ceb9dd2c0f4 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - license: blessing - size: 951405 - timestamp: 1772818874251 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 - md5: eecce068c7e4eddeb169591baac20ac4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 304790 - timestamp: 1745608545575 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda - sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e - md5: 1b08cd684f34175e4514474793d44bcb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc 15.2.0 he0feb66_18 - constrains: - - libstdcxx-ng ==15.2.0=*_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 5852330 - timestamp: 1771378262446 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_118.conda - sha256: 138ee40ba770abf4556ee9981879da9e33299f406a450831b48c1c397d7d0833 - md5: a50630d1810916fc252b2152f1dc9d6d - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 20669511 - timestamp: 1771378139786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda - sha256: 3c902ffd673cb3c6ddde624cdb80f870b6c835f8bf28384b0016e7d444dd0145 - md5: 6235adb93d064ecdf3d44faee6f468de - depends: - - libstdcxx 15.2.0 h934c35e_18 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27575 - timestamp: 1771378314494 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 - md5: 8ed82d90e6b1686f5e98f8b7825a15ef - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.1,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 424208 - timestamp: 1753277183984 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 - md5: cd5a90476766d53e901500df9215e927 - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.25,<1.26.0a0 - - libgcc >=14 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libstdcxx >=14 - - libwebp-base >=1.6.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: HPND - size: 435273 - timestamp: 1762022005702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda - sha256: c4b80ddcddc015ec696e53605e045954e4fe27e79aba65b754803a05ef4e3fe2 - md5: 4bdace082e911a3e1f1f0b721bed5b56 - depends: - - libexpat >=2.5.0,<3.0a0 - - libgcc-ng >=12 - constrains: - - udunits2 2.2.28.* - license: LicenseRef-BSD-UCAR - size: 81441 - timestamp: 1696525535662 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda - sha256: ecbf4b7520296ed580498dc66a72508b8a79da5126e1d6dc650a7087171288f9 - md5: 1247168fe4a0b8912e3336bccdbf98a5 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 85969 - timestamp: 1768735071295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda - sha256: bc1b08c92626c91500fd9f26f2c797f3eb153b627d53e9c13cd167f1e12b2829 - md5: 38ffe67b78c9d4de527be8315e5ada2c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: BSD-3-Clause - license_family: BSD - size: 40297 - timestamp: 1775052476770 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda - sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b - md5: 0f03292cc56bf91a077a134ea8747118 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 895108 - timestamp: 1753948278280 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b - md5: aea31d2e5b1091feca96fcfe945c3cf9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - constrains: - - libwebp 1.6.0 - license: BSD-3-Clause - license_family: BSD - size: 429011 - timestamp: 1752159441324 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda - sha256: 275c324f87bda1a3b67d2f4fcc3555eeff9e228a37655aa001284a7ceb6b0392 - md5: e49238a1609f9a4a844b09d9926f2c3d - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.2,<6.0a0 - - libxml2-16 2.15.2 hca6bf5a_0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 45968 - timestamp: 1772704614539 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda - sha256: 08d2b34b49bec9613784f868209bb7c3bb8840d6cf835ff692e036b09745188c - md5: f3bc152cb4f86babe30f3a4bf0dbef69 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.2,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - libxml2 2.15.2 - license: MIT - license_family: MIT - size: 557492 - timestamp: 1772704601644 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.2-he237659_0.conda - sha256: 4ac0f70a6b985573f057f839445044d6e8c0312599c4839488296666ee56a8dd - md5: 52a4ab30ceaaf314737892c82aadeca4 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.2,<6.0a0 - - libxml2 2.15.2 he237659_0 - - libxml2-16 2.15.2 hca6bf5a_0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 80239 - timestamp: 1772704626884 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 - md5: a7b27c075c9b7f459f1c022090697cba - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 109043 - timestamp: 1730442108429 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 - md5: d87ff7921124eccd67248aa483c23fec - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - zlib 1.3.2 *_2 - license: Zlib - license_family: Other - size: 63629 - timestamp: 1774072609062 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - sha256: 5c6bbeec116e29f08e3dad3d0524e9bc5527098e12fc432c0e5ca53ea16337d4 - md5: 45161d96307e3a447cc3eb5896cf6f8c - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - license: GPL-2.0-or-later - license_family: GPL - size: 191060 - timestamp: 1753889274283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/magics-4.16.0-h1a1f456_4.conda - sha256: d90c1f2b6a7f6da1052b4f28c18c5811bd5e5b51bff7416b7e8f1587d9804de0 - md5: 71975455784f2903a277e920813a5299 - depends: - - expat - - freetype - - pango - - xorg-xorgproto - - cairo - - proj - - eccodes >=2.21.0 - - simplejson - - libnetcdf - - zlib - - magics-python - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - libglib >=2.86.4,<3.0a0 - - libnetcdf >=4.10.0,<4.10.1.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - proj >=9.7.1,<9.8.0a0 - - pango >=1.56.4,<2.0a0 - - libexpat >=2.7.5,<3.0a0 - - libzlib >=1.3.2,<2.0a0 - constrains: - - magics-metview ==9999999999 - license: Apache-2.0 - license_family: APACHE - size: 27267045 - timestamp: 1775632906282 -- conda: https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda - sha256: 10d05b239e901f88394a2540a248d2c696d6ca40f76f62c5f20ec1861acf5384 - md5: 3fd7e3db129f12362642108f23fde521 - depends: - - findlibs - - numpy - - python >=3.6 - license: Apache-2.0 - license_family: Apache - size: 27202 - timestamp: 1675850182530 -- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - sha256: d652c7bd4d3b6f82b0f6d063b0d8df6f54cc47531092d7ff008e780f3261bdda - md5: 33405d2a66b1411db9f7242c8b97c9e7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: GPL-3.0-or-later - license_family: GPL - size: 513088 - timestamp: 1727801714848 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.6.3.1-h5888daf_0.conda - sha256: 6736158b195d9163adfcdd97e4e80a7a3c166ed534efa2efa27a4b83359b4b1f - md5: dd2974918f8e2534850866eddd42ee3c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 950599 - timestamp: 1747803179261 -- conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda - sha256: 0c3700d15377156937ddc89a856527ad77e7cf3fd73cb0dffc75fce8030ddd16 - md5: da01bb40572e689bd1535a5cee6b1d68 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: Zlib - license_family: Other - size: 93471 - timestamp: 1746450475308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - sha256: 320dfc59a94cb9e3635bda71b9e62278b34aa2fdaea0caa6832ddb9b37e9ccd5 - md5: ab3e3db511033340e75e7002e80ce8c0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: MIT - license_family: MIT - size: 203174 - timestamp: 1747116762269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63 - md5: 16c2a0e9c4a166e53632cfca4f68d020 - constrains: - - nlohmann_json-abi ==3.12.0 - license: MIT - license_family: MIT - size: 136216 - timestamp: 1758194284857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.10.1-np2py314h7173366_2.conda - sha256: 251c7eb17b9ac645b54ae2dabf5321b14bd97498d78a0df8435ed77d4ec573d7 - md5: 85aa09e550b144e83bc46418fe9d0ee3 - depends: - - python - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - numpy >=1.23,<3 - - python_abi 3.14.* *_cp314t - license: LGPL-2.1-or-later - size: 456026 - timestamp: 1773492082997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.11-h5888daf_0.conda - sha256: e9c0a46c046fdffa22eb1f77030c95c46d2d6ec5cfaea89fc23710735f2c8d33 - md5: 9b929cfa0d6353227bae3cd63ecd7940 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - mbedtls >=3.6.3.1,<3.7.0a0 - license: MIT - license_family: MIT - size: 255583 - timestamp: 1748924914867 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314hd4f4903_0.conda - sha256: 80bdebe25269b3a0ea5e3eae2ef7159615d4aa3a74b2aa1b408f35b5812312b7 - md5: ee2b2bb9e96a9cd64d68492842559adf - depends: - - python - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - python_abi 3.14.* *_cp314t - - libcblas >=3.9.0,<4.0a0 - - libblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - size: 8972010 - timestamp: 1773839212779 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda - sha256: c0ef482280e38c71a08ad6d71448194b719630345b0c9c60744a2010e8a8e0cb - md5: da1b85b6a87e141f5140bb9924cecab0 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=14 - license: Apache-2.0 - license_family: Apache - size: 3167099 - timestamp: 1775587756857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - sha256: 84cfe4e11d3186c0c369f111700e978c849fb9e4ab7ed031acbe3663daacd141 - md5: a98b8d7cfdd20004f1bdd1a51cb22c58 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libprotobuf >=6.31.1,<6.31.2.0a0 - - libstdcxx >=14 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.2,<1.3.0a0 - - tzdata - - zstd >=1.5.7,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 1317120 - timestamp: 1768247825733 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda - sha256: d46f76ed09396e3bd1dc11030b3d0d222c25ba8d92f3cde08bc6fbd1eec4f9e0 - md5: de8ccf9ffba55bd20ee56301cfc7e6db - license: GPL-2.0-or-later - license_family: GPL - size: 22364689 - timestamp: 1773933354952 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 - md5: d53ffc0edc8eabf4253508008493c5bc - depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 - - fonts-conda-ecosystem - - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.1 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libgcc >=14 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 - license: LGPL-2.1-or-later - size: 458036 - timestamp: 1774281947855 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff - md5: 7a3bff861a6583f1889021facefc08b1 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 1222481 - timestamp: 1763655398280 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a - md5: c01af13bdc553d1a8fbfff6e8db075f0 - depends: - - libgcc >=14 - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - license: MIT - license_family: MIT - size: 450960 - timestamp: 1754665235234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - sha256: c94d3d8ef40d1ea018860d66c416003bc03adede7d212efc9218bb64041fe2f7 - md5: 031e33ae075b336c0ce92b14efa886c5 - depends: - - sqlite - - libtiff - - libcurl - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libtiff >=4.7.1,<4.8.0a0 - - libcurl >=8.18.0,<9.0a0 - - libsqlite >=3.51.2,<4.0a0 - constrains: - - proj4 ==999999999999 - license: MIT - license_family: MIT - size: 3593669 - timestamp: 1770890751115 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-hf9ea5aa_0_cp314t.conda - sha256: 60b64046b273c5ae1508d860bda2cb1c02c9af8d0973a9873ce416496132933d - md5: f9c864fd19f2e57a6624520c63262a16 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.5,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.52.0,<4.0a0 - - libuuid >=2.42,<3.0a0 - - libzlib >=1.3.2,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.6,<4.0a0 - - python_abi 3.14.* *_cp314t - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - zstd >=1.5.7,<1.6.0a0 - track_features: - - py_freethreading - license: Python-2.0 - size: 47768693 - timestamp: 1775614324184 - python_site_packages_path: lib/python3.14t/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314t.conda - build_number: 8 - sha256: d9ed2538fba61265a330ee1b1afe99a4bb23ace706172b9464546c7e01259d63 - md5: 3251796e09870c978e0f69fa05e38fb6 - constrains: - - python 3.14.* *_cp314t - license: BSD-3-Clause - license_family: BSD - size: 7020 - timestamp: 1752805919426 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-4.5-r45hd8ed1ab_1009.conda - sha256: 2af0ddd26c10dd1326774e57f9aa47607bd0c51b6a4122e8b68a023358280861 - md5: cc1055fbf899ff061909f934af18a20b - depends: - - r-base >=4.5,<4.6.0a0 - - r-recommended - license: GPL-3.0-only - license_family: GPL3 - size: 18543 - timestamp: 1757600488138 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_8-r45hc72bb7e_1.conda - sha256: 5055913d786b82f33a14f493f32945b3b2b5d528ea2f52856ca02b296f6511eb - md5: dde4691fe168112a90efba6aaa08f13d - depends: - - r-base >=4.5,<4.6.0a0 - license: LGPL (>= 2) - license_family: LGPL - size: 82526 - timestamp: 1757460261392 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-arrow-22.0.0-r45hecca717_0.conda - sha256: 50ee21025ed7770ae3dc1c0c825e517a9ac3a8bb9650d56997d6a7ea573bf71c - md5: 14732df51d9c418752387dd4c0de40ec - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow >=22.0.0,<22.1.0a0 - - libarrow-acero >=22.0.0,<22.1.0a0 - - libarrow-dataset >=22.0.0,<22.1.0a0 - - libarrow-substrait >=22.0.0,<22.1.0a0 - - libgcc >=14 - - libparquet >=22.0.0,<22.1.0a0 - - libstdcxx >=14 - - r-assertthat - - r-base >=4.5,<4.6.0a0 - - r-bit64 - - r-purrr - - r-r6 - - r-rlang - - r-tidyselect - license: Apache-2.0 - license_family: APACHE - size: 4577688 - timestamp: 1761634915444 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.1-r45h54b55ab_1.conda - sha256: 5c4d2bcc1beba7703acbfe1610a846ce2a4010456714705dfa63989cee722a00 - md5: 1ae3c72e90c6a3871c594448d3e152e4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-sys >=2.1 - license: MIT - license_family: MIT - size: 31983 - timestamp: 1758383536121 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r45hc72bb7e_6.conda - sha256: 90e7ae8aa427274d7d2e510060b68925e60e897ecaa5ea135bb33afa7eb12134 - md5: b5291c60f52b43108a2973ba6f5885d1 - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 72543 - timestamp: 1757447376176 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.1-r45h54b55ab_0.conda - sha256: fee4a4edfc81b45a79fa7da152b8a46cccf5caad6f0fcf86758a55dcb366af63 - md5: dac02364873fe7c75047d7a21741977c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 131442 - timestamp: 1775202754185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.5.3-h15dba0b_1.conda - sha256: eb21b72dfa6cc767cebc0b348b8da3dc762a7e85627fc7a5afee72cc75e8f89c - md5: 0356c81af70570e685acc134ac740014 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - - _r-mutex 1.* anacondar_1 - - bwidget - - bzip2 >=1.0.8,<2.0a0 - - cairo >=1.18.4,<2.0a0 - - curl - - gcc_impl_linux-64 >=10 - - gfortran_impl_linux-64 - - gsl >=2.7,<2.8.0a0 - - gxx_impl_linux-64 >=10 - - icu >=78.2,<79.0a0 - - libblas >=3.9.0,<4.0a0 - - libcurl >=8.19.0,<9.0a0 - - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.4,<3.0a0 - - libgcc - - libgcc-ng >=12 - - libgfortran - - libgfortran-ng - - libgfortran5 >=10.4.0 - - libglib >=2.86.4,<3.0a0 - - libiconv >=1.18,<2.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - liblzma >=5.8.2,<6.0a0 - - libpng >=1.6.55,<1.7.0a0 - - libstdcxx - - libstdcxx-ng >=12 - - libtiff >=4.7.1,<4.8.0a0 - - libuuid >=2.41.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - make - - pango >=1.56.4,<2.0a0 - - pcre2 >=10.47,<10.48.0a0 - - readline >=8.3,<9.0a0 - - sed - - tk >=8.6.13,<8.7.0a0 - - tktable - - tzdata >=2024a - - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.6,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxt >=1.3.1,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 27333030 - timestamp: 1773746047753 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_6-r45h54b55ab_0.conda - sha256: 7a3751a340766ee25380a51df70c8356a64cfeb6ac3d982a86e92eb99fec2943 - md5: e573dc135976197e7f819eec202c93f1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 48616 - timestamp: 1770027796335 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-base64url-1.4-r45h54b55ab_1008.conda - sha256: 1785c24e90a0939a78e9bdedf44b1e5ae278619479dfcfe39307c8c6a2171991 - md5: 0c269f8672632b38dd825e59e652d3ff - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-backports >=1.1.0 - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 44354 - timestamp: 1757586418914 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit-4.6.0-r45h54b55ab_1.conda - sha256: f5e7c54332bb79d1f992fa97088e206a1ba8037a1be8c77886e2f63b94a97a85 - md5: 6b666bedcfbe9dee03efb5fb95ac18e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 621466 - timestamp: 1757441575090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.6.0_1-r45h54b55ab_1.conda - sha256: 2e708cdbf5392cb9e0402999ca6ee3df9cbf4f3a434dba7df823dba6c87c5493 - md5: 8c2520b2dfcaad73dff21971d8092b28 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-bit >=4.0.0 - license: GPL-2.0-only - license_family: GPL2 - size: 504212 - timestamp: 1757457072548 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-blob-1.3.0-r45hc72bb7e_0.conda - sha256: c939f23050463f3f62d08eaa5bdcd567799ed8f78d5270e50884cfe5ea35048d - md5: a5401d5f7b44aa4b805abc756ddb403a - depends: - - r-base >=4.5,<4.6.0a0 - - r-rlang - - r-vctrs >=0.2.1 - license: GPL-3.0-only - license_family: GPL3 - size: 70126 - timestamp: 1768440582521 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r45hc72bb7e_1.conda - sha256: e2a347c8816f86515c479f9944515623bf120fedc09452246f105c568ae47381 - md5: 0a84930dd565d816d9fdb2473d6d3c8a - depends: - - r-base >=4.5,<4.6.0a0 - license: Unlimited - license_family: Other - size: 644786 - timestamp: 1757463841478 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-brew-1.0_10-r45hc72bb7e_2.conda - sha256: 9324cbb93b6c3a2903b5f12c57eb7f03355b35ca1f1db15becf57f15fc40b796 - md5: 91c64b596d193d6ea30fc491ec9ae50f - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-only - license_family: GPL2 - size: 68849 - timestamp: 1757447876801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-brio-1.1.5-r45h54b55ab_2.conda - sha256: 3711f8f1b22725994382eb3253035c8b5190343a6724a7ceb0746637386a4f2e - md5: edc56a2b0886f78e1012467b421661e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 44436 - timestamp: 1757421422834 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.10.0-r45hc72bb7e_0.conda - sha256: a4e8329b0891190fa4fd11a79db95a81e1f6e23a0c780ba67d92dbe40f5bbd37 - md5: b0ab5d18eec0343aaa4790dd78087a87 - depends: - - r-base >=4.5,<4.6.0a0 - - r-base64enc - - r-cachem - - r-htmltools >=0.5.7 - - r-jquerylib >=0.1.3 - - r-jsonlite - - r-lifecycle - - r-memoise >=2.0.1 - - r-mime - - r-rlang - - r-sass >=0.4.0 - license: MIT - license_family: MIT - size: 5484359 - timestamp: 1769433938691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.1.0-r45h54b55ab_2.conda - sha256: 75a21c955abf03fa1804d47c94f5091cd772b614e074b63b02347a23f5649a53 - md5: 42617e710293f0b76ccc08855e0edbc4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-fastmap - - r-rlang - license: MIT - license_family: MIT - size: 76879 - timestamp: 1757441544326 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r45hc72bb7e_2.conda - sha256: f9f49b2b845f279af84a33c8af19a915b2731c0bd892c608205cbad8a34f423d - md5: a5cc8a8d0dc08dc769c65a13b3573739 - depends: - - r-base >=4.5,<4.6.0a0 - - r-processx >=3.4.0 - - r-r6 - license: MIT - license_family: MIT - size: 454090 - timestamp: 1757475635573 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-class-7.3_23-r45h54b55ab_1.conda - sha256: 127730343fc4950b464f82cb1488fe4bf7247fc73b032524898828be9fe7990d - md5: edaca7ff6cc2450fc98f556268b8277f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-mass - license: GPL-2.0-or-later - license_family: GPL3 - size: 109601 - timestamp: 1757458174286 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_11-r45heaba542_1.conda - sha256: aa67f775bd1150b4d09db051e3736a86336dcf56d69f7a43db029f0b08c9d865 - md5: 4763ac257891ff9423be47c469429319 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - - r-class - - r-e1071 - - r-kernsmooth - license: GPL-2.0-or-later - license_family: GPL2 - size: 493225 - timestamp: 1757486428213 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.6-r45h3697838_0.conda - sha256: a894e558a680a31444090de217b73f8fc06a3f4c07746d2cde4b6f86acdae0b1 - md5: ed8dcbbe9d66e9093ba58891e3b6065a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 1323795 - timestamp: 1775733704549 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-cliapp-0.1.2-r45hc72bb7e_2.conda - sha256: e6f8e916018d958aab7742fc4dca39d11e9fd71a6c9cbf706ae48b3f4aa68963 - md5: eda926ce6830fc811ca06adde8ae3630 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-crayon - - r-fansi - - r-glue >=1.3.0 - - r-prettycode - - r-progress >=1.2.0 - - r-r6 - - r-selectr - - r-withr - - r-xml2 - license: MIT - license_family: MIT - size: 248879 - timestamp: 1757835846605 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r45hc72bb7e_4.conda - sha256: df9c2315dcc8e271947d6fee8d805f1723ce1f41be4369aa820f572d272c042d - md5: 5deda37b255bc9dc837d00b89dbf2a21 - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 70829 - timestamp: 1757460210204 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-cluster-2.1.8.2-r45heaba542_0.conda - sha256: 521cb81e41e3a63717ec7cf317598b8a793969e60c57328b7d382bfea4178b5d - md5: 421758eee50879a9a7ff122543e38e14 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 592267 - timestamp: 1770285739523 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-clustermq-0.9.8-r45hded8526_1.conda - sha256: bba5175f4ec40d91fac457aa7c6ad21c64e5a5046106cfb57b7c4f4190a7935c - md5: c741a68680f3c1e4434b4dfb5d24dfa1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-globals - - r-narray - - r-progress - - r-r6 - - r-rcpp - - zeromq >=4.3.5,<4.4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 463513 - timestamp: 1758679934710 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-coda-0.19_4.1-r45hc72bb7e_2.conda - sha256: 9bc21969322aca5a5ea34115e3e68a76742bc6a7d7752dee2dedf2bf49c0e72b - md5: ee569d089cf32f9e9ad15d27cc59cf72 - depends: - - r-base >=4.5,<4.6.0a0 - - r-lattice - license: GPL-2.0-or-later - license_family: GPL3 - size: 342172 - timestamp: 1757468179935 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r45hc72bb7e_2.conda - sha256: aec327dd836824278a2adf006f426a58d834828de74de7f8348f2f5f068de702 - md5: 8e9e5b14f74a6040c77e0b9c8bfa84ca - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 109200 - timestamp: 1757452164030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-collections-0.3.12-r45h54b55ab_0.conda - sha256: 8203ecac493244bce98bc745b51fd839b0dbb56c3b9e986df58b7dfcb1fa206f - md5: 6157f48d0ec902dc3db2080afabed4bf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 76849 - timestamp: 1774169828508 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_2-r45h54b55ab_0.conda - sha256: 0499da963641d533d3b210373a2b430301f9f1593c57cb3aa2f790125548ad52 - md5: 9aa495fac7950f962e255cd1af855e95 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 2541378 - timestamp: 1758590590322 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-commonmark-2.0.0-r45h54b55ab_1.conda - sha256: 211423381b2e832619cdb964e7fe3833b09871d0140066ca90fd3e91eb86231b - md5: 769e161acb18575460780ab99acc454e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 139818 - timestamp: 1757422097696 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.4-r45h785f33e_0.conda - sha256: 32a37046e884f2c4125baff219dc7dc97cfe96c1db7d30355d2414e500a00ca9 - md5: 8ffdfacba9fb160f880ecdc4b450fdf5 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 243945 - timestamp: 1775286035216 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r45hc72bb7e_2.conda - sha256: 9126a0408696133893e674549ca7aef317768dba503765a7ed032616aabe5b49 - md5: 4f111ce078b9690abaad6248b831a370 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 168201 - timestamp: 1757452410374 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-credentials-2.0.3-r45hc72bb7e_1.conda - sha256: 5db8dc6e14ab6ff3dc79292184c079b5492f6125193e05a99f0714792d3bdc4a - md5: a94730bc5fa7197875f58d4b092a541a - depends: - - r-askpass - - r-base >=4.5,<4.6.0a0 - - r-curl - - r-jsonlite - - r-openssl >=1.3 - - r-sys >=2.1 - license: MIT - license_family: MIT - size: 226814 - timestamp: 1758405193327 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-crew-1.3.0-r45hc72bb7e_0.conda - sha256: 082b5ccecb90e311319c224453b58b0afecf21e68c064d36110f08c1169d96b6 - md5: 75a133c71033108894e6b4b762a6cd04 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.1.0 - - r-collections >=0.3.9 - - r-data.table - - r-later - - r-mirai >=2.5.0 - - r-nanonext >=1.7.0 - - r-processx - - r-promises - - r-ps - - r-r6 - - r-rlang - - r-tibble - - r-tidyselect - license: MIT - license_family: MIT - size: 1072049 - timestamp: 1758449079698 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-crew.cluster-0.4.0-r45hc72bb7e_0.conda - sha256: 3f985894ebab7f9320edee03ab42fd5bbe524c1110eb2ce3356fa4cd8ac422d9 - md5: adb69850dee74e5ecb8708a30d8f9816 - depends: - - r-base >=4.5,<4.6.0a0 - - r-crew >=1.3.0 - - r-lifecycle - - r-nanonext - - r-ps - - r-r6 - - r-rlang - - r-vctrs - - r-xml2 - - r-yaml - license: MIT - license_family: MIT - size: 513514 - timestamp: 1758453915438 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-curl-7.0.0-r45h10955f1_1.conda - sha256: f69d86d1d2020d38a4ba085297e8c3460b58158846232db96e24baf71db279f9 - md5: b51b37b26b8105fa72abe12131165018 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.14.1,<9.0a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 479210 - timestamp: 1757581704371 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.2-r45hc72bb7e_0.conda - sha256: 40fab5c4f6fe83720179ef98bffb69c17f4b910273b4423149ebeac9fd68c513 - md5: e15b3fee61cf354698b772424b10147e - depends: - - r-base >=4.5,<4.6.0a0 - - r-callr - - r-crayon - - r-desc - - r-remotes - - r-withr - license: MIT - license_family: MIT - size: 41457 - timestamp: 1773232884771 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r45h1c8cec4_1.conda - sha256: c9ac7510c18e3258e227575a83f6caf0cc692da3cc2a8c4c344da2463529b07e - md5: d63403a16b7991fa5a6b7b05e110681a - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - license: MPL-2.0 - license_family: OTHER - size: 2301313 - timestamp: 1757499556984 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.3.0-r45hc72bb7e_0.conda - sha256: 82dbc27e1db79f9a897626656c3b418a071a681a07f4c47f6f15f98ec12e09fe - md5: 8a912a3730695141b5566202130a11e1 - depends: - - r-base >=4.5,<4.6.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 892756 - timestamp: 1772009847613 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.2-r45hc72bb7e_0.conda - sha256: d20fb999446dceaa575d458974e5c446ee6807e67c8e5797cca398cf051dd9ac - md5: d1dc488c56da3d0078b552153bd02f74 - depends: - - r-base >=4.5,<4.6.0a0 - - r-blob >=1.2.0 - - r-cli >=3.6.1 - - r-dbi >=1.1.3 - - r-dplyr >=1.1.2 - - r-glue >=1.6.2 - - r-lifecycle >=1.0.3 - - r-magrittr - - r-pillar >=1.9.0 - - r-purrr >=1.0.1 - - r-r6 >=2.2.2 - - r-rlang >=1.1.1 - - r-tibble >=3.2.1 - - r-tidyr >=1.3.0 - - r-tidyselect >=1.2.1 - - r-vctrs >=0.6.3 - - r-withr >=2.5.0 - license: MIT - license_family: MIT - size: 1217410 - timestamp: 1770973839074 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-desc-1.4.3-r45hc72bb7e_2.conda - sha256: b54c00d2ab9cca150f92120664a8a24cd63213d28c3e951c19575b24d9b57b61 - md5: 2428c825ae5b2fc162edaeb3fa76b486 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-r6 - - r-rprojroot - license: MIT - license_family: MIT - size: 339976 - timestamp: 1757463164006 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-devtools-2.5.0-r45hc72bb7e_0.conda - sha256: 31c88d4d79fe92a74e902a837515d0b5d0dc22c7b5ebccacaac9a786e5d246af - md5: b4b3197ab2588fafcffbad206cd9985e - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.3.0 - - r-desc >=1.4.1 - - r-ellipsis >=0.3.2 - - r-fs >=1.5.2 - - r-lifecycle >=1.0.1 - - r-memoise >=2.0.1 - - r-miniui >=0.1.1.1 - - r-pak - - r-pkgbuild >=1.3.1 - - r-pkgdown >=2.0.6 - - r-pkgload >=1.3.0 - - r-profvis >=0.3.7 - - r-rcmdcheck >=1.4.0 - - r-remotes >=2.4.2 - - r-rlang >=1.0.4 - - r-roxygen2 >=7.2.1 - - r-rversions >=2.1.1 - - r-sessioninfo >=1.2.2 - - r-testthat >=3.1.4 - - r-urlchecker >=1.0.1 - - r-usethis >=2.1.6 - - r-withr >=2.5.0 - license: MIT - license_family: MIT - size: 470197 - timestamp: 1773988198941 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-diffobj-0.3.6-r45h54b55ab_1.conda - sha256: 9329c0ffdbfce664893d83add06fcf73f0f7046d12cacb074192176f236cabf6 - md5: 98a4d23fc0767e9f30473d10e0c7c0b7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-crayon >=1.3.2 - license: GPL-2.0-or-later - license_family: GPL2 - size: 1009962 - timestamp: 1757459137210 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.39-r45h3697838_0.conda - sha256: 33ce40552bc1810252c4445082392638ff2fb883147cf36c3e4017e9b0dc5474 - md5: a0e856537aa7d62a6835e3a528d29517 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 218412 - timestamp: 1763566744987 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-doparallel-1.0.17-r45hc72bb7e_4.conda - sha256: 2edd40491f63166d242e4e092f37c793a9c51c45fc8eae6132c11d5831706205 - md5: af58987665d786f31bfd45264cb72ae4 - depends: - - r-base >=4.5,<4.6.0a0 - - r-foreach >=1.2.0 - - r-iterators >=1.0.0 - license: GPL-2.0-only - license_family: GPL2 - size: 200811 - timestamp: 1757511066319 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-downlit-0.4.5-r45hc72bb7e_0.conda - sha256: 73396f3432df8aac38aeb15f27ebdecb216d3b63bfa3c87fc6b996acf27b82f8 - md5: 49850c61c12fbd8dd19b30d9bc81833f - depends: - - r-base >=4.5,<4.6.0a0 - - r-brio - - r-desc - - r-digest - - r-evaluate - - r-fansi - - r-memoise - - r-rlang - - r-vctrs - - r-withr - - r-yaml - license: MIT - license_family: MIT - size: 121741 - timestamp: 1763113559895 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplr-1.7.8-r45heaba542_1.conda - sha256: c23ab3636e5725ac596c5e0a8f1c54f4ad51c14f22ecdaa51e2a97204d8a76ca - md5: fdc22df534d09e1a432ff01f0d5e2001 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - - r-boot - - r-digest >=0.2.3 - - r-lattice >=0.13_6 - - r-lme4 - - r-matrix >=1.0_3 - - r-matrixstats >=0.50.2 - - r-plyr >=1.8 - - r-png >=0.1_2 - - r-r.utils >=1.32.1 - - r-signal - - r-stringi >=0.2_3 - - r-stringr >=0.4 - - r-xml >=2.1_0 - license: GPL-2.0-or-later - license_family: GPL - size: 1367542 - timestamp: 1758605011691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.2.1-r45h3697838_0.conda - sha256: 42067805b0742b933de7e1ca4311645797ac687cee6aacd630d9d4c585dfa830 - md5: 7c8e643f764769a184f0d0d06ac0e789 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-ellipsis - - r-generics - - r-glue >=1.3.2 - - r-lifecycle >=1.0.0 - - r-magrittr >=1.5 - - r-pillar >=1.5.1 - - r-r6 - - r-rlang >=0.4.10 - - r-tibble >=2.1.3 - - r-tidyselect >=1.1.0 - - r-vctrs >=0.3.5 - license: MIT - license_family: MIT - size: 1445950 - timestamp: 1775207093582 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_17-r45h3697838_0.conda - sha256: a413df3f99883f6972cb58642c1ff5bbe660a38cfedb8d534e1b46ba943d66c9 - md5: 25bfa5c29f7b8f25f0cd76af2cf23e17 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-class - - r-proxy - license: GPL-2.0-or-later - license_family: GPL3 - size: 598429 - timestamp: 1766072349527 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.3-r45h54b55ab_0.conda - sha256: 19d03273f9d5e1aa41302e1cf080dcb95ced5b955bc978df39eee71a9686a86c - md5: e43b3e7101a90ac57f58a21da67c99a4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-rlang >=0.3.0 - license: MIT - license_family: MIT - size: 33411 - timestamp: 1775287239478 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-evaluate-1.0.5-r45hc72bb7e_1.conda - sha256: d3accfeab1416151515c37e5edc94b18868998db4936183459f8040117d5c83c - md5: 4e0c71ab78d7292372a89d4daecb49af - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 111914 - timestamp: 1757447684244 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.7-r45h54b55ab_0.conda - sha256: 68dcc5aa6fc4408f9cac5aeaa03a7e6a5d127a949fc72b3fed31fd1af3bbeee5 - md5: 309740f1b6a2d4cb16d395be786c85c5 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 329435 - timestamp: 1763566090233 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r45h3697838_2.conda - sha256: 06c5e73ed5c9c15e7ca944e3a5fabfbcabd9f4aec71804404ecf51c56f78fd8f - md5: 7896efcfd50f8c1f207acce5d4ab1cc0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 1429269 - timestamp: 1757441256046 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r45h3697838_2.conda - sha256: bfec10cec03b434d9010690c61d43a0be79418f67a0713ce31da207a40e1570c - md5: 245526991ad3b8a1dc97f2dcb5031065 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 73870 - timestamp: 1757421441326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-filelock-1.0.3-r45h54b55ab_2.conda - sha256: 669a2a6ac19e9ca817b7e6b6ec30643fbf08e423380987f356c3106b596d671a - md5: 67bb6dd33b269b3b3d8d6d6c7d7264c8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 33681 - timestamp: 1757575946026 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.3-r45hc72bb7e_1.conda - sha256: 865df12d8cdd8cf577abc8f785a0aa4ee50b4f8751256dffe4676a350943d591 - md5: e9fccb3617ec9776569c6496fa254e64 - depends: - - r-base >=4.5,<4.6.0a0 - - r-htmltools >=0.5.1.1 - - r-rlang >=0.4.10 - license: MIT - license_family: MIT - size: 1335664 - timestamp: 1757461248044 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r45hc72bb7e_4.conda - sha256: c95d1e61946bf81128be213dea7a07b5196c6e13caf9c6452c38145da8d2dfb1 - md5: 5abe392c8f8c5b954ebdc5fe46fcc709 - depends: - - r-base >=4.5,<4.6.0a0 - - r-codetools - - r-iterators - license: Apache-2.0 - license_family: APACHE - size: 140909 - timestamp: 1757490449004 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-foreign-0.8_91-r45h54b55ab_0.conda - sha256: 0f4f18874c9ba5d2a7c377672e68002cd83ec81647893591bed09927ba22f4c5 - md5: 64b7711ba8b74c96eed55237a1443408 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 269631 - timestamp: 1769731310506 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.7-r45h3697838_0.conda - sha256: 97d033bc3cc132893e11925eab2a64e5f6daf15c468688cc7364e0613853795e - md5: 68e44c944dd77e9c8455e720a59c64fd - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 518079 - timestamp: 1773966918671 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-furrr-0.4.0-r45hc72bb7e_0.conda - sha256: 2d5c82529d7aff7ed2af68015009b13542adbf6b788198e142df4e499598b705 - md5: 2813f7fa1b9d4e249ee29ed520df180c - depends: - - r-base >=4.5,<4.6.0a0 - - r-ellipsis - - r-future >=1.19.1 - - r-globals >=0.13.1 - - r-lifecycle >=0.2.0 - - r-purrr >=0.3.0 - - r-rlang >=0.3.0 - - r-vctrs >=0.3.2 - license: MIT - license_family: MIT - size: 1012055 - timestamp: 1774978764114 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.70.0-r45hc72bb7e_0.conda - sha256: fbd8f8661edb4fac131bc18105fb9c9cb7427602ad525aee83f7dda6d9dc1695 - md5: aa881360b19ba5911181085679303d5d - depends: - - r-base >=4.5,<4.6.0a0 - - r-digest - - r-globals >=0.18.0 - - r-listenv >=0.8.0 - - r-parallelly >=1.44.0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 953162 - timestamp: 1773591953508 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-future.callr-0.10.2-r45hc72bb7e_0.conda - sha256: 9cdbdf1e02dc66928aae13b45a8408e5eabb3d2653907b886e8326747086a302 - md5: 86b2f5c2965e66750a757bcd13eb8078 - depends: - - r-base >=4.5,<4.6.0a0 - - r-callr >=2.0.3 - - r-future >=1.23.0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 103906 - timestamp: 1760166979748 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r45hc72bb7e_2.conda - sha256: db6626d97338f0664bb5a0b8eefb2abd953ab06c4f856c80831411a9b996f723 - md5: f563c7b895121cc06112923292e017ea - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 60373 - timestamp: 1757467353195 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r45hc72bb7e_1.conda - sha256: 88a5cf4bac0a553943996bc930b1ea28f2635c262c1b2c5a42b026b69f227f02 - md5: f19c9493b80f63a41fa017ec3b27bc2e - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 88225 - timestamp: 1757455977192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-gert-2.3.1-r45h5e22a44_0.conda - sha256: d84f10e2eb1c5b04e74cae3b8847f09feaabc2b63b7c8b385e84a00df86f9c12 - md5: fb8003f08cff7c5ea407a7178097b697 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgit2 >=1.9.2,<1.10.0a0 - - r-askpass - - r-base >=4.5,<4.6.0a0 - - r-credentials >=1.2.1 - - r-openssl >=2.0.3 - - r-rstudioapi >=0.11 - - r-zip >=2.1.0 - license: MIT - license_family: MIT - size: 282398 - timestamp: 1768193980116 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-4.0.2-r45h785f33e_0.conda - sha256: 54b1fd62a41549452d4be61f26f999f0aaeda863e2ffcde5bfb4d6422207b8fd - md5: c707ec20fc03a712b525bb975367a1fb - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-glue - - r-gtable >=0.3.6 - - r-isoband - - r-lifecycle >=1.0.1 - - r-rlang >=1.1.0 - - r-s7 - - r-scales >=1.4.0 - - r-vctrs >=0.6.0 - - r-withr >=2.5.0 - license: MIT - license_family: MIT - size: 7843556 - timestamp: 1770120207776 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-gh-1.5.0-r45hc72bb7e_1.conda - sha256: 192cd751680077e36e7d4e2d7dd56bc479f1755652e0850d6467c148bfe93781 - md5: 63ad70a28896e7a2bb3c3d06c143c358 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.0.1 - - r-gitcreds - - r-httr2 - - r-ini - - r-jsonlite - - r-rlang >=1.0.0 - license: MIT - license_family: MIT - size: 129562 - timestamp: 1758411443631 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-gitcreds-0.1.2-r45hc72bb7e_4.conda - sha256: 8a2619d16e1148cd712446f47c39e53aa09708071f9fc46e9b8dd31a28fbf0ad - md5: 8864884cea757c51580b45be5c362068 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 96405 - timestamp: 1757482244466 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.19.1-r45hc72bb7e_0.conda - sha256: 05683862038020e679b6b1e30cebf4244416a7ffd73b7247f046b6155a351a05 - md5: 5bb935fc63812c4978f0ac443b8b3420 - depends: - - r-base >=4.5,<4.6.0a0 - - r-codetools - license: LGPL-2.1-or-later - license_family: LGPL - size: 181512 - timestamp: 1773583977537 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.8.0-r45h54b55ab_1.conda - sha256: 77aa73dbc9ad334bd07df737c279c4b710ce9fbd4d80df3e31dc7303c584552f - md5: 1183e4d2542ca14d0e7807864498b1a6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 165356 - timestamp: 1757421195953 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r45hc72bb7e_1.conda - sha256: fcd2601af8213f39af6f720e22c8f858b3451f8e3d93cbc9e6aedb2d6f88483e - md5: f686123cfba49e6299fae7e029a40266 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-glue - - r-lifecycle - - r-rlang - license: MIT - license_family: MIT - size: 228864 - timestamp: 1757463478042 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-here-1.0.2-r45hc72bb7e_0.conda - sha256: c40e1d74ccf393c27eba7f7588fdb915a1360df125c36ed18f9fbe0ea2c3fcb0 - md5: b285c2128264a05cd51477ebe6766d54 - depends: - - r-base >=4.5,<4.6.0a0 - - r-rprojroot >=2.0.2 - license: MIT - license_family: MIT - size: 56843 - timestamp: 1757929913101 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-highr-0.12-r45hc72bb7e_0.conda - sha256: e676112aac0dbfe123fcb3108cce376782211a096c898a3af46fdf32a37e12e9 - md5: 0b5902d6af02a23bda1794d46090db42 - depends: - - r-base >=4.5,<4.6.0a0 - - r-xfun >=0.18 - license: GPL-2.0-or-later - license_family: GPL - size: 57308 - timestamp: 1772794436225 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-hms-1.1.4-r45hc72bb7e_0.conda - sha256: be67527b52f98832ab2871d0182fb76499538ca7eb333506084620b7489ce6a0 - md5: 4677c1ad37a9452e27e27d9ed1b8ae90 - depends: - - r-base >=4.5,<4.6.0a0 - - r-ellipsis - - r-lifecycle - - r-pkgconfig - - r-rlang - - r-vctrs >=0.2.1 - license: MIT - license_family: MIT - size: 112799 - timestamp: 1760687922566 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-htmltools-0.5.9-r45h3697838_0.conda - sha256: 1fa1fcdf980d0da17a583e41810da190eb9caf586c3fdf36312d045d9bb812e7 - md5: 2a2297687ae137e7fa90d3c996895e61 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-base64enc - - r-digest - - r-ellipsis - - r-fastmap >=1.1.0 - - r-rlang >=0.4.10 - license: GPL-2.0-or-later - license_family: GPL3 - size: 367095 - timestamp: 1764860550376 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-htmlwidgets-1.6.4-r45h785f33e_4.conda - sha256: 4c3998ce4b4882429e52eed5c6c53d59056814d8fbc34a41ba79b990fdec1441 - md5: 6f767715f90e7caf17af72959bfcb11e - depends: - - r-base >=4.5,<4.6.0a0 - - r-htmltools >=0.5.7 - - r-jsonlite >=0.9.16 - - r-knitr >=1.8 - - r-rmarkdown - - r-yaml - license: MIT - license_family: MIT - size: 426023 - timestamp: 1757552859817 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-httpuv-1.6.17-r45h6d565e7_0.conda - sha256: f0755cf37e28f0e1a142eef051918c90c9e8fece46edb5e40191a7898d8cb217 - md5: 1be1d81542b9c87b4d5197a41dbd0da9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libuv >=1.51.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - - r-later >=0.8.0 - - r-promises - - r-r6 - - r-rcpp >=1.0.7 - license: GPL-2.0-or-later - license_family: GPL3 - size: 553922 - timestamp: 1773825458255 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.8-r45hc72bb7e_0.conda - sha256: 4adb565d2b3365108d7efb926c2acdc68c11ef2ad32ed03d1108a3005cf8cdd8 - md5: 259658089c383f2915b167da3e7890aa - depends: - - r-base >=4.5,<4.6.0a0 - - r-curl >=0.9.1 - - r-jsonlite - - r-mime - - r-openssl >=0.8 - - r-r6 - license: MIT - license_family: MIT - size: 474019 - timestamp: 1771005817336 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-httr2-1.2.2-r45hc72bb7e_0.conda - sha256: b7a0dce6bbc69d504ac4398d7d7d4831c59389fcd193d5eaa77ba81169abe80d - md5: 37b687ccc11cd808f45e2efbc6e8e78a - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.0.0 - - r-curl >=5.1.0 - - r-glue - - r-lifecycle - - r-magrittr - - r-openssl - - r-r6 - - r-rappdirs - - r-rlang >=1.1.0 - - r-vctrs >=0.6.3 - - r-withr - license: MIT - license_family: MIT - size: 786857 - timestamp: 1765189940950 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-igraph-2.1.4-r45hf411e2a_2.conda - sha256: 6fe22a8d9cbb42fa39013fd12b509ac031975c6895b8492f3036934c4813f65b - md5: 92eca0a4f67020e01cf8a9cdad2a2864 - depends: - - __glibc >=2.17,<3.0.a0 - - glpk >=5.0,<6.0a0 - - gmp >=6.3.0,<7.0a0 - - libblas >=3.9.0,<4.0a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - liblapack >=3.9.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-cpp11 >=0.5.0 - - r-lifecycle - - r-magrittr - - r-matrix - - r-pkgconfig >=2.0.0 - - r-rlang - - r-vctrs - license: GPL-2.0-or-later - license_family: GPL3 - size: 5143602 - timestamp: 1759461201027 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-ini-0.3.1-r45hc72bb7e_1007.conda - sha256: 72ee2282467c148463ba8e8a8af4b5a6fdccd98e38b0820f442af187fcabbb13 - md5: e680ce2dae5ccc37ed94fc0696e6f10d - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 33444 - timestamp: 1757482041715 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.3.0-r45h3697838_0.conda - sha256: a09a6f2f37890560217117463f0722283f8939af945b3e616b9791f2429325b0 - md5: fb538d0b46d6a44aa1ff666b15422ba6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-cpp11 - - r-rlang - license: MIT - license_family: MIT - size: 1657523 - timestamp: 1766530500097 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r45hc72bb7e_4.conda - sha256: c90d0faa668d2753db9da9458ca085891a3030c6537f5675fe0c1a1b5af2103c - md5: 7746a41a4cb97cec59db2d5a2cac0701 - depends: - - r-base >=4.5,<4.6.0a0 - license: Apache-2.0 - license_family: APACHE - size: 350171 - timestamp: 1757459846270 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r45hc72bb7e_4.conda - sha256: 3b98f72bb32d4758854805b664b4404602a583da32c9b96026536f5676f41812 - md5: 49a9ed6ed01f4ae6067ead552795bfce - depends: - - r-base >=4.5,<4.6.0a0 - - r-htmltools - license: MIT - license_family: MIT - size: 307113 - timestamp: 1757459485295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-2.0.0-r45h54b55ab_1.conda - sha256: bd24c57226192b0decdcddd6fd5fa74db1f29685904e4aff87f2c16eb6493416 - md5: 026c72026f431daf8a5719e09e704faa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 638574 - timestamp: 1757419590757 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-jsonvalidate-1.5.0-r45hc72bb7e_1.conda - sha256: 12921f3fe9e72d4c6396eb0847151df200951ee08a7f19047ead3eed7592d171 - md5: 39c5b5dbabffaee26021620971fd6b1b - depends: - - r-base >=4.5,<4.6.0a0 - - r-r6 - - r-v8 - license: MIT - license_family: MIT - size: 169177 - timestamp: 1758511478721 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-kernsmooth-2.23_26-r45ha0a88a1_1.conda - sha256: 032d445f1a7e4f35e5762a28ffefe90f6f68cc2bc3b6806e0d0fba89bb1e5b43 - md5: bd7ceffa31a5b9980641d9b40c27e85d - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - license: Unlimited - license_family: Other - size: 101583 - timestamp: 1757457788483 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.51-r45hc72bb7e_0.conda - sha256: e2184f1cb58aedacd94d1dbe6e8b5dfa3508151f454e80f6bd49486bdb90625c - md5: 35b31b96aa7bc052ad6347322a1481f1 - depends: - - r-base >=4.5,<4.6.0a0 - - r-evaluate >=0.15 - - r-highr >=0.11 - - r-xfun >=0.52 - - r-yaml >=2.1.19 - license: GPL-2.0-or-later - license_family: GPL - size: 988526 - timestamp: 1766309267127 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r45hc72bb7e_2.conda - sha256: 42a06b7c346d6e4550dca1024bbf89e3c22962d568cfe4e8b8be824dea326110 - md5: a41490fdf607381035aa0304c21407c9 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 70182 - timestamp: 1757456007088 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-languageserver-0.3.17-r45h54b55ab_0.conda - sha256: d63bd6a70f140f08869d724e59a09c7ade2ec6647d44dcfc4b08c2b9b1c42f1a - md5: 23b3f3dca969a8c8ae477d7ec3bde40f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-callr >=3.0.0 - - r-collections >=0.3.0 - - r-desc >=1.2.0 - - r-fs >=1.3.1 - - r-jsonlite >=1.6 - - r-lintr >=2.0.0 - - r-r6 >=2.4.1 - - r-repr >=1.1.0 - - r-roxygen2 >=7.0.0 - - r-stringi >=1.1.7 - - r-styler >=1.2.0 - - r-xml2 >=1.2.2 - - r-xmlparsedata >=1.0.3 - license: MIT - license_family: MIT - size: 772652 - timestamp: 1772881062772 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-later-1.4.8-r45h3697838_0.conda - sha256: 895f18dfc5a0521c22ad9e38619ea6cf170e38d54aaa4596fb1d0dad7845703b - md5: a6b2c9882bb1d700f9108bc93c2c12a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp >=0.12.9 - - r-rlang - license: MIT - license_family: MIT - size: 153472 - timestamp: 1772707291964 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_9-r45h54b55ab_0.conda - sha256: ee233422c029d7b341dd05604d133db6f698ec1cdd4ad8690a312d0f7d958793 - md5: 234365e95fa3cf27bd7946f208d1ed0b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 1416943 - timestamp: 1770694116947 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lazyeval-0.2.3-r45h54b55ab_0.conda - sha256: 581fec2d1215b6d7b6d35ce9588271ba4bd89c75b0f131c04a718b79cbe2180f - md5: 5634c3ee3e3c77f7462047a70ed35321 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-rlang - license: GPL-3.0-only - license_family: GPL3 - size: 192307 - timestamp: 1775429492578 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.5-r45hc72bb7e_0.conda - sha256: b7a4d8d98a96d17d18c80fb7e1c8e6cb09b9bd2542e74d91a7f483afccb30ee6 - md5: 5f8369dfbdff08878e58bf15529fca3a - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.4.0 - - r-glue - - r-rlang >=1.0.6 - license: MIT - license_family: GPL3 - size: 132636 - timestamp: 1767865665455 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.3.0_1-r45hc72bb7e_0.conda - sha256: ee810b37dc0ac19be81312b79733d160877b5a86687df72cb7e0e4e4b34ad5e1 - md5: 3df860dc517bca287568d3a3a319b792 - depends: - - r-backports - - r-base >=4.5,<4.6.0a0 - - r-codetools - - r-crayon - - r-cyclocomp - - r-digest - - r-glue - - r-jsonlite - - r-knitr - - r-rex - - r-xml2 >=1.0.0 - - r-xmlparsedata >=1.0.5 - license: MIT - license_family: MIT - size: 1400490 - timestamp: 1764236203529 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.10.1-r45hc72bb7e_0.conda - sha256: 0574f35c491097dcd33e62d09b46dd8e8d38f1a077a998b2b40b8f66c2de4ba6 - md5: d36018071fc8b306cf9872fe0f9f27ba - depends: - - r-base >=4.5,<4.6.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 141012 - timestamp: 1773175132864 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_38-r45h3697838_0.conda - sha256: dfe79479c9ef9e4a7f904a86d78e544b258e87c9795076fa316bb0426d738a89 - md5: 3213c34538e1c041098da42fd5e67517 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-boot - - r-lattice - - r-mass - - r-matrix 1.7_4 r45h0e4624f_1 - - r-minqa >=1.1.15 - - r-nlme >=3.1_123 - - r-nloptr >=1.0.4 - - r-rcpp >=0.10.5 - - r-rcppeigen >=0.3.3.9.4 - - r-reformulas >=0.3.0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 4684719 - timestamp: 1764694208302 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lpsolve-5.6.23-r45h54b55ab_1.conda - sha256: 44570160d4d90327de321f2631f6143747a7dff4772012de27f63b66f764e8aa - md5: b55b20eef247b07cf9a194dab27adc0d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: LGPL-2.0-only - license_family: LGPL - size: 378203 - timestamp: 1757495634048 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.5-r45h54b55ab_0.conda - sha256: 169ffbb02cd134949c806d521666a5b6fce7d59ea2ca39346c27a13b179a6627 - md5: cec48e713c16eb74b4984019282ad03a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-generics - - r-timechange >=0.4.0 - license: MIT - license_family: MIT - size: 977124 - timestamp: 1770225935525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.5-r45h54b55ab_0.conda - sha256: 5b09fdee8ef5426082844d17d360756922ba74f9e3c428f501373295a5e9228d - md5: 2e26e018edc1f198aa72a8f2127fab00 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 211086 - timestamp: 1775298609420 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_65-r45h54b55ab_0.conda - sha256: 5b2296e9486091991392571abd3f05e71506589543db7ae542cb7522934e26ff - md5: 36f1b40545cce670b19c1322483b91fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 1142241 - timestamp: 1757428334352 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.7_4-r45h0e4624f_1.conda - sha256: b15710324f7e365ac662fc0017b743d6f22b7a2ba989e7c1c83760cd3b603525 - md5: c6bafb33c4ace44ef33c18e543befe41 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libgcc >=14 - - liblapack >=3.9.0,<4.0a0 - - r-base >=4.5,<4.6.0a0 - - r-lattice - license: GPL-2.0-or-later - license_family: GPL3 - size: 4259495 - timestamp: 1757441312520 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r45h54b55ab_1.conda - sha256: 06177df6c2f39df0a90b456557d226c2ffa9eaf55505b35d0ca9a81fe793dc49 - md5: 3deafa947ef32bf21d87b57e74d3711b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: Artistic-2.0 - license_family: OTHER - size: 484755 - timestamp: 1757442394466 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-memoise-2.0.1-r45hc72bb7e_4.conda - sha256: 91b0eedec5cf5de195b442b97eda508f22fdedbdbc487f74e3868d3e95380fdd - md5: 2b04206ff6ea5a92e8e36bdaa5feb3cc - depends: - - r-base >=4.5,<4.6.0a0 - - r-cachem - - r-rlang >=0.4.10 - license: MIT - license_family: MIT - size: 57750 - timestamp: 1757456335587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_4-r45h0e4624f_0.conda - sha256: 83a5233b6162c55f5021dea34464bd64d87f18b7815e738c42d06a046780e594 - md5: e33882c93c191f5d9a9b346431f02b43 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - - libblas >=3.9.0,<4.0a0 - - libgcc >=14 - - liblapack >=3.9.0,<4.0a0 - - r-base >=4.5,<4.6.0a0 - - r-matrix - - r-nlme >=3.1_64 - license: GPL-2.0-or-later - license_family: GPL2 - size: 3644492 - timestamp: 1762539595584 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-mime-0.13-r45h54b55ab_1.conda - sha256: 03116d6a8db71492d036c6c052d6cfbf5a98c06da071e42aedb5c740920d6b61 - md5: 26aa2fa52d4caed58336f2b4887916d6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 64912 - timestamp: 1757441376534 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-miniui-0.1.2-r45hc72bb7e_1.conda - sha256: 0e63708e94f3848e7212db1bd8e0b7f4b72084d2d96a523a63ddb3c3102135a8 - md5: 4940389ec03eea86358108ec4bb222a0 - depends: - - r-base >=4.5,<4.6.0a0 - - r-htmltools >=0.3 - - r-shiny >=0.13 - license: GPL-3.0-only - license_family: GPL3 - size: 55283 - timestamp: 1757517043723 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r45ha36cffa_2.conda - sha256: e6facde4a2182d2fcf3571a66268a526483a6c5e9b4cb4583c1866fff9df4a0e - md5: d0cda11580905b07c959741e69aa9bd2 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp >=0.9.10 - license: GPL-2.0-only - license_family: GPL2 - size: 148374 - timestamp: 1757490147377 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-mirai-2.6.1-r45hc72bb7e_0.conda - sha256: a01a0b3e7d00925305c4839b79e58a676d0b77eac21a001b1cc2e6216d32f4f0 - md5: ef9a1b8acf74223dedf78952bd9d870e - depends: - - r-base >=4.5,<4.6.0a0 - - r-nanonext >=1.1.0 - license: GPL-3.0-or-later - license_family: GPL3 - size: 313152 - timestamp: 1772631335425 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r45hc72bb7e_2.conda - sha256: 97d463c2146c483992a25fe497755e9cf714f95ca611a93d8adbb41c068e9e74 - md5: c78bd534986cde8fc0cb08cc9a1a2cc6 - depends: - - r-base >=4.5,<4.6.0a0 - - r-colorspace - license: MIT - license_family: MIT - size: 247241 - timestamp: 1757455926748 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanoarrow-0.8.0-r45h3697838_0.conda - sha256: ba1ada1c934d2253049a4e0add1915e3f39c73f792c35907e7efeaefcf1c1239 - md5: 078320bb744d4eb597dbf417bae870ad - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: Apache-2.0 - license_family: APACHE - size: 619614 - timestamp: 1770720266561 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nanonext-1.8.2-r45h54b55ab_0.conda - sha256: 71f66a72d4d04330fb2fe33bed1c2507f8a5a92b13cca9fa62e8f0636d2705d5 - md5: 3f5d7478ce1e2d381b990cdb82bbd72f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - mbedtls >=3.6.3.1,<3.7.0a0 - - nng >=1.11,<1.12.0a0 - - r-base >=4.5,<4.6.0a0 - - r-later - license: GPL-3.0-or-later - license_family: GPL - size: 402622 - timestamp: 1775286719522 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-narray-0.5.2-r45h3697838_0.conda - sha256: c5e2901edb8fdb10e06dcf819b42ae0b6aafec7992e46c7d6a974c50a54c1046 - md5: 13919af864d1fd22747ce007f47c532a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-progress - - r-rcpp - - r-stringr - license: Apache-2.0 - license_family: APACHE - size: 225802 - timestamp: 1764331882493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ncdf4-1.24-r45h8a39af1_5.conda - sha256: 77b4262433c2b18c3933dd1898d099d06d943b83704241337b5befcca86db055 - md5: d6664f4323ba2aebce4677de6d7c588e - depends: - - __glibc >=2.17,<3.0.a0 - - hdf5 >=1.14.6,<1.14.7.0a0 - - libgcc >=14 - - libnetcdf >=4.10.0,<4.10.1.0a0 - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-or-later - license_family: GPL3 - size: 300182 - timestamp: 1774358028857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_169-r45heaba542_0.conda - sha256: a2f1bca12bb07811bcc1d0827178052cbdcc8e60f480276c5272ebae4bcb7811 - md5: 50eabe982f85b409888ed89a7451379c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - - r-lattice - license: GPL-2.0-or-later - license_family: GPL3 - size: 2355015 - timestamp: 1774815523735 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r45h8ae9fae_1.conda - sha256: 5123bdea8a23bea521ab41336be42f7d1e6f3cac749d451090366db794f6fcb6 - md5: 5a03c2310c966036265f16a91f808999 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - - nlopt >=2.10.0,<2.11.0a0 - - r-base >=4.5,<4.6.0a0 - license: LGPL-3.0-only - license_family: LGPL - size: 273807 - timestamp: 1757533369995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r45h54b55ab_1.conda - sha256: 44fbbec1a27600b356422d593e8df961ad6e62d8a906aac2c016b9fe16836671 - md5: 08cba402a662bcfead7feee33923baee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-mass - license: GPL-2.0-or-later - license_family: GPL3 - size: 132257 - timestamp: 1757457922422 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.3.5-r45h68c19f5_0.conda - sha256: 253de77f911a8f16b537322a1bc01f627bfc9d14610017dea348edbaa1d1ba96 - md5: acd96fd9041b5790fd32decd0117137f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.5,<4.0a0 - - r-askpass - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 681547 - timestamp: 1772126618023 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-otel-0.2.0-r45hc72bb7e_1.conda - sha256: f5de9737f59e1965db2de11c90cf1fdd426db322a7205c935a3e55150287b02f - md5: 560abd550c097e0d0af2e201b335f53d - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 286342 - timestamp: 1761151056217 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pak-0.9.2-r45hc72bb7e_0.conda - sha256: 5d8b370c69e88f806d0f163dac91e69d24fe65743c43472fe36099658d8042e8 - md5: 6a487c2d5e67a5fc80d6619de02c708c - depends: - - r-assertthat - - r-base >=4.5,<4.6.0a0 - - r-base64enc - - r-callr >=3.0.0.9002 - - r-cli >=1.0.0 - - r-cliapp >=0.0.0.9002 - - r-crayon >=1.3.4 - - r-curl >=3.2 - - r-desc >=1.2.0 - - r-filelock >=1.0.2 - - r-glue >=1.3.0 - - r-jsonlite - - r-lpsolve - - r-pkgbuild >=1.0.2 - - r-pkgcache >=1.0.3 - - r-prettyunits - - r-processx >=3.2.1 - - r-ps >=1.3.0 - - r-r6 - - r-rematch2 - - r-rprojroot >=1.3.2 - - r-tibble - license: GPL-3.0-only - license_family: GPL3 - size: 5820251 - timestamp: 1766394791414 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.46.1-r45h54b55ab_0.conda - sha256: bf80a25cead88176880121ea7fefba2d143d1919420bcbef4b640cdad863a1ad - md5: a3b330fbc5ec2832ad37243a46817df4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 617825 - timestamp: 1767860028470 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.1-r45hc72bb7e_0.conda - sha256: b3f281041ecff2d4a9f40073ad5e7ec6fa7e0c841068ce85c550bcce0ff8938d - md5: 807ef77a70fc5156f830d6c683d07a29 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-crayon >=1.3.4 - - r-ellipsis - - r-fansi - - r-lifecycle - - r-rlang >=0.3.0 - - r-utf8 >=1.1.0 - - r-vctrs >=0.2.0 - license: GPL-3.0-only - license_family: GPL3 - size: 629867 - timestamp: 1758149763203 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgbuild-1.4.8-r45hc72bb7e_1.conda - sha256: 3d1b97a5616663fabcb165968e2d1ad3732d316a0d38be259ca84533986a0093 - md5: daea93b32bab57062ab586c9b6e3896e - depends: - - r-base >=4.5,<4.6.0a0 - - r-callr >=3.2.0 - - r-cli - - r-crayon - - r-desc - - r-prettyunits - - r-r6 - - r-rprojroot - - r-withr >=2.1.2 - license: GPL-3.0-only - license_family: GPL3 - size: 221277 - timestamp: 1757496221 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgcache-2.2.4-r45hc72bb7e_1.conda - sha256: 7cd5e76b7e4dfbd40aeb0a3bc1b8171dbf045571476c53b0c2d4e02e9d87496f - md5: c2f0a882d15573cda41289201873077c - depends: - - r-base >=4.5,<4.6.0a0 - - r-callr >=2.0.4.9000 - - r-cli >=3.2.0 - - r-curl >=3.2 - - r-filelock - - r-jsonlite - - r-prettyunits - - r-processx >=3.3.0.9001 - - r-r6 - - r-rappdirs - license: MIT - license_family: MIT - size: 921394 - timestamp: 1758416361320 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r45hc72bb7e_5.conda - sha256: fda425435a533e86da5f0fc89cf45c9f889a4e6f1e2ed536ca23662a8461602c - md5: 40a5fdd06c7e7880758a021cf2df6c12 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 27236 - timestamp: 1757447537447 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgdown-2.2.0-r45hc72bb7e_0.conda - sha256: e33f7255808935799a2bde0b7f19a66711b2abed5ad351d17fb2233e3e7879dd - md5: ac92b5648ff1ed7028576f00e8e30c57 - depends: - - r-base >=4.5,<4.6.0a0 - - r-bslib >=0.5.1 - - r-callr >=3.7.3 - - r-cli >=3.6.1 - - r-desc >=1.4.0 - - r-downlit >=0.4.4 - - r-fontawesome - - r-fs >=1.4.0 - - r-httr2 >=1.0.2 - - r-jsonlite - - r-openssl - - r-purrr >=1.0.0 - - r-ragg >=1.4.0 - - r-rlang >=1.1.4 - - r-rmarkdown >=2.27 - - r-tibble - - r-whisker - - r-withr >=2.4.3 - - r-xml2 >=1.3.1 - - r-yaml - license: MIT - license_family: MIT - size: 907520 - timestamp: 1762414187272 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgload-1.5.1-r45hc72bb7e_0.conda - sha256: 9b052c9c2311d50c335338cfc12017f903aa3cc02236c5d76cbd425f8010cb1f - md5: 6f6a62f9c5b02afc64293ab04120e542 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.3.0 - - r-desc - - r-fs - - r-glue - - r-lifecycle - - r-pkgbuild - - r-processx - - r-rlang >=1.1.1 - - r-rprojroot - - r-withr >=2.4.3 - license: GPL-3.0-only - license_family: GPL3 - size: 241861 - timestamp: 1775029626216 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r45h3697838_3.conda - sha256: 353d5945d242b03c47ab0d051cf9058b4459303c96455dba9442100628a0bde1 - md5: 255fec0919919b14789eb30cc448ed20 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp >=0.11.0 - license: MIT - license_family: MIT - size: 787537 - timestamp: 1757441721952 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_9-r45haf2892b_0.conda - sha256: 5eb37ba0e1d8e53750f6f8b6b1fe0f534ef30796bdabbcb93dd66a6adef415dc - md5: 9d3a0fd2c5ff1c247ad48dbc4974449c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libpng >=1.6.55,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-only OR GPL-3.0-only - license_family: GPL3 - size: 62336 - timestamp: 1773974133045 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-praise-1.0.0-r45hc72bb7e_1009.conda - sha256: 2f4b33c16d01df7d3a65cbb7a75989a2e3a1e068a354430da225d01d50870732 - md5: d9f7dfa06871712aaf768674dea06a0b - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 25995 - timestamp: 1757447352187 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-prettycode-1.1.0-r45hc72bb7e_5.conda - sha256: fdac4ff464bf1fd8dfd33cff7f76143ca120296d9ea59d8c0b0a001d5d5b7b16 - md5: a8d5f73a68f4d4171c40cfbb3c195477 - depends: - - r-base >=4.5,<4.6.0a0 - - r-crayon - - r-withr - license: MIT - license_family: MIT - size: 251464 - timestamp: 1757801114578 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r45hc72bb7e_2.conda - sha256: 0306580de6e867b9060595f5eedde4dbf531ee89c16dd3738dde995b30f3fe14 - md5: 07465728b1fd99d28b286156dac895a3 - depends: - - r-assertthat - - r-base >=4.5,<4.6.0a0 - - r-magrittr - license: MIT - license_family: MIT - size: 161043 - timestamp: 1757463130831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.7-r45h54b55ab_0.conda - sha256: 954ed49638c21e9138d5c9594626c253bec8369a0ab6f4cfcb3cee6e6aa9c015 - md5: 89e528621bddb245fbae9eb3670fa6c4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-ps >=1.2.0 - - r-r6 - license: MIT - license_family: MIT - size: 341638 - timestamp: 1775051118140 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-profvis-0.4.0-r45h54b55ab_1.conda - sha256: 21815d71c293933555e4258acff4f8de76eeca52a63ebeb6c10314e242dddebc - md5: b50603b1967acbdd5d8f78bb999e6841 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-htmlwidgets >=0.3.2 - - r-purrr - - r-rlang >=0.4.9 - - r-stringr - - r-vctrs - license: GPL-3.0-only - license_family: GPL3 - size: 229791 - timestamp: 1757585540168 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r45hc72bb7e_2.conda - sha256: 7dc34860af66a0305601d70714269d8e24766bc9780a43683c1b7989970a61a3 - md5: 619b691b0965c6894eb99d3851857df7 - depends: - - r-base >=4.5,<4.6.0a0 - - r-crayon - - r-hms - - r-prettyunits - - r-r6 - license: MIT - license_family: MIT - size: 96260 - timestamp: 1757484957523 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-promises-1.5.0-r45hc72bb7e_1.conda - sha256: 684dba5d20aae8da37868d603b662014e1944f5568e5f737e42d9d485892a26e - md5: b2c1b6ef8f12894fd2694b285fe8989a - depends: - - r-base >=4.5,<4.6.0a0 - - r-fastmap >=1.1.0 - - r-later - - r-lifecycle - - r-magrittr >=1.5 - - r-otel >=0.2.0 - - r-r6 - - r-rlang - license: MIT - license_family: MIT - size: 1597704 - timestamp: 1762426228446 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_29-r45h54b55ab_0.conda - sha256: 45e7380c251eec3687bf6349f1bbce193fd87f6e351d0ad56f85d5dbce732911 - md5: 3cd143bab3297c33eaf8b11a47d1c6f9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-only - license_family: GPL2 - size: 183954 - timestamp: 1767043865593 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.9.2-r45h54b55ab_0.conda - sha256: 8d4b0256e99a3cf25b7cd755cb3616b8834cf4bfe17d84eb01714d3fb1550d16 - md5: eec32645518b02cb429393c47331bf57 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 411203 - timestamp: 1774994697725 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.2.1-r45h54b55ab_0.conda - sha256: cd296e0fc8a07eb4904c5936b3db93e985e3ff5a0699df7cc46ea809a89eb857 - md5: 44746443d3a9d657a09a7c8879ca8f7d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.4 - - r-lifecycle >=1.0.3 - - r-magrittr >=1.5 - - r-rlang >=0.4.10 - - r-vctrs >=0.5 - license: MIT - license_family: MIT - size: 547177 - timestamp: 1768061060476 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.cache-0.17.0-r45hc72bb7e_1.conda - sha256: 07f54007ce71d864b97221b32963e697c41cabf6a38a93e940423818af5e8b36 - md5: 400cedaf94ac8d7a2ba92ec1dd1905f9 - depends: - - r-base >=4.5,<4.6.0a0 - - r-digest >=0.6.13 - - r-r.methodss3 >=1.7.1 - - r-r.oo >=1.23.0 - - r-r.utils >=2.8.0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 128291 - timestamp: 1757498815158 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.methodss3-1.8.2-r45hc72bb7e_4.conda - sha256: e37dd18b15526d87a949a380b941660bb5e323a5c8b9e05435554c73f27bd94f - md5: 491826d3aaedc8f5e71aec5ddd24df26 - depends: - - r-base >=4.5,<4.6.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 98887 - timestamp: 1757447830151 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.oo-1.27.1-r45hc72bb7e_1.conda - sha256: e9874a6edc3af280493d2a5a331e6721f8ad26df221a4b22d4df8c65267cd4be - md5: 39bd43593006907bbea339b24a904ade - depends: - - r-base >=4.5,<4.6.0a0 - - r-r.methodss3 >=1.7.1 - license: LGPL-2.1-or-later - license_family: LGPL - size: 995845 - timestamp: 1757455958627 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-r.utils-2.13.0-r45hc72bb7e_1.conda - sha256: 8907a11d1f208a5ae44efd57c2cea0fa5e0e22ae4427c9c0d830570f60fa4b56 - md5: 3e01265486a11af09548f143dd5c20f8 - depends: - - r-base >=4.5,<4.6.0a0 - - r-r.methodss3 >=1.8.0 - - r-r.oo >=1.23.0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 1429164 - timestamp: 1757484837409 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r45hc72bb7e_1.conda - sha256: bd92e91332eba5f0c689583e80adec85ef272c4e0d0b36ee17cb7c11b5693cf2 - md5: 750802806d7d640c286ed8491bb395dc - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 95073 - timestamp: 1757447661037 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.5.2-r45h9f1dc4d_0.conda - sha256: 0e99b7597024257949edd390184fa0ecfd84eea655f192640d1227866b61eb97 - md5: 3bbbc6a7401baca55f71a2811bee0aef - depends: - - __glibc >=2.17,<3.0.a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libgcc >=14 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libpng >=1.6.55,<1.7.0a0 - - libstdcxx >=14 - - libtiff >=4.7.1,<4.8.0a0 - - libzlib >=1.3.2,<2.0a0 - - r-base >=4.5,<4.6.0a0 - - r-systemfonts >=1.0.3 - - r-textshaping >=0.3.0 - license: MIT - license_family: MIT - size: 596604 - timestamp: 1774267940113 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.4-r45h54b55ab_0.conda - sha256: a9778d5fa6777ce286815eb0abef625ff54693532795ef48a1bc319967e0ecb4 - md5: 9fa763ece102dca3e50892bad36896ff - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 54376 - timestamp: 1768747300036 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.4.1-r45h54b55ab_0.conda - sha256: 87b7176a483778a289568a7addec3761b8ca1baaa3473be265be1ed0435b9ad5 - md5: b90cbfc2ce768daf004f0b97f3929738 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-xml2 - license: GPL-2.0-only - license_family: GPL2 - size: 988329 - timestamp: 1769164057985 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rcmdcheck-1.4.0-r45h785f33e_4.conda - sha256: 2511fd3049244f26c9bfee1f58823c6e9f200eded58fa893c928700b05271e9a - md5: 46cd08beb113bab9a16bc2a35ca9ea89 - depends: - - r-base >=4.5,<4.6.0a0 - - r-callr >=3.1.1.9000 - - r-cli >=3.0.0 - - r-curl - - r-desc >=1.2.0 - - r-digest - - r-pkgbuild - - r-prettyunits - - r-r6 - - r-rprojroot - - r-sessioninfo >=1.1.1 - - r-withr - - r-xopen - license: MIT - license_family: MIT - size: 179210 - timestamp: 1758407851979 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r45h785f33e_4.conda - sha256: ddd4e63616ee475bdf9dc63a0b16a89017237121e927d83fbdee07d5a5ccc890 - md5: d8fa238420cb6de47d463b7345a761eb - depends: - - r-base >=4.5,<4.6.0a0 - license: Apache-2.0 - license_family: APACHE - size: 68005 - timestamp: 1757452462302 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.1-r45h3697838_0.conda - sha256: a92cb7db892c5c195c039d478d66912528d575ba2e742ba9de9ed6242d3891ee - md5: 6903480a85621c864d8d448c283b5294 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 2110489 - timestamp: 1768070822548 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r45h3704496_1.conda - sha256: fd1cc8ec804fede96bbd07867c58fd15c9fdb3fbae800ba0eb7b2779910734dc - md5: 743927aa75562d9a53b8fda4777bdf93 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libgcc >=14 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-matrix >=1.1_0 - - r-rcpp >=0.11.0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 1496128 - timestamp: 1757496030112 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpptoml-0.2.3-r45h3697838_1.conda - sha256: 8e10fa6f550c83cdc99175443ecc92db178369e82a7dcb743e1fe7ce87d39530 - md5: 707ba8dabbbffd03f5907406a0fe8368 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp >=0.11.5 - license: GPL-2.0-or-later - license_family: GPL2 - size: 227793 - timestamp: 1757490566643 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.6-r45hc72bb7e_0.conda - sha256: e53806a09281774eb7c5e6e8572278dc4e82994d41bdc92a5e18793711301865 - md5: 2b9eb11b885d45d9810089deb8078f02 - depends: - - r-base >=4.5,<4.6.0a0 - - r-gbrd - - r-rbibutils >=1.3 - license: GPL-2.0-or-later - license_family: GPL3 - size: 638016 - timestamp: 1770551164495 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-readr-2.2.0-r45h3697838_0.conda - sha256: 06a42932d182259540fd53dca6ac6e988bb28b70d4b09d5786b4260928090598 - md5: a5f0d7d99d912486b2d93a576fadb8e0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-clipr - - r-cpp11 - - r-crayon - - r-hms >=0.4.1 - - r-lifecycle >=0.2.0 - - r-r6 - - r-rlang - - r-tibble - - r-tzdb >=0.1.1 - - r-vroom >=1.5.4 - license: MIT - license_family: MIT - size: 808559 - timestamp: 1771573588021 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-recommended-4.5-r45hd8ed1ab_1008.conda - sha256: aabe4c91dd234e4cadc51f5a83cd501d269682d6e34320b336595fda71fbfb17 - md5: 340c190b18b45a12a1359d78467fba78 - depends: - - r-base >=4.5,<4.6.0a0 - - r-boot - - r-class - - r-cluster - - r-codetools - - r-foreign - - r-kernsmooth - - r-lattice - - r-mass - - r-matrix - - r-mgcv - - r-nlme - - r-nnet - - r-rpart - - r-spatial - - r-survival - license: GPL-3.0-or-later - license_family: GPL - size: 18561 - timestamp: 1757563842732 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.4-r45hc72bb7e_0.conda - sha256: 1fda0a06525975681e00bd562675bb9d21289663b254a91678f8a0b64bda51a4 - md5: 6103051aea9e4c49ad5dd047d054992d - depends: - - r-base >=4.5,<4.6.0a0 - - r-matrix - - r-rdpack - license: GPL-3.0-only - license_family: GPL3 - size: 170053 - timestamp: 1770043350015 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r45hc72bb7e_5.conda - sha256: 20ec2130c80ac4b9f5488ea5b1d207b932e99b8a41beae62a58a3fcb98480025 - md5: 9190c3379d369e61841fe1bad6dc91e2 - depends: - - r-base >=4.5,<4.6.0a0 - - r-tibble - license: MIT - license_family: MIT - size: 56155 - timestamp: 1757496154915 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-remotes-2.5.0-r45hc72bb7e_2.conda - sha256: d0ffd9ce29b45dc3cbf3a49359feddc884cf404236c89dc0a9f0b704e542a406 - md5: 2587026beb4e8e8dc9aa0f39ad3f197e - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 437047 - timestamp: 1757451645190 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-repr-1.1.7-r45h785f33e_2.conda - sha256: d8229a064695b7a0c36c70b148a76628f180693161bd35a77a9692481794ff37 - md5: 0442a7f2ecc741e142466a7edb5a606f - depends: - - r-base >=4.5,<4.6.0a0 - - r-base64enc - - r-htmltools - - r-jsonlite - - r-pillar >=1.4.0 - license: GPL-3.0-only - license_family: GPL3 - size: 147271 - timestamp: 1757481783597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reticulate-1.46.0-r45h3697838_0.conda - sha256: 042bcaf14ce5751b8c7219eca1af5539d184ecca18ba050a34fc609703438514 - md5: bdf574d7f1eb94958b39e0d672ae0a7c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-here - - r-jsonlite - - r-matrix - - r-png - - r-rappdirs - - r-rcpp >=1.0.7 - - r-rcpptoml - - r-rlang - - r-withr - license: Apache-2.0 - license_family: APACHE - size: 1910307 - timestamp: 1775743928708 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rex-1.2.2-r45hc72bb7e_0.conda - sha256: 645df2da4f945926e7fb98b7c0827caf37d390bbc48590636f28398bddbd1d2d - md5: ac173f9080a1b44112fe709319625541 - depends: - - r-base >=4.5,<4.6.0a0 - - r-lazyeval - - r-magrittr - - r-withr - license: MIT - license_family: MIT - size: 125461 - timestamp: 1774815471389 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rjags-4_17-r45h3697838_1.conda - sha256: b0d732923793090f4e91112a03a1bbb0f71e7180d6c89f95853ebf48fe0bb61e - md5: 3ef4fb93f36b0534412e661042f5403e - depends: - - __glibc >=2.17,<3.0.a0 - - jags 4.* - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-coda >=0.13 - license: GPL-2.0-only - license_family: GPL2 - size: 149658 - timestamp: 1757622623100 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.2.0-r45h3697838_0.conda - sha256: d311a9320326f46ec7372aa4944fcbfaa62f9d976dec6be32f3e44f9bc1c720c - md5: f4fb1a80e2e11b92cfc654e9871dc2b7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 1590688 - timestamp: 1775483709345 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.31-r45hc72bb7e_0.conda - sha256: b3735a4e75eca023b24678251da041854b94a8b96588d81b605928d6ecf74f11 - md5: 25b9dbf0ff990b8b3111774878e3bb07 - depends: - - pandoc >=1.14 - - r-base >=4.5,<4.6.0a0 - - r-bslib >=0.2.5.1 - - r-evaluate >=0.13 - - r-fontawesome >=0.5.0 - - r-htmltools >=0.5.1 - - r-jquerylib - - r-jsonlite - - r-knitr >=1.43 - - r-tinytex >=0.31 - - r-xfun >=0.36 - - r-yaml >=2.1.19 - license: GPL-3.0-only - license_family: GPL3 - size: 2085382 - timestamp: 1774555006202 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-roxygen2-7.3.3-r45h3697838_1.conda - sha256: f179efdabe890f0841eca544bbd0bc6c0f3957501020f90f22e1891ed822d1b7 - md5: 23bb3404049c0ffd3e5936198ea9b0c2 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-brew - - r-commonmark - - r-cpp11 - - r-desc >=1.2.0 - - r-digest - - r-knitr - - r-pkgload >=1.0.2 - - r-purrr >=0.3.3 - - r-r6 >=2.1.2 - - r-rlang - - r-stringi - - r-stringr >=1.0.0 - - r-xml2 - license: MIT - license_family: GPL3 - size: 704023 - timestamp: 1757563768902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.27-r45h54b55ab_0.conda - sha256: 361ec301129b0f03cb560a45dd09f97690fb486e71f4f49e63071437742e2e6b - md5: 072cbea77e0705c0126f04a883ab912b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 704022 - timestamp: 1774600677333 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.1.1-r45hc72bb7e_1.conda - sha256: 9e359973b9433ffaef7a65a1f3483723048427aee4a3208512863c4c70c409a4 - md5: e1b7c51411ad3dd2a95aea6d466b12f7 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 117773 - timestamp: 1757447613700 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.18.0-r45hc72bb7e_0.conda - sha256: f5a35d4b7dfc17d7ae6eb92210906ccb1fbcc93acacb6d7b392e83bf15702fba - md5: e70e87e097876186fdac23d1a01faede - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 345783 - timestamp: 1768620480911 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-rversions-3.0.0-r45hc72bb7e_0.conda - sha256: ce6e20e0836735760c76ea66393c3f5d3447834cc8b2c064247a1ca238821d30 - md5: 3154fa3ece90604a48de42393bd6f7b0 - depends: - - r-base >=4.5,<4.6.0a0 - - r-curl - - r-xml2 >=1.0.0 - license: MIT - license_family: MIT - size: 145145 - timestamp: 1760025497442 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-s2-1.1.9-r45h7d5736c_3.conda - sha256: 16f53c606b08b36a25bffa3320846f83a67c98219fed83d1b930ab4775c33539 - md5: 8a24a638f422619267ff4075df4f47b8 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250512.1,<20250513.0a0 - - libgcc >=14 - - libstdcxx >=14 - - openssl >=3.5.3,<4.0a0 - - r-base >=4.5,<4.6.0a0 - - r-rcpp - - r-wk >=0.6.0 - license: Apache-2.0 - license_family: APACHE - size: 1853994 - timestamp: 1758418377092 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-s7-0.2.1-r45h54b55ab_0.conda - sha256: cff47950c714b4917a67584930a3856661d971c661d863b83ca9c8daf1f6d49d - md5: 71f513d1d758cb143586351ce8be035c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 311031 - timestamp: 1763154600918 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.10-r45h3697838_1.conda - sha256: 4d6d7db9d0187a9ede70d6d48278a8ba2b3160e823f5de239b86a6108f23172e - md5: a3ccf52eefa448628535ee758c5a8a37 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-digest - - r-fs - - r-htmltools - - r-r6 - - r-rappdirs - - r-rlang - license: MIT - license_family: MIT - size: 2319704 - timestamp: 1757464682768 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r45hc72bb7e_1.conda - sha256: 260c384e952e5bd4d2c2de77b9e09b24ff1c1f680acd917c4657ab8c9e4e9a2f - md5: 8bc81cc6fd130cef963bc9e082726a14 - depends: - - r-base >=4.5,<4.6.0a0 - - r-farver >=2.0.0 - - r-labeling - - r-lifecycle - - r-munsell >=0.5 - - r-r6 - - r-rcolorbrewer - - r-viridislite - license: MIT - license_family: MIT - size: 777793 - timestamp: 1757487539496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-secretbase-1.2.1-r45h54b55ab_0.conda - sha256: b750a03dd47d233a18dd0da1d6057a472d78fe40cd4fe78d58f274380e53d151 - md5: 57b954013ae2fd78829114558c15f1bf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-or-later - license_family: GPL3 - size: 93509 - timestamp: 1774868879405 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.5_1-r45hc72bb7e_0.conda - sha256: d5d4dddd88a5c282c345897bb9faaac4dcc2bca5e63269aec32fa6b21a77bfad - md5: cf2e9902cba2ba0ec9368910a6ae908e - depends: - - r-base >=4.5,<4.6.0a0 - - r-r6 - - r-stringr - license: BSD-3-Clause - license_family: BSD - size: 478871 - timestamp: 1765968903101 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-sessioninfo-1.2.3-r45hc72bb7e_1.conda - sha256: 83749d9ea9422d89e8e59e93dfee6423297e83a1fab325b03d412700784773bc - md5: e2d98358063814d40bcb9150b45fb6e9 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-withr - license: GPL-2.0-only - license_family: GPL2 - size: 210056 - timestamp: 1757547994444 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sf-1.1_0-r45h1d36251_0.conda - sha256: 9ee2be978f2d1f70840623b0bceb3ab8a3336d686d0d8f9bcbab3135099507a3 - md5: 406cffb35cb8fe21edfce8c467d66774 - depends: - - __glibc >=2.17,<3.0.a0 - - geos >=3.14.1,<3.14.2.0a0 - - libgcc >=14 - - libgdal-core >=3.12.2,<3.13.0a0 - - libgdal-core >=3.12.2,<4.0a0 - - libstdcxx >=14 - - proj >=9.7.1,<10.0a0 - - proj >=9.7.1,<9.8.0a0 - - r-base >=4.5,<4.6.0a0 - - r-classint >=0.4_1 - - r-dbi >=0.8 - - r-magrittr - - r-rcpp >=0.12.18 - - r-s2 >=1.1.0 - - r-units >=0.7_0 - license: GPL-2.0-only OR MIT - license_family: GPL2 - size: 7272917 - timestamp: 1771980153562 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.13.0-r45h785f33e_0.conda - sha256: 10515a454fe45fcadcb5e954fcebd59b8014a32d3d73e28b942fea64ecb54d97 - md5: 1f431e9c637e0e271d0f347829e09fa6 - depends: - - r-base >=4.5,<4.6.0a0 - - r-bslib >=0.6.0 - - r-cachem >=1.1.0 - - r-commonmark >=1.7 - - r-crayon - - r-fastmap >=1.1.1 - - r-fontawesome >=0.4.0 - - r-glue >=1.3.2 - - r-htmltools >=0.5.4 - - r-httpuv >=1.5.2 - - r-jsonlite >=0.9.16 - - r-later >=1.0.0 - - r-lifecycle >=0.2.0 - - r-mime >=0.3 - - r-promises >=1.1.0 - - r-r6 >=2.0 - - r-rlang >=0.4.10 - - r-sourcetools - - r-withr - - r-xtable - license: GPL-3.0-only - license_family: GPL3 - size: 3738931 - timestamp: 1771613508103 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-signal-1.8_1-r45heaba542_3.conda - sha256: 103acb741c940f330d412476fc8216f80a1bc315380918b2d4af7f09a206a065 - md5: 8563a5f8d8a48fec1e10d1194a0913dc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.3.0 - - r-base >=4.5,<4.6.0a0 - - r-mass - license: GPL-2.0-only - license_family: GPL - size: 349756 - timestamp: 1757725500389 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sourcetools-0.1.7_2-r45h3697838_0.conda - sha256: 885a784f4258b491e48947dbed71bd18b2e2e7da0f0b53ee1dcfed93cfdcd48a - md5: 1bd0042c176bde3dd1971eac76497219 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 54650 - timestamp: 1774682292388 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-spatial-7.3_18-r45h54b55ab_1.conda - sha256: 6c037194ac3ec2f4cbf79197efb531a9b2a57d87f2b505117add301782dca5a6 - md5: bc4a2f5d8de754e812d1ff53bf66b211 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL3 - size: 155963 - timestamp: 1757509276008 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-stars-0.7_2-r45hc72bb7e_0.conda - sha256: a86d13b11df2f79dfb417a1852a6591e20cef4a5d6c6d40e84eee8f39fce6fe9 - md5: 540fcd52a52c31e765b5b4fbe1da8979 - depends: - - r-abind - - r-base >=4.5,<4.6.0a0 - - r-classint >=0.4_1 - - r-rlang - - r-sf >=1.0_19 - - r-units - license: Apache-2.0 - license_family: APACHE - size: 4407677 - timestamp: 1775426575770 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r45h3d52c89_2.conda - sha256: 6d0d8d6f1465b3486996edaef7ccd1020cb2fcca1e69b543fc52dbad5262079b - md5: c7ce6f26b92398224c78b92c653b94c1 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: FOSS - license_family: OTHER - size: 939928 - timestamp: 1772032511209 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.6.0-r45h785f33e_0.conda - sha256: dea2a7676dd03ed93fa0ec961883c5075c361c8522659a1bc1e6b5c16525cb24 - md5: 8db438d8aa370726ee1ce8bf458f2e6d - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-glue >=1.6.1 - - r-lifecycle >=1.0.3 - - r-magrittr - - r-rlang >=1.0.0 - - r-stringi >=1.5.3 - - r-vctrs - license: MIT - license_family: MIT - size: 319328 - timestamp: 1762269757617 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-styler-1.11.0-r45hc72bb7e_0.conda - sha256: 16d53f5fbafdba89624e5d4860120a538ee94ac4651d89d40e97eae02240603e - md5: e11d9f5eddc3c37ec8c6ddfe68ba8e1d - depends: - - r-backports >=1.1.0 - - r-base >=4.5,<4.6.0a0 - - r-cli >=1.1.0 - - r-magrittr >=2.0.0 - - r-purrr >=0.2.3 - - r-r.cache >=0.14.0 - - r-rematch2 >=2.0.1 - - r-rlang >=0.1.1 - - r-rprojroot >=1.1 - - r-tibble >=1.4.2 - - r-withr >=1.0.0 - - r-xfun >=0.1 - license: MIT - license_family: MIT - size: 807625 - timestamp: 1760338508835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_6-r45h54b55ab_0.conda - sha256: 66b6d9694f54e8af86b394dbdd65a7164af13869be05babb5e4e22d44eb04106 - md5: 55cc543da938b44c6b2106516815ac35 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-matrix - license: LGPL-2.0-or-later - license_family: LGPL - size: 8329223 - timestamp: 1768637162736 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.3-r45h54b55ab_1.conda - sha256: 0cf3a7af31b0396d5a2e1c932fffa360472f92a2b373a696f523b0b53ad1d682 - md5: f23bbac61ab0536f59f4caa4c2ebdf88 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 50436 - timestamp: 1757441793835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.3.2-r45h74f4acd_0.conda - sha256: b7c3105c26b006e75a4c770cd4b4cdd88da4153860bb8becac2b1ab068c6aab6 - md5: 7982f08c8aabb6f0e4936a613b07a099 - depends: - - __glibc >=2.17,<3.0.a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-base64enc - - r-cpp11 >=0.2.1 - - r-jsonlite - - r-lifecycle - license: MIT - license_family: MIT - size: 710089 - timestamp: 1772797917239 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-tarchetypes-0.14.1-r45hc72bb7e_0.conda - sha256: 90fac76a58a897bdbb5ebc8a00d1d13e6c65f93a3de2372d06a049e50fcceaef - md5: 0eeec0b61c93c1146dbd89562821c04f - depends: - - r-base >=4.5,<4.6.0a0 - - r-digest >=0.6.25 - - r-dplyr >=1.0.0 - - r-fs >=1.4.2 - - r-furrr >=0.3.0 - - r-future >=1.0.0 - - r-future.callr >=0.2.0 - - r-rlang >=0.4.7 - - r-targets >=0.14.0 - - r-tibble >=3.0.1 - - r-tidyselect >=1.1.0 - - r-vctrs >=0.3.4 - - r-withr >=2.1.2 - license: MIT - license_family: MIT - size: 957483 - timestamp: 1774336307654 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-targets-1.12.0-r45hc72bb7e_0.conda - sha256: 2dec43dfe7e53140b199872a9faa81f5ee02ad3b3a73b4a0b18ef93d53f3b54a - md5: 3867dd1e5cdb9597e15f6853d3419667 - depends: - - r-base >=4.5,<4.6.0a0 - - r-base64url >=1.4 - - r-callr >=3.7.0 - - r-cli >=2.0.2 - - r-codetools >=0.2.16 - - r-data.table >=1.12.8 - - r-igraph >=2.0.0 - - r-knitr >=1.34 - - r-prettyunits >=1.1.0 - - r-ps >=1.8.0 - - r-r6 >=2.4.1 - - r-rlang >=1.0.0 - - r-secretbase >=0.5.0 - - r-tibble >=3.0.1 - - r-tidyselect >=1.1.0 - - r-vctrs >=0.2.4 - - r-yaml >=2.2.1 - license: MIT - license_family: MIT - size: 2383796 - timestamp: 1770674208770 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-terra-1.9_11-r45h1d36251_0.conda - sha256: dc442d0f75518e2f76b102e48e202bff199c414aaeec158eb3811f617bc41a9a - md5: d03391a37a69abef783b4e8da198cb50 - depends: - - __glibc >=2.17,<3.0.a0 - - geos >=3.14.1,<3.14.2.0a0 - - libgcc >=14 - - libgdal-core >=3.12.2,<3.13.0a0 - - libgdal-core >=3.12.2,<4.0a0 - - libstdcxx >=14 - - proj >=9.7.1,<10.0a0 - - proj >=9.7.1,<9.8.0a0 - - r-base >=4.5,<4.6.0a0 - - r-rcpp >=1.0_10 - license: GPL-3.0-or-later - license_family: GPL3 - size: 4571753 - timestamp: 1774814461047 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-testthat-3.3.2-r45h3697838_0.conda - sha256: 0b526259e82140c26311dba589e65fd2fdcf3a559f8b07640464c2e5141f6468 - md5: be972259c1c9f78d44048aeae38f82ba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-brio >=1.1.3 - - r-callr >=3.7.3 - - r-cli >=3.6.1 - - r-desc >=1.4.2 - - r-digest >=0.6.33 - - r-evaluate >=1.0.1 - - r-jsonlite >=1.8.7 - - r-lifecycle >=1.0.3 - - r-magrittr >=2.0.3 - - r-pkgload >=1.3.2.1 - - r-praise >=1.0.0 - - r-processx >=3.8.2 - - r-ps >=1.7.5 - - r-r6 >=2.5.1 - - r-rlang >=1.1.1 - - r-waldo >=0.6.0 - - r-withr >=3.0.2 - license: MIT - license_family: MIT - size: 1848754 - timestamp: 1768138280795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-1.0.5-r45h74f4acd_0.conda - sha256: f9dda3386d3ee05a333bbed492deb4c16b5a636b4007410dab21f264f3b5b780 - md5: 58b8dbafb469476a7a7dbffe184910f0 - depends: - - __glibc >=2.17,<3.0.a0 - - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=12.3.2 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cpp11 >=0.2.1 - - r-lifecycle - - r-stringi - - r-systemfonts >=1.3.0 - license: MIT - license_family: MIT - size: 189924 - timestamp: 1772816656813 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.1-r45h54b55ab_0.conda - sha256: 256d782fb5773d678f29b88a2c987eb47065e2393a080ca16f400b0256de65bb - md5: ad28f67cbb0b10a5beaa7bf968761cad - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - - r-fansi >=0.4.0 - - r-lifecycle >=1.0.0 - - r-magrittr - - r-pillar >=1.8.1 - - r-pkgconfig - - r-rlang >=1.0.2 - - r-vctrs >=0.4.2 - license: MIT - license_family: MIT - size: 589666 - timestamp: 1768139121744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.2-r45h3697838_0.conda - sha256: 8c4560d92c1adfce9a37da2f963596a369688b0d5f44d1fa2f0fbfecb486d99f - md5: e571d4d42233dd2aa3bdb0057ffbdc63 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.4.1 - - r-dplyr >=1.0.10 - - r-glue - - r-lifecycle >=1.0.3 - - r-magrittr - - r-purrr >=1.0.1 - - r-rlang >=1.0.4 - - r-stringr >=1.5.0 - - r-tibble >=2.1.1 - - r-tidyselect >=1.2.0 - - r-vctrs >=0.5.2 - license: MIT - license_family: MIT - size: 1127263 - timestamp: 1766142073696 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r45hc72bb7e_2.conda - sha256: fca09d6b9940f1e1cda0425a0f55716bba202d6f55d6bd25fedec391006c7dc7 - md5: 15aa0f323385403fe182e46a1d095e1b - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.3.0 - - r-glue >=1.3.0 - - r-lifecycle >=1.0.3 - - r-rlang >=1.0.4 - - r-vctrs >=0.5.2 - - r-withr - license: MIT - license_family: MIT - size: 220192 - timestamp: 1757475791328 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.4.0-r45h3697838_0.conda - sha256: 47d03f8df0b40173e41a5b0a8d0318b0a274a5302d67aadad7e4769bad1b2509 - md5: 77b6b03b30183b189906b08ea0868b21 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cpp11 >=0.2.7 - license: GPL-3.0-only AND Apache-2.0 - license_family: GPL3 - size: 193829 - timestamp: 1769737645751 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.59-r45hc72bb7e_0.conda - sha256: cabc58da08c6398846a9150447bef28da09ea440e10d4dcf39e46cbb26424848 - md5: 23e96bde077293a06d1f16ca1d33e009 - depends: - - r-base >=4.5,<4.6.0a0 - - r-xfun >=0.5 - license: MIT - license_family: MIT - size: 157337 - timestamp: 1774815071643 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-triebeard-0.4.1-r45h3697838_4.conda - sha256: eb88a6157ec9a74e2f85d1216f01cd0c02d36a524595cf242677de8cea714ff3 - md5: bb80b8d38be888874fd716fdbcd50c80 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp - license: MIT - license_family: MIT - size: 185274 - timestamp: 1757482938729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r45h3697838_2.conda - sha256: d5e6baaf4063a7fb2c462e6f1a5ffda1c8928eb4b943887e4989e8eac9a98916 - md5: 54673c8b5186c85794f0bd40d7c49bb4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cpp11 >=0.5.2 - license: MIT - license_family: MIT - size: 555420 - timestamp: 1757490039639 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-units-1.0_1-r45h3697838_0.conda - sha256: 1e869c06ef65f068f821c975134b1f554842e23a0a10897d3f4375be4107a766 - md5: 2724fdcf9b2ec679146b972df3f31b2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libudunits2 >=2.2.28,<3.0a0 - - r-base >=4.5,<4.6.0a0 - - r-rcpp - license: GPL-2.0-only - license_family: GPL2 - size: 476969 - timestamp: 1773974259444 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-urlchecker-1.0.1-r45hc72bb7e_4.conda - sha256: 3c1ac479352099400b82b866db5a49b6c2f9802451e5ecf42385abaf4db73f4f - md5: d8603dd91958a841382fdced991aba9a - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-curl - - r-xml2 - license: GPL-3.0-only - license_family: GPL3 - size: 52246 - timestamp: 1758409118952 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-urltools-1.7.3.1-r45h3697838_1.conda - sha256: 4704c6ffa27e101caabb078ab5e01810cdd1c8175a26b7d7b1c63871e1dabb0d - md5: 34a60c139c9d11abe11a64cac9d8611e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-rcpp - - r-triebeard - license: MIT - license_family: MIT - size: 305032 - timestamp: 1757491498921 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-usethis-3.2.1-r45hc72bb7e_1.conda - sha256: 3c8dc056e071d002dfde20f14cd8b1bad4b210f6e7e2d26cfc5eaf8f1342b1b2 - md5: dcbfbae5c448a2e54f37457f16075468 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-clipr >=0.3.0 - - r-crayon - - r-curl >=2.7 - - r-desc - - r-ellipsis - - r-fs >=1.3.0 - - r-gert >=1.0.2 - - r-gh >=1.2.0 - - r-glue >=1.3.0 - - r-jsonlite - - r-lifecycle - - r-purrr - - r-rappdirs - - r-rlang >=0.4.3 - - r-rprojroot >=1.2 - - r-rstudioapi - - r-whisker - - r-withr >=2.3.0 - - r-yaml - license: MIT - license_family: MIT - size: 915479 - timestamp: 1758433263601 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r45h54b55ab_1.conda - sha256: 97186abdf7c29872e012c9fe05ec16c019b58c43ac7b778baa480a8acae9c914 - md5: 75cb2540ac930ea879e92d99e00e97c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: Apache-2.0 - license_family: APACHE - size: 147244 - timestamp: 1757424673681 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-v8-8.0.1-r45h3697838_0.conda - sha256: d5b7ddd15efe71500090da3a2bd79453c5a4432bf9d87483ad2be1129b5cf0b4 - md5: 1861207714878e6df085591005681dc7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-curl >=1.0 - - r-jsonlite >=1.0 - - r-rcpp >=0.12.12 - license: MIT - license_family: MIT - size: 10399678 - timestamp: 1760099076903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.7.2-r45h3697838_0.conda - sha256: 36c857e7ca159d01f7bd295d6b09edb716fd5948a44e3d761e24bddbc17bc2e1 - md5: fc66ffed8a4bd9176dd17d2eec7bcca7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cli >=3.4.0 - - r-glue - - r-lifecycle >=1.0.3 - - r-rlang >=1.0.6 - license: MIT - license_family: MIT - size: 1393433 - timestamp: 1774123916873 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.3-r45hc72bb7e_0.conda - sha256: b9ec9606562f0f6bdefc237bbc6163eb1cb022f9d699c80771bc84af0ae37269 - md5: bcadc0a3726e2191e51449f67fa5e0a9 - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 1305542 - timestamp: 1770191459321 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-visnetwork-2.1.4-r45hc72bb7e_1.conda - sha256: 673666191b9e01fcf2dd5ff9bf9e06ee279faac1da3b34372e2113c328c9a9ff - md5: 3f29e5d2782e79eb5d66e2f59a7edee0 - depends: - - r-base >=4.5,<4.6.0a0 - - r-htmltools - - r-htmlwidgets - - r-jsonlite - - r-magrittr - license: MIT - license_family: MIT - size: 3724506 - timestamp: 1757566751580 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.7.1-r45h3697838_0.conda - sha256: c322b1115a9e066505deb292ab38c76ad9d2a983c8269c82e89229dbf6bf5494 - md5: 8e45deb7cb8502dda9073be1a5e664df - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-bit64 - - r-cli - - r-cpp11 >=0.2.0 - - r-crayon - - r-glue - - r-hms - - r-lifecycle - - r-progress >=1.2.1 - - r-rlang >=0.4.2 - - r-tibble >=2.0.0 - - r-tidyselect - - r-tzdb >=0.1.1 - - r-vctrs >=0.2.0 - - r-withr - license: MIT - license_family: MIT - size: 934319 - timestamp: 1774940641597 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-waldo-0.6.2-r45hc72bb7e_1.conda - sha256: 57eb80cb919524dde77b4c19f257ac9b327aba900e28298d990fa622f30b6f09 - md5: 86406bcc46061e27fe7ec24f73eb6676 - depends: - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-diffobj >=0.3.4 - - r-fansi - - r-glue - - r-rematch2 - - r-rlang >=1.0.0 - - r-tibble - license: MIT - license_family: MIT - size: 144204 - timestamp: 1757501656298 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-whisker-0.4.1-r45hc72bb7e_3.conda - sha256: f61bc764a85693d28dfc9dba60bc13acd89c3fd8fe85aa212530a3558bfecec0 - md5: 5cd861608ecbeab0574d59a7754deba7 - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-3.0-only - license_family: GPL3 - size: 83008 - timestamp: 1757468282426 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r45hc72bb7e_1.conda - sha256: ce2d02905f29ae7e9e18a44d1985896628f6bb1ae6348a67e9534d5b8779485b - md5: 56c45a76870f89e39aeca8ba4d4e911a - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 235156 - timestamp: 1757447242401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-wk-0.9.5-r45h3697838_0.conda - sha256: 69759dad4ee2a770f7763a7839b1dc32312642f8c221846d5e32fc0f3143b5bc - md5: 5b13c70543b3380816357e1d6fff23e3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - - r-cpp11 - license: MIT - license_family: MIT - size: 1723697 - timestamp: 1766049716560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.57-r45h3697838_0.conda - sha256: 29e388ad6532d694f84407f97adb1043ef2d92c25b01affaeed19a6487ad4cba - md5: 5016c4e6a78579e1fd3156d2894b474f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 597036 - timestamp: 1774807163423 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.22-r45hf705907_0.conda - sha256: b8baf74e5bae3bcb8ca66d53595c59251a6fb937df23047dd869056e448bf726 - md5: c39ff975e024c2af2b2828e0147239d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libxml2-devel - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 1765607 - timestamp: 1770738628743 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.5.2-r45he78afff_0.conda - sha256: f847cc5166f814ec9c35c28bd6abc20879750fe2b658e4503505fce78951df75 - md5: d7feead194c1df2c74bd11e37acc9573 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.1,<2.0a0 - - r-base >=4.5,<4.6.0a0 - - r-cli - - r-rlang >=1.1.0 - license: GPL-2.0-or-later - license_family: GPL2 - size: 354820 - timestamp: 1768764934482 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r45hc72bb7e_4.conda - sha256: 9f57360c5ead5ed2c425643d83976f0769bff821b7237625493a3e55050aaa97 - md5: 399cae3eda1b9bfa1140d2ad6aa0816a - depends: - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: MIT - size: 28840 - timestamp: 1757451925197 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-xopen-1.0.1-r45hc72bb7e_2.conda - sha256: af8aecc4a3fe0bf7936ca178a3280ac5dcdcfe385c8337b9a29630cb96aa9bda - md5: c2a6b820f0a9d1ed0cf0e134933d0f84 - depends: - - r-base >=4.5,<4.6.0a0 - - r-processx - license: MIT - license_family: MIT - size: 33290 - timestamp: 1757570912406 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_8-r45hc72bb7e_0.conda - sha256: 972923364cfd616ccf38768477c435677cfe1ea18a72016f90344ea920e4fea5 - md5: e18fda0821f0fdc1c34276c5e0acdc92 - depends: - - r-base >=4.5,<4.6.0a0 - license: GPL (>= 2) - license_family: GPL3 - size: 744345 - timestamp: 1771859982217 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.12-r45h54b55ab_0.conda - sha256: f8944d47eccfdb2c04e27fd65797de7468ccc5d9f3fc3d9af296da613d75d79c - md5: d0d07c6f14b640a98cf6a5e3e4e2e723 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 124461 - timestamp: 1765372968808 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-zip-2.3.3-r45h54b55ab_1.conda - sha256: fb3162e2a6f7c55758e324689c33d1331f902d5d051608f0786ffc568bcf6868 - md5: 1b8549e282e0dde9fcbb5f8c88f43dbf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - r-base >=4.5,<4.6.0a0 - license: MIT - license_family: CC - size: 156771 - timestamp: 1757447521128 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda - sha256: 2f225ddf4a274743045aded48053af65c31721e797a45beed6774fdc783febfb - md5: 0227d04521bc3d28c7995c7e1f99a721 - depends: - - libre2-11 2025.11.05 h7b12aa8_0 - license: BSD-3-Clause - license_family: BSD - size: 27316 - timestamp: 1762397780316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 - md5: d7d95fc8287ea7bf33e0e7116d2b95ec - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - ncurses >=6.5,<7.0a0 - license: GPL-3.0-only - license_family: GPL - size: 345073 - timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda - sha256: dec76e9faa3173579d34d226dbc91892417a80784911daf8e3f0eb9bad19d7a6 - md5: bade189a194e66b93c03021bd36c337b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.4,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 394197 - timestamp: 1765160261434 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.9-h6688a6e_0.conda - sha256: ee826aa0c6157d4a947722b1205964482ff8e88136bd3161864f8cefdca85b5b - md5: 171afc5f7ca0408bbccbcb69ade85f92 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: GPL-3.0-only - license_family: GPL - size: 228948 - timestamp: 1746562045847 -- conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py314h56549f7_1.conda - sha256: 7ef960870a6827599537fb434550848d75ce4bb5bf6ac3bc5317a80f941f8955 - md5: 3f9d3f6f3e67369b6b82112fc1144db6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python >=3.14,<3.15.0a0 - - python_abi 3.14.* *_cp314t - license: MIT - license_family: MIT - size: 136662 - timestamp: 1762507051896 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 - md5: 98b6c9dc80eb87b2519b97bcf7e578dd - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - license: BSD-3-Clause - license_family: BSD - size: 45829 - timestamp: 1762948049098 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda - sha256: c9af81e7830d9c4b67a7f48e512d060df2676b29cac59e3b31f09dbfcee29c58 - md5: 7d9d7efe9541d4bb71b5934e8ee348ea - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.2,<79.0a0 - - libgcc >=14 - - libsqlite 3.52.0 hf4e2dac_0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - readline >=8.3,<9.0a0 - license: blessing - size: 203641 - timestamp: 1772818888368 -- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 - md5: 13dc3adbc692664cd3beabd216434749 - depends: - - __glibc >=2.28 - - kernel-headers_linux-64 4.18.0 he073ed8_9 - - tzdata - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later - license_family: GPL - size: 24008591 - timestamp: 1765578833462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac - md5: cffd3bdd58090148f4cfcd831f4b26ab - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - constrains: - - xorg-libx11 >=1.8.12,<2.0a0 - license: TCL - license_family: BSD - size: 3301196 - timestamp: 1769460227866 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h5a7a40f_8.conda - sha256: 3e20b2f2902a1f402ef2420ce2b9e8c91f9e02748d55530894ac1f640561fdd0 - md5: 72628f56d7a99b86efa435a0b97a4b47 - depends: - - tk - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - tk >=8.6.13,<8.7.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - license: TCL - size: 102544 - timestamp: 1773732786017 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c - md5: ad659d0a2b3e47e38d829aa8cad2d610 - license: LicenseRef-Public-Domain - size: 119135 - timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda - sha256: 7beb28a13dd4206c54ed994434d843aabda57fc9e5a0835c2f504c77336a4087 - md5: 6bb8deb138f87c9d48320ac21b87e7a1 - depends: - - libexpat >=2.5.0,<3.0a0 - - libgcc-ng >=12 - - libudunits2 2.2.28 h40f5838_3 - license: LicenseRef-BSD-UCAR - size: 112783 - timestamp: 1696525549258 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda - sha256: 2aad2aeff7c69a2d7eecd7b662eef756b27d6a6b96f3e2c2a7071340ce14543e - md5: d71d3a66528853c0a1ac2c02d79a0284 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: BSD-3-Clause - license_family: BSD - size: 48270 - timestamp: 1715010035325 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda - sha256: 605980121ad3ee9393a9b53fb0996929c9732f8fc6b9f796d25244ca6fa23032 - md5: 66a1db55ecdb7377d2b91f54cd56eafa - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.1,<79.0a0 - - libgcc >=14 - - libnsl >=2.0.1,<2.1.0a0 - - libstdcxx >=14 - license: Apache-2.0 - license_family: Apache - size: 1660075 - timestamp: 1766327494699 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b - md5: fb901ff28063514abb6046c9ec2c4a45 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 58628 - timestamp: 1734227592886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 - md5: 1c74ff8c35dcadf952a16f752ca5aa49 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.2,<2.0a0 - license: MIT - license_family: MIT - size: 27590 - timestamp: 1741896361728 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 - md5: 861fb6ccbc677bb9a9fb2468430b9c6a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libxcb >=1.17.0,<2.0a0 - license: MIT - license_family: MIT - size: 839652 - timestamp: 1770819209719 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b - md5: b2895afaf55bf96a8c8282a2e47a5de0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 15321 - timestamp: 1762976464266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 - md5: 1dafce8548e38671bea82e3f5c6ce22f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 20591 - timestamp: 1762976546182 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f - md5: 34e54f03dfea3e7a2dcf1453a85f1085 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - xorg-libx11 >=1.8.12,<2.0a0 - license: MIT - license_family: MIT - size: 50326 - timestamp: 1769445253162 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 - md5: ba231da7fccf9ea1e768caf5c7099b84 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - xorg-libx11 >=1.8.12,<2.0a0 - license: MIT - license_family: MIT - size: 20071 - timestamp: 1759282564045 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a - md5: 17dcc85db3c7886650b8908b183d6876 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 - license: MIT - license_family: MIT - size: 47179 - timestamp: 1727799254088 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 - md5: 96d57aba173e878a2089d5638016dc5e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - license: MIT - license_family: MIT - size: 33005 - timestamp: 1734229037766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e - md5: 279b0de5f6ba95457190a1c459a64e31 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 - license: MIT - license_family: MIT - size: 379686 - timestamp: 1731860547604 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36 - md5: aa8d21be4b461ce612d8f5fb791decae - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: MIT - license_family: MIT - size: 570010 - timestamp: 1766154256151 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda - sha256: 325d370b28e2b9cc1f765c5b4cdb394c91a5d958fbd15da1a14607a28fee09f6 - md5: 755b096086851e1193f3b10347415d7c - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - krb5 >=1.22.2,<1.23.0a0 - - libsodium >=1.0.21,<1.0.22.0a0 - license: MPL-2.0 - license_family: MOZILLA - size: 311150 - timestamp: 1772476812121 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 - md5: c2a01a08fc991620a74b32420e97868a - depends: - - __glibc >=2.17,<3.0.a0 - - libzlib 1.3.2 h25fd6f3_2 - license: Zlib - license_family: Other - size: 95931 - timestamp: 1774072620848 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 - md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 - depends: - - __glibc >=2.17,<3.0.a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 601375 - timestamp: 1764777111296 diff --git a/pixi.toml b/pixi.toml deleted file mode 100644 index 2643f1827f5..00000000000 --- a/pixi.toml +++ /dev/null @@ -1,105 +0,0 @@ -[workspace] -authors = ["Alexey Shiklomanov "] -channels = ["conda-forge"] -name = "cimis-et-complete" -platforms = ["linux-64"] -version = "0.1.0" - -[tasks] -[tasks.pak] -args = [{arg = "pkg"}] -cmd = 'Rscript -e "pak::pak(\"{{ pkg }}\")"' - -[tasks.rdinst] -args = [{arg = "path"}] -cmd = 'Rscript -e "devtools::install(\"{{ path }}\", upgrade = FALSE)"' - -[tasks.rdoc] -args = [{arg = "path"}] -cmd = 'Rscript -e "devtools::document(\"{{ path }}\")"' - -[tasks.inst_local] -depends-on = [ - {task = "rdinst", args = ["base/logger"]}, - {task = "rdinst", args = ["base/utils"]}, - {task = "rdinst", args = ["base/remote"]}, - {task = "rdinst", args = ["base/db"]}, - {task = "rdinst", args = ["modules/data.land"]}, - {task = "rdinst", args = ["modules/data.atmosphere"]}, - {task = "rdinst", args = ["models/sipnet"]}, - {task = "rdinst", args = ["base/settings"]} -] - -[tasks.targets] -args = [{arg = "tar_project", default = "small"}] -cmd = "TAR_PROJECT={{ tar_project }} Rscript -e 'targets::tar_make()'" - -[tasks.outdated] -args = [{arg = "tar_project", default = "small"}] -cmd = "TAR_PROJECT={{ tar_project }} Rscript -e 'targets::tar_outdated()'" - -[tasks.target_build] -depends-on = [ - {task = "rdinst", args = ["modules/data.land"]}, - {task = "targets"} -] - -[dependencies] -r = ">=4" -r-roxygen2 = "==7.3.3" -r-abind = ">=1.4.5" -r-arrow = "*" -r-coda = "*" -r-curl = "*" -r-dbplyr = ">=2.4.0" -r-devtools = "*" -r-dplyr = ">=1.1.2" -r-dplR = "*" -r-foreach = "*" -r-fs = "*" -r-future = "*" -r-furrr = "*" -r-httr = "*" -r-httr2 = "*" -r-jsonlite = "*" -r-lubridate = "*" -r-magrittr = "*" -r-nanoarrow = "*" -r-ncdf4 = ">=1.15" -r-purrr = "*" -r-rlang = "*" -r-sf = "*" -r-stringi = "*" -r-stringr = "*" -r-terra = "*" -r-testthat = "*" -r-tibble = "*" -r-tidyr = "*" -r-tidyselect = "*" -r-withr = "*" -r-xml = ">=3.98" -r-dbi = "*" -r-glue = "*" -"r-R.utils" = "*" -r-units = "*" -r-urltools = "*" -r-languageserver = ">=0.3.17,<0.4" -r-targets = ">=1.12.0,<2" -r-here = ">=1.0.2,<2" -r-tarchetypes = ">=0.14.0,<0.15" -r-ggplot2 = ">=4.0.2,<5" -r-mirai = ">=2.6.1,<3" -r-clustermq = ">=0.9.8,<0.10" -r-crew = ">=1.3.0,<2" -"r-crew.cluster" = ">=0.4.0,<0.5" -air = ">=0.8.2,<0.9" -r-visnetwork = ">=2.1.4,<3" -r-pak = "*" -r-jsonvalidate = ">=1.5.0,<2" -r-rjags = ">=4_17,<5" -r-rcpptoml = ">=0.2.3,<0.3" -r-doparallel = ">=1.0.17,<2" -r-reticulate = ">=1.45.0,<2" -r-readr = ">=2.2.0,<3" -cdo = ">=2.5.0,<3" -r-stars = ">=0.7_1,<0.8" diff --git a/workflows/sipnet-restart-workflow/91-debug.R b/workflows/sipnet-restart-workflow/91-debug.R deleted file mode 100644 index f748910ff84..00000000000 --- a/workflows/sipnet-restart-workflow/91-debug.R +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env Rscript - -library(dplyr) -library(ggplot2) -library(readr) - -sipnet_out_file <- "modules/data.land/inst/sipnet-restart-workflow/_test/segments/segment_001/out/1/sipnet.out" - -skip_n <- 0 -sipnet_output <- tryCatch({ - utils::read.table(sipnet_out_file, header = TRUE, skip = skip_n, sep = "") -}, error = function(err) { - PEcAn.logger::logger.warn( - "Failed to read using `read.table`. ", - "Trying to parse output manually." - ) - raw_lines <- readLines(sipnet_out_file) - raw_header <- raw_lines[[1 + skip_n]] - raw_body <- tail(raw_lines, -(1 + skip_n)) - # SIPNET output is right-aligned with the column names in the header. - # We use this to figure out where the numbers end if there are no spaces. - token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) - proc_header <- regmatches(raw_header, token_matches)[[1]] - col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 - col_starts <- c(1, head(col_ends, -1) + 1) - col_widths <- col_ends - col_starts + 1 - result <- read.fwf( - textConnection(raw_body), - widths = col_widths, - col.names = proc_header, - na.strings = c("nan", "-nan") - ) - result[] <- lapply(result, as.numeric) - result -}) - -dat <- as_tibble(sipnet_output) |> - mutate( - date = PEcAn.SIPNET:::sipnet2datetime(year, day, time), - .before = 0 - ) - -head(dat, 20) - -dwide <- dat |> - select(-c("year", "day", "time")) |> - tidyr::pivot_longer( - -"date", - names_to = "variable", - values_to = "value" - ) - -dwide |> - # filter(date < "2016-07-15") |> - # filter(date < "2016-06-11") |> - ggplot() + - aes(x = date, y = value) + - geom_line() + - facet_wrap(vars(variable), scales = "free") - -ggsave("~/Pictures/bad-segment-early.png") - -# Find first NA -first_na_index <- which(rowSums(is.na(dat)) > 0)[1] -start_row <- pmax(1, first_na_index - 10) -end_row <- pmin(nrow(dat), first_na_index + 10) -result <- dat |> - slice(start_row:end_row) - -print(dat, n = Inf) - -dat |> - dplyr::filter(is.na(litter)) - -tail(dat, 30) |> dplyr::glimpse() - -ncfile <- "modules/data.land/inst/sipnet-restart-workflow/_test/segments/segment_001/out/1/2016.nc" -vnames <- c("") -dnc <- PEcAn.utils::read.output(ncfiles = ncfile, dataframe = TRUE) |> - as_tibble() -nc <- ncdf4::nc_open(ncfile) -names(nc$var) -time <- ncdf4::ncvar_get(nc, "time") diff --git a/workflows/sipnet-restart-workflow/92-find-winter-crop.R b/workflows/sipnet-restart-workflow/92-find-winter-crop.R deleted file mode 100644 index 71f6b40bdea..00000000000 --- a/workflows/sipnet-restart-workflow/92-find-winter-crop.R +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env Rscript - -config <- config::get(file = "workflows/sipnet-restart-workflow/config.yml") - -planting <- list.files( - config[["planting_events_dir"]], - "planting_statewide_.*\\.parquet", - full.names = TRUE -) |> - arrow::open_dataset() |> - dplyr::collect() |> - dplyr::mutate(date = as.Date(.data$date)) |> - tibble::as_tibble() - -planting |> - dplyr::filter(lubridate::month(date) >= 11) |> - dplyr::arrange(date) |> - print(n = 30) - -pid <- "101007" # hay - -pid <- "106453" # hay --> row --> hay -pid <- "10726" # woody -pid <- "154989" # woody --> hay --> row --> hay - -planting_site <- planting |> - dplyr::filter(.data$site_id == .env$pid) -harvest <- list.files( - config[["harvest_events_dir"]], - ".*\\.parquet", - full.names = TRUE -) |> - arrow::open_dataset() |> - dplyr::filter(.data$site_id == .env$pid) |> - dplyr::collect() |> - dplyr::mutate(date = as.Date(.data$date)) |> - dplyr::as_tibble() -events <- dplyr::bind_rows(planting_site, harvest) |> - dplyr::arrange(.data$date) -events From 11fa8634a2f10c3eaef994de7f251c8dadd2cb59 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 10:25:37 -0400 Subject: [PATCH 52/75] better combine_sipnet_out docs --- models/sipnet/R/combine_sipnet_out.R | 6 +++--- models/sipnet/man/combine_sipnet_out.Rd | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/models/sipnet/R/combine_sipnet_out.R b/models/sipnet/R/combine_sipnet_out.R index 8465ae5ad8f..18c8b5f57e2 100644 --- a/models/sipnet/R/combine_sipnet_out.R +++ b/models/sipnet/R/combine_sipnet_out.R @@ -5,9 +5,9 @@ #' @param directory Parent directory to search for `sipnet.out` files. You must #' provide either this or an explicit vector of `files`. #' @param outfile File to which combined `sipnet.out` will be written -#' @param files (optional) Explicit vector of paths to `sipnet.out` files to -#' combine. Note that files need not be named `sipnet.out`, but they must be -#' readable with [read_sipnet_out()]. +#' @param files Optional vector of paths to files to combine. All must be +#' readable with [read_sipnet_out()]. If `NULL` (default), looks for files +#' named `sipnet.out` in `directory` and its subdirectories, recursively. #' #' @return `outfile` (path to output file), invisibly #' @export diff --git a/models/sipnet/man/combine_sipnet_out.Rd b/models/sipnet/man/combine_sipnet_out.Rd index 4fedd52cded..85358b569ff 100644 --- a/models/sipnet/man/combine_sipnet_out.Rd +++ b/models/sipnet/man/combine_sipnet_out.Rd @@ -12,9 +12,9 @@ provide either this or an explicit vector of \code{files}.} \item{outfile}{File to which combined \code{sipnet.out} will be written} -\item{files}{(optional) Explicit vector of paths to \code{sipnet.out} files to -combine. Note that files need not be named \code{sipnet.out}, but they must be -readable with \code{\link[=read_sipnet_out]{read_sipnet_out()}}.} +\item{files}{Optional vector of paths to files to combine. All must be +readable with \code{\link[=read_sipnet_out]{read_sipnet_out()}}. If \code{NULL} (default), looks for files +named \code{sipnet.out} in \code{directory} and its subdirectories, recursively.} } \value{ \code{outfile} (path to output file), invisibly From 2ce339ec8ff96a55d740b02625c0900405461108 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 10:36:58 -0400 Subject: [PATCH 53/75] add todo for crop2pft --- workflows/sipnet-restart-workflow/utils.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index c07a80fb8ff..b6fc4c868f9 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -39,8 +39,10 @@ subset_paths <- function(settings, path_nums) { settings } +# TODO: We need a better, consistent implementation of this. However, this is +# OK as an example of a function that implements the capabilities needed for +# `write_segment_configs`. crop2pft_example <- function(crop_code) { - # crop_code <- c("F1", "R1", "G2", "F16") cls <- substr(crop_code, 1, 1) dplyr::case_when( crop_code == "P1" ~ "annual_crop", From 3843f1220eaaadbf857b6f0d972a8445fefe22ff Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 10:38:17 -0400 Subject: [PATCH 54/75] option to force reruns of segments (default=FALSE) if true, recursively delete segment folders for each segment. --- workflows/sipnet-restart-workflow/utils.R | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index b6fc4c868f9..8e06808ff39 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -131,7 +131,8 @@ write_segment_configs <- function( settings, run_row, crop2pft = crop2pft_example, - replace_and_link = TRUE + replace_and_link = TRUE, + force_rerun = FALSE ) { run_id <- run_row[["run_id"]] run_dir <- file.path(settings$rundir, run_id) @@ -162,7 +163,9 @@ write_segment_configs <- function( dend <- segment[["end_date"]] segment_dir <- segment[["segment_dir"]] - unlink(segment_dir, recursive = TRUE) + if (force_rerun) { + unlink(segment_dir, recursive = TRUE) + } dir.create(segment_dir, showWarnings = FALSE, recursive = TRUE) runid_dummy <- "1" From 275678608ecf60122baa5dd8b64e906c33b9e3dd Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 11:15:21 -0400 Subject: [PATCH 55/75] set pft_dir for BU SCC --- workflows/sipnet-restart-workflow/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/sipnet-restart-workflow/config.yml b/workflows/sipnet-restart-workflow/config.yml index d2f8659e651..0b0032960d8 100644 --- a/workflows/sipnet-restart-workflow/config.yml +++ b/workflows/sipnet-restart-workflow/config.yml @@ -10,7 +10,7 @@ default: ic_dir: "/projectnb/dietzelab/ccmmf/ensemble/IC_files" planting_events_dir: "/projectnb/dietzelab/ccmmf/management/event_files" mslsp_path: "/projectnb/dietzelab/ccmmf/management/phenology/matched_landiq_mslsp_v4.1" - pft_dir: "..." + pft_dir: "/projectnb/dietzelab/ccmmf/ensemble/pfts" n_ensemble: 3 ashiklom: From 3ea3b2bb3e001ef2d76746b3cd3507ffd8479726 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 12:15:02 -0400 Subject: [PATCH 56/75] drop "sipnet only takes one PFT" from warning --- models/sipnet/R/write.configs.SIPNET.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models/sipnet/R/write.configs.SIPNET.R b/models/sipnet/R/write.configs.SIPNET.R index ef38c05e228..9212f2ce8cf 100755 --- a/models/sipnet/R/write.configs.SIPNET.R +++ b/models/sipnet/R/write.configs.SIPNET.R @@ -81,10 +81,9 @@ write.config.SIPNET <- function(defaults, trait.values, settings, run.id, inputs restart = NULL, spinup = NULL) { if (!is.list(trait.values)) { - PEcAn.logger::logger.severe(paste0( - "Even though SIPNET only takes one PFT at a time, ", + PEcAn.logger::logger.severe( "`trait.values` must be a list with names corresponding to PFTs." - )) + ) } if ( From 53f251626029634d6a20f887fc2cf82218152347 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 12:17:10 -0400 Subject: [PATCH 57/75] update sipnet configs docs --- models/sipnet/R/split_inputs.SIPNET.R | 6 +++--- models/sipnet/man/split_sipnet_met.Rd | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 4b95724779c..a83d6955922 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -89,12 +89,12 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA invisible(outfile) } -##' split sipnet clim file based on start and end time +##' Extract subset of a sipnet clim file based on start and end time ##' ##' @author Mike Dietze, Ann Raiho, Alexey Shiklomanov ##' -##' @param start.time start date and time for each SDA ensemble -##' @param stop.time stop date and time for each SDA ensemble +##' @param start.time start date and time at which to start extraction +##' @param stop.time stop date and time at which to stop extraction ##' @param met path to sipnet clim file to be split ##' @param overwrite if `TRUE`, overwrite existing target file (Default `FALSE`) ##' @param outpath if specified, write output to a new directory. Default `NULL` writes back to the directory being read diff --git a/models/sipnet/man/split_sipnet_met.Rd b/models/sipnet/man/split_sipnet_met.Rd index 2d714d75f51..daf39a5ed30 100644 --- a/models/sipnet/man/split_sipnet_met.Rd +++ b/models/sipnet/man/split_sipnet_met.Rd @@ -2,14 +2,14 @@ % Please edit documentation in R/split_inputs.SIPNET.R \name{split_sipnet_met} \alias{split_sipnet_met} -\title{split sipnet clim file based on start and end time} +\title{Extract subset of a sipnet clim file based on start and end time} \usage{ split_sipnet_met(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) } \arguments{ -\item{start.time}{start date and time for each SDA ensemble} +\item{start.time}{start date and time at which to start extraction} -\item{stop.time}{stop date and time for each SDA ensemble} +\item{stop.time}{stop date and time at which to stop extraction} \item{met}{path to sipnet clim file to be split} @@ -21,7 +21,7 @@ split_sipnet_met(start.time, stop.time, met, overwrite = FALSE, outpath = NULL) path to split up climate file } \description{ -split sipnet clim file based on start and end time +Extract subset of a sipnet clim file based on start and end time } \author{ Mike Dietze, Ann Raiho, Alexey Shiklomanov From 0b3ac45e17d0d1943505f6065dda716c1bfad20a Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 13:07:21 -0400 Subject: [PATCH 58/75] split inputs consistently is < end.time, not <= --- models/sipnet/R/split_inputs.SIPNET.R | 6 +++--- models/sipnet/man/split_inputs.SIPNET.Rd | 2 +- workflows/sipnet-restart-workflow/utils.R | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index a83d6955922..45530d02c93 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -3,7 +3,7 @@ #' Split SIPNET inputs into multiple files based on start and end time #' #' Subset each SIPNET input file and write a new file containing values `>= -#' start.time` and `<= end.time` (note: `end.time` is inclusive!) +#' start.time` and `< end.time` (note: end time is *not* inclusive) #' #' NOTE that sipnet met files contain dates _and_ times, while sipnet event #' files contain only dates. Comparing a datetime to a date will coerce the @@ -80,7 +80,7 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA # Not using sipnet2datetime here because it returns times with time zones, # which could cause subtle timezone-related bugs dates_in <- as.Date(sprintf("%d-01-01", years_in)) + (doys_in - 1) - idx_keep <- (dates_in >= start.time) & (dates_in <= stop.time) + idx_keep <- (dates_in >= start.time) & (dates_in < stop.time) if (length(idx_keep) == 0) { PEcAn.logger::logger.warn("No events to keep, so `events.in` will be empty") } @@ -95,7 +95,7 @@ split_sipnet_events <- function(start.time, stop.time, eventfile, overwrite = FA ##' ##' @param start.time start date and time at which to start extraction ##' @param stop.time stop date and time at which to stop extraction -##' @param met path to sipnet clim file to be split +##' @param met path to sipnet clim file to be split ##' @param overwrite if `TRUE`, overwrite existing target file (Default `FALSE`) ##' @param outpath if specified, write output to a new directory. Default `NULL` writes back to the directory being read ##' diff --git a/models/sipnet/man/split_inputs.SIPNET.Rd b/models/sipnet/man/split_inputs.SIPNET.Rd index 80fe14fa63a..cef939824b3 100644 --- a/models/sipnet/man/split_inputs.SIPNET.Rd +++ b/models/sipnet/man/split_inputs.SIPNET.Rd @@ -30,7 +30,7 @@ Modified \code{inputs} list with all \code{path} entries replaced with new paths (suitable for inserting back into \code{settings$run$inputs}). } \description{ -Subset each SIPNET input file and write a new file containing values \verb{>= start.time} and \verb{<= end.time} (note: \code{end.time} is inclusive!) +Subset each SIPNET input file and write a new file containing values \verb{>= start.time} and \verb{< end.time} (note: end time is \emph{not} inclusive) } \details{ NOTE that sipnet met files contain dates \emph{and} times, while sipnet event diff --git a/workflows/sipnet-restart-workflow/utils.R b/workflows/sipnet-restart-workflow/utils.R index 8e06808ff39..ae27a3f732e 100644 --- a/workflows/sipnet-restart-workflow/utils.R +++ b/workflows/sipnet-restart-workflow/utils.R @@ -172,7 +172,9 @@ write_segment_configs <- function( segment_inputs <- PEcAn.SIPNET::split_inputs.SIPNET( dstart, - dend, + # NOTE: In split_inputs, end.time is *not* inclusive. + # But `dend` *is* inclusive. So `+1` as a workaround here. + (dend + 1), run_settings$run$inputs, overwrite = TRUE, outpath = segment_dir From 3ab8def831f640b1c23ec838b0c157682a68c190 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 13:17:14 -0400 Subject: [PATCH 59/75] downgrade datetime coercion message to debug --- models/sipnet/R/split_inputs.SIPNET.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 45530d02c93..d76b84672ab 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -162,9 +162,9 @@ coerce_to_datetime <- function(x) { " (class: ", class(x), ")" ) } - PEcAn.logger::logger.warn(paste0( - xname, " is a date, but this function expects a datetime. ", + PEcAn.logger::logger.debg( + xname, "is a date, but this function expects a datetime.", "Coercing to datetime by setting to midnight UTC." - )) - as.POSIXct(x) + ) + as.POSIXct(x, tz = "UTC") } From 691e7d5c3636cb55fb01d102e3e0eee8eca43f43 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 13:52:40 -0400 Subject: [PATCH 60/75] change inputs -> results to avoid confusion --- models/sipnet/R/split_inputs.SIPNET.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index d76b84672ab..7fd5540f5ab 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -23,21 +23,21 @@ #' @export split_inputs.SIPNET <- function(start.time, stop.time, inputs, overwrite = FALSE, outpath = NULL) { result <- inputs - if ("met" %in% names(inputs)) { + if ("met" %in% names(result)) { result[["met"]][["path"]] <- split_sipnet_met( start.time, stop.time, - inputs$met$path, + result$met$path, overwrite = overwrite, outpath = outpath ) } - if ("events" %in% names(inputs)) { + if ("events" %in% names(result)) { result[["events"]][["path"]] <- split_sipnet_events( start.time, stop.time, - inputs$events$path, + result$events$path, overwrite = overwrite, outpath = outpath ) From 617b2fe23525ddc1c7ef0693e377fede8607fe45 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:02:37 -0400 Subject: [PATCH 61/75] various R CMD check fixes --- models/sipnet/R/combine_sipnet_out.R | 2 +- models/sipnet/R/model2netcdf.SIPNET.R | 1 + models/sipnet/R/read_sipnet_out.R | 6 +++--- models/sipnet/R/split_inputs.SIPNET.R | 2 +- models/sipnet/man/read_restart.SIPNET.Rd | 13 +++++++++++++ 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/models/sipnet/R/combine_sipnet_out.R b/models/sipnet/R/combine_sipnet_out.R index 18c8b5f57e2..3728867d64c 100644 --- a/models/sipnet/R/combine_sipnet_out.R +++ b/models/sipnet/R/combine_sipnet_out.R @@ -31,6 +31,6 @@ combine_sipnet_out <- function(directory, outfile, files = NULL) { combined <- do.call(rbind.data.frame, flist) # Mimic the SIPNET fixed-width right-aligned format combined_fwf <- format(combined, justify = "right") - write.table(combined_fwf, outfile, row.names = FALSE, col.names = TRUE, quote = FALSE, sep = " ") + utils::write.table(combined_fwf, outfile, row.names = FALSE, col.names = TRUE, quote = FALSE, sep = " ") invisible(outfile) } diff --git a/models/sipnet/R/model2netcdf.SIPNET.R b/models/sipnet/R/model2netcdf.SIPNET.R index 1befa6e775d..46e5c5d2040 100644 --- a/models/sipnet/R/model2netcdf.SIPNET.R +++ b/models/sipnet/R/model2netcdf.SIPNET.R @@ -13,6 +13,7 @@ #' } #' @export mergeNC #' @name mergeNC +#' @importfrom rlang .data #' @source https://github.com/RS-eco/processNC/blob/main/R/mergeNC.R mergeNC <- function( ##title<< Aggregate data in netCDF files diff --git a/models/sipnet/R/read_sipnet_out.R b/models/sipnet/R/read_sipnet_out.R index 810a0d68b5b..457a965803c 100644 --- a/models/sipnet/R/read_sipnet_out.R +++ b/models/sipnet/R/read_sipnet_out.R @@ -19,15 +19,15 @@ read_sipnet_out <- function(sipnet_out_file) { ) raw_lines <- readLines(sipnet_out_file) raw_header <- raw_lines[[1 + skip_n]] - raw_body <- tail(raw_lines, -(1 + skip_n)) + raw_body <- utils::tail(raw_lines, -(1 + skip_n)) # SIPNET output is right-aligned with the column names in the header. # We use this to figure out where the numbers end if there are no spaces. token_matches <- gregexpr("\\S+", raw_header, perl = TRUE) proc_header <- regmatches(raw_header, token_matches)[[1]] col_ends <- token_matches[[1]] + attr(token_matches[[1]], "match.length") - 1 - col_starts <- c(1, head(col_ends, -1) + 1) + col_starts <- c(1, utils::head(col_ends, -1) + 1) col_widths <- col_ends - col_starts + 1 - result <- read.fwf( + result <- utils::read.fwf( textConnection(raw_body), widths = col_widths, col.names = proc_header, diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index 7fd5540f5ab..a71dc270fc7 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -162,7 +162,7 @@ coerce_to_datetime <- function(x) { " (class: ", class(x), ")" ) } - PEcAn.logger::logger.debg( + PEcAn.logger::logger.debug( xname, "is a date, but this function expects a datetime.", "Coercing to datetime by setting to midnight UTC." ) diff --git a/models/sipnet/man/read_restart.SIPNET.Rd b/models/sipnet/man/read_restart.SIPNET.Rd index 6bbc4d07fdb..7bb8f4553e6 100644 --- a/models/sipnet/man/read_restart.SIPNET.Rd +++ b/models/sipnet/man/read_restart.SIPNET.Rd @@ -6,6 +6,19 @@ \usage{ read_restart.SIPNET(outdir, runid, stop.time, settings, var.names, params) } +\arguments{ +\item{outdir}{Output directory} + +\item{runid}{Run ID} + +\item{stop.time}{Year that is being read} + +\item{settings}{PEcAn settings object} + +\item{var.names}{Variable names to be extracted} + +\item{params}{Any parameters required for state calculations} +} \value{ X.vec vector of forecasts } From e49e7e8d062c37ad7eb3610bdff87c9d74929a3c Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:02:50 -0400 Subject: [PATCH 62/75] fix split inputs tests with new structure --- models/sipnet/tests/testthat/test-split_inputs.SIPNET.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R index 2abcee8c253..b7b7c7fd453 100644 --- a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R +++ b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R @@ -14,7 +14,7 @@ test_that("split_inputs", { start.time = dates, stop.time = c(dates[-1], as.Date("2006-01-01")), # Stop just _before_ these dates MoreArgs = list( - inputs = climfile, + inputs = list(met = list(path = climfile)), outpath = outdir ) ) From 79952c42fa303077ef856982389c4eb90efdf4cd Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:03:03 -0400 Subject: [PATCH 63/75] fix events_to_crop_cycle_starts tests Based on the actual JSON contents. --- .../tests/testthat/test-events_to_crop_cycle_starts.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R index 4a00cd0c0c9..4b4fe97f6a5 100644 --- a/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R +++ b/modules/data.land/tests/testthat/test-events_to_crop_cycle_starts.R @@ -44,6 +44,6 @@ test_that("reads from JSON", { package = "PEcAn.data.land" ) res <- events_to_crop_cycle_starts(path) - expect_equal(res$date, "2022-02-19") - expect_equal(res$crop_code, "EX1") + expect_equal(res$date, as.Date("2022-02-19")) + expect_equal(res$crop_code, "Mo17") }) From 3f6ea0d8212fb5fb53fb02c665cbbf6e0d941a9c Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:20:54 -0400 Subject: [PATCH 64/75] fix sipnet split_input tests --- models/sipnet/R/split_inputs.SIPNET.R | 4 +-- .../tests/testthat/test-split_inputs.SIPNET.R | 25 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/models/sipnet/R/split_inputs.SIPNET.R b/models/sipnet/R/split_inputs.SIPNET.R index a71dc270fc7..6e40bf9fe56 100644 --- a/models/sipnet/R/split_inputs.SIPNET.R +++ b/models/sipnet/R/split_inputs.SIPNET.R @@ -158,8 +158,8 @@ coerce_to_datetime <- function(x) { xname <- deparse(substitute(x)) if (!inherits(x, "Date")) { PEcAn.logger::logger.severe( - "Invalid ", xname, " : ", x, - " (class: ", class(x), ")" + "Invalid", xname, ":", x, + "(class:", class(x), ")" ) } PEcAn.logger::logger.debug( diff --git a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R index b7b7c7fd453..59de46292ca 100644 --- a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R +++ b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R @@ -9,7 +9,7 @@ test_that("split_inputs", { by = "2 years" ) - clim_split <- mapply( + clim_split_list <- mapply( split_inputs.SIPNET, start.time = dates, stop.time = c(dates[-1], as.Date("2006-01-01")), # Stop just _before_ these dates @@ -18,6 +18,7 @@ test_that("split_inputs", { outpath = outdir ) ) + clim_split <- vapply(clim_split_list, \(x) x$path, character(1)) # all steps processed expect_length(clim_split, 4) @@ -30,20 +31,34 @@ test_that("split_inputs", { read.table(climfile), clim_split |> lapply(read.table) |> - do.call(what = "rbind") + c(make.row.names = FALSE) |> + do.call(what = rbind) ) }) -test_that("v2 clim format", { +test_that("split_inputs insists on start/end time being dates", { outdir <- withr::local_tempdir() climfile <- file.path("data", "niwot_1999_v2.clim") - clim_split <- split_inputs.SIPNET( + expect_error(split_inputs.SIPNET( start.time = "1999-01-01", stop.time = "1999-04-01", - inputs = climfile, + inputs = list(met = list(path = climfile)), + outpath = outdir + ), "Invalid start.time") +}) + +test_that("v2 clim format", { + outdir <- withr::local_tempdir() + climfile <- file.path("data", "niwot_1999_v2.clim") + + clim_split_list <- split_inputs.SIPNET( + start.time = as.Date("1999-01-01"), + stop.time = as.Date("1999-04-01"), + inputs = list(met = list(path = climfile)), outpath = outdir ) + clim_split <- vapply(clim_split_list, \(x) x$path, character(1)) expect_length(clim_split, 1) expect_length(readLines(clim_split), 90 * 2) # Jan-March 2x/day expect_equal(ncol(read.table(clim_split, nrows = 1)), 12) From 464acf7d99712360b0457c8d954c3da92bc22370 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:22:07 -0400 Subject: [PATCH 65/75] more rcheck fixes --- models/sipnet/NAMESPACE | 1 + models/sipnet/R/model2netcdf.SIPNET.R | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/models/sipnet/NAMESPACE b/models/sipnet/NAMESPACE index f9f6ca518e8..376a4eb12cb 100644 --- a/models/sipnet/NAMESPACE +++ b/models/sipnet/NAMESPACE @@ -14,3 +14,4 @@ export(write.events.SIPNET) export(write_restart.SIPNET) importFrom(dplyr,"%>%") importFrom(rlang,"%||%") +importFrom(rlang,.data) diff --git a/models/sipnet/R/model2netcdf.SIPNET.R b/models/sipnet/R/model2netcdf.SIPNET.R index 46e5c5d2040..9ea15e48d15 100644 --- a/models/sipnet/R/model2netcdf.SIPNET.R +++ b/models/sipnet/R/model2netcdf.SIPNET.R @@ -13,7 +13,7 @@ #' } #' @export mergeNC #' @name mergeNC -#' @importfrom rlang .data +#' @importFrom rlang .data #' @source https://github.com/RS-eco/processNC/blob/main/R/mergeNC.R mergeNC <- function( ##title<< Aggregate data in netCDF files From 7456de0594e22708a19cec6382d0477496d8cd30 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:22:20 -0400 Subject: [PATCH 66/75] revert setting default ensemble method --- modules/uncertainty/R/generate_joint_ensemble_design.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/uncertainty/R/generate_joint_ensemble_design.R b/modules/uncertainty/R/generate_joint_ensemble_design.R index e3faeb2656e..470a9688033 100644 --- a/modules/uncertainty/R/generate_joint_ensemble_design.R +++ b/modules/uncertainty/R/generate_joint_ensemble_design.R @@ -58,7 +58,7 @@ generate_joint_ensemble_design <- function(settings, if (sobol) { ensemble_size <- as.numeric(ensemble_size) * 2 } - ens.sample.method <- settings$ensemble$samplingspace$parameters$method %||% "uniform" + ens.sample.method <- settings$ensemble$samplingspace$parameters$method design_list <- list() sampled_inputs <- list() posterior.files <- settings$pfts %>% From a40d0b2edff8d4ba8abd10a34448630b007dca5a Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 14:46:52 -0400 Subject: [PATCH 67/75] add tests for splitting sipnet events --- .../tests/testthat/data/events-39011.in | 123 ++++++++++++++++++ .../tests/testthat/test-split_inputs.SIPNET.R | 32 ++++- 2 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 models/sipnet/tests/testthat/data/events-39011.in diff --git a/models/sipnet/tests/testthat/data/events-39011.in b/models/sipnet/tests/testthat/data/events-39011.in new file mode 100644 index 00000000000..badfb845b58 --- /dev/null +++ b/models/sipnet/tests/testthat/data/events-39011.in @@ -0,0 +1,123 @@ +2016 161 irrig 9.65252 0 +2016 205 irrig 9.64896 0 +2016 256 irrig 9.58199 0 +2017 163 irrig 9.53059 0 +2017 205 irrig 9.55854 0 +2017 256 irrig 9.63501 0 +2018 159 irrig 9.6026 0 +2018 164 plant 17.7 5.31 3.54 8.85 +2018 164 irrig 55.26454 0 +2018 243 irrig 46.66387 0 +2018 304 harv 0.85 0 0.15 1 +2019 159 plant 32.4 9.72 6.48 16.2 +2019 165 irrig 6.32198 0 +2019 172 irrig 6.12285 0 +2019 179 irrig 6.02169 0 +2019 186 irrig 6.15909 0 +2019 193 irrig 6.18148 0 +2019 200 irrig 6.43141 0 +2019 207 irrig 6.28203 0 +2019 214 irrig 6.25072 0 +2019 221 irrig 5.97653 0 +2019 228 irrig 5.91664 0 +2019 236 irrig 6.41118 0 +2019 244 irrig 6.37572 0 +2019 253 irrig 6.11432 0 +2019 264 irrig 6.04351 0 +2019 277 irrig 6.03546 0 +2019 288 harv 0.85 0 0.15 1 +2019 292 irrig 5.91671 0 +2019 306 irrig 5.95993 0 +2019 324 irrig 5.96982 0 +2020 7 irrig 5.74717 0 +2020 32 irrig 5.85457 0 +2020 47 irrig 5.69725 0 +2020 59 irrig 5.9169 0 +2020 80 irrig 6.06453 0 +2020 93 irrig 6.16762 0 +2020 108 irrig 5.9422 0 +2020 116 irrig 5.71009 0 +2020 123 irrig 5.85222 0 +2020 130 irrig 5.90922 0 +2020 138 irrig 6.23485 0 +2020 146 irrig 6.19786 0 +2020 151 plant 28.4 8.52 5.68 14.2 +2020 153 irrig 5.93207 0 +2020 160 irrig 6.19921 0 +2020 167 irrig 5.84346 0 +2020 174 irrig 6.35657 0 +2020 181 irrig 6.36321 0 +2020 188 irrig 6.20552 0 +2020 195 irrig 6.38482 0 +2020 202 irrig 5.93723 0 +2020 209 irrig 5.86775 0 +2020 216 irrig 6.36583 0 +2020 223 irrig 5.72889 0 +2020 230 irrig 5.83106 0 +2020 238 irrig 6.01655 0 +2020 246 irrig 5.75161 0 +2020 256 irrig 6.17723 0 +2020 268 irrig 5.92472 0 +2020 282 irrig 5.93119 0 +2020 297 irrig 5.81343 0 +2020 299 harv 0.85 0 0.15 1 +2020 316 irrig 5.97592 0 +2020 336 irrig 5.85369 0 +2020 364 irrig 5.95409 0 +2021 17 irrig 5.73476 0 +2021 56 irrig 6.14175 0 +2021 69 irrig 5.97068 0 +2021 86 irrig 6.08402 0 +2021 95 irrig 5.72843 0 +2021 104 irrig 6.01936 0 +2021 112 irrig 6.07443 0 +2021 120 irrig 5.83634 0 +2021 127 irrig 6.4189 0 +2021 133 irrig 5.72954 0 +2021 140 irrig 5.94605 0 +2021 147 irrig 6.13868 0 +2021 153 plant 29.8 8.94 5.96 14.9 +2021 154 irrig 6.48331 0 +2021 161 irrig 5.98042 0 +2021 168 irrig 6.44376 0 +2021 174 irrig 5.69915 0 +2021 181 irrig 6.42743 0 +2021 188 irrig 6.45644 0 +2021 194 irrig 5.82907 0 +2021 201 irrig 6.3062 0 +2021 208 irrig 6.45553 0 +2021 215 irrig 6.4415 0 +2021 222 irrig 6.04692 0 +2021 229 irrig 5.97619 0 +2021 237 irrig 5.85328 0 +2021 245 irrig 6.13553 0 +2021 253 irrig 5.71006 0 +2021 263 irrig 5.74335 0 +2021 275 irrig 5.8088 0 +2021 286 harv 0.85 0 0.15 1 +2021 289 irrig 5.82425 0 +2021 320 irrig 5.82727 0 +2021 360 irrig 5.6906 0 +2022 19 irrig 5.96617 0 +2022 27 plant 4.3 1.29 0.86 2.15 +2022 177 harv 0.85 0 0.15 1 +2022 194 plant 13.6 4.08 2.72 6.8 +2022 240 irrig 39.32469 0 +2022 267 harv 0.85 0 0.15 1 +2023 162 plant 31.8 9.54 6.36 15.9 +2023 166 irrig 6.38402 0 +2023 173 irrig 5.78955 0 +2023 181 irrig 6.49648 0 +2023 188 irrig 6.47614 0 +2023 195 irrig 6.10943 0 +2023 202 irrig 6.24171 0 +2023 209 irrig 6.21757 0 +2023 216 irrig 5.91485 0 +2023 224 irrig 6.5025 0 +2023 232 irrig 6.26688 0 +2023 240 irrig 6.02302 0 +2023 249 irrig 5.83862 0 +2023 259 irrig 6.00448 0 +2023 271 irrig 5.7135 0 +2023 285 irrig 5.93296 0 +2023 286 harv 0.85 0 0.15 1 diff --git a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R index 59de46292ca..db09a03bfa8 100644 --- a/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R +++ b/models/sipnet/tests/testthat/test-split_inputs.SIPNET.R @@ -18,7 +18,7 @@ test_that("split_inputs", { outpath = outdir ) ) - clim_split <- vapply(clim_split_list, \(x) x$path, character(1)) + clim_split <- vapply(clim_split_list, `[[`, character(1), "path") # all steps processed expect_length(clim_split, 4) @@ -63,3 +63,33 @@ test_that("v2 clim format", { expect_length(readLines(clim_split), 90 * 2) # Jan-March 2x/day expect_equal(ncol(read.table(clim_split, nrows = 1)), 12) }) + +test_that("splitting event files", { + outdir <- withr::local_tempdir() + eventfile <- file.path("data", "events-39011.in") + dates <- seq( + from = as.Date("2016-01-01"), + to = as.Date("2024-01-01"), + by = "6 months" + ) + + inputs <- mapply( + split_inputs.SIPNET, + start.time = head(dates, -1), + stop.time = tail(dates, -1), + MoreArgs = list( + inputs = list(events = list(path = eventfile)), + outpath = outdir + ) + ) + + new_events <- vapply(inputs, `[[`, character(1), "path") + expect_true(length(new_events) == (length(dates) - 1)) + expect_true(all(file.exists(new_events))) + + original <- readLines(eventfile) + combined <- lapply(new_events, readLines) |> + do.call(what = c) |> + unname() + expect_equal(original, combined) +}) From 0abbbf738d04db312561bd3ba44b4876d5877b05 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 15:38:51 -0400 Subject: [PATCH 68/75] fix: write_events.SIPNET actually sorts by date --- models/sipnet/R/write.events.SIPNET.R | 14 +++++--- .../tests/testthat/test-write.events.SIPNET.R | 32 +++++++++++++++++++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/models/sipnet/R/write.events.SIPNET.R b/models/sipnet/R/write.events.SIPNET.R index 1afc0f43620..06477ebadcc 100644 --- a/models/sipnet/R/write.events.SIPNET.R +++ b/models/sipnet/R/write.events.SIPNET.R @@ -77,12 +77,16 @@ write.events.SIPNET <- function(events_json, outdir) { dates <- as.Date(vapply(evs, function(e) as.character(e$date), character(1))) years <- as.integer(format(dates, "%Y")) days <- as.integer(format(dates, "%j")) + # Sort everything first; then just loop normally ord <- order(dates) - lines <- character(length(ord)) - for (i in ord) { - e <- evs[[i]] - year <- years[[i]] - day <- days[[i]] + evs_sorted <- evs[ord] + days_sorted <- days[ord] + years_sorted <- years[ord] + lines <- character(length(evs)) + for (i in seq_along(evs)) { + e <- evs_sorted[[i]] + year <- years_sorted[[i]] + day <- days_sorted[[i]] type <- e$event_type if (type == "tillage") { f <- if (is.null(e$tillage_eff_0to1)) 0 else e$tillage_eff_0to1 diff --git a/models/sipnet/tests/testthat/test-write.events.SIPNET.R b/models/sipnet/tests/testthat/test-write.events.SIPNET.R index f792a1fcc09..92a98433611 100644 --- a/models/sipnet/tests/testthat/test-write.events.SIPNET.R +++ b/models/sipnet/tests/testthat/test-write.events.SIPNET.R @@ -39,3 +39,35 @@ testthat::test_that("write.events.SIPNET handles multi-site events.json (one fil testthat::expect_true(startsWith(norm(got2[1]), "2022 60 plant")) testthat::expect_true(startsWith(norm(tail(got2, 1)), "2022 69 irrig")) }) + +testthat::test_that("events are sorted by date", { + ev_json1 <- system.file(file.path("events_fixtures", "events_site1.json"), + package = "PEcAn.data.land" + ) + outdir <- withr::local_tempdir() + events_orig <- jsonlite::read_json(ev_json1) + # Shuffle the events + n_events <- length(events_orig[[1]]$events) + withr::with_seed(8675309, { + idx <- sample(n_events) + }) + events_shuffled <- events_orig + events_shuffled[[1]]$events <- events_shuffled[[1]]$events[idx] + shuffled_file <- file.path(outdir, "events.json") + jsonlite::write_json(events_shuffled, shuffled_file, auto_unbox = TRUE) + files <- write.events.SIPNET(shuffled_file, outdir) + expect_length(files, 1) + got <- readLines(files[1]) + expected <- c( + "2022 35 till 0.2", + "2022 40 till 0.1", + "2022 40 irrig 5 1", + "2022 40 fert 0 0 10", + "2022 50 plant 10 3 2 5", + "2022 250 harv 0.1 0 0 0" + ) + # Three events in the middle have the same dates, so they won't sort + # reliably. Just check that the first and last two events are correct. + expect_equal(norm(head(got, 1)), norm(head(expected, 1))) + expect_equal(norm(tail(got, 2)), norm(tail(expected, 2))) +}) From f061e0923c9385f02283371c00e7f9cd3eecfc50 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 15:49:56 -0400 Subject: [PATCH 69/75] continue runs to end of year --- .../02-prepare-settings.R | 4 ++- .../sipnet-restart-workflow/04-plot-outputs.R | 28 +++++++++---------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index 73c1fd5f8b3..f2a64bf2546 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -43,7 +43,9 @@ harvest_dates <- events |> purrr::keep(\(x) x$event_type == "harvest") |> purrr::map_chr("date") |> as.Date() -end_date <- max(harvest_dates) + +# Run through the end of the year post harvest +end_date <- lubridate::make_date(lubridate::year(max(harvest_dates)), 12, 31) met_dir <- sprintf( "%sN_%sW", diff --git a/workflows/sipnet-restart-workflow/04-plot-outputs.R b/workflows/sipnet-restart-workflow/04-plot-outputs.R index eabf14dd56d..8e0268de184 100644 --- a/workflows/sipnet-restart-workflow/04-plot-outputs.R +++ b/workflows/sipnet-restart-workflow/04-plot-outputs.R @@ -59,24 +59,24 @@ plt <- results |> facet_wrap(vars(variable), scales = "free") + theme_bw() + theme(legend.position = "bottom") -plt +if (interactive()) plt ggsave( file.path(outdir_root, "restarts.png"), plt, - width = 14.5, - height = 9, + width = 18.5, + height = 13, units = "in" ) -zoomed <- plt + - xlim( - lubridate::ymd_h("2017-10-01T00"), - lubridate::ymd_h("2017-10-17T01") - ) -zoomed -ggsave( - file.path(outdir_root, "zoomed.png"), - zoomed, - width = 14.5, height = 9, units = "in" -) +# zoomed <- plt + +# xlim( +# lubridate::ymd_h("2017-10-01T00"), +# lubridate::ymd_h("2017-10-17T01") +# ) +# zoomed +# ggsave( +# file.path(outdir_root, "zoomed.png"), +# zoomed, +# width = 14.5, height = 9, units = "in" +# ) From 6554a6b06340e3081d1f1053226b02ff4f00f5f6 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 15:56:36 -0400 Subject: [PATCH 70/75] !(length > 0) --> length == 0 --- models/sipnet/R/combine_sipnet_out.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/sipnet/R/combine_sipnet_out.R b/models/sipnet/R/combine_sipnet_out.R index 3728867d64c..8b73b1bef1c 100644 --- a/models/sipnet/R/combine_sipnet_out.R +++ b/models/sipnet/R/combine_sipnet_out.R @@ -24,7 +24,7 @@ combine_sipnet_out <- function(directory, outfile, files = NULL) { # pass `files` directly to this function. files <- sort(list.files(directory, "sipnet\\.out", full.names = TRUE, recursive = TRUE)) } - if (!(length(files) > 0)) { + if (length(files) == 0) { PEcAn.logger::logger.severe("No files provided; nothing to combine.") } flist <- lapply(files, read_sipnet_out) From d5c359e264fa4aa84accb8269b45bfd3d25cbaaa Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 16:00:01 -0400 Subject: [PATCH 71/75] run in whole-year chunks start jan 1 of first planting year end dec 31 of last harvest year --- workflows/sipnet-restart-workflow/02-prepare-settings.R | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/workflows/sipnet-restart-workflow/02-prepare-settings.R b/workflows/sipnet-restart-workflow/02-prepare-settings.R index f2a64bf2546..9e46fb23b62 100644 --- a/workflows/sipnet-restart-workflow/02-prepare-settings.R +++ b/workflows/sipnet-restart-workflow/02-prepare-settings.R @@ -36,7 +36,6 @@ planting_dates <- events |> purrr::keep(\(x) x$event_type == "planting") |> purrr::map_chr("date") |> as.Date() -start_date <- min(planting_dates) harvest_dates <- events |> purrr::pluck(1, "events") |> @@ -44,7 +43,10 @@ harvest_dates <- events |> purrr::map_chr("date") |> as.Date() -# Run through the end of the year post harvest +# Start Jan 1 of the year of the first planting +start_date <- lubridate::make_date(lubridate::year(min(planting_dates)), 1, 1) + +# End Dec 31 of the year of the last harvest end_date <- lubridate::make_date(lubridate::year(max(harvest_dates)), 12, 31) met_dir <- sprintf( From 453fc3b769048cd9c7ed085e97e3dcf397ba4c43 Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 16:15:09 -0400 Subject: [PATCH 72/75] generate dependencies (unrelated - data.atmosphere) --- docker/depends/pecan_package_dependencies.csv | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker/depends/pecan_package_dependencies.csv b/docker/depends/pecan_package_dependencies.csv index 32a5c8d7003..539867d4bd7 100644 --- a/docker/depends/pecan_package_dependencies.csv +++ b/docker/depends/pecan_package_dependencies.csv @@ -489,7 +489,6 @@ "rcrossref","*","base/db","Suggests",FALSE "readr","*","models/ldndc","Imports",FALSE "readr","*","modules/assim.sequential","Suggests",FALSE -"REddyProc","*","modules/data.atmosphere","Imports",FALSE "redland","*","modules/data.land","Suggests",FALSE "reshape","*","modules/data.remote","Suggests",FALSE "reshape2","*","base/visualization","Imports",FALSE @@ -684,7 +683,6 @@ "tools","*","modules/allometry","Imports",FALSE "traits","*","modules/data.land","Suggests",FALSE "TruncatedNormal",">= 2.2","modules/assim.batch","Imports",FALSE -"truncnorm","*","modules/data.atmosphere","Imports",FALSE "units","*","base/db","Imports",FALSE "units","*","modules/benchmark","Imports",FALSE "units","*","modules/data.atmosphere","Imports",FALSE From 77022811302c14f63557e90f61634f344bddd0af Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 16:20:38 -0400 Subject: [PATCH 73/75] remove warning for duplicate harvest/planting https://github.com/PecanProject/pecan/pull/3919#discussion_r3102871967 --- .../data.land/R/events_to_crop_cycle_starts.R | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R index f17982cb8c3..dec6d04f71e 100644 --- a/modules/data.land/R/events_to_crop_cycle_starts.R +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -31,30 +31,14 @@ #' events_to_crop_cycle_starts(evts) #' } events_to_crop_cycle_starts <- function(event_json) { - event_df <- jsonlite::read_json(event_json) |> + jsonlite::read_json(event_json) |> dplyr::bind_rows() |> dplyr::mutate(events = purrr::map(.data$events, as.data.frame)) |> tidyr::unnest("events") |> dplyr::filter(event_type %in% c("planting", "harvest")) |> dplyr::mutate(date = as.Date(.data$date)) |> - dplyr::arrange(.data$date) - # We should always have alternating planting-harvest-planting-harvest cycles. - # If we don't, raise a warning. - dup_events <- event_df |> - dplyr::filter( - (.data$event_type == dplyr::lag(.data$event_type)) | - (.data$event_type == dplyr::lead(.data$event_type)) - ) |> - dplyr::select("site_id", "date", "event_type", "crop_code") - if ((ndup <- nrow(dup_events)) > 0) { - dfdump <- paste("# ", capture.output(print(dup_events)), collapse = "\n") - PEcAn.logger::logger.warn( - "Detected", ndup, "instances of non-alternating harvest-planting cycles:", - "\n", dfdump, - wrap = FALSE - ) - } - find_crop_changes(event_df) + dplyr::arrange(.data$date) |> + find_crop_changes() } # helper for events_to_crop_cyle_starts, From a5dae4867828ae26b97383fe78fcd0fc59861a3d Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 16:39:08 -0400 Subject: [PATCH 74/75] Revert temp changes to data.atmosphere DESCRIPTION This reverts commit 67e055dabf938f23441b805be9c7ec6397ffe0b4. --- docker/depends/pecan_package_dependencies.csv | 2 ++ modules/data.atmosphere/DESCRIPTION | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docker/depends/pecan_package_dependencies.csv b/docker/depends/pecan_package_dependencies.csv index 539867d4bd7..32a5c8d7003 100644 --- a/docker/depends/pecan_package_dependencies.csv +++ b/docker/depends/pecan_package_dependencies.csv @@ -489,6 +489,7 @@ "rcrossref","*","base/db","Suggests",FALSE "readr","*","models/ldndc","Imports",FALSE "readr","*","modules/assim.sequential","Suggests",FALSE +"REddyProc","*","modules/data.atmosphere","Imports",FALSE "redland","*","modules/data.land","Suggests",FALSE "reshape","*","modules/data.remote","Suggests",FALSE "reshape2","*","base/visualization","Imports",FALSE @@ -683,6 +684,7 @@ "tools","*","modules/allometry","Imports",FALSE "traits","*","modules/data.land","Suggests",FALSE "TruncatedNormal",">= 2.2","modules/assim.batch","Imports",FALSE +"truncnorm","*","modules/data.atmosphere","Imports",FALSE "units","*","base/db","Imports",FALSE "units","*","modules/benchmark","Imports",FALSE "units","*","modules/data.atmosphere","Imports",FALSE diff --git a/modules/data.atmosphere/DESCRIPTION b/modules/data.atmosphere/DESCRIPTION index 9729b1757f0..9c978a6fd37 100644 --- a/modules/data.atmosphere/DESCRIPTION +++ b/modules/data.atmosphere/DESCRIPTION @@ -47,6 +47,7 @@ Imports: PEcAn.utils, purrr (>= 0.2.3), raster, + REddyProc, reshape2, rlang (>= 0.2.0), sf, @@ -57,6 +58,7 @@ Imports: tibble, tidyr, tidyselect, + truncnorm, units, utils, XML (>= 3.98-1.4), From 81e49dc5a0af79c72c1d3d5111cb4ac5ff81722e Mon Sep 17 00:00:00 2001 From: Alexey Shiklomanov Date: Fri, 17 Apr 2026 16:54:59 -0400 Subject: [PATCH 75/75] .data predicate in crop cycle starts --- modules/data.land/R/events_to_crop_cycle_starts.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/data.land/R/events_to_crop_cycle_starts.R b/modules/data.land/R/events_to_crop_cycle_starts.R index dec6d04f71e..371a7f80599 100644 --- a/modules/data.land/R/events_to_crop_cycle_starts.R +++ b/modules/data.land/R/events_to_crop_cycle_starts.R @@ -35,7 +35,7 @@ events_to_crop_cycle_starts <- function(event_json) { dplyr::bind_rows() |> dplyr::mutate(events = purrr::map(.data$events, as.data.frame)) |> tidyr::unnest("events") |> - dplyr::filter(event_type %in% c("planting", "harvest")) |> + dplyr::filter(.data$event_type %in% c("planting", "harvest")) |> dplyr::mutate(date = as.Date(.data$date)) |> dplyr::arrange(.data$date) |> find_crop_changes()