{"id":32202977,"url":"https://github.com/r-a-dobson/dynamicsdm","last_synced_at":"2026-02-23T14:03:25.490Z","repository":{"id":64381368,"uuid":"570609884","full_name":"r-a-dobson/dynamicSDM","owner":"r-a-dobson","description":"An R package for species geographical distribution and abundance modelling at high spatiotemporal resolution","archived":false,"fork":false,"pushed_at":"2025-07-14T06:50:14.000Z","size":30101,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-09T11:05:48.020Z","etag":null,"topics":["dynamicsdm","google-earth-engine","googledrive","sdm","spatiotemporal","spatiotemporal-data-analysis","spatiotemporal-forecasting","species-distribution-modelling","species-distributions"],"latest_commit_sha":null,"homepage":"https://github.com/r-a-dobson/dynamicSDM","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r-a-dobson.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-25T15:56:47.000Z","updated_at":"2025-07-14T06:50:17.000Z","dependencies_parsed_at":"2023-01-15T14:45:32.851Z","dependency_job_id":"58efc581-3fc4-4819-91c0-45c1289ff872","html_url":"https://github.com/r-a-dobson/dynamicSDM","commit_stats":{"total_commits":176,"total_committers":3,"mean_commits":"58.666666666666664","dds":"0.49431818181818177","last_synced_commit":"7555d714bbff75d04e4d01acac7ed6684017cfd9"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/r-a-dobson/dynamicSDM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-a-dobson%2FdynamicSDM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-a-dobson%2FdynamicSDM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-a-dobson%2FdynamicSDM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-a-dobson%2FdynamicSDM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r-a-dobson","download_url":"https://codeload.github.com/r-a-dobson/dynamicSDM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-a-dobson%2FdynamicSDM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29745111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamicsdm","google-earth-engine","googledrive","sdm","spatiotemporal","spatiotemporal-data-analysis","spatiotemporal-forecasting","species-distribution-modelling","species-distributions"],"created_at":"2025-10-22T04:24:49.943Z","updated_at":"2026-02-23T14:03:25.485Z","avatar_url":"https://github.com/r-a-dobson.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"100%\"\n)\n```\n\n# dynamicSDM\n\n\u003c!-- badges: start --\u003e\n[![License](https://img.shields.io/badge/license-GPL%20%28%3E=%203%29-lightgrey.svg?style=flat)](http://www.gnu.org/licenses/gpl-3.0.html)\n[![Codecov test coverage](https://codecov.io/gh/r-a-dobson/dynamicSDM/branch/main/graph/badge.svg)](https://app.codecov.io/gh/r-a-dobson/dynamicSDM?branch=main)\n[![R-CMD-check](https://github.com/r-a-dobson/dynamicSDM/workflows/R-CMD-check/badge.svg)](https://github.com/r-a-dobson/dynamicSDM/actions)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7405906.svg)](https://doi.org/10.5281/zenodo.7405906)\n[![Journal article](https://img.shields.io/badge/Published in-Methods in Ecology and Evolution-purple.svg)](https://doi.org/10.1111/2041-210X.14101)\n[![CRAN status](https://www.r-pkg.org/badges/version/dynamicSDM)](https://CRAN.R-project.org/package=dynamicSDM)\n\u003c!-- badges: end --\u003e\n\n# Added features dynamicSDM v1.3 \n\n* Added function `extract_static_coords` for extracting spatially-buffered co-ordinate data from static datasets.\n\n* Added arguments to `dynamic_proj_covariates()` for adding static rasters to covariates for each data (e.g. static elevation raster)\n\n* Removed package dependency on `raster`, `sp`, `geodist` and `geosphere`.\n\n* All functions are now `terra` and `sf` compatible.\n\n* The package has since been published in the **Open Access journal \"Methods in Ecology and Evolution\"**\n\n[*Dobson, R., Challinor, A.J., Cheke, R.A., Jennings, S., Willis, S.G. and Dallimer, M., 2023. dynamicSDM: An R package for species geographical distribution and abundance modelling at high spatiotemporal resolution. Methods in Ecology and Evolution, 14, 1190-1199.*](https://doi.org/10.1111/2041-210X.14101)\n\n\u003ca href='https://github.com/r-a-dobson/dynamicSDM'\u003e\u003cimg src=\"https://raw.githubusercontent.com/r-a-dobson/dynamicSDM/main/man/figures/MEE_title.png\" align=\"centre\" height=\"500\" width=\"100%\" /\u003e\u003c/a\u003e\n\n# Summary\n\nAcross ecological research fields, species distribution and abundance modelling (SDM) is a major tool for understanding the drivers and patterns of species occurrence. To advance our ability to model species inhabiting dynamic ecosystems worldwide, **dynamicSDM** facilitates the incorporation of explanatory variables that are dynamic in both space and time. \nOur functions are:\n\n* **user-friendly** - requiring only simple inputs and outputs;\n* **highly flexible** - offering diverse and open arguments for targeting study specifics;\n* **computer friendly** - utilising Google Earth Engine and Google Drive to minimise the computing power and storage demands associated with high spatiotemporal resolution modelling. \n\n# Package structure\n\ndynamicSDM functions are split into four key modelling stages: response data, explanatory variables, modelling relationships and dynamic projections. See the package manual [here](https://github.com/r-a-dobson/dynamicSDM/blob/main/man/figures/dynamicSDM_1.3.pdf) for more details on each function. \n\n\u003ca href='https://github.com/r-a-dobson/dynamicSDM'\u003e\u003cimg src=\"https://raw.githubusercontent.com/r-a-dobson/dynamicSDM/main/man/figures/Figure1.png\" align=\"centre\" height=\"300\" width=\"100%\" /\u003e\u003c/a\u003e\n\n### 1) Response data functions\nFunctions for preparing species distribution or abundance model input data for modelling with spatiotemporally dynamic explanatory variables. \n\n* `convert_gbif()` Transform Global Biodiversity Information Facility occurrence records to `dynamicSDM` compatible.\n* `spatiotemp_check()` Check species occurrence record formatting, completeness and validity.\n* `spatiotemp_extent()` Filter species occurrence records by a given spatial and temporal extent.\n* `spatiotemp_resolution()` Filter species occurrence records by given spatial and temporal resolution.\n* `spatiotemp_bias()` Test for spatial and temporal bias in species occurrence records. \n* `spatiotemp_thin()` Thin species occurrence records by spatial and temporal proximity.\n* `spatiotemp_pseudoabs()` Generate pseudo-absence record coordinates and dates.\n* `spatiotemp_weights()` Calculate sampling effort across spatial and temporal buffer from occurrence records.\n\n### 2) Explanatory variable functions\nFunctions for extracting spatiotemporally dynamic explanatory variable data for species occurrence record co-ordinates and dates using Google Earth Engine.  \n\n* `extract_dynamic_coords()` Extract temporally dynamic explanatory variable data for occurrence records.\n* `get_moving_window()` Generate a “moving window” matrix of optimal size for spatial buffering of explanatory variable data.\n* `extract_buffered_coords()` Extract spatially buffered and temporally dynamic explanatory variable data for occurrence records.\n* `extract_coords_combine()` Combine extracted explanatory variable data for occurrence records into single data frame for model fitting.\n* `extract_static_coords` Extract spatially buffered data from static rasters for occurrence record co-ordinates (no temporal dimension).\n\n### 3) Modelling relationship functions\n\nFunctions for generating species distribution or abundance models that account for spatial and temporal autocorrelation in dynamic explanatory variables. \n\n* `spatiotemp_autocorr()` Test for spatial and temporal autocorrelation in species distribution model explanatory data.\n* `spatiotemp_block()` Split occurrence records into spatial and temporal blocks for model fitting.\n* `brt_fit()` Fit boosted regression tree models to species distribution or abundance data.\n\n### 4) Dynamic projection functions\nFunctions for generating explanatory variable projection data frames at given spatiotemporal extent and resolution, and projecting species dynamic distribution and abundance patterns onto these. \n\n* `dynamic_proj_dates()` Generate vector of dates for dynamic projections\n* `extract_dynamic_raster()` Extract temporally dynamic rasters of explanatory variable data.\n* `extract_buffered_raster()` Extract spatially buffered and temporally dynamic rasters of explanatory variable data.\n* `dynamic_proj_covariates()` Combine explanatory variable rasters into a covariate data frame for each projection date.\n* `dynamic_proj()` Project species distribution and abundance models onto dynamic environmental covariates.\n* `dynamic_proj_GIF()` Create GIF of dynamic species distribution and abundance projections\n\n# Installation\n``` r\n# Install using Github \ninstall_github(\"r-a-dobson/dynamicSDM\")\n\n```\n\n# Common installation errors \n\ndynamicSDM depends on a range of spatial and graphic R packages, which may result in some persistent\nerrors on installation or running of certain functions. \n\nIf you encounter an error or bug when installing and using dynamicSDM, please post a comment\n[here](https://github.com/r-a-dobson/dynamicSDM/issues) for guidance and support from us. \n\nBelow we have outlined common errors and typical solutions to try, depending on your operating\nsystem\n\n#### 1) Error with rgl \n\n```{r,eval=F}\n# Loading rgl's DLL failed. This build of rgl depends on XQuartz, which failed to load.\noptions(rgl.useNULL = TRUE)\nlibrary(rgl)\n```\n\n#### 2) Dependency package terra \n\nOn Homebrew (macOS) run:\n```{Homebrew,eval=F}\nbrew install pkg-config\nbrew install gdal\n```\n\nOn Linux run:\n```{Linux,eval=F}\nsudo apt-get install libgdal-dev libproj-dev libgeos-dev libudunits2-dev netcdf-bin \n```\n\nThen in R run:\n```{r,eval=F}\ninstall.packages(\"Rcpp\")\ninstall.packages('terra', repos='https://rspatial.r-universe.dev')\n```\n\n\n#### 3) Dependency package magick \n\nOn Homebrew (macOS) run:\n```{Homebrew,eval=F}\n brew install imagemagick@6\n```\n\nOn Linux run:\n```{Linux,eval=F}\nsudo apt-get install -y libmagick++-dev\n```\n\nThen in R run:\n```{r,eval=F}\ninstall.packages(\"magick\")\n```\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-a-dobson%2Fdynamicsdm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr-a-dobson%2Fdynamicsdm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-a-dobson%2Fdynamicsdm/lists"}