Signal-System


NameSignal-System JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryA package for signal and system simulation, design, analysis, and learning.
upload_time2025-08-22 17:48:22
maintainerNone
docs_urlNone
authorNone
requires_python>=3.13
licenseNone
keywords learning signal system
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align=center>
  <h1>Signal & System</h1>

![Python](https://img.shields.io/badge/Python-3776AB?logo=Python&logoColor=white)
![NumPy](https://img.shields.io/badge/NumPy-013243?logo=NumPy&logoColor=white)
![Numba](https://img.shields.io/badge/Numba-00A3E0?logo=Numba&logoColor=white)
![PyTorch](https://img.shields.io/badge/PyTorch-EE4C2C?logo=PyTorch&logoColor=white)


[![CI: pre-commit](https://img.shields.io/badge/CI-pre--commit-FAB040?logo=pre-commit)](https://pre-commit.com/)
[![unit test: pytest](https://img.shields.io/badge/unit_test-pytest-0A9EDC?logo=pytest)](https://docs.pytest.org/)
[![code style: black](https://img.shields.io/badge/code_style-black-black)](https://github.com/psf/black)
[![imports: isort](https://img.shields.io/badge/imports-isort-blue?labelColor=orange)](https://pycqa.github.io/isort/)
[![static type: mypy](https://img.shields.io/badge/static_type-mypy-blue)](https://mypy-lang.org/)

[![build](https://github.com/hanson-hschang/Signal-System/actions/workflows/build.yml/badge.svg)](https://github.com/hanson-hschang/Signal-System/actions/workflows/build.yml)
[![release](https://img.shields.io/github/v/release/hanson-hschang/Signal-System)](https://github.com/hanson-hschang/Signal-System/releases)
[![license: MIT](https://img.shields.io/badge/license-MIT-yellow)](https://opensource.org/licenses/MIT)

</div>

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

## Dependency & installation

### Requirements
  - Python version: 3.13
  - Additional package dependencies include: [NumPy](https://numpy.org/doc/stable/user/absolute_beginners.html), [SciPy](https://docs.scipy.org/doc/scipy/tutorial/index.html#user-guide), [Numba](https://numba.readthedocs.io/en/stable/user/5minguide.html), [PyTorch](https://pytorch.org/docs/stable/index.html), [Matplotlib](https://matplotlib.org/stable/users/explain/quick_start.html), [H5py](https://docs.h5py.org/en/stable/), [tqdm](https://tqdm.github.io/), and [Click](https://click.palletsprojects.com/en/stable/) (detailed in `pyproject.toml`)

### 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](https://docs.anaconda.com/) to manage environments.)

    ```properties
    # 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)

    ```properties
    # 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 .
    ```

<details>

<summary> Click me to expand/collapse developer environment setup </summary>

## Developer environment setup

1. Clone and install development dependencies:
    ```properties
    git clone https://github.com/hanson-hschang/Signal-System.git
    cd Signal-System
    pip install -e ".[dev]"
    ```

2. Generate development requirements file:
    ```properties
    pip-compile pyproject.toml --extra=dev --output-file=requirements-dev.txt
    ```

3. Configure pre-commit hooks:
    ```properties
    pre-commit install
    ```

### Development Tools

This project uses several tools for quality assurance:

- [pre-commit](https://pre-commit.com/): Git hooks for code quality checks
- [pytest](https://docs.pytest.org/en/stable/): Unit testing
- [Black](https://black.readthedocs.io/en/stable/): Code formatting
- [isort](https://pycqa.github.io/isort/): Package import sorting
- [mypy](https://mypy.readthedocs.io/en/stable/): Static type checking

### Running Tests
```properties
# 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](https://peps.python.org/pep-0008/) style guidelines
- Mandatory type hints for all functions and variables
- Documentation using  [numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) format specification

Format codebase:
```properties
# 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 ./
```

</details>

## Example

Please refer to [`examples`](https://github.com/hanson-hschang/Signal-System/tree/main/examples) directory and learn how to use this **Signal & System** package.
Three types of examples are provided:
  - [`system`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/system) provides various dynamic system simulations.
  - [`control`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/control) provides various control methods over dynamic systems.
  - [`estimation`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/estimation) provides various filtering and smoothing examples for different type of dynamic systems.

## License

This project is released under the [MIT License](https://github.com/hanson-hschang/Signal-System/blob/main/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

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "Signal-System",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": "Learning, Signal, System",
    "author": null,
    "author_email": "Heng-Sheng Chang <hanson.hschang+signal.system@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/4c/68/f4ae32b2f6a0c79a5aaa397a9de35b14d326d279d925294b0ae011d0a602/signal_system-0.0.2.tar.gz",
    "platform": null,
    "description": "<div align=center>\n  <h1>Signal & System</h1>\n\n![Python](https://img.shields.io/badge/Python-3776AB?logo=Python&logoColor=white)\n![NumPy](https://img.shields.io/badge/NumPy-013243?logo=NumPy&logoColor=white)\n![Numba](https://img.shields.io/badge/Numba-00A3E0?logo=Numba&logoColor=white)\n![PyTorch](https://img.shields.io/badge/PyTorch-EE4C2C?logo=PyTorch&logoColor=white)\n\n\n[![CI: pre-commit](https://img.shields.io/badge/CI-pre--commit-FAB040?logo=pre-commit)](https://pre-commit.com/)\n[![unit test: pytest](https://img.shields.io/badge/unit_test-pytest-0A9EDC?logo=pytest)](https://docs.pytest.org/)\n[![code style: black](https://img.shields.io/badge/code_style-black-black)](https://github.com/psf/black)\n[![imports: isort](https://img.shields.io/badge/imports-isort-blue?labelColor=orange)](https://pycqa.github.io/isort/)\n[![static type: mypy](https://img.shields.io/badge/static_type-mypy-blue)](https://mypy-lang.org/)\n\n[![build](https://github.com/hanson-hschang/Signal-System/actions/workflows/build.yml/badge.svg)](https://github.com/hanson-hschang/Signal-System/actions/workflows/build.yml)\n[![release](https://img.shields.io/github/v/release/hanson-hschang/Signal-System)](https://github.com/hanson-hschang/Signal-System/releases)\n[![license: MIT](https://img.shields.io/badge/license-MIT-yellow)](https://opensource.org/licenses/MIT)\n\n</div>\n\nA Python package for **Signal & System** simulation, design, analysis, and learning.\n\n## Dependency & installation\n\n### Requirements\n  - Python version: 3.13\n  - Additional package dependencies include: [NumPy](https://numpy.org/doc/stable/user/absolute_beginners.html), [SciPy](https://docs.scipy.org/doc/scipy/tutorial/index.html#user-guide), [Numba](https://numba.readthedocs.io/en/stable/user/5minguide.html), [PyTorch](https://pytorch.org/docs/stable/index.html), [Matplotlib](https://matplotlib.org/stable/users/explain/quick_start.html), [H5py](https://docs.h5py.org/en/stable/), [tqdm](https://tqdm.github.io/), and [Click](https://click.palletsprojects.com/en/stable/) (detailed in `pyproject.toml`)\n\n### Installation\n\nBefore installation, create a Python virtual environment to manage dependencies and ensure a clean installation of the **Signal & System** package.\n\n1. Create and activate a virtual environment: (One may use your preferred way to create a virtual environment.\nThis tutorial uses [Anaconda](https://docs.anaconda.com/) to manage environments.)\n\n    ```properties\n    # Change directory to your <working_directory>\n    cd <working_directory>\n\n    # Create a virtual environment of name <venv>\n    # with Python version 3.13\n    conda create --name <venv> python=3.13\n\n    # Activate the virtual environment\n    conda activate <venv>\n\n    # Note: Exit the virtual environment\n    conda deactivate\n    ```\n\n2. Install Package: (two methods)\n\n    ```properties\n    # Install directly from GitHub\n    pip install git+https://github.com/hanson-hschang/Signal-System.git\n\n    # Or clone and install\n    git clone https://github.com/hanson-hschang/Signal-System.git\n    cd Signal-System\n    pip install .\n    ```\n\n<details>\n\n<summary> Click me to expand/collapse developer environment setup </summary>\n\n## Developer environment setup\n\n1. Clone and install development dependencies:\n    ```properties\n    git clone https://github.com/hanson-hschang/Signal-System.git\n    cd Signal-System\n    pip install -e \".[dev]\"\n    ```\n\n2. Generate development requirements file:\n    ```properties\n    pip-compile pyproject.toml --extra=dev --output-file=requirements-dev.txt\n    ```\n\n3. Configure pre-commit hooks:\n    ```properties\n    pre-commit install\n    ```\n\n### Development Tools\n\nThis project uses several tools for quality assurance:\n\n- [pre-commit](https://pre-commit.com/): Git hooks for code quality checks\n- [pytest](https://docs.pytest.org/en/stable/): Unit testing\n- [Black](https://black.readthedocs.io/en/stable/): Code formatting\n- [isort](https://pycqa.github.io/isort/): Package import sorting\n- [mypy](https://mypy.readthedocs.io/en/stable/): Static type checking\n\n### Running Tests\n```properties\n# Standard test execution\npytest -c pyproject.toml\n\n# Run tests with coverage report\npytest -c pyproject.toml --cov=src --cov-report=xml --cov-report=term\n```\n\n### Code Style Guidelines\n\n- Adherence to [PEP 8](https://peps.python.org/pep-0008/) style guidelines\n- Mandatory type hints for all functions and variables\n- Documentation using  [numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) format specification\n\nFormat codebase:\n```properties\n# Upgrade Python syntax\npyupgrade --exit-zero-even-if-changed --py38-plus src/**/*.py\n\n# Apply code formatting\nblack --config pyproject.toml ./\n\n# Perform static type checking\nmypy --config-file pyproject.toml ./\n\n# Organize imports\nisort --settings-path pyproject.toml ./\n```\n\n</details>\n\n## Example\n\nPlease refer to [`examples`](https://github.com/hanson-hschang/Signal-System/tree/main/examples) directory and learn how to use this **Signal & System** package.\nThree types of examples are provided:\n  - [`system`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/system) provides various dynamic system simulations.\n  - [`control`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/control) provides various control methods over dynamic systems.\n  - [`estimation`](https://github.com/hanson-hschang/Signal-System/tree/main/examples/estimation) provides various filtering and smoothing examples for different type of dynamic systems.\n\n## License\n\nThis project is released under the [MIT License](https://github.com/hanson-hschang/Signal-System/blob/main/LICENSE).\n\n## Contributing\n\n1. Fork this repository\n2. Create your feature branch (`git checkout -b feat/amazing-feature`)\n3. Make your changes\n4. Run the tests (`pytest -c pyproject.toml`)\n5. Commit your changes (`git commit -m \"feat: Add some amazing feature\"`)\n6. Push to the feature branch (`git push origin feat/amazing-feature`)\n7. Open a Pull Request\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A package for signal and system simulation, design, analysis, and learning.",
    "version": "0.0.2",
    "project_urls": null,
    "split_keywords": [
        "learning",
        " signal",
        " system"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "abf326bbf50f3ef39e5d33bff437afc5511ae7c7b2d355a0012ad2881809063d",
                "md5": "756f51b9c25084cec720b935ab53cc03",
                "sha256": "babe8621b691035a9296055402ecb6ff39d06338aeeb855b9f620706b6b63a97"
            },
            "downloads": -1,
            "filename": "signal_system-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "756f51b9c25084cec720b935ab53cc03",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 184401,
            "upload_time": "2025-08-22T17:48:20",
            "upload_time_iso_8601": "2025-08-22T17:48:20.428504Z",
            "url": "https://files.pythonhosted.org/packages/ab/f3/26bbf50f3ef39e5d33bff437afc5511ae7c7b2d355a0012ad2881809063d/signal_system-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4c68f4ae32b2f6a0c79a5aaa397a9de35b14d326d279d925294b0ae011d0a602",
                "md5": "a09fab55ccfc711dbb9106f1ef0dfa3b",
                "sha256": "af6ac401a388ffa6ae9e63ea65e07f9b9db03282b29c320166244d090da7d810"
            },
            "downloads": -1,
            "filename": "signal_system-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "a09fab55ccfc711dbb9106f1ef0dfa3b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 102328,
            "upload_time": "2025-08-22T17:48:22",
            "upload_time_iso_8601": "2025-08-22T17:48:22.198070Z",
            "url": "https://files.pythonhosted.org/packages/4c/68/f4ae32b2f6a0c79a5aaa397a9de35b14d326d279d925294b0ae011d0a602/signal_system-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-22 17:48:22",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "signal-system"
}
        
Elapsed time: 1.13365s