Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
848fe54
Direct implementation of R `ssm_analysis()`
MitchellAcoustics Jul 5, 2024
1ce506d
Implement circle plotting
MitchellAcoustics Jul 5, 2024
bf18bb6
changed plotting to seaborn
MitchellAcoustics Jul 5, 2024
733c5f1
fix bug with test palette
MitchellAcoustics Jul 5, 2024
a06b70d
formatting
MitchellAcoustics Jul 5, 2024
2913794
refactored into four main files
MitchellAcoustics Jul 8, 2024
6de9f69
implement profile plots
MitchellAcoustics Jul 9, 2024
77ba165
fix bug in profile plot
MitchellAcoustics Jul 9, 2024
88d852d
add option for elevation hline
MitchellAcoustics Jul 9, 2024
35d69cb
rename profile plot function
MitchellAcoustics Jul 9, 2024
eafb967
restructure whole module
MitchellAcoustics Jul 11, 2024
2b4438b
`ssm_parameters` always accepts and returns degrees
MitchellAcoustics Jul 11, 2024
3565192
Add visualisation tests
MitchellAcoustics Jul 11, 2024
8217bb3
Revert to allowing negative displacements for cis
MitchellAcoustics Jul 11, 2024
2697e74
Refactor API for better consistency and documentation
MitchellAcoustics Feb 26, 2025
04e05bb
Update Python version, project dependencies and add uv.lock
MitchellAcoustics Feb 26, 2025
e570708
Fix type annotation in utils.py to avoid circular import issues
MitchellAcoustics Feb 26, 2025
5481b65
Update tests to accept ValueError for invalid inputs
MitchellAcoustics Feb 26, 2025
465fa7c
Fix pandas DeprecationWarning in groupby operation
MitchellAcoustics Feb 26, 2025
705c577
Remove include_groups parameter for compatibility with older pandas v…
MitchellAcoustics Feb 26, 2025
71b4691
Update Random_exs.ipynb to use ssm_analyze instead of deprecated ssm_…
MitchellAcoustics Feb 26, 2025
b073819
Add test for notebook structure validation
MitchellAcoustics Feb 26, 2025
dc71a26
test notebooks
MitchellAcoustics Feb 26, 2025
1286421
Add new GitHub Actions workflows for CI/CD
Nov 8, 2025
f155fcf
Update existing GitHub Actions workflow formatting
Nov 8, 2025
8464668
Add development tooling configuration files
Nov 8, 2025
8c62127
Update .gitignore with comprehensive exclusions
Nov 8, 2025
c802d07
Modernize pyproject.toml with new build system and dependencies
Nov 8, 2025
b1bb097
Fix code formatting and style issues across codebase
Nov 8, 2025
bf2c664
Format JSON instrument configuration files
Nov 8, 2025
d8d89ab
Improve test code formatting and readability
Nov 8, 2025
93a7d6e
Clean up documentation formatting and content
Nov 8, 2025
a8f17ff
Configure markdownlint to allow raw HTML
Nov 8, 2025
731c13a
Improve README.md formatting by separating title and logo
Nov 8, 2025
d37f4ae
Reorganize documentation index page layout
Nov 8, 2025
dfc7f8f
Add proper heading to license documentation
Nov 8, 2025
fb90619
Fix indentation and formatting in pyproject.toml
Nov 8, 2025
3e9d8c4
Add nptyping dependency for improved type annotations
Nov 8, 2025
11e5147
Remove debugging cell marker from instrument.py
Nov 8, 2025
f7402c4
Add type ignore comments for missing type annotations
Nov 8, 2025
1793061
Improve type annotations in instrument.py method signatures
Nov 8, 2025
4e11332
Add TYPE_CHECKING import and nptyping support in ssm_analysis.py
Nov 8, 2025
5ace5ac
Update tuple type annotations for variable length tuples
Nov 8, 2025
fb25f87
Enhance ssm_parameters function with precise NDArray typing
Nov 8, 2025
4cdb1b5
Clean up unused imports in ssm_results.py
Nov 8, 2025
8c6eeb4
Modernize imports and add precise NumPy typing in utils.py
Nov 8, 2025
a10103e
Add precise NDArray type annotations to utility functions
Nov 8, 2025
88599a1
Add type ignore comment for optional attribute access
Nov 8, 2025
d7f4bde
Update visualization.py imports and type annotations
Nov 8, 2025
191266f
Add type safety improvements for matplotlib and array operations
Nov 8, 2025
792355e
Add type ignore for intentional test error case
Nov 8, 2025
f9f04b6
tutorials
Nov 8, 2025
fe26914
chore: clean up development and CI configuration files
Nov 9, 2025
8d2b4d4
chore: update documentation dependencies and ReadTheDocs configuration
Nov 9, 2025
3991d3f
chore: bump version to 0.3.0 in citation file
Nov 9, 2025
0abe8ca
docs: add GPL-3.0 license file
Nov 9, 2025
11f72a5
docs: modernize README with new badge layout and code blocks
Nov 9, 2025
4a2da70
docs: completely restructure MkDocs configuration for new documentati…
Nov 9, 2025
f37f6d1
build: modernize project configuration with setuptools and enhanced t…
Nov 9, 2025
354045d
chore: update deps lock files
Nov 9, 2025
2d65007
Add regression tests for ssm_analyze and utility functions; remove ou…
Nov 9, 2025
35ba45e
docs: Update README with enhanced branding and badges
Nov 9, 2025
c9c0f43
docs: Restructure main documentation index page
Nov 9, 2025
0d303f6
docs: Add comprehensive API reference structure
Nov 9, 2025
87243fc
docs: Add MathJax and KaTeX support for mathematical expressions
Nov 9, 2025
d020506
docs: Update license from BSD to GNU GPL v3
Nov 9, 2025
9805744
docs: Improve CSS styling and layout
Nov 9, 2025
ab45e89
docs: Clean up legacy documentation files
Nov 9, 2025
876f657
docs: add new examples
Nov 9, 2025
ba68b54
Remove legacy modules and files
Nov 9, 2025
be7c8c7
Add utility module for package detection
Nov 9, 2025
f0fbbc5
Add SSM analysis results classes
Nov 9, 2025
2499f93
Refactor package initialization and exports
Nov 9, 2025
905bd69
Add SSM analysis package structure and __init__ files
Nov 9, 2025
c39ac59
Add core SSM parameter calculation engine
Nov 9, 2025
c61cc94
Add angle utilities and predefined angle sets
Nov 9, 2025
1fc126e
Add contrast and circular difference utilities
Nov 9, 2025
2eb9a0b
Add data tidying and instrument scoring functions
Nov 9, 2025
c346c0e
Add bootstrap confidence interval calculation
Nov 9, 2025
098294d
Add mean-based SSM analysis implementation
Nov 9, 2025
ab2b392
Add correlation-based SSM analysis implementation
Nov 9, 2025
87fa028
Add main SSM analysis function and SSM class integration
Nov 9, 2025
718cd58
Add visualization package with plotting utilities
Nov 9, 2025
e5b814b
Add comprehensive matplotlib-based plotting functions
Nov 9, 2025
5b9c619
Update core package structure and remove obsolete instrument module
Nov 9, 2025
eedefaa
Remove legacy JSON instrument definitions
Nov 9, 2025
8d6b82a
Add instrument data models and registry system
Nov 9, 2025
82f4252
Add instruments package initialization
Nov 9, 2025
d54cee9
Add Python-based instrument definitions
Nov 9, 2025
d84f9ab
Add data loading utilities and example datasets
Nov 9, 2025
5fa64a9
Standardizes code formatting and adds JSON schema
Nov 9, 2025
669db48
Improves API flexibility and adds utility functions
Nov 9, 2025
3479f57
Add Python version specification file
Nov 9, 2025
77a4c16
Fix item retrieval logic in Instrument class and refine scale type ch…
Nov 9, 2025
aa942d0
Remove LICENSE.md file as part of project restructuring
Nov 9, 2025
69f66df
Update license references to use consistent casing for LICENSE file
Nov 9, 2025
0b05add
Update license references to use consistent casing and improve docume…
Nov 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Documentation

on:
push:
branches:
- main
pull_request:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
fetch-depth: 0

- name: Cache tox
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: .tox
key: tox-${{ hashFiles('pyproject.toml') }}

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.x"
cache: "pip"
cache-dependency-path: "pyproject.toml"

- name: Install tox
run: python -m pip install tox

- name: Build HTML documentation with tox
run: tox -e docs

- name: Upload built docs as artifact
id: deployment
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
with:
path: site

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
pages: write
id-token: write
runs-on: ubuntu-latest
needs: build
if: github.event_name != 'pull_request'
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
38 changes: 38 additions & 0 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Linting

on:
push:
branches:
- main
pull_request:

jobs:
linting:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

- name: Cache pre-commit
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Set up python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version-file: ".python-version"

- name: Install uv
uses: astral-sh/setup-uv@v6
with:
# Install a specific version of uv
version: "0.9.0"
enable-cache: true

- name: Install the project
run: uv sync --locked --dev

- name: Run prek
run: uv run prek run --all-files --color always --verbose
47 changes: 23 additions & 24 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,37 @@ name: Python package

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
branches: [ "main" ]
branches: ["main"]

jobs:
build:

runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11"]

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8 pytest
python -m pip install .
python -m pip install .[test]
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pytest
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8 pytest
python -m pip install .
python -m pip install .[test]
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pytest
42 changes: 42 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Tests

on:
push:
branches:
- main
pull_request:
paths-ignore:
- "**.md"

jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"

steps:
- name: Checkout source
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

- name: Cache tox
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: .tox
key: tox-${{hashFiles('pyproject.toml') }}

- name: Set up python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: pyproject.toml

- name: Install dependencies
run: python -m pip install tox tox-gh

- name: Test with tox
run: tox run
21 changes: 17 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,15 @@ ipython_config.py
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
Expand Down Expand Up @@ -145,9 +153,14 @@ dmypy.json
cython_debug/

# PyCharm
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/
/.pdm-build/
#.idea/

# package version
_version.py

R-circumplex/
.claude/
2 changes: 2 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
MD013: false
59 changes: 59 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.1
hooks:
- id: ruff
- id: ruff-format
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.45.0
hooks:
- id: markdownlint-fix
args:
- --dot
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.5.5
hooks:
- id: forbid-tabs
- repo: https://github.com/pappasam/toml-sort
rev: v0.24.2
hooks:
- id: toml-sort-fix
# - repo: https://github.com/pre-commit/mirrors-mypy
# rev: v1.16.1
# hooks:
# - id: mypy
- repo: local
hooks:
- id: ty
name: ty check
entry: ty check . --ignore unresolved-import
language: python
pass_filenames: false
args: [--python=.venv/]
additional_dependencies: [ty]
- repo: https://github.com/rbubley/mirrors-prettier
rev: v3.6.2
hooks:
- id: prettier
args:
- --quote-props=as-needed
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-case-conflict
- id: check-merge-conflict
- id: check-toml
- id: end-of-file-fixer
- id: mixed-line-ending
args:
- --fix=lf
- id: trailing-whitespace
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.33.1
hooks:
# Schemas taken from https://www.schemastore.org/json/
- id: check-jsonschema
name: "Validate GitHub issue templates"
files: ^\.github/ISSUE_TEMPLATE/.*\.yml$
exclude: ^\.github/ISSUE_TEMPLATE/config\.yml$
args: ["--verbose", "--schemafile", "schemas/github-issue-forms.json"]
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.md
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.11.9
3.12
6 changes: 3 additions & 3 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ build:
# golang: "1.19"
jobs:
post_install:
- pip install mkdocs-material "mkdocstrings[python]" mkdocs-jupyter markdown pymdown-extensions
- pip install mike mkdocs-bibtex mkdocs-git-authors-plugin mkdocs-git-revision-date-localized-plugin mkdocs-include-markdown-plugin mkdocs-jupyter mkdocs-material mkdocs "mkdocstrings[python]" pymdown-extensions rich shtab
- pip install .

# Build documentation in the "docs/" directory with Sphinx
mkdocs:
configuration: mkdocs.yml
configuration: mkdocs.yml

# Optionally build your docs in additional formats such as PDF and ePub
formats:
Expand All @@ -33,4 +33,4 @@ formats:
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
# python:
# install:
# - requirements: docs/requirements.txt
# - requirements: docs/requirements.txt
12 changes: 6 additions & 6 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ authors:
family-names: Mitchell
email: andrew.mitchell.18@ucl.ac.uk
affiliation: University College London
orcid: 'https://orcid.org/0000-0003-0978-5046'
orcid: "https://orcid.org/0000-0003-0978-5046"
identifiers:
- type: doi
value: 10.17605/OSF.IO/FA5UR
description: OSF Repo of the Package
repository-code: 'https://github.com/MitchellAcoustics/circumplex'
url: 'https://circumplex.readthedocs.io/en/latest/'
repository: 'https://osf.io/fa5ur/'
repository-code: "https://github.com/MitchellAcoustics/circumplex"
url: "https://circumplex.readthedocs.io/en/latest/"
repository: "https://osf.io/fa5ur/"
license: GPL-3.0
version: 0.1.4
date-released: '2023-11-25'
version: 0.3.0
date-released: "2023-11-25"
Loading