Skip to main content

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

  1. Make sure that you have the requirements listed above
  2. pip install roguewave to your desired python environment
  3. Test with python3 -c 'import roguewave'. If this runs successfully, chances are everything worked.
  4. 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.10.tar.gz (187.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roguewave-0.2.10-py3-none-any.whl (238.5 kB view details)

Uploaded Python 3

File details

Details for the file roguewave-0.2.10.tar.gz.

File metadata

  • Download URL: roguewave-0.2.10.tar.gz
  • Upload date:
  • Size: 187.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.0

File hashes

Hashes for roguewave-0.2.10.tar.gz
Algorithm Hash digest
SHA256 c61bfec577c4267aaf01a4b7999ec3451e4794954f698391a6a1028578f7842b
MD5 a7c02ef6477f1acc188cf6650d37f310
BLAKE2b-256 d8ea14b21648b4c8f9f7e380343b762783c89a26ca3a486dc51a2d2e8cc41011

See more details on using hashes here.

File details

Details for the file roguewave-0.2.10-py3-none-any.whl.

File metadata

  • Download URL: roguewave-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 238.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.0

File hashes

Hashes for roguewave-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 ce640f18a81ce8aae25ec24cecfb29b995a0a97791792b8478e1efb6a59ffc82
MD5 e87d540ba6cdae9bfa3e125057b703dd
BLAKE2b-256 abaf297f5e49cdca743be27115b420db7d852265124b9b43b2b927ab57db4ddd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page