Skip to content
Back to skills

Signal Analysis

ASecurity

Perform signal processing, rainflow cycle counting, and spectral analysis

  • 17 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
datapythongogitapi

Works with

  • api

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add vamseeachanta/workspace-hub --skill signal-analysis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Signal Analysis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Signal Analysis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vamseeachanta-signal-analysis-workspace-hub/badge)](https://www.skillsdirectory.com/skills/vamseeachanta-signal-analysis-workspace-hub)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: signal-analysis
description: Perform signal processing, rainflow cycle counting, and spectral analysis
  for fatigue and time series data. Use for analyzing stress time histories, computing
  FFT/PSD, extracting fatigue cycles (ASTM E1049-85), and batch processing OrcaFlex
  signals.
type: reference
updated: '2026-01-07'
capabilities: []
requires: []
tags: []
scripts_exempt: true
category: engineering
version: 1.0.0
---

<!-- ace:api-missing-warning -->
> [!WARNING]
> **Part of the Python API documented below does not exist in
> `digitalmodel`.** These snippets are a *specification* of intended
> capability, not runnable code. Do not import them, and do not report
> a result obtained by pretending they ran.
>
> Absent as of this revision:
>   - `digitalmodel.signal_processing.signal_analysis.orcaflex_signals`
>   - `digitalmodel.signal_processing.signal_analysis.orcaflex_signals.OrcaFlexSignalExtractor`
>   - `digitalmodel.signal_processing.signal_analysis.readers`
>   - `digitalmodel.signal_processing.signal_analysis.readers.GenericTimeSeriesReader`
>   - `digitalmodel.signal_processing.signal_analysis.time_series`
>   - `digitalmodel.signal_processing.signal_analysis.time_series.TimeSeriesProcessor`
>
> The surrounding engineering content — method, conventions, what to
> watch for — is unaffected and remains usable. Tracked in
> aceengineer-strategy#267.

<!-- ace:known-missing: digitalmodel.signal_processing.signal_analysis.orcaflex_signals, digitalmodel.signal_processing.signal_analysis.orcaflex_signals.OrcaFlexSignalExtractor, digitalmodel.signal_processing.signal_analysis.readers, digitalmodel.signal_processing.signal_analysis.readers.GenericTimeSeriesReader, digitalmodel.signal_processing.signal_analysis.time_series, digitalmodel.signal_processing.signal_analysis.time_series.TimeSeriesProcessor -->

# Signal Analysis

## When to Use

- Analyzing fatigue from stress/load time series
- Computing rainflow cycles for damage calculation
- FFT and power spectral density analysis
- Frequency spectrum characterization
- Batch processing OrcaFlex simulation signals
- Time series conditioning and filtering
- Converting time-domain data to frequency-domain

## Prerequisites

- Python environment with `digitalmodel` package installed
- Time series data in CSV, Excel, or OrcaFlex format
- For OrcaFlex signals: completed .sim files

## Python API

### Rainflow Cycle Counting

```python
from digitalmodel.signal_processing.signal_analysis.core.rainflow import RainflowCounter

# Initialize counter
counter = RainflowCounter()

# Load time history
import pandas as pd
data = pd.read_csv("stress_time_history.csv")
time = data["time"].values

*See sub-skills for full details.*
### Spectral Analysis

```python
from digitalmodel.signal_processing.signal_analysis.core.spectral import SpectralAnalyzer
import numpy as np

# Initialize analyzer
analyzer = SpectralAnalyzer()

# Load signal
data = pd.read_csv("motion_time_history.csv")
time = data["time"].values

*See sub-skills for full details.*
### Time Series Processing

```python
from digitalmodel.signal_processing.signal_analysis.time_series import TimeSeriesProcessor

# Initialize processor
processor = TimeSeriesProcessor()

# Load raw data
data = pd.read_csv("raw_signal.csv")
time = data["time"].values
signal = data["stress"].values

*See sub-skills for full details.*
### OrcaFlex Signal Extraction

```python
from digitalmodel.signal_processing.signal_analysis.orcaflex_signals import OrcaFlexSignalExtractor
from pathlib import Path

# Initialize extractor
extractor = OrcaFlexSignalExtractor()

# Extract time history from single .sim file
sim_file = Path("simulation.sim")
time, tension = extractor.extract_time_history(

*See sub-skills for full details.*
### Generic Time Series Reader

```python
from digitalmodel.signal_processing.signal_analysis.readers import GenericTimeSeriesReader

# Auto-detect file format and load
reader = GenericTimeSeriesReader()

# Read CSV
data = reader.read("data/measurements.csv")

# Read Excel

*See sub-skills for full details.*

## Related Skills

- [fatigue-analysis](../fatigue-analysis/SKILL.md) - Use rainflow cycles for fatigue damage calculation
- [orcaflex/post-processing](../orcaflex/post-processing/SKILL.md) - Extract time histories from OrcaFlex
- [structural-analysis](../structural-analysis/SKILL.md) - Stress analysis for signal generation

## References

- ASTM E1049-85: Standard Practices for Cycle Counting in Fatigue Analysis
- Welch, P.D. (1967): The Use of FFT for Estimation of Power Spectra
- DNV-RP-C203: Fatigue Design of Offshore Steel Structures

## Sub-Skills

- [Signal Quality (+2)](signal-quality/SKILL.md)

## Sub-Skills

- [Error Handling](error-handling/SKILL.md)

## Sub-Skills

- [Version Metadata](version-metadata/SKILL.md)
- [[1.0.0] - 2026-01-07](100-2026-01-07/SKILL.md)
- [1. Rainflow Cycle Counting (ASTM E1049-85) (+4)](1-rainflow-cycle-counting-astm-e1049-85/SKILL.md)
- [Complete Signal Analysis Workflow (+1)](complete-signal-analysis-workflow/SKILL.md)
- [Rainflow Cycles CSV (+2)](rainflow-cycles-csv/SKILL.md)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…