Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
353c60a
Initial commit: Elekta XVI CBCT analysis tools
Nov 4, 2025
1d30491
documentation and file organisation, rps format documentation generat…
kkaan Nov 4, 2025
0960122
extract matrices succesfully teste, documentation of rps format added
kkaan Nov 4, 2025
d040365
deprecated
kkaan Nov 4, 2025
9f331f4
fixed errors
kkaan Nov 4, 2025
bf87c19
experimental report skeleton
kkaan Nov 4, 2025
cf5a8d3
readme added
kkaan Nov 4, 2025
95076ef
Update session-specific reconstruction params description
kkaan Nov 4, 2025
c166806
Remove Claude Code configuration files
kkaan Nov 4, 2025
19421ae
Merge branch 'master' of https://github.com/kkaan/learn-crawler
kkaan Nov 4, 2025
9de922d
gitignore
kkaan Feb 15, 2026
b2276fe
documentation
kkaan Feb 15, 2026
05c1eb1
anonymisation and folder mapping code added
kkaan Feb 23, 2026
838aa2a
fix TPS files not anonymised during folder sort
kkaan Feb 23, 2026
04cb111
rps files anon too
kkaan Feb 24, 2026
cb149ab
scrub test patient PII from codebase
kkaan Feb 24, 2026
3ffdc78
post anonimisation check
kkaan Feb 24, 2026
bf7fed8
gui and report
kkaan Feb 24, 2026
410ff64
i suck at gui
kkaan Feb 24, 2026
0b9d914
fix gui: dark titlebar, layout sizing, crash fix, config persistence
kkaan Feb 24, 2026
aed9042
remove old webview gui (replaced by PyQt6)
kkaan Feb 24, 2026
e56f290
main
kkaan Feb 24, 2026
78ac84e
reorder wizard (folder sort before anonymise), fix segfault
kkaan Feb 25, 2026
8358d5f
Add Bandit security scan workflow
kkaan Feb 25, 2026
13dd226
gui kinda working
kkaan Feb 25, 2026
1cf0ead
restructured for anonymiser to handle the all the anonimisation
kkaan Mar 1, 2026
4cfe883
fix: FX numbering starts at 1, nav bug, PII skip display
kkaan Mar 2, 2026
3140dc5
Update learn_upload/anonymise_dicom.py
kkaan Mar 2, 2026
58d9d37
Update learn_upload/anonymise_dicom.py
kkaan Mar 2, 2026
0dc27a3
Update learn_upload/gui_qt.py
kkaan Mar 2, 2026
e2266e5
Update learn_upload/folder_sort.py
kkaan Mar 2, 2026
babc9f7
Update learn_upload/anonymise_dicom.py
kkaan Mar 2, 2026
e9e6bd4
save CBCT shift report to Patient Files folder
kkaan Mar 2, 2026
d1c46c0
Reorganise repo: move standalone scripts to scripts/ and examples/
kkaan Mar 2, 2026
5108776
Update README.md
kkaan Mar 2, 2026
42d3df3
Document expected input and output directory structures in README
kkaan Mar 2, 2026
8211658
Add tests for anonymise helpers and anonymise_output_folder
kkaan Mar 2, 2026
69faa55
Add GUI walkthrough document with screenshots
kkaan Mar 2, 2026
c737f4f
Add input directory structures to GUI walkthrough and link from README
kkaan Mar 2, 2026
390951a
Replace MIM anonymisation workflow with GUI wizard in SOP
kkaan Mar 2, 2026
eacf7f9
Remove unused MIM screenshot images (07-10)
kkaan Mar 2, 2026
34ff6be
Add clone instructions to README Quick Start
kkaan Mar 2, 2026
bf7765c
formatting
kkaan Mar 2, 2026
ce4ed26
Add CI workflow with linting and tests
kkaan Mar 6, 2026
60edb9a
Add PyInstaller build and GitHub Release workflow
kkaan Mar 7, 2026
29ebd85
Fix faulthandler crash in windowed exe build
kkaan Mar 7, 2026
3635214
Restructure README with download section and local drive guidance
kkaan Mar 7, 2026
8d44d58
sanity check
kkaan Mar 9, 2026
cb4a184
Merge remote-tracking branch 'spark/main' into learn-crawler
kkaan Mar 9, 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
52 changes: 52 additions & 0 deletions .github/workflows/bandit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# Bandit is a security linter designed to find common security issues in Python code.
# This action will run Bandit on your codebase.
# The results of the scan will be found under the Security tab of your repository.

# https://github.com/marketplace/actions/bandit-scan is ISC licensed, by abirismyname
# https://pypi.org/project/bandit/ is Apache v2.0 licensed, by PyCQA

name: Bandit
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '33 20 * * 3'

jobs:
bandit:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Bandit Scan
uses: shundor/python-bandit-scan@ab1d87dfccc5a0ffab88be3aaac6ffe35c10d6cd
with: # optional arguments
# exit with 0, even with results found
exit_zero: true # optional, default is DEFAULT
# Github token of the repository (automatically created by Github)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information.
# File or directory to run bandit on
# path: # optional, default is .
# Report only issues of a given severity level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything)
# level: # optional, default is UNDEFINED
# Report only issues of a given confidence level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything)
# confidence: # optional, default is UNDEFINED
# comma-separated list of paths (glob patterns supported) to exclude from scan (note that these are in addition to the excluded paths provided in the config file) (default: .svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg)
# excluded_paths: # optional, default is DEFAULT
# comma-separated list of test IDs to skip
# skips: # optional, default is DEFAULT
# path to a .bandit file that supplies command line arguments
# ini_path: # optional, default is DEFAULT

38 changes: 38 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: CI

on:
push:
branches: [master]
pull_request:
branches: [master]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install ruff
run: pip install "ruff>=0.4"

- name: Ruff check
run: ruff check learn_upload/ tests/ scripts/

test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: pip install -r requirements-dev.txt

- name: Run tests
run: python -m pytest tests/ -v
36 changes: 36 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Release

on:
push:
tags: ["v*"]

jobs:
build:
runs-on: windows-latest
permissions:
contents: write

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: pip install pydicom PyQt6 numpy pyinstaller

- name: Build exe
run: pyinstaller learn_upload.spec

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: learn_upload
path: dist/learn_upload.exe

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/learn_upload.exe
generate_release_notes: true
95 changes: 95 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Patient Data Protection - CRITICAL: Never commit patient data
patient-confidential/
**/patient-confidential/
*patient*confidential*
*confidential*

# Patient data files that might appear elsewhere
*patient*.csv
*Patient*.csv
*PATIENT*.csv
patient_*.csv
Patient_*.csv

# Python artifacts
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
venv/
env/
ENV/
.venv/
.env/

# IDE and editor files
.vscode/
.idea/
.vs/
*.swp
*.swo
*~
.DS_Store
Thumbs.db

# Temporary files
*.tmp
*.temp
*.log
*.bak
*.backup
*.docx

# Medical imaging data files (potential patient data)
*.dcm
*.DCM
*.his
*.HIS

# Large data directories
data/
Data/
DATA/
XVI_COLLECTION/
*XVI*COLLECTION*
Docs/Prostate/

# Output files that might contain patient data
output/
Output/
results/
Results/
exports/
Exports/

# Jupyter notebook checkpoints
.ipynb_checkpoints/

# System files
.DS_Store
Thumbs.db
desktop.ini

# Claude Code configuration
CLAUDE.md
.claude/
Loading