deringeorge's picture
docs: add PR template, CI workflow, architecture docs, research log, and module docstrings
d901d8e
"""
Module 2: URN Prediction Core.
Predicts a ship's underwater radiated noise spectrum from the vessel parameters
produced by Module 1. The prediction is hybrid: a physics layer and an AI layer
run in sequence, and their outputs are fused into a single spectrum.
The physics layer interfaces with OpenFOAM and libAcoustics to simulate propeller
cavitation and hull-induced turbulence noise. This layer is computationally
intensive and optional during development; it can be bypassed to run the AI layer
alone. The AI layer is a deep neural network implemented in PyTorch, trained on
the ShipsEar dataset (Santos-Dominguez et al., 2016) and the QiandaoEar22 dataset.
The network takes the structured ``VesselParameters`` object as input features
and returns a predicted noise level for each 1/3-octave band from 20 Hz to 20 kHz.
Output levels are in dB re 1 μPa at 1 m, the standard reference for underwater
source levels used in IMO MEPC.1/Circ.906 Rev.1 (2024).
Libraries: ``torch``, ``numpy``, ``scipy.signal``. OpenFOAM is invoked as a
subprocess via the physics layer; it is not a Python dependency.
Pipeline position: Second stage. Receives ``VesselParameters`` from Module 1.
Outputs a ``URNSpectrum`` object (a dict mapping Hz to dB re 1 μPa at 1 m)
consumed by Module 3 and Module 4.
"""
from modules.urn_prediction.physics_layer import run_physics_prediction
from modules.urn_prediction.ai_layer import run_ai_prediction, fuse_spectra
__all__ = ["run_physics_prediction", "run_ai_prediction", "fuse_spectra"]