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.24.tar.gz
(180.3 kB
view details)
Built Distribution
roguewave-0.2.24-py3-none-any.whl
(227.0 kB
view details)
File details
Details for the file roguewave-0.2.24.tar.gz
.
File metadata
- Download URL: roguewave-0.2.24.tar.gz
- Upload date:
- Size: 180.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7c381bc563740b714e55f31e6a5ab3df0d4e92588c8137d483ce84c64c9c059 |
|
MD5 | 2f65b5f4468d0f09232afff2da6886e5 |
|
BLAKE2b-256 | 9163047ab2e975c650347968bdaf62bf16e5af008c5c203a365975555b1e36af |
File details
Details for the file roguewave-0.2.24-py3-none-any.whl
.
File metadata
- Download URL: roguewave-0.2.24-py3-none-any.whl
- Upload date:
- Size: 227.0 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 | 5bec43be8ef6c0edd91703f68104adb95add2027ff5de490a8af6be42dd7f4f1 |
|
MD5 | 11f15eeb7495b8b4f5964baacf354810 |
|
BLAKE2b-256 | 0a24165c226aee37b4bb037fa485e2983f9bc9c2b725a0ad5e41f430180fc756 |