-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
722fdc5
commit 219a712
Showing
1 changed file
with
229 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,229 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" | ||
"JATS-publishing1.dtd"> | ||
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other"> | ||
<front> | ||
<journal-meta> | ||
<journal-id></journal-id> | ||
<journal-title-group> | ||
<journal-title>Journal of Open Source Software</journal-title> | ||
<abbrev-journal-title>JOSS</abbrev-journal-title> | ||
</journal-title-group> | ||
<issn publication-format="electronic">2475-9066</issn> | ||
<publisher> | ||
<publisher-name>Open Journals</publisher-name> | ||
</publisher> | ||
</journal-meta> | ||
<article-meta> | ||
<article-id pub-id-type="publisher-id">7406</article-id> | ||
<article-id pub-id-type="doi">10.21105/joss.07406</article-id> | ||
<title-group> | ||
<article-title>ndbc-api: Accelerating oceanography and climate science | ||
research with Python</article-title> | ||
</title-group> | ||
<contrib-group> | ||
<contrib contrib-type="author"> | ||
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-0469-353X</contrib-id> | ||
<name> | ||
<surname>Jellen</surname> | ||
<given-names>Christopher David</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
</contrib> | ||
<aff id="aff-1"> | ||
<institution-wrap> | ||
<institution>United States Naval Academy, USA</institution> | ||
</institution-wrap> | ||
</aff> | ||
</contrib-group> | ||
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2024-09-02"> | ||
<day>2</day> | ||
<month>9</month> | ||
<year>2024</year> | ||
</pub-date> | ||
<volume>9</volume> | ||
<issue>104</issue> | ||
<fpage>7406</fpage> | ||
<permissions> | ||
<copyright-statement>Authors of papers retain copyright and release the | ||
work under a Creative Commons Attribution 4.0 International License (CC | ||
BY 4.0)</copyright-statement> | ||
<copyright-year>2024</copyright-year> | ||
<copyright-holder>The article authors</copyright-holder> | ||
<license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"> | ||
<license-p>Authors of papers retain copyright and release the work under | ||
a Creative Commons Attribution 4.0 International License (CC BY | ||
4.0)</license-p> | ||
</license> | ||
</permissions> | ||
<kwd-group kwd-group-type="author"> | ||
<kwd>Python</kwd> | ||
<kwd>oceanography</kwd> | ||
<kwd>climate science</kwd> | ||
<kwd>NDBC</kwd> | ||
</kwd-group> | ||
</article-meta> | ||
</front> | ||
<body> | ||
<sec id="summary"> | ||
<title>Summary</title> | ||
<p>The National Data Buoy Center (NDBC) and its partners are an | ||
essential source of marine meteorological and oceanographic data | ||
(<xref alt="National Data Buoy Center (NDBC), 2023" rid="ref-NDBC_Data_Guide" ref-type="bibr">National | ||
Data Buoy Center (NDBC), 2023</xref>). The | ||
<monospace>ndbc-api</monospace> Python package is an open-source tool | ||
designed to streamline the acquisition, synthesis, and analysis of | ||
this data. It provides a Python API for accessing real-time and | ||
historical observations from a network of buoys, coastal stations, and | ||
deployments. This package simplifies the process of retrieving, | ||
parsing, and organizing NDBC data. Traditional HTTP access methods to | ||
station-specific text files poses a challenge when dealing with | ||
multiple stations or extended time ranges. The | ||
<monospace>ndbc-api</monospace> provides a Python API which retrieves, | ||
parses, and merges this data, returning Python-native data structures. | ||
This package empowers researchers and practitioners in oceanography, | ||
meteorology, and related fields to efficiently integrate NDBC data | ||
into their workflows, accelerating research in climate science and | ||
oceanography.</p> | ||
</sec> | ||
<sec id="statement-of-need"> | ||
<title>Statement of need</title> | ||
<p>The National Oceanic and Atmospheric Association’s National Data | ||
Buoy Center maintains marine monitoring and observation stations | ||
around the world | ||
(<xref alt="National Data Buoy Center (NDBC), 2024" rid="ref-NDBC_Active_Stations" ref-type="bibr">National | ||
Data Buoy Center (NDBC), 2024</xref>). These stations report | ||
atmospheric, oceanographic, and other meteorological data at regular | ||
intervals to the NDBC | ||
(<xref alt="National Data Buoy Center (NDBC), 2023" rid="ref-NDBC_Data_Guide" ref-type="bibr">National | ||
Data Buoy Center (NDBC), 2023</xref>, | ||
<xref alt="2024" rid="ref-NDBC_Active_Stations" ref-type="bibr">2024</xref>). | ||
Measurements are made available over HTTP through the NDBC’s data | ||
service. Measurements are typically distributed as quality-controlled | ||
<monospace>utf-8</monospace> encoded, station-by-station, fixed-period | ||
text files | ||
(<xref alt="National Data Buoy Center (NDBC), 2023" rid="ref-NDBC_Data_Guide" ref-type="bibr">National | ||
Data Buoy Center (NDBC), 2023</xref>). While the data collected and | ||
maintained by the NDBC is critical to oceanography and climate science | ||
researchers, the mode of access adds complexity to their workflows. | ||
These challenges are particularly pronounced when working with | ||
long-duration data, data from multiple stations, or data with a high | ||
proportion of missing measurements.</p> | ||
<p>The <monospace>ndbc-api</monospace> addresses these critical gaps | ||
by providing a streamlined, programmatic interface to the NDBC’s data | ||
service. By abstracting the complexities of file-based access, | ||
handling of missing measurements, and cross-station joins, the | ||
<monospace>ndbc-api</monospace> package lowers the barriers to | ||
obtaining and using the NDBC’s global oceanographic and meteorological | ||
data in scientific research. Researchers specify their stations, data | ||
modalities (for example, <monospace>adcp</monospace> for acoustic | ||
doppler current profiler measurements or <monospace>cwind</monospace> | ||
for continuous winds data), and time ranges of interest, and the | ||
package returns the processed NDBC data either as a Pandas | ||
<monospace>DataFrame</monospace> object or as an xarray | ||
<monospace>Dataset</monospace> object | ||
(<xref alt="Hoyer & Hamman, 2017" rid="ref-hoyer2017xarray" ref-type="bibr">Hoyer | ||
& Hamman, 2017</xref>; | ||
<xref alt="Mckinney, 2010" rid="ref-pandas" ref-type="bibr">Mckinney, | ||
2010</xref>; | ||
<xref alt="The pandas development team, 2020" rid="ref-reback2020pandas" ref-type="bibr">The | ||
pandas development team, 2020</xref>). The package maps missing | ||
measurements from their varied text-based identifiers such as | ||
<monospace>99</monospace>, <monospace>999</monospace>, or | ||
<monospace>MM</monospace>, into a single missing measurement | ||
representation of <monospace>nan</monospace>. The challenge of | ||
aligning and joining data across measurements and stations is | ||
similarly handled before the final object is returned to the user. By | ||
exposing station metadata and search functionality alongside data | ||
retrieval methods, researchers are also able to identify the set of | ||
stations, based on their NDBC identifier, that were active during a | ||
given period, or within some radius of a given location. The | ||
combination of efficient identification of the relevant stations, | ||
retrieval of the desired data variables, and processing of the data | ||
from the NDBC data service make the <monospace>ndbc-api</monospace> a | ||
valuable tool for oceanography and climate science researchers.</p> | ||
</sec> | ||
<sec id="acknowledgements"> | ||
<title>Acknowledgements</title> | ||
<p>The authors would like to acknowledge the invaluable contributions | ||
of the National Data Buoy Center (NDBC), their teams, and their | ||
network of partners. Their efforts in deploying and maintaining the | ||
buoys and marine observation stations, collecting and | ||
quality-controlling oceanographic data, and making their measurements | ||
readily available through their data service are fundamental to | ||
advancing our understanding of earth systems. The | ||
<monospace>ndbc-api</monospace> Python package would not be possible | ||
without their commitment to open data access and their unwavering | ||
support for the scientific and operational communities. We extend our | ||
sincere appreciation to everyone involved in this vital endeavor.</p> | ||
</sec> | ||
</body> | ||
<back> | ||
<ref-list> | ||
<title></title> | ||
<ref id="ref-NDBC_Data_Guide"> | ||
<element-citation> | ||
<person-group person-group-type="author"> | ||
<string-name>National Data Buoy Center (NDBC)</string-name> | ||
</person-group> | ||
<article-title>NDBC web data guide</article-title> | ||
<publisher-name>https://www.ndbc.noaa.gov/docs/ndbc_web_data_guide.pdf</publisher-name> | ||
<year iso-8601-date="2023">2023</year> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-NDBC_Active_Stations"> | ||
<element-citation> | ||
<person-group person-group-type="author"> | ||
<string-name>National Data Buoy Center (NDBC)</string-name> | ||
</person-group> | ||
<article-title>NDBC active stations</article-title> | ||
<publisher-name>https://www.ndbc.noaa.gov/wstat.shtml</publisher-name> | ||
<year iso-8601-date="2024">2024</year> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-pandas"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Mckinney</surname><given-names>Wes</given-names></name> | ||
</person-group> | ||
<article-title>Data Structures for Statistical Computing in Python</article-title> | ||
<source>Proceedings of the 9th Python in Science Conference</source> | ||
<year iso-8601-date="2010-01">2010</year><month>01</month> | ||
<volume>445</volume> | ||
<issue>1</issue> | ||
<pub-id pub-id-type="doi">10.25080/majora-92bf1922-00a</pub-id> | ||
<fpage>56</fpage> | ||
<lpage>61</lpage> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-reback2020pandas"> | ||
<element-citation publication-type="software"> | ||
<person-group person-group-type="author"> | ||
<string-name>The pandas development team</string-name> | ||
</person-group> | ||
<article-title>pandas-dev/pandas: Pandas</article-title> | ||
<publisher-name>Zenodo</publisher-name> | ||
<year iso-8601-date="2020-02">2020</year><month>02</month> | ||
<uri>https://doi.org/10.5281/zenodo.3509134</uri> | ||
<pub-id pub-id-type="doi">10.5281/zenodo.3509134</pub-id> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-hoyer2017xarray"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Hoyer</surname><given-names>S.</given-names></name> | ||
<name><surname>Hamman</surname><given-names>J.</given-names></name> | ||
</person-group> | ||
<article-title>Xarray: N-D labeled arrays and datasets in Python</article-title> | ||
<source>Journal of Open Research Software</source> | ||
<publisher-name>Ubiquity Press</publisher-name> | ||
<year iso-8601-date="2017">2017</year> | ||
<volume>5</volume> | ||
<issue>1</issue> | ||
<uri>https://doi.org/10.5334/jors.148</uri> | ||
<pub-id pub-id-type="doi">10.5334/jors.148</pub-id> | ||
</element-citation> | ||
</ref> | ||
</ref-list> | ||
</back> | ||
</article> |