SPPAS Source Code Architecture
'sppas' is organized in three layers: core (minimal foundation), src (scientific engine and functional modules), and ui (graphical interfaces). The package is loaded in that order: core → src → ui.
1) Layer core/: minimal foundation
No external dependencies. Provides configuration, utilities, and localization.
core/config: global settings, language, metadata variables.core/coreutils: logging, error handling, report files.core/locale: localization files (en,fr).core/preinstall: pre-installation tasks and related tests.
2) Layer src/: engine and functional modules
Depends on core. Includes data management, algorithms, and annotations.
anndata/,imgdata/,videodata/: multimodal data structures and I/O.annotations/: automatic annotation modules (Formants, Momel, RMS, SpeechSeg, Align/models, etc.).calculus/: geometry, scoring, statistics, information theory.analysis/: linguistic and prosodic analysis modules.utils/,structs/,resources/,wkps/: shared tools and data structures.plugins/: optional extensions.dependencies/grako: internal grammar utilities.
Internal dependency model (src)
Copy/paste into yUML to visualize.
// Legend: [package], '>' means 'requires'
[calculus]>[config]
[utils]>[config]
[structs]>[config]
[structs]>[utils]
[wkps]>[config]
[wkps]>[structs]
[resources]>[config]
[anndata]>[config]
[anndata]>[utils]
[imgdata]>[config]
[imgdata]>[calculus]
[imgdata]>[anndata]
[videodata]>[config]
[videodata]>[imgdata]
[videodata]>[utils]
[annotations]>[config]
[annotations]>[utils]
[annotations]>[resources]
[annotations]>[anndata]
[plugins]>[config]
[plugins]>[utils]
[plugins]>[structs]
[annotations]>[imgdata]
[annotations]>[videodata]
[analysis]>[config]
[analysis]>[structs]
[analysis]>[anndata]
[analysis]>[calculus]
3) Layer ui/: user interfaces
ui/wxapp/: legacy wxPython interface.ui/swapp/: local web interface (WhakerPy + Whakerexa + WhakerKit). Static assets:css/,html/,icons/,images/,js/.ui/agnostic/,ui/term/: shared utilities.
Entry points and lifecycle
sppas/__init__.py: importscorethensrc; exposes global settings (__version__,__author__, etc.).sppas/__main__.py: GUI launcher. Checks Python version, imports dependencies, and startsui.wxapp. Migration in progress towardui.swapp.
Design principles
- Isolation:
corehas no external dependency. - Layered structure:
srcdepends oncore;uidepends on both. - Transition: wxPython interface maintained until full migration to the local web UI.