{ "stac_version": "1.0.0", "stac_extensions": [ "https://stac-extensions.github.io/table/v1.2.0/schema.json" ], "type": "Feature", "id": "asl.persistence_Chla_ugL_mean_P1D_forecast", "bbox": [-79.8372, 37.3032, -79.8159, 37.3129], "geometry": { "type": "MultiPoint", "coordinates": [ [-79.8372, 37.3032], [-79.8159, 37.3129] ] }, "properties": { "title": "asl.persistence", "description": "All forecasts for the Daily_Chlorophyll-a variable for the asl.persistence model. Information for the model is provided as follows: The random walk persistence model has massive uncertainty at long horizons, but you could instead re-fit the persistence model for every forecast horizon to get a more precise forecast (i.e., not dynamic). I did this for my work at SERC, and am submitting here in case it is helpful.\n The model predicts this variable at the following sites: fcre, bvre.\n Forecasts are the raw forecasts that includes all ensemble members or distribution parameters. Due to the size of the raw forecasts, we recommend accessing the forecast summaries or scores to analyze forecasts (unless you need the individual ensemble members)", "datetime": "2025-09-23T00:00:00Z", "updated": "2025-09-24T00:00:00Z", "start_datetime": "2024-09-05T00:00:00Z", "end_datetime": "2025-10-28T00:00:00Z", "providers": [ { "url": null, "name": "Abigail Lewis", "roles": [ "producer", "processor", "licensor" ] }, { "url": "http://ecoforecast.centers.vt.edu/", "name": "Virginia Tech Center for Ecosystem Forecasting", "roles": [ "host" ] } ], "license": "CC0-1.0", "keywords": [ "Forecasts", "vera4cast", "Biological", "asl.persistence", "Chlorophyll-a", "Chla_ugL_mean", "Daily", "P1D", "fcre", "bvre" ], "table:columns": [ { "name": "reference_datetime", "type": "timestamp[us]", "description": "datetime that the forecast was initiated (horizon = 0)" }, { "name": "site_id", "type": "string", "description": "For forecasts that are not on a spatial grid, use of a site dimension that maps to a more detailed geometry (points, polygons, etc.) is allowable. In general this would be documented in the external metadata (e.g., alook-up table that provides lon and lat)" }, { "name": "datetime", "type": "date32[day]", "description": "datetime of the forecasted value (ISO 8601)" }, { "name": "family", "type": "string", "description": "For ensembles: “ensemble.” Default value if unspecified for probability distributions: Name of the statistical distribution associated with the reported statistics. The “sample” distribution is synonymous with “ensemble.”For summary statistics: “summary.”" }, { "name": "pub_datetime", "type": "timestamp[us]", "description": "datetime that forecast was submitted" }, { "name": "depth_m", "type": "double", "description": "depth (meters) in water column of prediction" }, { "name": "mean", "type": "double", "description": "mean forecast prediction" }, { "name": "median", "type": "double", "description": "median forecast prediction" }, { "name": "sd", "type": "double", "description": "standard deviation forecasts" }, { "name": "quantile97.5", "type": "double", "description": "upper 97.5 percentile value of forecast" }, { "name": "quantile02.5", "type": "double", "description": "upper 2.5 percentile value of forecast" }, { "name": "quantile90", "type": "double", "description": "upper 90 percentile value of forecast" }, { "name": "quantile10", "type": "double", "description": "upper 10 percentile value of forecast" }, { "name": "project_id", "type": "string", "description": "unique identifier for the forecast project" }, { "name": "duration", "type": "string", "description": "temporal duration of forecast (hourly, daily, etc.); follows ISO 8601 duration convention" }, { "name": "variable", "type": "string", "description": "name of forecasted variable" }, { "name": "model_id", "type": "string", "description": "unique model identifier" } ] }, "collection": "forecasts", "links": [ { "rel": "collection", "href": "../collection.json", "type": "application/json", "title": "asl.persistence" }, { "rel": "root", "href": "../../../catalog.json", "type": "application/json", "title": "Forecast Catalog" }, { "rel": "parent", "href": "../collection.json", "type": "application/json", "title": "asl.persistence" }, { "rel": "self", "href": "asl.persistence.json", "type": "application/json", "title": "Model Forecast" }, { "rel": "item", "href": "https://www.ltreb-reservoirs.org/vera4cast/", "type": "text/html", "title": "Link for Model Code" }, { "rel": "item", "href": "https://radiantearth.github.io/stac-browser/#/external/raw.githubusercontent.com/LTREB-reservoirs/vera4cast/main/forecasts/Biological/Daily_Chlorophyll-a/models/asl.persistence.json", "type": "text/html", "title": "Link for rendered STAC item" }, { "rel": "item", "href": "https://raw.githubusercontent.com/LTREB-reservoirs/vera4cast/main/forecasts/Biological/Daily_Chlorophyll-a/models/asl.persistence.json", "type": "text/html", "title": "Link for raw JSON file" } ], "assets": { "1": { "type": "application/json", "title": "Model Metadata", "href": "https://amnh1.osn.mghpcc.org/bio230121-bucket01/vera4cast/metadata/model_id/asl.persistence.json", "description": "Use `jsonlite::fromJSON()` to download the model metadata JSON file. This R code will return metadata provided during the model registration.\n \n\n### R\n\n```{r}\n# Use code below\n\nmodel_metadata <- jsonlite::fromJSON(\"https://amnh1.osn.mghpcc.org/bio230121-bucket01/vera4cast/metadata/model_id/asl.persistence.json\")\n\n" }, "2": { "type": "text/html", "title": "Link for Model Code", "href": "https://www.ltreb-reservoirs.org/vera4cast/", "description": "The link to the model code provided by the model submission team" }, "3": { "type": "text/plain", "title": "Model Sites", "href": "https://raw.githubusercontent.com/LTREB-reservoirs/vera4cast/main/vera4cast_field_site_metadata.csv", "description": "fcre, bvre" }, "4": { "type": "application/x-parquet", "title": "Database Access for Daily Chlorophyll-a", "href": "s3://anonymous@bio230121-bucket01/vera4cast/forecasts/bundled-parquet/project_id=vera4cast/duration=P1D/variable=Chla_ugL_mean/model_id=asl.persistence?endpoint_override=amnh1.osn.mghpcc.org", "description": "Use `R` or `Python` code for remote access to the database. This code will return results for this variable and model combination.\n\n### R\n\n```{r}\n# Use code below\n\nall_results <- arrow::open_dataset(\"s3://anonymous@bio230121-bucket01/vera4cast/forecasts/bundled-parquet/project_id=vera4cast/duration=P1D/variable=Chla_ugL_mean/model_id=asl.persistence?endpoint_override=amnh1.osn.mghpcc.org\")\ndf <- all_results |> dplyr::collect()\n\n```\n \n\nYou can use dplyr operations before calling `dplyr::collect()` to `summarise`, `select` columns, and/or `filter` rows prior to pulling the data into a local `data.frame`. Reducing the data that is pulled locally will speed up the data download speed and reduce your memory usage.\n\n\n### Python\n\n```{python}# Use code below\nimport ibis\ncon = ibis.duckdbf.connect()\ncon.raw_sql(f'''\nCREATE OR REPLACE SECRET secret (\nTYPE S3,\nENDPOINT 'amnh1.osn.mghpcc.org',\nURL_STYLE 'path'\n\n''');\npath = \"s3://bio230121-bucket01/vera4cast/forecasts/bundled-parquet/project_id=vera4cast/duration=P1D/variable=Chla_ugL_mean/model_id=asl.persistence\"\ncon.read_parquet(path + \"/**\")" } } }