Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d29bff1
Fine q-mesh interpolation for the q-space TDSCHA Lanczos (M2+)
mesonepigreco Jul 2, 2026
02d171e
M3+M4: stochastic-centering windows, batched slot kernel; fix Parseva…
mesonepigreco Jul 3, 2026
2bc3ea9
Report: math, derivations, benchmarks and d3-bubble validation of the
mesonepigreco Jul 3, 2026
93aea62
Add SpectralFunctions module for q-space interpolation
mesonepigreco Jul 3, 2026
3f7f77c
One-shot ASR window design: centering + ASR + symmetrization in a sin…
mesonepigreco Jul 3, 2026
f291335
Validate fourth-order (D4) interpolation: spectral-function benchmark…
mesonepigreco Jul 3, 2026
a6abf0f
Add atomic D3 interpolation centering
mesonepigreco Jul 4, 2026
cde338e
Make atomic D3 centering permutation-aware
mesonepigreco Jul 4, 2026
9c2a3d6
feat: production validation of atomic_delta on SnTe + report update
mesonepigreco Jul 4, 2026
2bf421e
It is not good,
mesonepigreco Jul 6, 2026
b1510ff
Implement symmetric-power factor centering (QSpaceFactorKernel) with …
mesonepigreco Jul 13, 2026
e80bcdb
A lot of things, but still not working.
mesonepigreco Jul 22, 2026
0ceecd5
chore: preserve interpolation experiments before polishing
mesonepigreco Jul 28, 2026
715ced1
refactor: keep only atom-fourier interpolation
mesonepigreco Jul 28, 2026
7ef57b5
Fix Raman invariant preparation
mesonepigreco Jul 30, 2026
cc76e26
Merge pull request #34 from SSCHAcode/fix/raman-invariants-atom-fourier
mesonepigreco Jul 30, 2026
ba803ea
Add argparse CLI with --terminator and plot options to tdscha-plot-data
mesonepigreco Aug 2, 2026
b4f6dc2
Save perturbation_modulus in .abc header and restore it on load
mesonepigreco Aug 2, 2026
67caa8e
Add symmetry-aware Raman and IR spectroscopy
mesonepigreco Aug 5, 2026
ddb35b7
Fix IR dielectric prefactor to use the supercell volume
mesonepigreco Aug 6, 2026
efe9424
Load the spectroscopy ensemble distributed, never on every rank
mesonepigreco Aug 6, 2026
43c8d05
CI: run on juliacall, and stop installing aiida
mesonepigreco Aug 6, 2026
dc4bbdd
CI: build mpi4py against the system MPI, and detect when it is not
mesonepigreco Aug 6, 2026
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
59 changes: 41 additions & 18 deletions .github/workflows/python-testsuite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@ on:
pull_request:
branches: [ main ]

env:
# juliacall (PythonCall.jl) is the backend both python-sscha and tdscha
# prefer: it has no libpython coupling, so it works in any interpreter --
# including the ones the MPI tests launch through mpirun, which is where
# the PyJulia/PyCall backend fails to initialize. Pin it explicitly so a
# transitively installed pyjulia can never silently take over.
SSCHA_JULIA_BACKEND: juliacall
OMP_NUM_THREADS: 1
JULIA_NUM_THREADS: 1

jobs:
build:

Expand All @@ -18,26 +28,18 @@ jobs:
matrix:
python-version: [3.9]

services:
rabbitmq:
image: rabbitmq:latest
ports:
- 5672:5672

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest~=6.0 pgtest~=1.3 aiida-core~=2.3 aiida-quantumespresso~=4.3

aiida-pseudo install
pip install flake8 pytest~=6.0

- name: Lint with flake8
run: |
Expand All @@ -55,7 +57,19 @@ jobs:
git clone https://github.com/SSCHAcode/python-sscha.git

pip install meson meson-python ninja
pip install numpy scipy mpi4py spglib julia
# matplotlib is imported at module level by some collected tests.
pip install numpy scipy spglib matplotlib juliacall

# mpi4py MUST be built against the same MPI that owns mpirun. Its
# binary wheel bundles its own runtime, and next to the mpich
# installed above that makes every process initialise a singleton
# COMM_WORLD: "mpirun -np 2" silently becomes two unrelated serial
# jobs, and the MPI tests pass while testing nothing.
pip install --no-binary=mpi4py mpi4py
mpirun -np 2 python -c "
from mpi4py import MPI
assert MPI.COMM_WORLD.Get_size() == 2, 'mpirun and mpi4py disagree'
"

cd CellConstructor
pip install --no-build-isolation .
Expand All @@ -69,18 +83,27 @@ jobs:
# Install the tdscha package
pip install --no-build-isolation .

# Install julia requirements
python -c 'import julia; julia.install()'
- name: Warm up the Julia environment
run: |
# Resolve, install and precompile the Julia side ONCE, serially.
# Several tests launch interpreters through mpirun; if those were the
# first to touch ~/.julia they would race each other on the same
# depot, and a corrupted precompile cache then breaks every later
# subprocess -- including the single-rank ones.
python -c "
import sscha.JuliaExt, tdscha.JuliaExt
sscha.JuliaExt.get_main()
tdscha.JuliaExt.get_main()
print('Julia backend ready')
"

- name: Test with pytest
env:
OMP_NUM_THREADS: 1
JULIA_NUM_THREADS: 1
run: |
cd tests
rm -rf __pycache__
# Test excluding very long running tests
pytest -v -m "not release"

- name: Validate documentation
run: |
# Validate code snippets in documentation
Expand Down
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
__pycache__/
*.py[cod]
/build/

# Local interpolation benchmarks and generated reports are intentionally
# outside the pull-request branch.
/report/interpolation/
/FastHessianPaper.pdf

# Runtime output produced by the q-space integration tests.
/tests/test_julia/julia/
/tests/test_julia/wigner_nowigner_julia/
/tests/test_lanczos_fast/julia/
/tests/test_lanczos_fast/normal/
/tests/test_lanczos_fast/test_c_code_lanczos/mode10.*
Loading