GithubHelp home page GithubHelp logo

fphammerle / freesurfer-stats Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 1.0 480 KB

Python Library to Read FreeSurfer's Cortical Parcellation Anatomical Statistics

Home Page: https://pypi.org/project/freesurfer-stats/

License: GNU General Public License v3.0

Python 100.00%
freesurfer aparc cortex parcellation statistics neuroimaging pandas surface brain dataframe

freesurfer-stats's Introduction

freesurfer-stats

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

freesurfer-stats's People

Contributors

dependabot[bot] avatar fphammerle avatar soichih avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

soichih

freesurfer-stats's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.