This project implements a DSP pipeline for generation/loading, analyzing, filtering and visualizing time-signals. It was developed as a part of the course 22051 - Signals and linear systems in discrete time, Fall 25.
The analyzer can generate a synthetic signal or load a .wav file, apply resampling, design filters, compute DFT and STFT and several plots of both the signal and filter.
To use our analyser, you can either download the souce code, and run the main file from the terminal with
python -m src.adshca.signal_analyser [spec file] [--args]
OR you can install the python wheel!
The binaries are located in build/:
pip install ./build/adshca_group_10-2025.12.3-py3-none-any.whl
uvx build/adshca_group_10-2025.12.3-py3-none-any.whl
uv tool install build/adshca_group_10-2025.12.3-py3-none-any.whl
Almost identical to the python command, just call
adshc_analyse [spec file] [--args]
If you wish to remove it again, you can uninstall with:
pip uninstall adac_analyser
or
uv tool uninstall adac_analyser
- Python 3.12 or newer
If running manually without installing, the following dependencies are also needed:
- matplotlib >= 3.10.7
- numpy >= 2.2.6
- scipy >= 1.16.2
To run the analyzer, paste the following in the terminal:
with debug, use -v or --verbose
python signal_analyser.py [spec file].txt --verbose
without debug
python signal_analyser.py [spec file].txt
To choose a custom directory for saving the generated plots:
-o, --output
Example:
python signal_analyser.py specs.txt --output results/
If excluded, default directory plots/ is used.
Disable saving all plots to disk:
--no-save
Disable displaying all generated plots:
--no-show
The analyzer includes a logging system, that gives insight into every processing step. It is automatically enabled and the logs are written to a log file and saved in a generated directory adshca_logs/.
N.B. New log entries overwrite the existing log file on every run (if it exists).
├── pyproject.toml
├── README.md
├── src
│ └── adshca
│ ├── __init__.py
│ ├── filtering
│ │ ├── __init__.py
│ │ └── design_filter.py
│ ├── frequency_analysis
│ │ ├── __init__.py
│ │ └── fourier_transforms.py
│ ├── initialize
│ │ ├── __init__.py
│ │ ├── load.py
│ │ ├── logging_config.py
│ │ ├── resampling.py
│ │ └── utils.py
│ ├── signal_analyser.py
│ ├── signal_generation
│ │ ├── __init__.py
│ │ └── signal_generator.py
│ └── signal_plotting
│ ├── __init__.py
│ ├── plots.py
│ └── save.py
├── work_documents
│ ├── group_project_file_structure.txt
│ └── group_project_overview.txt
│
└── spec_files
├── global_specs_final_E25.txt <-- Final submission specs
├── global_specs.txt <-- Initial example specs
├── adshca_spec_test_1.txt
├── adshca_spec_test_2.txt
├── adshca_spec_test_3.txt
└── adshca_spec_test_4.txt