PhD Aljoscha Sander - Code Basis
- Jupyter Notebook 98.2%
- Python 1.8%
| .opencode/plans | ||
| docs | ||
| examples/structd | ||
| notebooks | ||
| results | ||
| scripts | ||
| src | ||
| tests | ||
| .cookiecutter.json | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| coverage.json | ||
| LICENSE | ||
| Makefile | ||
| mkdocs.yml | ||
| package-lock.json | ||
| package.json | ||
| pyproject.toml | ||
| README.md | ||
| test.toml | ||
| test_beam_analytical_verification.png | ||
| test_data.db | ||
| uv.lock | ||
phdsan - Structural Health Monitoring of Offshore Wind Turbine Installations
phdsan is a Python monorepo for PhD research on structural health monitoring and dynamic analysis of offshore wind turbine installations. It provides tools for processing sensor data, performing advanced signal analysis, and extracting structural parameters from vibration measurements collected during installation operations.
Features
- Data Management: DuckDB-based storage with multi-sensor support and reproducibility tracking
- Signal Processing: Butterworth filtering, double integration with drift correction, coordinate transformations
- Advanced Analysis: Stochastic methods, nonlinear dynamics, fatigue analysis, time-frequency analysis
- Structural Dynamics: 2-DOF and 3-DOF eccentric mass oscillator models with FEM beam solver (structd)
- Environmental Correlation: ERA5 integration, wave-wind-structure correlation
Quick Start
# Clone and install
git clone https://github.com/flucto-gmbh/phdsan.git
cd phdsan
make install
# Run tests
uv run pytest
# Start Jupyter Lab
uv run jupyter lab
Basic Usage
from twbii.db.connection import create_database, DatabaseConnection
from twbii.processing import process_acceleration_data
from analysis.fatigue.rainflow import analyze_rainflow
# Create database and process data
create_database("turbine_data.db")
with DatabaseConnection("turbine_data.db") as conn:
# Process acceleration data
deflection_df = process_acceleration_data(
conn, turbine_id="20_BW27", location="helihoist-1",
start_time="2021-07-15 10:00", end_time="2021-07-15 12:00"
)
# Analyze fatigue cycles
cycles_df = analyze_rainflow(deflection_df, component="deflection")
Documentation
Full documentation is available at the documentation site or can be built locally:
uv run mkdocs serve
Package Structure
The project contains five packages (core, analysis, twbii, ispy, structd) with three CLI entry points.
core— Shared infrastructure (config, types, exceptions, validation)analysis— Generic analysis algorithms (signal processing, fatigue, nonlinear dynamics, stochastic, wavelets, DTW)twbii— Offshore wind turbine data toolkit (CLI, database, I/O, processing pipelines)ispy— AIS vessel tracking & windfarm matchingstructd— Beam FEM solver
phdsan/
├── src/
│ ├── core/ # Shared infrastructure (config, types, exceptions, validation)
│ │ └── db/ # Base database connection (DatabaseConnection)
│ ├── analysis/ # Generic analysis algorithms (depends on: core)
│ │ ├── processing/ # Filters, integration, resampling
│ │ ├── fatigue/ # Rainflow counting, fatigue damage
│ │ ├── nonlinear/ # Phase space, Lyapunov, correlation dimension
│ │ ├── stochastic/ # Envelope, narrowband, Rayleigh, random decrement
│ │ ├── similarity/ # DTW time series comparison
│ │ └── timefreq/ # Wavelet analysis
│ ├── twbii/ # Offshore wind turbine data toolkit (CLI: twbii)
│ │ ├── core/ # twbii-specific configs (DatabaseConfig, CatalogConfig, etc.)
│ │ ├── db/ # DuckDB schema, catalog, ingestion, models
│ │ ├── io/ # Data parsers (TOM, MSR, wave, wind, LIDAR)
│ │ ├── processing/ # Signal processing pipelines
│ │ ├── analysis/ # twbii-specific: availability, export, parameter sweep
│ │ ├── metocean/ # ERA5 reanalysis client
│ │ └── cli/ # twbii CLI commands
│ ├── ispy/ # AIS vessel tracking & windfarm matching (CLI: ispy)
│ │ ├── ais/ # AIS CSV parsing, spatial filtering, clustering
│ │ ├── windfarm/ # Windfarm matching, registry, installations
│ │ ├── db/ # ispy-specific database models
│ │ └── cli/ # ispy CLI commands
│ └── structd/ # Beam FEM solver (CLI: structd)
│ └── cli/ # structd CLI commands
├── tests/ # Test suite (mirrors src/ structure)
├── notebooks/ # Jupyter notebooks
├── docs/ # MkDocs documentation
└── scripts/ # Utility scripts
Development
# Install with dev dependencies
make install
# Run tests
make test
# Code quality
uv run ruff check --fix
uv run ty check src/
# Build documentation
make docs
License
MIT License - See LICENSE for details.
Citation
@software{phdsan2026,
title = {phdsan: Structural Health Monitoring of Offshore Wind Turbine Installations},
author = {Sander, Aljoscha},
year = {2026},
url = {https://github.com/flucto-gmbh/phdsan}
}
Project Status: Active development