Python package to interact with Sofar wave data
Project description
Sofar Ocean API Python Client
Python toolbox to interact with Sofar Ocean Spotter API.
Requirements
- Python3
- pysofar
- numpy
- netCDF4
- wheel (If developing/Contributing)
- Pytest (If developing/Contributing)
- Setuptools (If developing/Contributing)
Installation
- Make sure that you have the requirements listed above
pip install roguewave
to your desired python environment- Test with
python3 -c 'import roguewave'
. If this runs successfully, chances are everything worked. - To interact with the api's you need to add the access tokens into an environmental file.
Specifically create a file called
sofar_api.env
in your user directory containing
WF_API_TOKEN=_wavefleet_token_
SPECTRAL_API_TOKEN=_spectral_api_token_
Examples
Retrieve Spectrum from observational Spotter API
from roguewave.spotterapi import get_spectrum
from datetime import datetime, timezone
import matplotlib.pyplot as plt
# The Spotter we want the data from
spotter_id = 'SPOT-0740'
# Start time to grab
start_date = datetime(2021,1,1,0,0,0,tzinfo=timezone.utc)
# End time
end_date = datetime(2021,1,6,0,0,0,tzinfo=timezone.utc)
# You will need a valid access token setup for the pysofar library for this to
# work. We refer to the pysofar documentation how to set that up.
# Get the spectra
spectra = get_spectrum(spotter_id,start_date,end_date)
# We now have spectra from the spotter we can interact with
for key in spectra:
for spectrum in spectra[key]:
string = f'The waveheight at {spectrum.timestamp} was {spectrum.hm0()} meter'
print(string)
# or do a simple plot
plt.plot(spectra[spotter_id][0].frequency, spectra[spotter_id][0].variance_density,'k')
plt.xlabel('Frequency (hz)')
plt.ylabel('Variance Density (m$^2$/s)')
plt.yscale('log')
plt.title(f'spectrum for {spotter_id} at time {spectra[spotter_id][0].timestamp}')
plt.grid()
plt.show()
Retrieve Spectrum from model Spectral API
from roguewave.modeldata.sofarspectralapi import SofarSpectralAPI,load_sofar_spectral_file
import matplotlib.pyplot as plt
# Create an api Object
api = SofarSpectralAPI()
# Get all the points accessible for this particular user. This returns a list
# dictionaries containing latitudes and longitudes
points = api.points()
# Lets get the first point. This will download the netcdf containing the spectral
# forcast into the given directory.
file = api.download_spectral_file(**points[0], directory='./')
# Lets load the point. This will open the Netcdf file and return a Spectrum2D
# object. This object supports all the methods of the Spectrum1D object (hm0,
# tm02, etc.)
data = load_sofar_spectral_file(file)
# Lets plot it
plt.pcolormesh(data[0].frequency, data[0].direction, data[0].variance_density)
plt.show()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
roguewave-0.2.31.tar.gz
(165.5 kB
view details)
Built Distribution
roguewave-0.2.31-py3-none-any.whl
(228.9 kB
view details)
File details
Details for the file roguewave-0.2.31.tar.gz
.
File metadata
- Download URL: roguewave-0.2.31.tar.gz
- Upload date:
- Size: 165.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9aba6ad2118dc9737caaf947883e094f44e9cb5dc582ed928dcd5b08c23193e0 |
|
MD5 | 81799754e5874b0fe54ff6247baa111b |
|
BLAKE2b-256 | 267ed2d0ec7120416d3c0b27fae1d8864ef150c250a2ac82fc1215b8f5e811d9 |
File details
Details for the file roguewave-0.2.31-py3-none-any.whl
.
File metadata
- Download URL: roguewave-0.2.31-py3-none-any.whl
- Upload date:
- Size: 228.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 304cfc895fc58db962c3e0cb6b087d9fb64c468d7c6c65aaaf0d188d259b6d86 |
|
MD5 | 141c1f03dacb9ecad9ba812fb8c523db |
|
BLAKE2b-256 | dbb3a0d6d0298a44a15aa1053f0e011c33391cf9b06600aa0f71751ca13a6424 |