scalesurfer 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. scalesurfer-0.1.0/.gitignore +15 -0
  2. scalesurfer-0.1.0/PKG-INFO +71 -0
  3. scalesurfer-0.1.0/README.md +27 -0
  4. scalesurfer-0.1.0/pyproject.toml +70 -0
  5. scalesurfer-0.1.0/scalesurfer/__init__.py +4 -0
  6. scalesurfer-0.1.0/scalesurfer/convert.py +728 -0
  7. scalesurfer-0.1.0/scalesurfer/data.py +609 -0
  8. scalesurfer-0.1.0/scalesurfer/evaluation/notebook.py +223 -0
  9. scalesurfer-0.1.0/scalesurfer/evaluation/plotting.py +76 -0
  10. scalesurfer-0.1.0/scalesurfer/evaluation/volume.py +2129 -0
  11. scalesurfer-0.1.0/scalesurfer/experiments/__init__.py +794 -0
  12. scalesurfer-0.1.0/scalesurfer/experiments/clinical.py +1609 -0
  13. scalesurfer-0.1.0/scalesurfer/experiments/clinical_datasets.py +440 -0
  14. scalesurfer-0.1.0/scalesurfer/experiments/config.py +99 -0
  15. scalesurfer-0.1.0/scalesurfer/inference/_datasets.py +57 -0
  16. scalesurfer-0.1.0/scalesurfer/inference/_io.py +148 -0
  17. scalesurfer-0.1.0/scalesurfer/inference/_models.py +161 -0
  18. scalesurfer-0.1.0/scalesurfer/inference/_runtime.py +152 -0
  19. scalesurfer-0.1.0/scalesurfer/inference/_settings.py +40 -0
  20. scalesurfer-0.1.0/scalesurfer/integrations/freesurfer.py +1310 -0
  21. scalesurfer-0.1.0/scalesurfer/integrations/freesurfer_norm.py +150 -0
  22. scalesurfer-0.1.0/scalesurfer/integrations/freeview.py +61 -0
  23. scalesurfer-0.1.0/scalesurfer/integrations/openneuro.py +1046 -0
  24. scalesurfer-0.1.0/scalesurfer/models/hub.py +91 -0
  25. scalesurfer-0.1.0/scalesurfer/models/stats.py +228 -0
  26. scalesurfer-0.1.0/scalesurfer/models/volume.py +393 -0
  27. scalesurfer-0.1.0/scalesurfer/scalesurfer.py +694 -0
  28. scalesurfer-0.1.0/scalesurfer/stats/__init__.py +80 -0
  29. scalesurfer-0.1.0/scalesurfer/stats/inference.py +776 -0
  30. scalesurfer-0.1.0/scalesurfer/stats/utils.py +778 -0
  31. scalesurfer-0.1.0/scalesurfer/training/stats/train.py +597 -0
  32. scalesurfer-0.1.0/scalesurfer/training/volume/config.py +172 -0
  33. scalesurfer-0.1.0/scalesurfer/training/volume/pipeline.py +440 -0
  34. scalesurfer-0.1.0/scalesurfer/training/volume/splits.py +441 -0
  35. scalesurfer-0.1.0/scalesurfer/training/volume/targets.py +809 -0
  36. scalesurfer-0.1.0/scalesurfer/training/volume/train.py +404 -0
  37. scalesurfer-0.1.0/scalesurfer/training/volume/utils.py +95 -0
  38. scalesurfer-0.1.0/scalesurfer/volume/eval.py +804 -0
@@ -0,0 +1,15 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+ .venv
9
+ *.svg
10
+ *.mgz
11
+ *.png
12
+ *.csv
13
+ *cache*
14
+ *checkpoints*
15
+ * copy*
@@ -0,0 +1,71 @@
1
+ Metadata-Version: 2.4
2
+ Name: scalesurfer
3
+ Version: 0.1.0
4
+ Summary: Fast 3D brain segmentation and FreeSurfer-like statistics inference.
5
+ Project-URL: Homepage, https://github.com/voytekresearch/scalesurfer
6
+ Project-URL: Repository, https://github.com/voytekresearch/scalesurfer
7
+ Project-URL: Issues, https://github.com/voytekresearch/scalesurfer/issues
8
+ Author: Ryan Hammonds
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
12
+ Requires-Python: >=3.12
13
+ Requires-Dist: huggingface-hub
14
+ Requires-Dist: joblib
15
+ Requires-Dist: matplotlib
16
+ Requires-Dist: nibabel
17
+ Requires-Dist: nilearn
18
+ Requires-Dist: numba
19
+ Requires-Dist: numpy
20
+ Requires-Dist: pandas
21
+ Requires-Dist: safetensors
22
+ Requires-Dist: scikit-image
23
+ Requires-Dist: scipy
24
+ Requires-Dist: seaborn>=0.13.2
25
+ Requires-Dist: torch
26
+ Requires-Dist: tqdm
27
+ Provides-Extra: openneuro
28
+ Requires-Dist: boto3; extra == 'openneuro'
29
+ Requires-Dist: botocore; extra == 'openneuro'
30
+ Requires-Dist: joblib; extra == 'openneuro'
31
+ Requires-Dist: matplotlib; extra == 'openneuro'
32
+ Requires-Dist: nibabel; extra == 'openneuro'
33
+ Requires-Dist: nilearn; extra == 'openneuro'
34
+ Requires-Dist: numba; extra == 'openneuro'
35
+ Requires-Dist: numpy; extra == 'openneuro'
36
+ Requires-Dist: pandas; extra == 'openneuro'
37
+ Requires-Dist: scikit-image; extra == 'openneuro'
38
+ Requires-Dist: scipy; extra == 'openneuro'
39
+ Requires-Dist: torch; extra == 'openneuro'
40
+ Requires-Dist: tqdm; extra == 'openneuro'
41
+ Provides-Extra: test
42
+ Requires-Dist: pytest; extra == 'test'
43
+ Description-Content-Type: text/markdown
44
+
45
+ # scalesufer
46
+
47
+ `scalesurfer` is a repository for fast FreeSurfer inference. The volumetric model uses UNet (local scale), with a Transformer bottlenck (global scale). The stats models predict FreeSurfer stats.
48
+
49
+ ## Usage
50
+
51
+ ```python
52
+ from scalesurfer import ScaleSurfer
53
+
54
+ # Anatomical images
55
+ adni_dir = "/home/rph/scalesurfer/data/adni_bids"
56
+ subjects = ["sub-002S0559", "sub-002S0619"]
57
+
58
+ anat_files = [
59
+ f"{adni_dir}/sub-002S0559/ses-20060627/anat/sub-002S0559_ses-20060627_T1w.nii.gz",
60
+ f"{adni_dir}/sub-002S0619/ses-20060601/anat/sub-002S0619_ses-20060601_T1w.nii.gz"
61
+ ]
62
+
63
+ # Predict aparc+aseg and stats tables
64
+ surfer = ScaleSurfer(anat_files, subjects, "/tmp/scalesurfer_subjects", device="cuda")
65
+ surfer.prepare_images()
66
+ surfer.predict_volumes()
67
+ surfer.plot_volume(subjects[0])
68
+ df_stats = surfer.predict_stats()
69
+ ```
70
+
71
+ See the inference [notebook](https://github.com/voytekresearch/scalesurfer/blob/master/docs/notebooks/03_inference/08_inference.ipynb) for additional settings for faster processing.
@@ -0,0 +1,27 @@
1
+ # scalesufer
2
+
3
+ `scalesurfer` is a repository for fast FreeSurfer inference. The volumetric model uses UNet (local scale), with a Transformer bottlenck (global scale). The stats models predict FreeSurfer stats.
4
+
5
+ ## Usage
6
+
7
+ ```python
8
+ from scalesurfer import ScaleSurfer
9
+
10
+ # Anatomical images
11
+ adni_dir = "/home/rph/scalesurfer/data/adni_bids"
12
+ subjects = ["sub-002S0559", "sub-002S0619"]
13
+
14
+ anat_files = [
15
+ f"{adni_dir}/sub-002S0559/ses-20060627/anat/sub-002S0559_ses-20060627_T1w.nii.gz",
16
+ f"{adni_dir}/sub-002S0619/ses-20060601/anat/sub-002S0619_ses-20060601_T1w.nii.gz"
17
+ ]
18
+
19
+ # Predict aparc+aseg and stats tables
20
+ surfer = ScaleSurfer(anat_files, subjects, "/tmp/scalesurfer_subjects", device="cuda")
21
+ surfer.prepare_images()
22
+ surfer.predict_volumes()
23
+ surfer.plot_volume(subjects[0])
24
+ df_stats = surfer.predict_stats()
25
+ ```
26
+
27
+ See the inference [notebook](https://github.com/voytekresearch/scalesurfer/blob/master/docs/notebooks/03_inference/08_inference.ipynb) for additional settings for faster processing.
@@ -0,0 +1,70 @@
1
+ [project]
2
+ name = "scalesurfer"
3
+ version = "0.1.0"
4
+ description = "Fast 3D brain segmentation and FreeSurfer-like statistics inference."
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ authors = [
8
+ {name = "Ryan Hammonds"},
9
+ ]
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "Programming Language :: Python :: 3.12",
13
+ "Topic :: Scientific/Engineering :: Medical Science Apps.",
14
+ ]
15
+ dependencies = [
16
+ "huggingface-hub",
17
+ "joblib",
18
+ "matplotlib",
19
+ "nibabel",
20
+ "nilearn",
21
+ "numba",
22
+ "numpy",
23
+ "pandas",
24
+ "safetensors",
25
+ "scikit-image",
26
+ "scipy",
27
+ "seaborn>=0.13.2",
28
+ "torch",
29
+ "tqdm",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ test = [
34
+ "pytest",
35
+ ]
36
+
37
+ openneuro = [
38
+ "boto3",
39
+ "botocore",
40
+ "joblib",
41
+ "matplotlib",
42
+ "nibabel",
43
+ "nilearn",
44
+ "numba",
45
+ "numpy",
46
+ "pandas",
47
+ "scikit-image",
48
+ "scipy",
49
+ "torch",
50
+ "tqdm",
51
+ ]
52
+
53
+ [project.urls]
54
+ Homepage = "https://github.com/voytekresearch/scalesurfer"
55
+ Repository = "https://github.com/voytekresearch/scalesurfer"
56
+ Issues = "https://github.com/voytekresearch/scalesurfer/issues"
57
+
58
+ [build-system]
59
+ requires = ["hatchling"]
60
+ build-backend = "hatchling.build"
61
+
62
+ [tool.hatch.build.targets.wheel]
63
+ packages = ["scalesurfer"]
64
+
65
+ [tool.hatch.build.targets.sdist]
66
+ include = [
67
+ "/scalesurfer",
68
+ "/README.md",
69
+ "/pyproject.toml",
70
+ ]
@@ -0,0 +1,4 @@
1
+ from scalesurfer.models.hub import fetch_all_models
2
+ from scalesurfer.scalesurfer import ScaleSurfer
3
+
4
+ __all__ = ["ScaleSurfer", "fetch_all_models"]