{"id":927,"name":"openair","description":"An R package developed for the purpose of analyzing air quality data — or more generally atmospheric composition data.","url":"https://github.com/openair-project/openair","last_synced_at":"2026-04-12T00:30:18.741Z","repository":{"id":25865157,"uuid":"29305085","full_name":"openair-project/openair","owner":"openair-project","description":"🧭 Open source tools for air quality data analysis","archived":false,"fork":false,"pushed_at":"2026-03-31T16:57:54.000Z","size":89060,"stargazers_count":350,"open_issues_count":30,"forks_count":123,"subscribers_count":34,"default_branch":"main","last_synced_at":"2026-03-31T18:39:57.156Z","etag":null,"topics":["air-quality","air-quality-data","meteorology","openair","package","r"],"latest_commit_sha":null,"homepage":"https://openair-project.github.io/openair/","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/openair-project.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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":"2015-01-15T16:00:35.000Z","updated_at":"2026-03-31T16:45:34.000Z","dependencies_parsed_at":"2024-02-03T23:31:29.936Z","dependency_job_id":"f499c1eb-9a6f-4286-aca0-e21a7125b463","html_url":"https://github.com/openair-project/openair","commit_stats":{"total_commits":1245,"total_committers":16,"mean_commits":77.8125,"dds":"0.32449799196787144","last_synced_commit":"756cd48ca526f463b85a4c700f61c1462445a2ea"},"previous_names":["openair-project/openair","davidcarslaw/openair"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/openair-project/openair","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openair-project","download_url":"https://codeload.github.com/openair-project/openair/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31383636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T23:20:52.058Z","status":"ssl_error","status_checked_at":"2026-04-03T23:20:51.675Z","response_time":107,"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":"openair-project","name":"The Openair Project","uuid":"194077245","kind":"organization","description":"Open Source Tools for Air Quality Data Analysis","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/194077245?v=4","repositories_count":1,"last_synced_at":"2025-01-07T10:31:54.200Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/openair-project","funding_links":[],"total_stars":0,"followers":0,"following":0,"created_at":"2025-01-07T10:31:54.227Z","updated_at":"2025-01-07T10:31:54.227Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openair-project","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openair-project/repositories"},"packages":[{"id":13818376,"name":"github.com/openair-project/openair","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/openair-project/openair","keywords_array":[],"namespace":null,"versions_count":2,"first_release_published_at":"2025-08-11T08:36:46.000Z","latest_release_published_at":"2026-04-01T14:42:12.000Z","latest_release_number":"v3.0.0+incompatible","last_synced_at":"2026-04-05T17:31:08.534Z","created_at":"2026-02-14T08:43:50.289Z","updated_at":"2026-04-05T17:31:08.535Z","registry_url":"https://pkg.go.dev/github.com/openair-project/openair","install_command":"go get github.com/openair-project/openair","documentation_url":"https://pkg.go.dev/github.com/openair-project/openair#section-documentation","metadata":{},"repo_metadata":{"id":25865157,"uuid":"29305085","full_name":"openair-project/openair","owner":"openair-project","description":"🧭 Open source tools for air quality data analysis","archived":false,"fork":false,"pushed_at":"2026-02-06T17:19:56.000Z","size":70506,"stargazers_count":342,"open_issues_count":61,"forks_count":125,"subscribers_count":36,"default_branch":"main","last_synced_at":"2026-02-07T01:23:42.030Z","etag":null,"topics":["air-quality","air-quality-data","meteorology","openair","package","r"],"latest_commit_sha":null,"homepage":"https://openair-project.github.io/openair/","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/openair-project.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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":"2015-01-15T16:00:35.000Z","updated_at":"2026-02-06T17:16:55.000Z","dependencies_parsed_at":"2024-02-03T23:31:29.936Z","dependency_job_id":"f499c1eb-9a6f-4286-aca0-e21a7125b463","html_url":"https://github.com/openair-project/openair","commit_stats":{"total_commits":1245,"total_committers":16,"mean_commits":77.8125,"dds":"0.32449799196787144","last_synced_commit":"756cd48ca526f463b85a4c700f61c1462445a2ea"},"previous_names":["openair-project/openair","davidcarslaw/openair"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/openair-project/openair","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openair-project","download_url":"https://codeload.github.com/openair-project/openair/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29440944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T07:24:13.446Z","status":"ssl_error","status_checked_at":"2026-02-14T07:23:58.969Z","response_time":53,"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"}},"repo_metadata_updated_at":"2026-02-14T08:44:16.640Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":1.0395920099155789,"dependent_packages_count":0.9757272722803187,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":1.0076596410979488},"purl":"pkg:golang/github.com/openair-project/openair","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/openair-project/openair","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/openair-project/openair","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/openair-project/openair/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-02-05T01:01:09.858Z","issues_count":202,"pull_requests_count":67,"avg_time_to_close_issue":75347053.6625,"avg_time_to_close_pull_request":8076456.836363636,"issues_closed_count":160,"pull_requests_closed_count":55,"pull_request_authors_count":8,"issue_authors_count":120,"avg_comments_per_issue":2.4752475247524752,"avg_comments_per_pull_request":0.582089552238806,"merged_pull_requests_count":49,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":29,"past_year_pull_requests_count":35,"past_year_avg_time_to_close_issue":2752295.9,"past_year_avg_time_to_close_pull_request":1972764.52,"past_year_issues_closed_count":10,"past_year_pull_requests_closed_count":25,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":13,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.34285714285714286,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":25,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/issues","maintainers":[{"login":"jack-davison","count":80,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"},{"login":"davidcarslaw","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/davidcarslaw"}],"active_maintainers":[{"login":"jack-davison","count":40,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"},{"login":"davidcarslaw","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/davidcarslaw"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenair-project%2Fopenair/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenair-project%2Fopenair/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenair-project%2Fopenair/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenair-project%2Fopenair/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenair-project%2Fopenair/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2087531,"maintainers_count":0,"namespaces_count":779664,"keywords_count":112728,"github":"golang","metadata":{"funded_packages_count":53440},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-05T05:09:06.732Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":404130,"name":"openair","ecosystem":"cran","description":"Tools for the Analysis of Air Pollution Data","homepage":"https://openair-project.github.io/openair/","licenses":"MIT + file LICENSE","normalized_licenses":["MIT"],"repository_url":"https://github.com/openair-project/openair","keywords_array":[],"namespace":null,"versions_count":80,"first_release_published_at":"2010-09-09T08:24:00.000Z","latest_release_published_at":"2026-04-02T00:00:00.000Z","latest_release_number":"3.0.0","last_synced_at":"2026-04-03T11:18:38.470Z","created_at":"2022-04-06T17:11:40.598Z","updated_at":"2026-04-03T11:18:38.470Z","registry_url":"https://cran.r-project.org/package=openair","install_command":null,"documentation_url":"http://cran.r-project.org/web/packages/openair/openair.pdf","metadata":{},"repo_metadata":{"id":25865157,"uuid":"29305085","full_name":"davidcarslaw/openair","owner":"davidcarslaw","description":"Tools for air quality data analysis","archived":false,"fork":false,"pushed_at":"2024-10-23T10:34:10.000Z","size":66565,"stargazers_count":304,"open_issues_count":65,"forks_count":113,"subscribers_count":40,"default_branch":"master","last_synced_at":"2024-10-29T22:32:03.341Z","etag":null,"topics":["air-quality","air-quality-data","meteorology","openair"],"latest_commit_sha":null,"homepage":"https://davidcarslaw.github.io/openair/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidcarslaw.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","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}},"created_at":"2015-01-15T16:00:35.000Z","updated_at":"2024-10-22T15:05:21.000Z","dependencies_parsed_at":"2024-02-03T23:31:29.936Z","dependency_job_id":"f499c1eb-9a6f-4286-aca0-e21a7125b463","html_url":"https://github.com/davidcarslaw/openair","commit_stats":{"total_commits":1212,"total_committers":16,"mean_commits":75.75,"dds":0.3085808580858086,"last_synced_commit":"794ba561c24491b4a7cbb8d3fba9d69260385c0d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcarslaw%2Fopenair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcarslaw%2Fopenair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcarslaw%2Fopenair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcarslaw%2Fopenair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidcarslaw","download_url":"https://codeload.github.com/davidcarslaw/openair/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222155739,"owners_count":16940399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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_record":{"login":"davidcarslaw","name":"David Carslaw","uuid":"1236491","kind":"user","description":"Professor of urban air pollution with a joint position at the University of York Department of Chemistry and Ricardo ","email":"","website":null,"location":"York","twitter":null,"company":"University of York, Ricardo","icon_url":"https://avatars.githubusercontent.com/u/1236491?u=33ab3977bf9769514926b91a022aa873ff3dc0fc\u0026v=4","repositories_count":10,"last_synced_at":"2024-06-11T15:38:23.635Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/davidcarslaw","funding_links":[],"total_stars":425,"followers":210,"following":2,"created_at":"2022-11-11T01:28:56.637Z","updated_at":"2024-06-11T15:38:24.752Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidcarslaw","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidcarslaw/repositories"},"tags":[]},"repo_metadata_updated_at":"2024-10-30T02:59:05.160Z","dependent_packages_count":18,"downloads":5151,"downloads_period":"last-month","dependent_repos_count":51,"rankings":{"downloads":6.355376757220991,"dependent_repos_count":3.494101161686932,"dependent_packages_count":3.629706640148262,"stargazers_count":1.4916602630746283,"forks_count":0.5695430095375853,"docker_downloads_count":null,"average":3.1080775663336797},"purl":"pkg:cran/openair","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/cran/openair","docker_dependents_count":13,"docker_downloads_count":132056,"usage_url":"https://repos.ecosyste.ms/usage/cran/openair","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/cran/openair/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T21:04:02.021Z","issues_count":345,"pull_requests_count":58,"avg_time_to_close_issue":72450422.75265017,"avg_time_to_close_pull_request":10011224.3,"issues_closed_count":283,"pull_requests_closed_count":50,"pull_request_authors_count":16,"issue_authors_count":214,"avg_comments_per_issue":2.7072463768115944,"avg_comments_per_pull_request":0.7931034482758621,"merged_pull_requests_count":38,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":24,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":4605427.666666667,"past_year_avg_time_to_close_pull_request":1248592.0,"past_year_issues_closed_count":9,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":19,"past_year_avg_comments_per_issue":1.7916666666666667,"past_year_avg_comments_per_pull_request":0.5833333333333334,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":4,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcarslaw%2Fopenair/issues","maintainers":[{"login":"jack-davison","count":40,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"},{"login":"davidcarslaw","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/davidcarslaw"}],"active_maintainers":[{"login":"jack-davison","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/openair/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/openair/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/openair/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/openair/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/openair/codemeta","maintainers":[{"uuid":"david.carslaw@york.ac.uk","login":null,"name":"David Carslaw","email":"david.carslaw@york.ac.uk","url":null,"packages_count":2,"html_url":null,"role":null,"created_at":"2022-11-14T17:14:51.474Z","updated_at":"2022-11-14T17:14:51.474Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/maintainers/david.carslaw@york.ac.uk/packages"}],"registry":{"name":"cran.r-project.org","url":"https://cran.r-project.org","ecosystem":"cran","default":true,"packages_count":27897,"maintainers_count":15471,"namespaces_count":0,"keywords_count":0,"github":"r-project-org","metadata":{"icon_url":"https://cran.r-project.org/CRANlogo.png","funded_packages_count":546},"icon_url":"https://cran.r-project.org/CRANlogo.png","created_at":"2022-04-06T16:32:25.637Z","updated_at":"2026-04-03T06:40:33.945Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/namespaces"}}],"commits":{"id":8186233,"full_name":"openair-project/openair","default_branch":"main","total_commits":1557,"total_committers":16,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":97.3125,"dds":0.4187540141297367,"past_year_total_commits":208,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":69.33333333333333,"past_year_dds":0.26442307692307687,"last_synced_at":"2026-04-04T01:01:49.495Z","last_synced_commit":"f902ad43e837930cfee4a3e5a7178b750417ee87","created_at":"2025-01-08T09:04:06.144Z","updated_at":"2026-04-04T01:00:44.433Z","committers":[{"name":"davidcarslaw","email":"david.carslaw@york.ac.uk","login":"davidcarslaw","count":905},{"name":"jack-davison","email":"davison.jack.jd@gmail.com","login":"jack-davison","count":449},{"name":"DCCKC","email":"david.carslaw@kcl.ac.uk","login":null,"count":170},{"name":"Jack Davison","email":"jack.davison@ricardo.com","login":"jack-davison-ricardo","count":13},{"name":"David Carslaw","email":"david@david-linux.home","login":null,"count":4},{"name":"karlropkins","email":"k.ropkins@its.leeds.ac.uk","login":"karlropkins","count":3},{"name":"skgrange","email":"s.k.grange@gmail.com","login":"skgrange","count":2},{"name":"jobonaf","email":"midable@gmail.com","login":"jobonaf","count":2},{"name":"Jerry Martin","email":"Agriculturist","login":"Agriculturist","count":2},{"name":"Panda Rushwood","email":"panda@energyandcleanair.org","login":"TickleThePanda","count":1},{"name":"Manning Young","email":"manningclarkeyoung@gmail.com","login":"manningyoung","count":1},{"name":"Gertjan van den Burg","email":"gertjanvandenburg@gmail.com","login":"GjjvdBurg","count":1},{"name":"Danielle Dempsey","email":"ddempsey@perennia.ca","login":"dempsey-CMAR","count":1},{"name":"Claudia Vitolo","email":"claudia.vitolo@gmail.com","login":"cvitolo","count":1},{"name":"skgrange","email":"skgrange@gmail.com","login":null,"count":1},{"name":"Wu","email":"Hao.Wu@ricardo.com","login":null,"count":1}],"past_year_committers":[{"name":"jack-davison","email":"davison.jack.jd@gmail.com","login":"jack-davison","count":153},{"name":"davidcarslaw","email":"david.carslaw@york.ac.uk","login":"davidcarslaw","count":53},{"name":"Jack Davison","email":"jack.davison@ricardo.com","login":"jack-davison-ricardo","count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:08.903Z","repositories_count":6211371,"commits_count":922202278,"contributors_count":35695360,"owners_count":1143919,"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":"openair-project/openair","html_url":"https://github.com/openair-project/openair","last_synced_at":"2026-04-04T01:00:56.330Z","status":"active","issues_count":205,"pull_requests_count":77,"avg_time_to_close_issue":73822121.18128654,"avg_time_to_close_pull_request":7089327.904761905,"issues_closed_count":171,"pull_requests_closed_count":63,"pull_request_authors_count":8,"issue_authors_count":120,"avg_comments_per_issue":2.453658536585366,"avg_comments_per_pull_request":0.5324675324675324,"merged_pull_requests_count":57,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":28,"past_year_pull_requests_count":27,"past_year_avg_time_to_close_issue":10432228.588235294,"past_year_avg_time_to_close_pull_request":1517840.4375,"past_year_issues_closed_count":17,"past_year_pull_requests_closed_count":16,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":10,"past_year_avg_comments_per_issue":0.9285714285714286,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":16,"created_at":"2025-01-08T09:04:13.579Z","updated_at":"2026-04-04T01:00:56.331Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openair-project%2Fopenair/issues","issue_labels_count":{"bug":32,"question":30,"hysplit 🌐":28,"enhancement":26,"trends 📉":19,"directional 🧭":15,"utilities 🛠":9,"data 🗃":7,"models 📊":5,"refactor":1,"wontfix":1},"pull_request_labels_count":{"enhancement":33,"utilities 🛠":19,"refactor":12,"data 🗃":9,"trends 📉":5,"directional 🧭":4,"bug":3,"hysplit 🌐":1},"issue_author_associations_count":{"NONE":167,"COLLABORATOR":30,"CONTRIBUTOR":8},"pull_request_author_associations_count":{"COLLABORATOR":69,"CONTRIBUTOR":5,"NONE":3},"issue_authors":{"jack-davison":25,"lyggd":16,"davidcarslaw":5,"ClauGro":4,"optimsari":4,"JulioCM":4,"jobonaf":4,"rs028":3,"AlanMcDonaldSEPA":3,"Anuragsahucuraj":3,"MohoWu":3,"dpinxter":3,"MatthiasKetzel":3,"mooibroekd":3,"kenreid4":3,"mjholm4242":2,"3Stoness":2,"e-larry":2,"umeshdumka":2,"jmclaren-17":2,"PolPob":2,"stevecrawshaw":2,"clayton33":2,"lcrilleyl":2,"JaysonAP":2,"DAQLV":2,"yusriy":2,"maelle":2,"clarkdk":2,"pengfh":1,"tikkral":1,"Westonfrontier":1,"bws200":1,"rafaelrsss":1,"georgiamurphy17":1,"jardakreuz":1,"danrod13":1,"NablaWang":1,"tspeidel-ey":1,"JasperSch":1,"Pweidemueller":1,"kailas29":1,"awisher":1,"cannshui":1,"coolshovan":1,"cvitolo":1,"wgieni":1,"CerysW-beep":1,"MoonLightSAMA":1,"Mbex":1,"mkganyago":1,"oserisa":1,"DonnaHaga":1,"jordinagili":1,"rohit-rcrohit7":1,"bsinha1":1,"har4507":1,"vumitch":1,"PantPallavi":1,"vvxin":1,"moorthynair":1,"HectorJorquera":1,"Caroline120":1,"burito111":1,"peterdevries-wag":1,"lautiamkok":1,"bgrumbine":1,"craigsagit":1,"tverbeke":1,"pharwarlay":1,"kyle-howe":1,"fghiami":1,"DavidButterfield090":1,"ummedss01":1,"akrzyzew":1,"masabhathini":1,"dos7408":1,"gokulbalagopal":1,"Hungmiau":1,"Homaghasemi":1,"malloryjutzi":1,"spencer-tassone":1,"dannyparsons":1,"davide-p":1,"paulvern":1,"morganous":1,"CHETNA-DANG":1,"olawalerowland":1,"lokamigauti":1,"gendeadknight":1,"CamiloMontesM":1,"zemega":1,"YuryZammit":1,"Cuevman81":1,"ralfweisse":1,"rrbuchholz":1,"jfmendeze":1,"bappa10085":1,"wasdzxc2007":1,"DafinaKikaj":1,"elvisi01":1,"DavidRoncal":1,"pavanaditya369":1,"BORE2021":1,"andylin2004":1,"puneetvrma":1,"mjb302":1,"stanleesocca":1,"NateByers":1,"GoodLug":1,"mitchrog25":1,"gmiskell":1,"marcelooyaneder":1,"wenjia2017":1,"minair":1,"AldoFiorentin":1,"Jaip2018":1,"c422j381":1,"dpfinch":1,"DenisAShah":1},"pull_request_authors":{"jack-davison":67,"TickleThePanda":2,"davidcarslaw":2,"skgrange":2,"marcelooyaneder":1,"cvitolo":1,"MaggieAlx":1,"anxorl":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-07T00:00:09.463Z","repositories_count":14116540,"issues_count":34490057,"pull_requests_count":112629823,"authors_count":11228003,"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":{"bug":5,"question":4,"data 🗃":3,"directional 🧭":2,"enhancement":2,"wontfix":1,"hysplit 🌐":1,"trends 📉":1,"utilities 🛠":1},"past_year_pull_request_labels_count":{"enhancement":7,"refactor":4,"trends 📉":3,"utilities 🛠":2,"directional 🧭":2,"hysplit 🌐":1,"bug":1},"past_year_issue_author_associations_count":{"COLLABORATOR":16,"NONE":12},"past_year_pull_request_author_associations_count":{"COLLABORATOR":27},"past_year_issue_authors":{"jack-davison":16,"kenreid4":3,"clayton33":2,"akrzyzew":1,"burito111":1,"CerysW-beep":1,"dpfinch":1,"malloryjutzi":1,"minair":1,"mitchrog25":1},"past_year_pull_request_authors":{"jack-davison":27},"maintainers":[{"login":"jack-davison","count":92,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"},{"login":"davidcarslaw","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/davidcarslaw"}],"active_maintainers":[{"login":"jack-davison","count":43,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jack-davison"}]},"events":{"total":{"ReleaseEvent":1,"DeleteEvent":52,"PullRequestEvent":54,"ForkEvent":6,"IssuesEvent":48,"WatchEvent":26,"IssueCommentEvent":36,"PushEvent":348,"PullRequestReviewEvent":4,"PullRequestReviewCommentEvent":1,"CreateEvent":62},"last_year":{"ReleaseEvent":1,"DeleteEvent":36,"PullRequestEvent":23,"ForkEvent":3,"IssuesEvent":38,"WatchEvent":19,"IssueCommentEvent":24,"PushEvent":225,"PullRequestReviewEvent":2,"CreateEvent":43}},"keywords":["air-quality","air-quality-data","meteorology","openair","package","r"],"dependencies":[{"ecosystem":"cran","filepath":"DESCRIPTION","sha":null,"kind":"manifest","created_at":"2022-07-27T05:46:14.115Z","updated_at":"2022-07-27T05:46:14.115Z","repository_link":"https://github.com/openair-project/openair/blob/main/DESCRIPTION","dependencies":[{"id":439744755,"package_name":"R","ecosystem":"cran","requirements":"\u003e= 3.2.0","direct":true,"kind":"depends","optional":false},{"id":439744756,"package_name":"grid","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744757,"package_name":"dplyr","ecosystem":"cran","requirements":"\u003e= 1.0","direct":true,"kind":"imports","optional":false},{"id":439744758,"package_name":"purrr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744759,"package_name":"tidyr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744760,"package_name":"readr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744761,"package_name":"mgcv","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744762,"package_name":"lattice","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744763,"package_name":"latticeExtra","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744764,"package_name":"lubridate","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744765,"package_name":"cluster","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744766,"package_name":"mapproj","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744767,"package_name":"hexbin","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744768,"package_name":"Rcpp","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744769,"package_name":"grDevices","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744770,"package_name":"graphics","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744771,"package_name":"methods","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744772,"package_name":"stats","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744773,"package_name":"MASS","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744774,"package_name":"utils","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":439744775,"package_name":"KernSmooth","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":439744776,"package_name":"maps","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":439744777,"package_name":"mapdata","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":439744778,"package_name":"quantreg","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check.yaml","sha":null,"kind":"manifest","created_at":"2023-01-16T22:16:10.387Z","updated_at":"2023-01-16T22:16:10.387Z","repository_link":"https://github.com/openair-project/openair/blob/main/.github/workflows/R-CMD-check.yaml","dependencies":[{"id":6959722587,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6959722588,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pkgdown.yaml","sha":null,"kind":"manifest","created_at":"2023-01-16T22:16:10.421Z","updated_at":"2023-01-16T22:16:10.421Z","repository_link":"https://github.com/openair-project/openair/blob/main/.github/workflows/pkgdown.yaml","dependencies":[{"id":6959722598,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6959722599,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6959722600,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6959722601,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6959722602,"package_name":"JamesIves/github-pages-deploy-action","ecosystem":"actions","requirements":"v4.4.1","direct":true,"kind":"composite","optional":false}]}],"score":20.542610730851862,"created_at":"2023-09-11T11:54:36.368Z","updated_at":"2026-04-12T00:30:18.780Z","avatar_url":"https://github.com/openair-project.png","language":"R","category":"Natural Resources","sub_category":"Air Quality","monthly_downloads":5151,"total_dependent_repos":51,"total_dependent_packages":18,"readme":"\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"man/figures/logo.png\" height=\"200\"/\u003e\n\n## **openair**\n### open source tools for air quality data analysis\n\n\u003c!-- badges: start --\u003e\n[![R-CMD-check](https://github.com/openair-project/openair/workflows/R-CMD-check/badge.svg)](https://github.com/openair-project/openair/actions)\n[![CRAN\nstatus](https://www.r-pkg.org/badges/version/openair)](https://CRAN.R-project.org/package=openair)\n[![metacran downloads](https://cranlogs.r-pkg.org/badges/grand-total/openair)](https://cran.r-project.org/package=openair)\n\u003cbr\u003e\n[![github](https://img.shields.io/badge/CODE-github-black?logo=github)](https://github.com/openair-project/openair)\n[![website](https://img.shields.io/badge/DOCS-website-black)](https://openair-project.github.io/openair/)\n[![book](https://img.shields.io/badge/DOCS-book-black)](https://openair-project.github.io/book/)\n\u003c!-- badges: end --\u003e\n\n\u003c/div\u003e\n\n**openair** is an R package developed for the purpose of analysing air quality data — or more generally atmospheric composition data. The package is extensively used in academia, the public and private sectors. The project was initially funded by the UK Natural Environment Research Council ([NERC](https://www.ukri.org/councils/nerc/)), with additional funds from the UK Department for Environment Food \u0026 Rural Affairs ([Defra](https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs)).\n\n\u003cdiv align=\"center\"\u003e\n\n*Part of the openair toolkit*\n\n[![openair](https://img.shields.io/badge/openair_core-06D6A0?style=flat-square)](https://openair-project.github.io/openair/) | \n[![worldmet](https://img.shields.io/badge/worldmet-26547C?style=flat-square)](https://openair-project.github.io/worldmet/) | \n[![openairmaps](https://img.shields.io/badge/openairmaps-FFD166?style=flat-square)](https://openair-project.github.io/openairmaps/) | \n[![deweather](https://img.shields.io/badge/deweather-EF476F?style=flat-square)](https://openair-project.github.io/deweather/)\n\n\u003c/div\u003e\n\n\u003chr\u003e\n\n## 💡 Core Features\n\n**openair** has developed over many years to form an extensive toolkit of functions for analysing air quality and atmospheric composition data.\n\n- **Access to data** from several hundred UK air pollution monitoring sites through the `importUKAQ()` family of functions.\n\n- **Time Series \u0026 Trend analysis** to explore how air quality concentrations vary over time (e.g., through `timePlot()`, `timeVariation()`, and `calendarPlot()`).\n\n- **Directional analysis** to help characterise different sources of pollution, including the creation of **bivariate polar plots** using `polarPlot()`.\n\n- **Trajectory analysis** to examine NOAA Hysplit trajectories, with plotting (`trajPlot()`), heatmap (`trajLevel()`) and clustering (`trajCluster()`) functionality.\n\n- **Utility functions**, such as `timeAverage()` and `selectByDate()` to make it easier to manipulate atmospheric composition data.\n\n- **Flexible plot conditioning** to easily plot data by hour or the day, day of the week, season of the year, etc., through the `type` option available in most functions.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"man/figures/feature-banner.png\" width=\"800\"\u003e\n\u003c/div\u003e\n\n\u003chr\u003e\n\n## 📖 Documentation\n\nAll **openair** functions are fully documented; access documentation using R in your IDE of choice.\n\n```r\n?openair::polarPlot\n```\n\nDocumentation is also hosted online on the **package website**.\n\n[![website](https://img.shields.io/badge/website-documentation-blue)](https://openair-project.github.io/openair/)\n\nA guide to the openair toolkit can be found in the **online book**, which contains lots of code snippets, demonstrations of functionality, and ideas for the application of **openair**'s various functions.\n\n[![book](https://img.shields.io/badge/book-code_demos_and_ideas-blue)](https://openair-project.github.io/book/)\n\n\u003chr\u003e\n\n## 🗃️ Installation\n\n**openair** can be installed from **CRAN** with:\n\n``` r\ninstall.packages(\"openair\")\n```\n\nYou can also install the development version of **openair** from GitHub using `{pak}`:\n\n``` r\n# install.packages(\"pak\")\npak::pak(\"openair-project/openair\")\n```\n\n\u003chr\u003e\n\n🏛️ **openair** is primarily maintained by [David Carslaw](https://github.com/davidcarslaw).\n\n📃 **openair** is licensed under the [MIT License](https://openair-project.github.io/openair/LICENSE.html).\n\n🧑‍💻 Contributions are welcome from the wider community. See the [contributing guide](https://openair-project.github.io/openair/CONTRIBUTING.html) and [code of conduct](https://openair-project.github.io/openair/CODE_OF_CONDUCT.html) for more information.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/927","html_url":"https://ost.ecosyste.ms/projects/927"}