import React, { useState } from 'react'; interface Props { onClose: () => void; } export default function DataDocumentation({ onClose }: Props) { const [activeTab, setActiveTab] = useState<'overview' | 'channels' | 'pipeline' | 'conversion' | 'format'>('overview'); const tabs = [ { id: 'overview' as const, label: 'Vue d\'ensemble', icon: '📋' }, { id: 'channels' as const, label: 'Canaux', icon: '📊' }, { id: 'pipeline' as const, label: 'Pipeline', icon: '🔄' }, { id: 'conversion' as const, label: 'Conversion', icon: '⚙️' }, { id: 'format' as const, label: 'Format H5', icon: '📦' } ]; return (
{/* Header */}

Documentation Technique

{/* Tabs */}
{tabs.map(tab => ( ))}
{/* Content */}
{activeTab === 'overview' && (

Campagne SeaKESP - Sète 2020

Campagne d'acquisition sismique Ocean Bottom Node (OBN) réalisée en août-septembre 2020.

Données acquises

  • 345 fichiers RAW propriétaires (2.7 TB)
  • Durée totale : ~800 heures d'enregistrements continus
  • Plus long fichier : 60 heures (217k secondes)
  • Fréquence d'échantillonnage : 500 Hz

État de conversion

Conversion RAW → H5 en cours sur VM .81 (4 workers parallèles).

)} {activeTab === 'channels' && (

Canaux d'acquisition

Géophones (Canaux 1-3)

Capteurs de vitesse particulaire 3 composantes (X, Y, Z)

  • Type : Géophones 15.6 V/(m/s)
  • Unité finale : m/s (mètres par seconde)
  • Sensibilité ADC : 3.576e-7 V/bit
  • Calibration : m/s = (ADC × 3.576e-7) / 15.6

Hydrophone (Canal 4)

Capteur de pression acoustique

  • Type : Hydrophone 8.9 V/bar
  • Unité finale : Pa (Pascals)
  • Sensibilité ADC : 2.841e-6 V/bit
  • Calibration : Pa = (ADC × 2.841e-6 / 8.9) × 100000
  • Note : 1 bar = 100000 Pa
)} {activeTab === 'pipeline' && (

Pipeline de traitement

Étapes de conversion

  1. Fichier source : RAW propriétaire (format binaire non documenté)
  2. Conversion initiale : RAW → SEGY via MantaSegy
  3. Parsing SEGY : Extraction headers + données ADC brutes
  4. Calibration : Application formules ADC → unités physiques
  5. Export H5 : Sauvegarde données brutes + calibrées
  6. Validation : Vérification précision (erreur < 10⁻¹¹)

Objectif du traitement

Convertir les fichiers RAW propriétaires en format HDF5 standardisé avec :

  • Données ADC brutes (int32) pour archivage
  • Données calibrées en unités physiques (float32)
  • Métadonnées complètes (sample rate, durée, calibration)
)} {activeTab === 'conversion' && (

Détails de conversion

Configuration actuelle

  • Machine : VM .81 (osboxes@192.168.0.81)
  • Workers : 4 processus parallèles
  • Stockage source : NFS depuis Pi 52 (/mnt/seismic-data)
  • Stockage destination : Local VM puis rsync vers Pi 27

Formules de calibration

Géophones (canaux 1-3) :

m/s = (ADC_value × 3.576e-7 V/bit) / (15.6 V/(m/s))

Hydrophone (canal 4) :

Pa = (ADC_value × 2.841e-6 V/bit / 8.9 V/bar) × 100000 Pa/bar

Validation qualité

Précision de conversion vérifiée : erreur < 10⁻¹¹ entre calcul Python et valeurs attendues.

)} {activeTab === 'format' && (

Structure fichier H5

{`/
├── metadata (group)
│   ├── @duration_sec: 20.0
│   ├── @sample_rate_hz: 500
│   ├── @n_channels: 4
│   └── @n_samples: 10000
│
├── calibration (group)
│   ├── @geophone_v_per_bit: 3.576e-7
│   ├── @geophone_v_per_ms: 15.6
│   ├── @hydrophone_v_per_bit: 2.841e-6
│   └── @hydrophone_v_per_bar: 8.9
│
├── raw_data (group)
│   ├── channel_1 (dataset int32)
│   ├── channel_2 (dataset int32)
│   ├── channel_3 (dataset int32)
│   └── channel_4 (dataset int32)
│
└── calibrated_data (group)
    ├── channel_1 (dataset float32, unit: m/s)
    ├── channel_2 (dataset float32, unit: m/s)
    ├── channel_3 (dataset float32, unit: m/s)
    └── channel_4 (dataset float32, unit: Pa)`}

Avantages du format H5

  • Compression efficace : Réduction ~30% taille fichiers
  • Accès rapide : Lecture sélective par canal/plage temporelle
  • Métadonnées intégrées : Toutes les infos de calibration dans le fichier
  • Interopérabilité : Compatible Python, MATLAB, Julia, C++
  • Archivage : Données brutes + calibrées dans un seul fichier
)}
); }