Skip to main content

Python Library to Read FreeSurfer's cortical parcellation anatomical statistics

Project description

https://img.shields.io/badge/code%20style-black-000000.svg https://github.com/fphammerle/freesurfer-stats/workflows/tests/badge.svg https://coveralls.io/repos/github/fphammerle/freesurfer-stats/badge.svg?branch=master https://img.shields.io/pypi/v/freesurfer-stats.svg https://img.shields.io/pypi/pyversions/freesurfer-stats.svg https://zenodo.org/badge/194054168.svg

Python Library to Read FreeSurfer’s Cortical Parcellation Anatomical Statistics subject/stats/[rl]h.aparc.*.stats

Freesurfer https://surfer.nmr.mgh.harvard.edu/

Install

pip3 install --user freesurfer-stats

Releases follow the semantic versioning <https://semver.org/> scheme.

Usage

>>> from freesurfer_stats import CorticalParcellationStats
>>> stats = CorticalParcellationStats.read('tests/subjects/fabian/stats/lh.aparc.DKTatlas.stats')
>>> stats.headers['subjectname']
'fabian'
>>> stats.headers['CreationTime'].isoformat()
'2019-05-09T21:05:54+00:00'
>>> stats.headers['cvs_version']
'Id: mris_anatomical_stats.c,v 1.79 2016/03/14 15:15:34 greve Exp'
>>> stats.headers['cmdline'][:64]
'mris_anatomical_stats -th3 -mgz -cortex ../label/lh.cortex.label'
>>> stats.hemisphere
'left'
>>> stats.whole_brain_measurements['estimated_total_intracranial_volume_mm^3']
0    1.670487e+06
Name: estimated_total_intracranial_volume_mm^3, dtype: float64
>>> stats.whole_brain_measurements['white_surface_total_area_mm^2']
0    98553
Name: white_surface_total_area_mm^2, dtype: int64
>>> stats.structural_measurements[['structure_name', 'surface_area_mm^2',
...                                'gray_matter_volume_mm^3']].head()
            structure_name  surface_area_mm^2  gray_matter_volume_mm^3
0  caudalanteriorcingulate               1472                     4258
1      caudalmiddlefrontal               3039                     8239
2                   cuneus               2597                     6722
3               entorhinal                499                     2379
4                 fusiform               3079                     9064

Load Multiple Stats Files

>>> import glob, pandas
>>> from freesurfer_stats import CorticalParcellationStats
>>> def load_whole_brain_measurements(stats_path) -> pandas.DataFrame:
...     stats = CorticalParcellationStats.read(stats_path)
...     stats.whole_brain_measurements['subject'] = stats.headers['subjectname']
...     stats.whole_brain_measurements['source_basename'] = os.path.basename(stats_path)
...     stats.whole_brain_measurements['hemisphere'] = stats.hemisphere
...     return stats.whole_brain_measurements
...
>>> whole_brain_measurements = pandas.concat(
...     map(load_whole_brain_measurements, glob.glob('tests/subjects/fabian/stats/*h.aparc*.stats')),
...     sort=False)
>>> whole_brain_measurements.reset_index(drop=True, inplace=True)
>>> whole_brain_measurements[['subject', 'source_basename', 'hemisphere',
...                           'white_surface_total_area_mm^2', 'pial_surface_total_area_mm^2']]
  subject          source_basename hemisphere  white_surface_total_area_mm^2  pial_surface_total_area_mm^2
0  fabian  lh.aparc.DKTatlas.stats       left                        98553.0                           NaN
1  fabian           rh.aparc.stats      right                        99468.9                           NaN
2  fabian    rh.aparc.a2009s.stats      right                        99494.9                           NaN
3  fabian  rh.aparc.DKTatlas.stats      right                        99494.9                           NaN
4  fabian           lh.aparc.stats       left                        98536.5                           NaN
5  fabian      lh.aparc.pial.stats       left                            NaN                      118601.0
6  fabian      rh.aparc.pial.stats      right                            NaN                      121260.0
7  fabian    lh.aparc.a2009s.stats       left                        98553.0                           NaN

Load Stats File From Webserver, Amazon S3 or Google Cloud Storage

>>> from freesurfer_stats import CorticalParcellationStats
>>> stats = CorticalParcellationStats.read('https://[...]/stats/rh.aparc.stats')
>>> stats.whole_brain_measurements['total_cortical_gray_matter_volume_mm^3']
0    553998.311189
Name: total_cortical_gray_matter_volume_mm^3, dtype: float64

Replace https:// with s3:// or gcs://.

Credentials for S3 may be provided in ~/.aws/credentials or via environment variables. See S3Fs docs.

Tests

pip3 install --user pipenv
git clone https://github.com/fphammerle/freesurfer-stats.git
cd freesurfer-stats
pipenv sync --dev
pipenv run pylint freesurfer_stats
pipenv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freesurfer-stats-1.2.1.tar.gz (79.7 kB view details)

Uploaded Source

Built Distribution

freesurfer_stats-1.2.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file freesurfer-stats-1.2.1.tar.gz.

File metadata

  • Download URL: freesurfer-stats-1.2.1.tar.gz
  • Upload date:
  • Size: 79.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5

File hashes

Hashes for freesurfer-stats-1.2.1.tar.gz
Algorithm Hash digest
SHA256 f9922b5320bf75677fe8fd2acfd2f456505c870a9072e07fb1cc9c188b242cc1
MD5 ceac93843eb5d32836cbfa429f2caf6a
BLAKE2b-256 c37ac6392b68eaa8f6d8e6313204dc840ff1a0bd9a37e097db58415678f25274

See more details on using hashes here.

File details

Details for the file freesurfer_stats-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: freesurfer_stats-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5

File hashes

Hashes for freesurfer_stats-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7699db95042e9aa10ff761a97aa303f99a50e2ab68e94c01b01d213cdf05a079
MD5 c72d2ecebed5cdce26db77cc8dc38313
BLAKE2b-256 b1d7d864bafdf129afee114a5fa5279e6c5e2b85d3e52e86c5504332ae742430

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page