Accueil - Océanographie - SeaBird

Acquisition et traitement des données d’une bathysonde Seabird SBE911+

Acquisition et traitement des données d’une bathysonde Seabird SBE911+
Publié le mardi 26 août 2014.


Dernière mise à jour : 26/08/2014


Préliminaire

Cet article fait référence à l’article précédent publié en 2005 Instructions d’utilisation de la sonde 911plus et LADCP.

L’acquisition des données d’une bathysonde Seabird 911+ (CTDO2) est réalisée avec le logiciel Seasave V7 et le traitement avec l’ensemble de logiciels SBEDataProcessing. Le logiciel d’acquisition Seasave doit être adapté à la configuration matérielle de la bathysonde et le traitement des données sera fortement contraint par cette configuration.
Lors d’une campagne océanographique, il est important, voir indispensable, de vérifier la qualité des données après chaque station, ceci afin d’identifier au plus tôt un éventuel problème sur les capteurs. Ce traitement doit pouvoir également être facilement réalisé au laboratoire une fois l’étalonnage des capteurs réalisés afin de corriger les données de leurs éventuelles dérives quelque soit la configuration du système.
Pour cela, nous avons réalisé un système d’information (SI) dans lequel on retrouvera une arborescence de répertoire commune aux instruments mis en œuvre lors de la campagne. Nous décrirons dans ce document plus particulièrement celle utilisée avec la bathysonde CTDO2. Les logiciels Seabird ne fonctionnant que sous Windows, ce document décrit l’installation d’outils basés sur des scripts Perl et Shell qui permettront l’automatisation du traitement sous Windows puis la mise en place d’une machine virtuelle sous Linux pour l’extraction, le formatage et la visualisation des données.

Le Système d’Information (SI)

Description

Les systèmes d’acquisitions mis en œuvre lors d’une campagne océanographique peuvent être fort nombreux et hétérogènes. Certains font partie intégrante des équipements du bord, d’autres sont installés par les équipes scientifiques pour la durée de la campagne comme cela est généralement le cas pour le PC d’acquisition de la bathysonde. Lorsque les différents systèmes d’acquisition ont la possibilité d’être connectés au réseau informatique du bord, il sera préférable de placer notre SI sur un espace disque partagé. L’acquisition des données sera réalisée localement sur un PC dédié, les données seront ensuite copiées dans 2 répertoires sur le réseau. Le premier, baptisé « data-raw », permettra une conservation des fichiers originaux, le second, baptisé « data-processing » contiendra, en plus d’une copie des fichiers originaux, l’ensemble des outils et des données issus du traitement de chaque instruments. Si cet espace disque n’est pas sauvegardé régulièrement par les systèmes informatiques du bord, un backup sera réalisé sur un ou plusieurs disques externes.
L’avantage de cette solution est qu’elle est facilement transposable en déplacement où au laboratoire, par simple copie du SI sur un disque réseau partagé ou externe incluant tous les outils ou fichiers nécessaire aux traitements.

Création

Sur les navires de l’Ifremer, un espace disque est réservé aux scientifiques pour la durée de la campagne. Sur le Suroit, il se trouve sur un serveur NAS accessible via le protocole NFS sous Unix ou un partage SMB sous Windows (via un service samba tournant sur le serveur Unix ou se trouve la partition disponible).

En début de campagne, l’arborescence du SI sera créée avec le script Perl mktree.pl une fois la machine virtuelle installée et après l’avoir adapté aux instruments mis en œuvre.

Exemple de SI mis en place sur le Suroit

Listing du partage samba réservé aux scientifiques pour la campagne \\su-nas\sciences

La partition peut être montée avec NFS depuis su-nas:/export/home3/SCIENCES

su-nas > ls -1 /export/home3/SCIENCES/PIRATA-FR24
data-final/
data-processing/
data-raw/
Documents/
local/
tmp/

Les scripts d’initialisation du bash et/ou C shell sous

PIRATA-FR24/local/etc/skel.

su-nas > ls -1 PIRATA-FR24/local/etc/skel
.bashrc
.bashrc.PIRATA-FR24

Les utilitaires de traitement et sauvegardes sous

PIRATA-FR24/local/sbin :

su-nas > ls -1 PIRATA-FR24/local/sbin
backup_pirata-fr24.sh
mktree.pl
mount-suroit.bat
oceano2oceansites.pl

Le répertoire data-raw contenant une copie des données brutes acquises pendant la campagne (scientifique et bord) :

su-nas > ls -1 PIRATA-FR24/data-raw
ADCP
BATOS
CELERITE
CINNA
CTD
LADCP
RADIOSONDAGE
SADCP
SOLEX
TECHSAS
THERMO

Le répertoire de travail data-processing où seront réalisés les traitements à bord :

su-nas > ls -1 PIRATA-FR24/data-processing
ADCP
BATOS
CELERITE
CHIMIE
CTD
LADCP
MERCATOR
PRODUCTS
RADIOSONDAGE
SADCP
SOLEX
THERMO

Le répertoire de travail CTD, on y retrouve généralement l’arborescence suivante :

su-nas > cd PIRATA-FR24/data-processing/CTD
su-nas > ls -l
batch
coupes
data
odv
plots
psa
tmp
tracks

batch        => répertoire contenant les scripts de traitements pour SBEDataProcessing
psa        => les fichiers de configuration de SBEDataProcessing
coupes        => les coupes ou sections
data        => répertoire contenant l’ensemble des données
odv        => répertoire de la collection ODV (optionnel)
plots        => les tracés réduits de chaque station
tracks        => la route du navire avec la position des stations CTD

Le sous répertoire data ou sont archivés les données :

su-nas > cd data
su-nas > ls -l
raw
asc
cnv
btl
ladcp
codac
nc
tmp

raw        => une copie des données présentes dans data-raw, fichiers .hex, .bl, .hdr et .xmlcon, fichiers qui peuvent être corrigées.
asc        => les fichiers ASCII des données CTD réduites (.hdr et .asc)
cnv        => les fichiers ASCII des données CTD réduites (.cnv)
btl        => les fichiers ASCII des données CTD aux niveaux de prélèvements
ladcp        => les données CTD acquises toutes les secondes pour le traitement LADCP
codac        => les fichiers réduits envoyés à CORIOLIS
nc        => Le répertoire contient un fichier NetCDF OceanSites par cast.
tmp        => répertoire des fichiers binaires des étapes de traitements intermédiaires

Installation

Logiciels Seabird

Récupérer et installer les dernières versions des logiciels Seasave et SbeDataProcessing.

Configurer Seasave pour une acquisition locale des fichiers sous c :\seasoft\nom_de_la_campagne

Logiciel Gow (GNU Over Windows)

GNU on Windows (Gow) permet d’utiliser les commandes GNU/Linux depuis Windows. Cet ensemble d’utilitaire est une bonne alternative à Cygwin car beaucoup plus léger et plus facile à installer. Il est alors possible d’utiliser des commandes Unix depuis l’invite de commande Windows.

Installer Gow sur le PC d’acquisition.

Perl

Perl est un langage, interprété qui s’inspire des structures de contrôle et d’impression du langage C, mais aussi de langages de scripts tels que sed, awk et shell (sh). C’est un langage disponible habituellement sous Unix mais il existe une version disponible gratuitement sous Windows
Récupérer la dernière version 5.16 et l’installer sur le PC d’acquisition.

Nous utiliserons Perl pour remplacer le programme SBEBatch fournit par Seabird pour les points suivants :

La machine virtuelle

L’installation d’une machine virtuelle Linux sur le PC d’acquisition où sur une autre machine sur le réseau n’est pas obligatoire mais elle est fortement conseillée si l’on veut convertir les fichiers Seabird sous d’autres formats comme le NetCDF ou ODV (Ocean Data View) ou réaliser ses propres sections et autres fichiers nécessaire pour la rédaction du rapport de mission.
Une fois installée et configurée, une machine virtuelle est facilement « clonnable » ce qui permet de déplacer ou de ré-installer en quelques minutes son environnement de travail avec un minimum de ressources.
Au laboratoire, j’utilise le logiciel VirtualBox.

Un billet décrivant les étapes d’installations et quelques astuces utiles se trouve ici.

Me contacter directement pour obtenir une image .ova d’une distribution Ubuntu pré-installée (10.04 LTS ou 14.04 LTS) avec Matlab R2013b, NetCDF, Perl et les modules nécessaires. Pour utiliser Matlab, vous devrez bien sur être en possession d’une clé de licence valide pour votre UID (login) et de l’adresse MAC de la VM.

Traitement SBEDataProcessing

Configuration

Afin de simplifier l’organisation, les scripts de traitement et les fichiers de configuration ont été scindés en plusieurs sous répertoires.
Dans le répertoire data-processing/CTD/batch, nous retrouvons les différentes étapes du traitement Seabird :

pirata-fr24-std.batch: réalise les étapes standards de traitement, conversion, filtrage, réduction et exportation en ASCII des données

pirata-fr24-btl.batch: traitement des fichiers bouteilles lorsque des prélèvements sont réalisés

pirata-fr24-codac.batch: réduction des données pour la transmission temps réel à Coriolis

pirata-fr24-ladcp.batch: traitement spécifique des profils CTD pour le traitement des données de courantométrie LADCP

pirata-fr24-seaplot.batch: tracés des profils réduits

Dans chacun des fichiers batch, les chemins et les numéros de stations seront passés en arguments par le script Perl process.pl. Ces informations n’étant pas codées en "dur", il sera possible de réutiliser ces scripts depuis n’importe quel support de sauvegarde.

exemple du script pirata-fr24-std.batch:

datcnv /f%1.cnv /i%2\data\raw\%1.hex /o%2\data\tmp /p%2\psa\std\datcnv.psa /c%2\data\raw\%1.xmlcon
wfilter /f%1.cnv /i%2\data\tmp\%1.cnv  /o%2\data\tmp /p%2\psa\std\W_Filter.psa /c%2\data\raw\%1.xmlcon
...

Dans le répertoire data-processing/CTD/psa, nous retrouvons les sous répertoires qui contiennent les fichiers de configurations .psa de chaque étape du traitement Seabird :

std/
btl/
codac/
ladcp/
seaplot/
seasave/

C’est le script Perl process.pl, qui en fonction des arguments passés en ligne de commande, va exécuter ou non les étapes du traitement.

> perl  m:\PIRATA-FR24\data-processing\CTD\process.pl

usage:   perl process.pl [options] first_station [last_station|"#w"]
Options:
   --help                 Display this help message
   --debug                display command, don't process
   --btl                  process sample
   --codac                process realtime data for CODAC
   --ladcp                process LADCP data
   --std|ctd              process Seabird cast
   --plot                 process plots
   --all                  process all steps, default

exemple : traitement global de la station 1

perl m:\PIRATA-FR24\data-processing\CTD\process.pl 001

exemple : génère uniquement les images des tracés réduits de la station 1 à 32

perl m:\PIRATA-FR24\data-processing\CTD\process.pl 001 032 --std

En début de campagne, pour configurer la chaîne de traitement et modifier/sauvegarder les étapes du traitement, il faudra lancer le script process.pl avec l’option "#w"

exemple :

perl m:\PIRATA-FR24\data-processing\CTD\process.pl 001 "#w"

A moins d’utiliser une configuration matérielle de la CTD identique d’une campagne à l’autre, ce passage est nécessaire pour adapter les fichiers de configuration .psa de chaque étape de traitement à la configuration de la bathysonde.

Acquisition et traitement

L’acquisition des données est réalisée en local sur le PC d’acquisition avec le logiciel Seasave.

Le déroulement de l’acquisition est réalisé en suivant les instructions décrites dans le document INSTR_UTILISATION_CTD_ET_LADCP.docx. Pour chaque station, les paramètres seront saisis à partir du formulaire FORM_FICHE_STATION.doc. Il est important de noter sur cette fiche toutes les informations utiles pour les traitements ultérieurs. Ces fiches de saisie seront précieusement archivées (version papier) puis numérisées, elles deviendront des enregistrements conservés dans le répertoire documents du SI.

Lorsque l’acquisition est terminée, les fichiers bruts sont copiés sur le réseau dans les répertoires data-raw et data-processing à l’aide du script copy-ctd.bat lancé depuis l’interpréteur de commande Windows.
Lancer le script de copie depuis le menu démarrer/exécuter avec le numéro de station en argument :

exemple :
M:\PIRATA-FR24\data-processing\CTD\copy-ctd.bat 001

Dans ce fichier de commande DOS, les chemins sont codés en dur et doivent être adaptés à configuration disponible à bord du navire.

Traitement de la station 1

exemple :
perl m:\PIRATA-FR24\data-processing\CTD\process.pl 001

Post-traitement

Il sera réalisé sous Linux à partir de la machine virtuelle. Un fichier de ressource .bashrc.nom_de_la_campagne se trouvant sous nom_de_la_campagne>/local/etc/skel contient l’ensemble des alias nécessaires aux traitements. Il suffit de rajouter les lignes suivantes dans votre fichier .bashrc et de faire pointer les variables d’environnement $DRIVE et $CRUISE vers les bons répertoires :

export DRIVE=/M
export CRUISE=PIRATA-FR24
echo "Trying to source ${DRIVE}/${CRUISE}/local/etc/skel/.bashrc.${CRUISE}"

if [ -f ${DRIVE}/${CRUISE}/local/etc/skel/.bashrc.${CRUISE} ]; then
 . ${DRIVE}/${CRUISE}/local/etc/skel/.bashrc.${CRUISE}
 echo "Yes, seems good !!!"
else
 echo "Can't source file !!! check your network, hard drive and/or ENV variables !!!"
fi

Voici un extrait du fichier de ressource pour la campagne PIRATA-FR24 :

# chemin d'accès aux donnes
export DATA=${DRIVE}/${CRUISE}

# chemin des scripts locaux
export LOCAL=${DRIVE}/${CRUISE}/local

# rajoute les chemins des scripts et du répertoire courant
export PATH=$PATH:${LOCAL}/sbin:.

# alias des repertoires pour PIRATA-FR24
alias DATAP='cd ${DATA}/data-processing'
alias DATAR='cd ${DATA}/data-raw'
alias FR24='cd ${DATA}'
alias CTD='cd ${DATA}/data-processing/CTD'
alias CODAC='cd ${DATA}/data-processing/CTD/codac'
alias BTL=CTD
alias XBT='cd ${DATA}/data-processing/CELERITE'
alias THERMO='cd ${DATA}/data-processing/THERMO'
alias TSG=THERMO

# CTD avec tous les capteurs primaires et l'option --top
alias ctd='perl ctd-pirata-fr24.pl --cycle_mesure=PIRATA-FR24 --institut=IRD --plateforme="LE SUROIT" --sn=09P10828-419 --type=SBE911+ --pi=BOURLES --date_debut=09/04/2014 --date_fin=21/05/2014 data/asc/fr24???.hdr --echo --local --top --all'
alias ctdnc='oceano2oceansites.pl --echo --short --nodtd pirata-fr24_ctd.xml'

# bouteilles
alias btl='perl btl-pirata-fr24.pl --echo data/btl/fr24*.btl'
alias btlnc='oceano2oceansites.pl --echo pirata-fr24_btl.xml --short --nodtd'

# XBT (CELERITE)
alias xbt='perl xbt-edf-pirata-fr24.pl --cycle_mesure=PIRATA-FR24 --institut=IRD --plateforme="LE SUROIT" --type=MK-21 --pi=BOURLES --date_debut=09/04/2014 --date_fin=21/05/2014 --echo --local data/*.EDF --all'
alias xbtnc='oceano2oceansites.pl --echo --short pirata-fr24_xbt.xml'
…

En modifiant les variables d’environnement $DRIVE et $CRUISE, de retour au laboratoire ou en déplacement, il est possible de se déplacer très facilement dans l’arborescence d’une campagne, que ce soit sur un disque externe ou sur un disque réseau.

Une fois les fichiers de la CTD Seabird acquis et traités avec la chaine SBEDataProcessing, il est intéressant, voir quasi indispensable de vérifier la qualité des données et de visualiser les premiers résultats. Pour cela, il est d’usage de regrouper l’ensemble des profils de données d’un instrument dans un seul fichier global et ce dans des formats différents, en fonction des choix ou des habitudes des utilisateurs finaux.

Pour cela, nous utilisons un premier script Perl ctd-pirata-fr24.pl, propre à chaque campagne, qui va générer 3 fichiers globaux ASCII, XML et ODV ainsi qu’un fichier d’entête des stations. Ce script sera modifié et adapté en fonction des paramètres physiques présents dans les fichiers .hdr et .asc. Il suffit ensuite d’entrer l’alias en majuscule CTD pour se déplacer dans le répertoire de traitement puis d’entrer l’alias en minuscule ctd pour lancer le script Perl avec les arguments correspondants aux paramètres de la campagne.

Un second script Perl btl-pirata-fr24.pl permet de réaliser un travail identique afin de générer des fichiers de données aux niveaux des prélèvements des échantillons.

Le script Perl générique oceano2oceansites.pl exécuté avec l’alias ctdnc réalisera une transformation du fichier XML au format NetCDF OceanSITES.

Soit en ligne de commande :

$ CTD
$ ctd
$ ctdnc

Il est alors facile de créer une fonction dans le script d’initialisation de la session bash qui réalisera l’ensemble de ces opérations :

function pctd
{
 CTD
 btl
 btlnc
 ctd
 ctdnc
}

Le même principe étant utilisé pour le traitement des autres instruments à bord (XBT, LADCP, TSG, météo, etc ...), on pourra entièrement automatiser le traitement des données. Voir les fonctions et alias à la fin du fichier de ressources de la campagne PIRATA-FR24.

Nous utilisons également un outil Matlab, baptisé dataGUI, qui permet de réaliser les premiers contrôles qualité sur les données et de tracer les sections et la position des stations au fil de l’eau.

Remarque : Cet outil utilisant des fichiers NetCDF, il peut également générer des produits identiques pour n’importe quel type d’instruments (XBT, LADCP, TSG, METEO, etc)

Log-book

Une fois par jour, l’opérateur responsable de l’acquisition CTD reportera dans un fichier Excel l’ensemble des informations relatives à chaque station ainsi que les changements de configuration, pannes et autres fait important. Voir l’exemple de fichier pour la campagne PIRATA-FR24. Ce document servira de référence lors des traitements ultérieurs.

Mise à disposition des scripts et documents

A la fin de chaque campagne, deux archives sont créées, l’une contenant les différentes instructions et formulaires (enregistrements) utilisés, la deuxième regroupant la totalité des scripts utilisés pour l’acquisition et la validation des données.

Se placer sous campagnes/PIRATA-FR24 par exemple. Voici la ligne de commande utilisée pour générer l’archive des scripts :

> find data-processing/CTD local \( -name "*.pl" -o -name "*.m" -o -name "*.sh" -o -name "*.psa" -o -name "*.bat" -o -name "*.batch" -o -name "*.CMD" \) | xargs tar zcvf scripts-PIRATA-FR24.tgz
scripts PIRATA-FR24

Liste des liens utiles