Skip to content

Tyrin451/SignalUtils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SignalUtils

signalutils est une librairie Python pour la manipulation d'accélérogrammes, de spectres de réponse (SRO) et de Densités Spectrales de Puissance (DSP). Elle offre des outils pour générer des signaux, calculer des spectres de réponse, et effectuer des conversions entre différents types de signaux.

Fonctionnalités principales

  • Génération de signaux : Sinus, demi-sinus, dent de scie, signaux aléatoires.
  • Traitement du signal : FFT, PSD (Periodogramme, Welch), rééchantillonnage, interpolation.
  • Spectre de Réponse (SRO) : Calcul de SRO à partir de signaux temporels (méthodes NIGAM, HARMO, Kelly-Richman, Smallwood).
  • Spectre de Réponse Extrême (ERS) : Calcul de SRO à partir d'une DSP (formules de Vanmarcke).
  • Manipulation : Intégration, dérivation, mise à l'échelle.

Installation

Le projet utilise uv pour la gestion des dépendances, mais peut être installé via pip si les dépendances sont satisfaites.

pip install numpy scipy tqdm

Si vous clonez le dépôt :

git clone https://github.com/votre-repo/signalutils.git
cd signalutils
pip install .

Utilisation

Voici quelques exemples pour démarrer avec signalutils.

1. Génération de signaux temporels

Vous pouvez générer des signaux simples comme des sinusoïdes ou des signaux aléatoires.

import numpy as np
import matplotlib.pyplot as plt
from signalutils.samplers import Sampler
from signalutils.generators import sinewave, random_signal

# Définition de l'échantillonnage : durée de 5 secondes avec un pas de temps de 1ms
S = Sampler(dt=1e-3, duration=5)

# Génération d'un sinus de 4 Hz et d'amplitude 10
sinus = sinewave(amplitude=10, frequency=4, **S)

# Génération d'un signal aléatoire
bruit = random_signal(amplitude=2, freq_filtre=100, **S)

# Affichage
plt.plot(sinus.x, sinus.y, label='Sinus')
plt.plot(bruit.x, bruit.y, label='Bruit')
plt.legend()
plt.show()

2. Calcul d'un Spectre de Réponse (SRO)

Calculez le spectre de réponse d'un signal temporel (par exemple pour l'analyse sismique).

from signalutils.samplers import Sampler
from signalutils.generators import sinewave

# Signal d'entrée
S = Sampler(dt=1e-3, duration=5)
sinus = sinewave(amplitude=10, frequency=4, **S)

# Définition des fréquences pour le calcul du SRO
SR = Sampler(freq_coupure=100, n=200) # Jusqu'à 100 Hz

# Calcul du SRO avec un amortissement de 5%
# Retourne un dictionnaire avec les spectres de déplacement (0), vitesse (1) et accélération (2)
sro_dict = sinus.SRO(SR.liste_freq, xi=0.05, method='NIGAM')

spectre_accel = sro_dict[0.05][2] # Spectre d'accélération pour xi=0.05

print(f"ZPA (Zero Period Acceleration): {spectre_accel.ZPV}")
print(f"Accélération max: {spectre_accel.max}")

3. Densité Spectrale de Puissance (DSP)

Convertissez un signal temporel en DSP ou manipulez directement des DSP.

# Calcul de la DSP d'un signal temporel
dsp = sinus.psd(method='periodogram')

# Calcul de la valeur RMS depuis la DSP
rms_val = dsp.rms
print(f"Valeur RMS: {rms_val}")

4. Manipulation de signaux

# Intégration (Accélération -> Vitesse)
vitesse = sinus.integrate()

# Dérivation (Vitesse -> Accélération)
accel = vitesse.derivative()

# Rééchantillonnage
nouveau_temps = np.linspace(0, 5, 100)
signal_resample = sinus.resample(nouveau_temps)

Structure du projet

  • signalutils/signals.py : Classes principales (Signal, TimeSignal, Spectrum, PsdSpectrum).
  • signalutils/generators.py : Générateurs de signaux (sinus, etc.).
  • signalutils/samplers.py : Gestion de l'échantillonnage (Sampler).
  • signalutils/utils/ : Algorithmes de calcul (NIGAM, filtres, etc.).

Tests

Les tests sont écrits avec le framework unittest. Pour les lancer :

python -m unittest discover tests

Note : Certaines méthodes optimisées (NIGAM_C) nécessitent une compilation C/Cython qui peut ne pas être présente par défaut. Le code bascule automatiquement sur la version Python si nécessaire.

About

Projet de librairie pour la manipulation d'accélérogramme, de spectre de réponse et de DSP.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages