{"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-04-30T09:30:21.791Z","repository":{"id":65742488,"uuid":"566058138","full_name":"birdflow-science/BirdFlowR","owner":"birdflow-science","description":"BirdFlow R Package","archived":false,"fork":false,"pushed_at":"2026-03-23T17:14:31.000Z","size":54053,"stargazers_count":21,"open_issues_count":26,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-04-15T02:03:45.430Z","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-04-08T18:19:39.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":32077837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T02:38:07.213Z","status":"ssl_error","status_checked_at":"2026-04-21T02:38:06.559Z","response_time":128,"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"}},"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":403,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":40.3,"dds":0.3548387096774194,"past_year_total_commits":53,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":13.25,"past_year_dds":0.5660377358490566,"last_synced_at":"2026-04-27T08:04:29.128Z","last_synced_commit":"892d2c47aa6bb1a3309b9801cc2cad4245c8d033","created_at":"2023-12-07T00:17:43.755Z","updated_at":"2026-04-27T08:03:46.294Z","committers":[{"name":"Ethan Plunkett","email":"ethan@plunkettworks.com","login":"ethanplunkett","count":260},{"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":"Adriaan Dokter","email":"adriaandokter@gmail.com","login":"adokter","count":4},{"name":"Luke Ruud","email":"124802366+lukeruud","login":"lukeruud","count":1},{"name":"Daniel Sheldon","email":"sheldon@cs.umass.edu","login":"dsheldon","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":"chenyangkang","email":"chenyangkang24@outlook.com","login":"chenyangkang","count":23},{"name":"Ethan Plunkett","email":"ethan@plunkettworks.com","login":"ethanplunkett","count":15},{"name":"Atharva Shahane","email":"atharvashahane28@gmail.com","login":"atharvashahane28","count":11},{"name":"Adriaan Dokter","email":"adriaandokter@gmail.com","login":"adokter","count":4}],"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-04-29T00:00:10.453Z","repositories_count":6222862,"commits_count":900333630,"contributors_count":34904223,"owners_count":1147467,"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-04-21T05:01:51.312Z","status":"active","issues_count":85,"pull_requests_count":111,"avg_time_to_close_issue":6361070.474576271,"avg_time_to_close_pull_request":391955.27358490566,"issues_closed_count":59,"pull_requests_closed_count":106,"pull_request_authors_count":5,"issue_authors_count":6,"avg_comments_per_issue":1.6352941176470588,"avg_comments_per_pull_request":0.44144144144144143,"merged_pull_requests_count":104,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":6108247.5,"past_year_avg_time_to_close_pull_request":2077084.888888889,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.3,"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":9,"created_at":"2023-12-07T00:18:14.549Z","updated_at":"2026-04-21T05:01:51.312Z","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":82,"NONE":3},"pull_request_author_associations_count":{"CONTRIBUTOR":108,"NONE":2,"COLLABORATOR":1},"issue_authors":{"ethanplunkett":58,"slager":16,"chenyangkang":7,"dsheldon":2,"adokter":1,"rsmiller74":1},"pull_request_authors":{"ethanplunkett":94,"slager":9,"chenyangkang":5,"adokter":2,"atharvashahane28":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-29T00:00:10.439Z","repositories_count":14444573,"issues_count":34199908,"pull_requests_count":112298002,"authors_count":11248544,"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":10},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":8,"COLLABORATOR":1,"NONE":1},"past_year_issue_authors":{"ethanplunkett":6,"chenyangkang":2,"adokter":1,"dsheldon":1},"past_year_pull_request_authors":{"ethanplunkett":4,"chenyangkang":3,"adokter":2,"atharvashahane28":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":28,"PullRequestReviewEvent":7,"PullRequestReviewCommentEvent":10,"CreateEvent":7},"last_year":{"DeleteEvent":2,"PullRequestEvent":8,"IssuesEvent":17,"WatchEvent":5,"IssueCommentEvent":14,"PushEvent":16,"CreateEvent":4}},"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.152732694704104,"created_at":"2023-12-07T00:02:58.711Z","updated_at":"2026-04-30T09:30:21.793Z","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"}