Skip to main content

A package for signal and system simulation, design, analysis, and learning.

Project description

Signal & System

Python NumPy Numba PyTorch

CI: pre-commit unit test: pytest code style: black imports: isort static type: mypy

build release license: MIT

A Python package for Signal & System simulation, design, analysis, and learning.

Dependency & installation

Requirements

Installation

Before installation, create a Python virtual environment to manage dependencies and ensure a clean installation of the Signal & System package.

  1. Create and activate a virtual environment: (One may use your preferred way to create a virtual environment. This tutorial uses Anaconda to manage environments.)

    # Change directory to your <working_directory>
    cd <working_directory>
    
    # Create a virtual environment of name <venv>
    # with Python version 3.13
    conda create --name <venv> python=3.13
    
    # Activate the virtual environment
    conda activate <venv>
    
    # Note: Exit the virtual environment
    conda deactivate
    
  2. Install Package: (two methods)

    # Install directly from GitHub
    pip install git+https://github.com/hanson-hschang/Signal-System.git
    
    # Or clone and install
    git clone https://github.com/hanson-hschang/Signal-System.git
    cd Signal-System
    pip install .
    
Click me to expand/collapse developer environment setup

Developer environment setup

  1. Clone and install development dependencies:

    git clone https://github.com/hanson-hschang/Signal-System.git
    cd Signal-System
    pip install -e ".[dev]"
    
  2. Generate development requirements file:

    pip-compile pyproject.toml --extra=dev --output-file=requirements-dev.txt
    
  3. Configure pre-commit hooks:

    pre-commit install
    

Development Tools

This project uses several tools for quality assurance:

Running Tests

# Standard test execution
pytest -c pyproject.toml

# Run tests with coverage report
pytest -c pyproject.toml --cov=src --cov-report=xml --cov-report=term

Code Style Guidelines

  • Adherence to PEP 8 style guidelines
  • Mandatory type hints for all functions and variables
  • Documentation using numpydoc format specification

Format codebase:

# Upgrade Python syntax
pyupgrade --exit-zero-even-if-changed --py38-plus src/**/*.py

# Apply code formatting
black --config pyproject.toml ./

# Perform static type checking
mypy --config-file pyproject.toml ./

# Organize imports
isort --settings-path pyproject.toml ./

Example

Please refer to examples directory and learn how to use this Signal & System package. Three types of examples are provided:

  • system provides various dynamic system simulations.
  • control provides various control methods over dynamic systems.
  • estimation provides various filtering and smoothing examples for different type of dynamic systems.

License

This project is released under the MIT License.

Contributing

  1. Fork this repository
  2. Create your feature branch (git checkout -b feat/amazing-feature)
  3. Make your changes
  4. Run the tests (pytest -c pyproject.toml)
  5. Commit your changes (git commit -m "feat: Add some amazing feature")
  6. Push to the feature branch (git push origin feat/amazing-feature)
  7. Open a Pull Request

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

signal_system-0.0.2.tar.gz (102.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

signal_system-0.0.2-py3-none-any.whl (184.4 kB view details)

Uploaded Python 3

File details

Details for the file signal_system-0.0.2.tar.gz.

File metadata

  • Download URL: signal_system-0.0.2.tar.gz
  • Upload date:
  • Size: 102.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for signal_system-0.0.2.tar.gz
Algorithm Hash digest
SHA256 af6ac401a388ffa6ae9e63ea65e07f9b9db03282b29c320166244d090da7d810
MD5 a09fab55ccfc711dbb9106f1ef0dfa3b
BLAKE2b-256 4c68f4ae32b2f6a0c79a5aaa397a9de35b14d326d279d925294b0ae011d0a602

See more details on using hashes here.

File details

Details for the file signal_system-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: signal_system-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 184.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for signal_system-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 babe8621b691035a9296055402ecb6ff39d06338aeeb855b9f620706b6b63a97
MD5 756f51b9c25084cec720b935ab53cc03
BLAKE2b-256 abf326bbf50f3ef39e5d33bff437afc5511ae7c7b2d355a0012ad2881809063d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page