Giter Club home page Giter Club logo

dmqc-pcm's Introduction

DMQC-PCM

Authors: Andrea Garcia Juan ([email protected]), Kevin Balem ([email protected]), Cécile Cabanes ([email protected]) and Guillaume Maze ([email protected])


The DMQC-PCM is a new quality control method based on machine learning. It uses a statistical classifier (a PCM: Profile Classification Model) to organize and select more appropriately reference data for the quality control of an Argo float. You will find a preliminary implementation of this method in the current repository.

The preliminary implementation workflow is structured in some Jupyter Notebooks and a OWC version including the PCM option.

Figure 1. Workflow of the preliminary implementation.

In the PCM-design folder you will find the classification notebook Classif_ArgoReferenceDatabase.ipynb. It allows the design, training and prediction of a PCM (Profile Classification Model) using a selection of the Argo reference database. A PCM allows to automatically assemble ocean profiles into clusters according to their vertical structure similarities. It provides an unsupervised, i.e. automatic, method to distinguish profiles from different dynamical regimes of the ocean (e.g. eddies, fronts, quiescent water masses). For more information about the method, see Maze et al, Prg.Oc, 2017.

Figure 2. Example of classification spatial distribution for float 4900136 using argo reference database.

As output you will obtain a txt file including the class labels for each reference profile that can be used in the OWC software. You can find the OWC software version including the PCM option in the OWC-pcm folder. To run it, you should modify the ow_config.txt file :

  • set the USE_PCM variable to 1;
  • give the path to the classes txt file you have created within the notebook.

OWC will use reference profiles in the same class to compare with the float profiles you want to quality control.

The DMQC-PCM method improves the reference profile selection in OWC, selecting reference profiles that are in the same oceanographic regime as the float profile we want to qualify. It leads to a reduction in the variability of reference profiles.

Figure 3. Reference profiles (in black) selected for float profiles 77, 78, 79 (in red) using OWC standard selection [a), b) and c)] and using PCM based selection [d), e) and f)], for float 4900136.

You can find a performance assessment and implementation plan of the DMQC-PCM method in (link to the deliverable)


This repository has been developed at the Laboratory for Ocean Physics and Satellite remote sensing, IFREMER, within the framework of the Euro-ArgoRISE project. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no 824131. Call INFRADEV-03-2018-2019: Individual support to ESFRI and other world-class research infrastructures.

dmqc-pcm's People

Contributors

andreagarciajuan avatar gmaze avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dmqc-pcm's Issues

Includes float profiles in classification notebook

Float profiles should be also classified to chose the same class from reference dataset

  • Load float data (argopy)
  • add float data to dataset
  • create function add_floatdata
  • delete profiles already in reference dataset
  • make classification

Read the argo reference database in python

  • Interpolation standard levels: using argopy functions
  • Spatial and temporal selection: using a .txt file with max and min lat and lon for each box
  • Read more than one .mat file
  • Create a .py with functions

data selection using ellipses

Use OW ellipses to select reference data before classification

  • data selection using simple ellipses
  • read longitude_large and latitude_large from ow_config.txt
  • change season option to get training dataset
  • use PV
  • read paths in ow_config.txt

Having data out of argopy right for OWC

Hi @AndreaGarciaJuan @cabanesc ,
Where should I start ?
I understood that the float to be validated data are processed in OWC matlab in a specific manner.
Where is this explained please ?

I anticipate that if argopy would mimick this processing, it could be made available with the xarray accessor:

fetcher = ArgoDataFetcher(mode='expert').float(2901623).load()
ds = fetcher.data
ds_processed = ds.argopy.to_owc()

Using CTD data

Test results only usind CTD data with float 3901915 (Agulhas current)

Apply the PCM to the argo reference database

Create a first notebook to apply the PCM to the argo reference database

  • Example: Nord Atlantic
  • Output: .txt with classes
  • Option: argo, CTD, argo +CTD (use the wmo_boxes file)
  • use different depths (z=500m now)
  • BIC plot
  • Time plot
  • add seasonal selection

fit using a regular sampling

  • change structure of notebook: create trianing dataset and create prediction dataset sections
  • use codes in BIC_calculation.py
  • random profile in each grid
  • clasification figures including quantiles

Make same figure as in paper

Create same figure as in Maze et al 2017
Capture d'écran de 2021-08-16 09-34-40

  • Find reference profiles choosen for profile 78 and profile 80 (temperature)
  • Create a notebook to make plot in exemples folder
  • Plot standard reference envelop using mean and standard deviation
  • PLot with AVISO data
  • add TS diagrams
  • Plot standard reference envelop using distance weighted mean

change order of class selection

Class selection after the 250 profiles are selected

  • make a classification using ellipses
  • ow using class selection before
  • ow using class selection after

Link output of PCM notebook to OW

First try using .txt to select only profiles in the same class

  • create .mat with data
  • good configuration with paths to ref data
  • use PCM_classes_NAtlac1_argo.txt file

Change in the MAPSCALE_AGE from integer to double

In the pcm_owc_config.ini file the MAPSCALE_AGE variable can be only set as the integer value.
It would be good to change it to double.

applying OWC

updating salinity mapper
Traceback (most recent call last):
File "/users/argo/dm_qc/SO_assesment/DMQC-PCM-Python/so_dmqc_master.py", line 244, in
obj.run()
File "/users/argo/dm_qc/SO_assesment/DMQC-PCM-Python/so_dmqc_master.py", line 173, in run
calibration.update_salinity_mapping(str(float_WMO), self.OWC_CONFIG,
File "/users/argo/dm_qc/SO_assesment/DMQC-PCM-Python/argodmqc_owc/pyowc/calibration.py", line 83, in update_salinity_mapping
map_age_large = int(config['MAPSCALE_AGE_LARGE'])
ValueError: invalid literal for int() with base 10: '0.69'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.