Skip to content

Joss submission prep - #4

Merged
Yhonatangayer merged 12 commits into
mainfrom
joss-submission-prep
Jul 12, 2026
Merged

Joss submission prep#4
Yhonatangayer merged 12 commits into
mainfrom
joss-submission-prep

Conversation

@Yhonatangayer

Copy link
Copy Markdown
Owner

No description provided.

Yhonatangayer and others added 12 commits June 30, 2026 16:31
Add the JOSS paper and supporting infrastructure, and clean up repo
structure so reviewers can assess shroom as substantial standalone work.

- paper/paper.md + paper/paper.bib: JOSS paper (Summary, Statement of
  Need), condensed from the arXiv preprint, cites it for full evaluation
- .github/workflows/ci.yml: pytest on Python 3.9-3.13
- .github/workflows/draft-pdf.yml: JOSS paper draft-PDF build
- CONTRIBUTING.md + issue templates + README support section
  (JOSS community guidelines: contribute / report / support)
- Remove stale, unused spaudiopy git submodule; drop unused
  from_spaudiopy_grid imports from examples
- Rename projects/ -> benchmarks/ with intentional names and a README,
  reframed as encoder-convergence validation experiments
- Sharpen shroom_dev framing (optional companion, not core-required)
- Metadata: CITATION.cff 0.1.1 -> 0.2.0 + ORCID/affiliation, author
  email, LICENSE year, CI/license badges, flat `from shroom import ...`
  imports in README quick-start
- Add class-level docstring to Room

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The ARIA array SOFA file is not distributed with the repo (data/ is
gitignored), so test_aria_asm_bsm.py's fixtures errored on a fresh clone
and in CI. Skip the whole module when the file is absent, matching the
existing pattern in test_hrtf.py / test_sofa.py.

Port the array-agnostic ASM DC/Nyquist reality constraints to
test_asm.py using the existing synthetic SphericalArray fixture, so
those properties still run in CI (the BSM properties and ProcessorChain
equivalence are already covered synthetically in test_bsm.py /
test_processors.py).

Also drop the stale `sys.path.insert(..., "projects")` (now benchmarks/)
and the unused `sys` import.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Lines 529-768 of test_spatial_signal_comprehensive.py were commented
out, disabling all tests for convolve_sh, rotate_space_domain,
rotate_sh_domain, and the duration/n_samples/n_channels properties.
They pass as-is (verified) and were the *only* coverage for
SpatialSignal.rotate_sh_domain, which is featured in the README/paper.

Re-enabling restores 275 test cases (file: 76 -> 351; suite: 385 -> 462),
and makes the module docstring's "covers every public method" claim true.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Delete test_array.py: its two tests were identical-named duplicates of
  test_spherical_array.py's init/shape tests.
- Delete test_spatial_signal.py: resample/rotate_space_domain/convolve_sh
  are now fully covered by the (re-enabled) comprehensive suite.
- Add tests/conftest.py with make_equator_grid and make_spherical_array
  factory fixtures, and refactor test_spherical_array.py, test_asm.py, and
  test_processors.py to use them instead of duplicating array construction.
- Drop the leftover unused from_spaudiopy_grid import in test_processors.py.

No coverage lost: suite goes 462 -> 457 (exactly the 5 duplicate tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add pytest-cov to the [dev] extra.
- Configure [tool.coverage] in pyproject.toml (source=shroom,
  omit shroom_dev, show missing lines).
- Run coverage in CI (--cov=shroom --cov-report=term-missing).
- Ignore coverage artifacts.

Baseline: 79% overall; core science (encoders, physics, rotation,
spatial_signal) 89-100%; low spots are plotting in room.py and some
utils/IO helpers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add test_amb_utils.py (real/complex sh_matrix shape, dtype, DC constant,
quadrature orthonormality; get_tilde_matrix involution and signs) and
test_io_utils.py (load_file/load_wav int16/int32/uint8 + unsupported
format, get_default_hrtf_path both branches, convert_sofa_to_radians
spherical/cartesian/wrapping, is_time/is_sofa_time detection + errors).

Coverage: file_utils 74->100%, paths 67->100%, amb_utils 58->84%,
sofa 68->85%; overall 79% -> 81%.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The scratch folder holding the arXiv preprint LaTeX source has been
removed; its content was extracted into paper/paper.md and paper/paper.bib.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Rename all paper.bib keys to the author+year+venue scheme used in the
  reference library (e.g. allen1979JASA, rafaely2015SphArray,
  schorkhuber2018DAGA, magariyachi2020JASA, ...).
- Tag the array-aware MagLS HRTF algorithm with gayer2026TASLP
  (IEEE TASLP 2026) and cite it in the statement of need.
- Tag ASM encoding with gayer2024ICASSPW.
- Update every \cite key in paper.md to match; verified all 15 cited
  keys resolve to defined entries with no leftovers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Several comments were notes-to-self / conversational rather than
documentation for repo users ("But wait", "Let's assume", "your format",
"we are in trouble", "for now", "...?"). Rewrote them as concise
explanations of the actual behaviour, across:
  src: amb_utils, dsp_utils, sofa, room, math_utils (also drop a
       commented-out line and mark the untestable scipy fallback
       with `# pragma: no cover`)
  tests: test_processors, test_asm, test_sampling

No behaviour change; suite still 488 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Patch release (no functional/API change): packages the JOSS paper, CI +
coverage, community docs, expanded tests, benchmarks/ rename, and
submodule removal. Update pyproject.toml, CITATION.cff (version +
date-released), and add a README changelog entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Yhonatangayer
Yhonatangayer merged commit 870fa32 into main Jul 12, 2026
5 checks passed
@Yhonatangayer
Yhonatangayer deleted the joss-submission-prep branch July 12, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant