Skip to main content

OWC salinity calibration in Python

Project description

pyowc logo pyowc is a python library for OWC salinity calibration in Python

Status Python Gitter
codecov build

This software is a python implementation of the "OWC" salinity calibration method used in Argo floats Delayed Mode Quality Control.

Post an issue to get involved if you're interested.

General Guidance

To use this software, you'll need Python, and ideally a virtual environment with the package installed.
A virtual environment is not absolutely essential — you can install the package globally — but it is recommended to avoid issues.

There are two ways of working with this software:

1. Installation and General Usage via PyPI

This method is intended for general usage, without modifying the codebase.
If you intend to use the software this way, follow the documentation from the General Usage section.

2. Installation and Development Work via GitHub

This method is intended for development work and gives access to the codebase.
It is intended for those wanting to develop the code.
If this is what you intend to do, follow the documentation from the Developer Usage section.


General Usage

TODO


Developer Usage

TODO


Virtual Environments

To create a virtual environment:

  • Mac/Linux

    python3 -m venv .venv

    source .venv/bin/activate

  • Windows

    python -m venv .venv

    .\.venv\Scripts\Activate

Installation and usage with Poetry

  • Step 1
    Make sure you have Python installed, along with virtualenv.

  • Step 2
    Clone the repository and open it in your code editor.

  • Step 3
    Create a new virtual environment.

  • Step 4
    Install Poetry: pip install poetry

  • Step 5 Install the dependencies: `poetry install --no-root.

If any messages appear with 'poetry not found', try prefixing your command with python or python -m

Running the Linter with Poetry

poetry install --no-root --with lint

poetry run ruff check

Running the Docs Builder with Poetry

poetry install --with docs

cd docs

poetry run sphinx-build -M html source build -W

Running the Tests with Poetry

poetry install --with tests

poetry run pytest

Software usage

  • Running with Poetry

Run the code (start.py): poetry run run-floats.

A short tutorial is available on the argopy documentation here.

For Python beginners, you can run the pyowc in this way:

In start.py, you can specify the WMO float number that you want to do analysis. You can also add more float numbers, then the calculations of all floats will be done at the same time.

import pyowc as owc

warnings.filterwarnings("ignore", category=RuntimeWarning)

if __name__ == '__main__':

    FLOAT_NAMES = ["3901960"]  # add float names here e.g. ["3901960","3901961","3901962"]
    USER_CONFIG = owc.configuration.load()  # fetch the default configuration and parameters
    print(owc.configuration.print_cfg(USER_CONFIG))

Parameters for your analysis

Parameters for the analysis are set in a configuration.py python code. The configuration has the same parameters as the Matlab software (https://github.com/ArgoDMQC/matlab_owc).

  • You can change the default directories to locations of your historical data.
        #    Climatology Data Input Paths
        'HISTORICAL_DIRECTORY': "data/climatology/"
        'HISTORICAL_CTD_PREFIX': "/historical_ctd/ctd_"
        'HISTORICAL_BOTTLE_PREFIX': "/historical_bot/bot_"
        'HISTORICAL_ARGO_PREFIX': "/historical_argo/argo_"
  • To run the analysis,you need to have the float source file in .mat format.
        #    Float Input Path
        'FLOAT_SOURCE_DIRECTORY': "data/float_source/"
        'FLOAT_SOURCE_POSTFIX': ".mat"
  • The output from the analysis will be saved in default directory of the code.You can change the default directories to locations of your constants.
        #    Constants File Path
        'CONFIG_DIRECTORY': "data/constants/"
        'CONFIG_COASTLINES': "coastdat.mat"
        'CONFIG_WMO_BOXES': "wmo_boxes.mat"
        'CONFIG_SAF': "TypicalProfileAroundSAF.mat"
  • Final step is to set your objective mapping parameters, e.g.
        'MAP_USE_PV': 0
        'MAP_USE_SAF': 0

        'MAPSCALE_LONGITUDE_LARGE': 8
        'MAPSCALE_LONGITUDE_SMALL': 4
        'MAPSCALE_LATITUDE_LARGE': 4
        'MAPSCALE_LATITUDE_SMALL': 2
  • Additionally, you can set a specific ranges of theta bounds for salinity anomaly plot. The code will crete two separate plots with set ranges.
     #    Plotting Parameters
        # Theta bounds for salinity anomaly plot
        'THETA_BOUNDS': [[0, 5], [5, 20]]

Software history

New positioning of functions

Note that functions name are not changed !

  • pyowc/core

    • stats.py: brk_pt_fit, build_cov, covarxy_pv, covar_xyt_pv, noise_variance, signal_variance, fit_cond, nlbpfun
    • finders.py: find_10thetas, find_25boxes, find_besthit, find_ellipse, nearest_neighbour
  • pyowc/data

    • fetchers.py: get_region_data, get_region_hist_locations, get_data, get_topo_grid, frontal_constraint_saf
    • wrangling.py: interp_climatology, map_data_grid
  • pyowc/plot

    • dashboard.py: plot_diagnostics
    • plots.py: cal_sal_curve_plot, sal_var_plot, t_s_profile_plot, theta_sal_plot, trajectory_plot
    • utils.py: create_dataframe
  • pyowc/calibration.py: update_salinity_mapping, calc_piecewisefit

  • pyowc/configuration.py: load_configuration, set_calseries, print_cfg

  • pyowc/tests # Contain all the unit tests !

  • pyowc/utilities.py: change_dates, cal2dec, potential_vorticity, wrap_longitudes, sorter, spatial_correlation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argodmqc_owc-0.1.8.tar.gz (76.4 kB view details)

Uploaded Source

Built Distribution

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

argodmqc_owc-0.1.8-py3-none-any.whl (85.9 kB view details)

Uploaded Python 3

File details

Details for the file argodmqc_owc-0.1.8.tar.gz.

File metadata

  • Download URL: argodmqc_owc-0.1.8.tar.gz
  • Upload date:
  • Size: 76.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.11

File hashes

Hashes for argodmqc_owc-0.1.8.tar.gz
Algorithm Hash digest
SHA256 a93277b3cdd00344b6447060f7f98dc9ecfaa72ae19b19a6f8c3c5e659156910
MD5 d8fe18aa73f870a792e3ed9dbb528998
BLAKE2b-256 c82428d4d1381d868892e5d6b18e40ada6c8a1bdf27c7c8d4e628002c9b8e1d4

See more details on using hashes here.

File details

Details for the file argodmqc_owc-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: argodmqc_owc-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 85.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.11

File hashes

Hashes for argodmqc_owc-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2d5f9e258981420943be68a316c4ba89dbde1fa3f5d990794f813914e846c0a6
MD5 32fd98fe3e6d100a1664342dbb1e9dea
BLAKE2b-256 dd20411c39b795cc285b74d15d8462fc9d79c15d678b672fbd80ba9edba15eaf

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