{"id":147948,"name":"BirdFlowR","description":"Predict changes in bird distributions and generate synthetic migration routes.","url":"https://github.com/birdflow-science/birdflowr","last_synced_at":"2026-05-21T20:02:33.867Z","repository":{"id":65742488,"uuid":"566058138","full_name":"birdflow-science/BirdFlowR","owner":"birdflow-science","description":"BirdFlow R Package","archived":false,"fork":false,"pushed_at":"2026-05-11T12:23:05.000Z","size":56591,"stargazers_count":21,"open_issues_count":24,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-13T16:06:48.122Z","etag":null,"topics":["bird-migration","birds","ebird","ecology","r-package"],"latest_commit_sha":null,"homepage":"https://birdflow-science.github.io/BirdFlowR/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/birdflow-science.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","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-14T22:04:42.000Z","updated_at":"2026-05-08T16:22:43.000Z","dependencies_parsed_at":"2023-02-19T19:45:22.283Z","dependency_job_id":"22448c0b-9255-428d-9efe-ca4d4d97e76e","html_url":"https://github.com/birdflow-science/BirdFlowR","commit_stats":{"total_commits":235,"total_committers":6,"mean_commits":"39.166666666666664","dds":0.09361702127659577,"last_synced_commit":"cef92cedda3ea92f903d3767eff183108d1384c6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/birdflow-science/BirdFlowR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2FBirdFlowR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2FBirdFlowR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2FBirdFlowR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2FBirdFlowR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/birdflow-science","download_url":"https://codeload.github.com/birdflow-science/BirdFlowR/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2FBirdFlowR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33072970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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"}},"owner":{"login":"birdflow-science","name":"birdflow-science","uuid":"107491532","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/107491532?v=4","repositories_count":2,"last_synced_at":"2023-06-14T20:23:21.944Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/birdflow-science","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-06-14T20:23:21.950Z","updated_at":"2023-06-14T20:23:21.950Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/birdflow-science","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/birdflow-science/repositories"},"packages":[],"commits":{"id":1453275,"full_name":"birdflow-science/birdflowr","default_branch":"main","total_commits":425,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":42.5,"dds":0.3482352941176471,"past_year_total_commits":67,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":16.75,"past_year_dds":0.5671641791044777,"last_synced_at":"2026-05-19T19:04:11.161Z","last_synced_commit":"661c6c8cd557cb612f7ab35c066b692ba4b930a9","created_at":"2023-12-07T00:17:43.755Z","updated_at":"2026-05-19T19:03:19.893Z","committers":[{"name":"Ethan Plunkett","email":"ethan@plunkettworks.com","login":"ethanplunkett","count":277},{"name":"chenyangkang","email":"chenyangkang24@outlook.com","login":"chenyangkang","count":105},{"name":"Dave Slager","email":"slager","login":"slager","count":18},{"name":"Atharva Shahane","email":"atharvashahane28@gmail.com","login":"atharvashahane28","count":11},{"name":"Dan Sheldon","email":"sheldon@cs.umass.edu","login":"dsheldon","count":6},{"name":"Adriaan Dokter","email":"adriaandokter@gmail.com","login":"adokter","count":4},{"name":"Luke Ruud","email":"124802366+lukeruud","login":"lukeruud","count":1},{"name":"Benjamin Van Doren","email":"8866446+bmvandoren","login":"bmvandoren","count":1},{"name":"yc85_illinois_edu","email":"yc85_illinois_edu@login2.unity.rc.umass.edu","login":null,"count":1},{"name":"plunkett_umass_edu","email":"plunkett_umass_edu@ceewater-cpu001.unity.rc.umass.edu","login":null,"count":1}],"past_year_committers":[{"name":"Ethan Plunkett","email":"ethan@plunkettworks.com","login":"ethanplunkett","count":29},{"name":"chenyangkang","email":"chenyangkang24@outlook.com","login":"chenyangkang","count":22},{"name":"Atharva Shahane","email":"atharvashahane28@gmail.com","login":"atharvashahane28","count":11},{"name":"Dan Sheldon","email":"sheldon@cs.umass.edu","login":"dsheldon","count":5}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2Fbirdflowr/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-21T00:00:09.753Z","repositories_count":6237349,"commits_count":884452843,"contributors_count":34894360,"owners_count":1155631,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"birdflow-science/birdflowr","html_url":"https://github.com/birdflow-science/birdflowr","last_synced_at":"2026-05-13T16:02:52.292Z","status":"active","issues_count":89,"pull_requests_count":113,"avg_time_to_close_issue":9806211.5625,"avg_time_to_close_pull_request":423752.712962963,"issues_closed_count":64,"pull_requests_closed_count":108,"pull_request_authors_count":6,"issue_authors_count":6,"avg_comments_per_issue":1.5730337078651686,"avg_comments_per_pull_request":0.4336283185840708,"merged_pull_requests_count":106,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":13,"past_year_pull_requests_count":10,"past_year_avg_time_to_close_issue":21665910.333333332,"past_year_avg_time_to_close_pull_request":2776187.375,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.23076923076923078,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":8,"created_at":"2023-12-07T00:18:14.549Z","updated_at":"2026-05-13T16:02:52.292Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2Fbirdflowr","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/birdflow-science%2Fbirdflowr/issues","issue_labels_count":{"enhancement":11,"bug":2,"help wanted":1},"pull_request_labels_count":{},"issue_author_associations_count":{"CONTRIBUTOR":86,"NONE":3},"pull_request_author_associations_count":{"CONTRIBUTOR":110,"NONE":2,"COLLABORATOR":1},"issue_authors":{"ethanplunkett":62,"slager":16,"chenyangkang":7,"dsheldon":2,"adokter":1,"rsmiller74":1},"pull_request_authors":{"ethanplunkett":95,"slager":9,"chenyangkang":5,"adokter":2,"atharvashahane28":1,"dsheldon":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-19T00:00:20.226Z","repositories_count":14639013,"issues_count":34121839,"pull_requests_count":111729773,"authors_count":11266500,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":2},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"CONTRIBUTOR":13},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":7,"COLLABORATOR":1},"past_year_issue_authors":{"ethanplunkett":10,"chenyangkang":2,"dsheldon":1},"past_year_pull_request_authors":{"chenyangkang":3,"ethanplunkett":3,"atharvashahane28":1,"dsheldon":1},"maintainers":[{"login":"atharvashahane28","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/atharvashahane28"}],"active_maintainers":[{"login":"atharvashahane28","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/atharvashahane28"}]},"events":{"total":{"DeleteEvent":5,"PullRequestEvent":14,"ForkEvent":2,"IssuesEvent":30,"WatchEvent":12,"IssueCommentEvent":58,"PushEvent":31,"PullRequestReviewEvent":7,"PullRequestReviewCommentEvent":10,"CreateEvent":8},"last_year":{"DeleteEvent":1,"PullRequestEvent":4,"IssuesEvent":10,"WatchEvent":5,"IssueCommentEvent":6,"PushEvent":12,"CreateEvent":3}},"keywords":["bird-migration","birds","ebird","ecology","r-package"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check.yaml","sha":null,"kind":"manifest","created_at":"2023-02-19T19:45:22.103Z","updated_at":"2023-02-19T19:45:22.103Z","repository_link":"https://github.com/birdflow-science/BirdFlowR/blob/main/.github/workflows/R-CMD-check.yaml","dependencies":[{"id":7795909877,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7795909878,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7795909879,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7795909880,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7795909881,"package_name":"r-lib/actions/check-r-package","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test-coverage.yaml","sha":null,"kind":"manifest","created_at":"2023-02-19T19:45:22.166Z","updated_at":"2023-02-19T19:45:22.166Z","repository_link":"https://github.com/birdflow-science/BirdFlowR/blob/main/.github/workflows/test-coverage.yaml","dependencies":[{"id":7795909882,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7795909883,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7795909884,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7795909885,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"cran","filepath":"DESCRIPTION","sha":null,"kind":"manifest","created_at":"2023-02-19T19:45:22.213Z","updated_at":"2023-02-19T19:45:22.213Z","repository_link":"https://github.com/birdflow-science/BirdFlowR/blob/main/DESCRIPTION","dependencies":[{"id":7795909886,"package_name":"dplyr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909887,"package_name":"lubridate","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909888,"package_name":"Matrix","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909889,"package_name":"magrittr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909890,"package_name":"progress","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909891,"package_name":"rhdf5","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909892,"package_name":"rlang","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909893,"package_name":"rnaturalearth","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909894,"package_name":"sf","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909895,"package_name":"stringr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909896,"package_name":"terra","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":7795909897,"package_name":"auk","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909898,"package_name":"BirdFlowModels","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909899,"package_name":"ebirdst","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909900,"package_name":"knitr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909901,"package_name":"rmarkdown","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909902,"package_name":"rnaturalearthdata","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909903,"package_name":"methods","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":7795909904,"package_name":"testthat","ecosystem":"cran","requirements":"\u003e= 3.0.0","direct":true,"kind":"suggests","optional":false},{"id":7795909905,"package_name":"covr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false}]}],"score":6.1092475827643655,"created_at":"2023-12-07T00:02:58.711Z","updated_at":"2026-05-21T20:02:33.870Z","avatar_url":"https://github.com/birdflow-science.png","language":"R","category":"Biosphere","sub_category":"Avian Monitoring and Analysis","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"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  dev = \"ragg_png\",\n  dpi = 100\n)\n\nset.seed(1)\n```\n\n# BirdFlowR \u003ca href=\"https://birdflow-science.github.io/BirdFlowR/\"\u003e\u003cimg src=\"man/figures/logo.png\" align=\"right\" height=\"139\" /\u003e\u003c/a\u003e\n\n\u003c!-- badges: start --\u003e\n  [![R-CMD-check](https://github.com/birdflow-science/BirdFlowR/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/birdflow-science/BirdFlowR/actions/workflows/R-CMD-check.yaml)\n[![Codecov test coverage](https://codecov.io/gh/birdflow-science/BirdFlowR/branch/main/graph/badge.svg)](https://app.codecov.io/gh/birdflow-science/BirdFlowR?branch=main)\n\u003c!-- badges: end --\u003e\n\n\n\nAn R package to predict changes in bird distributions and generate synthetic \nmigration routes based on BirdFlow models.\n\nThis package is under development and not yet formally released. Function names\nand arguments may change.\n\n\n## Installation\n\nInstall just the package:\n```{r install, eval = FALSE}\nif(!require(\"remotes\"))\n  install.packages(\"remotes\") \nremotes::install_github(\"birdflow-science/BirdFlowR\")\n```\nOr to install with example data and vignette:\n\n```{r install everything, eval = FALSE}\ninstalled \u003c- rownames(installed.packages())\nif(!\"remotes\" %in% installed)\n  install.packages(\"remotes\")\nif(!\"rnaturalearthdata\" %in% installed)\n  install.packages(\"rnaturalearthdata\")\nremotes::install_github(\"birdflow-science/BirdFlowModels\")\nremotes::install_github(\"birdflow-science/BirdFlowR\", build_vignettes = TRUE)\n```\nSee `vignette(\"Installation\")` for troubleshooting and more installation \noptions.\n\n## Usage \n\nThe two primary functions are `predict()` to project distributions and \n`route()` to generate synthetic routes.  \n\n`route_migration()` is a wrapper to `route()` which automates sampling\nlocations from the a distribution for the start of the migration and setting \nthe start and end dates to route for the migration window. We can use it to \ncreate synthetic routes for a species.\n```{r examples}\nlibrary(BirdFlowR)\nlibrary(BirdFlowModels)\n\nbf \u003c- amewoo \n\nspecies(bf)\n\n# Generate routes for the prebreeding migration \nrts \u003c- route(bf, n = 10, season = \"prebreeding\")\n\n# Plot routes\nplot_routes(rts, bf)\n\n```\n\nVisualize the movement in the BirdFlow model for a timestep.\n\n```{r movement_vectors}\n\nplot_movement_vectors(bf, start = 12)\n\n```\n\n\n## Learn more\n\n- `vignette(\"BirdFlowR\")` has a longer introduction to the package, and how to\n  use `predict()` and `route()` to project bird distributions and movement. \n- `vignette(\"Installation\")` for detailed installation instructions.\n- `vignette(\"Preprocess\")` covers downloading and formatting data for model \n  fitting with `preprocess_species()`, importing fitted models with \n  `import_birdflow()`, and reducing model size with `sparsify()`.   \n- Read the paper:\n  - [BirdFlow: Learning Seasonal Bird Movements from Citizen Science Data](https://www.biorxiv.org/content/10.1101/2022.04.12.488057v1) Miguel Fuentes, Benjamin M. Van Doren, Daniel Fink, Daniel Sheldon bioRxiv 2022.04.12.488057; doi: https://doi.org/10.1101/2022.04.12.488057\n\n\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1101/2022.04.12.488057"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["movement-ecology","aeroecology","enram","eumetnet-opera","nexrad","radar","weather-radar","wsr-88d"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/147948","html_url":"https://ost.ecosyste.ms/projects/147948"}