{"id":18722662,"url":"https://github.com/mdsumner/bluelink","last_synced_at":"2025-08-31T20:31:16.758Z","repository":{"id":72211188,"uuid":"533660306","full_name":"mdsumner/bluelink","owner":"mdsumner","description":"Get Bluelink ReANalysis (BRAN)","archived":false,"fork":false,"pushed_at":"2025-04-13T05:55:38.000Z","size":499,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-02T16:48:26.246Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/mdsumner.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"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}},"created_at":"2022-09-07T07:43:56.000Z","updated_at":"2025-04-13T05:55:41.000Z","dependencies_parsed_at":"2025-03-11T00:23:20.152Z","dependency_job_id":"931012d2-9ea9-45b1-a185-10a202b759e8","html_url":"https://github.com/mdsumner/bluelink","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mdsumner/bluelink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdsumner%2Fbluelink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdsumner%2Fbluelink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdsumner%2Fbluelink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdsumner%2Fbluelink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdsumner","download_url":"https://codeload.github.com/mdsumner/bluelink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdsumner%2Fbluelink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273034606,"owners_count":25034437,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-07T13:42:22.187Z","updated_at":"2025-08-31T20:31:16.745Z","avatar_url":"https://github.com/mdsumner.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# bluelink\n\n\u003c!-- badges: start --\u003e\n[![R-CMD-check](https://github.com/mdsumner/bluelink/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/mdsumner/bluelink/actions/workflows/R-CMD-check.yaml)\n\u003c!-- badges: end --\u003e\n\nThe goal of bluelink is to provide access to the Bluelink Reanalysis (BRAN2023) via NetCDF sources. \n\n\n## Bluelink is \n\nBRAN2023, a 4 dimensional nearly-global ocean product organized by \n monthly files at 0.1 degree resolution with 51 depth levels ('3600x1500x51x\u003cdays\u003e'). \n The goal of BRAN is to provide a realistic quantitative description of the \n three-dimensional time-varying ocean circulation of all physical variables \n (temperature, salinity, sea-level and three components of velocity) for the last \n few decades. \u003chttps://research.csiro.au/bluelink/global/reanalysis/\u003e\n\n## Installation\n\nYou can install the development version of bluelink like so:\n\n``` r\nremotes::install_github(\"mdsumner/bluelink\")\n```\n\n## Example\n\nThis is a basic example which shows you how to read the earliest available for this variable. \n\n```{r example0}\nlibrary(bluelink)\nread_bluelink(varname = \"ocean_w\")\n```\n\nOther variables sometimes have diferent ranges in times. \n\n```{r example}\nread_bluelink(varname = \"ocean_temp\")\n```\n\nWe can give a particular date. \n\n```{r example2}\nread_bluelink(\"2023-12-31\", varname = \"ocean_temp\")\n```\n\nGenerally, take the year you are in and you should be able to get days from last year. \n\n## Get just the url for use in GDAL\n\n```{r gdal}\nbluelink_dsn()\n\nbluelink_dsn(\"2003-02-01\", varname = \"ocean_salt\")\n\n```\n\nSubstitute \"/fileServer\" for \"/dodsC/\" for use in netcdf or tidync, and turn off \"vsicurl\". \n\n```R\nu \u003c- bluelink_dsn(\"2003-02-01\", varname = \"ocean_salt\", vsicurl = FALSE)\ndods \u003c- gsub(\"fileServer\", \"dodsC\", u)\nRNetCDF::print.nc(RNetCDF::open.nc(dods))\n\nnetcdf classic {\ndimensions:\n\tTime = UNLIMITED ; // (28 currently)\n\tnv = 2 ;\n\tst_edges_ocean = 52 ;\n\tst_ocean = 51 ;\n\txt_ocean = 3600 ;\n\tyt_ocean = 1500 ;\nvariables:\n\tNC_DOUBLE xt_ocean(xt_ocean) ;\n\t\tNC_CHAR xt_ocean:long_name = \"tcell longitude\" ;\n\t\tNC_CHAR xt_ocean:units = \"degrees_E\" ;\n\t\tNC_CHAR xt_ocean:cartesian_axis = \"X\" ;\n\t\tNC_INT xt_ocean:domain_decomposition = 1, 3600, 1, 1800 ;\n\t\tNC_INT xt_ocean:_ChunkSizes = 300 ;\n\tNC_DOUBLE yt_ocean(yt_ocean) ;\n\t\tNC_CHAR yt_ocean:long_name = \"tcell latitude\" ;\n\t\tNC_CHAR yt_ocean:units = \"degrees_N\" ;\n\t\tNC_CHAR yt_ocean:cartesian_axis = \"Y\" ;\n\t\tNC_INT yt_ocean:domain_decomposition = 1, 1500, 1, 150 ;\n\t\tNC_INT yt_ocean:_ChunkSizes = 300 ;\n\tNC_DOUBLE st_ocean(st_ocean) ;\n\t\tNC_CHAR st_ocean:long_name = \"tcell\n\u003csnip\u003e\t\t\n\t\t\ntidync::tidync(dods)\n\nData Source (1): ocean_salt_2003_02.nc ...\n\nGrids (8) \u003cdimension family\u003e : \u003cassociated variables\u003e \n\n[1]   D4,D5,D3,D0 : salt    **ACTIVE GRID** ( 7711200000  values per variable)\n[2]   D1,D0       : Time_bounds\n[3]   D0          : Time, average_T1, average_T2, average_DT\n[4]   D1          : nv\n[5]   D2          : st_edges_ocean\n[6]   D3          : st_ocean\n[7]   D4          : xt_ocean\n[8]   D5          : yt_ocean\n\nDimensions 6 (4 active): \n  \n  dim   name     length       min    max start count      dmin   dmax unlim coord_dim \n  \u003cchr\u003e \u003cchr\u003e     \u003cdbl\u003e     \u003cdbl\u003e  \u003cdbl\u003e \u003cint\u003e \u003cint\u003e     \u003cdbl\u003e  \u003cdbl\u003e \u003clgl\u003e \u003clgl\u003e     \n1 D0    Time         28 8798.     8824.      1    28 8798.     8824.  TRUE  TRUE      \n2 D3    st_ocean     51    2.5    4509.      1    51    2.5    4509.  FALSE TRUE      \n3 D4    xt_ocean   3600    0.0500  360.      1  3600    0.0500  360.  FALSE TRUE      \n4 D5    yt_ocean   1500  -74.9      74.9     1  1500  -74.9      74.9 FALSE TRUE      \n  \nInactive dimensions:\n  \n  dim   name           length   min   max unlim coord_dim \n  \u003cchr\u003e \u003cchr\u003e           \u003cdbl\u003e \u003cdbl\u003e \u003cdbl\u003e \u003clgl\u003e \u003clgl\u003e     \n1 D1    nv                  2     1     2 FALSE TRUE      \n2 D2    st_edges_ocean     52     0  5000 FALSE TRUE \n\n\n```\n\n## Try a time series\n\nEvery day on the first of September\n\n```{r time}\ndts \u003c- seq(as.Date(\"2010-01-01\"), as.Date(\"2023-10-10\"), by = \"1 year\")\n\noptions(parallelly.fork.enable = TRUE, future.rng.onMisuse = \"ignore\")\nlibrary(furrr); plan(multicore)\n\nsst \u003c- future_map_dbl(dts, \\(.x) terra::extract(read_bluelink(.x, varname = \"ocean_temp\"), cbind(150, -42))[[1]])\nplan(sequential)\nplot(dts, sst)\n\n```\n\n## Code of Conduct\n  \nPlease note that the bluelink project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/1/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdsumner%2Fbluelink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdsumner%2Fbluelink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdsumner%2Fbluelink/lists"}