README.rst 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. freesurfer-stats
  2. ================
  3. .. image:: https://travis-ci.org/fphammerle/freesurfer-stats.svg?branch=master
  4. :target: https://travis-ci.org/fphammerle/freesurfer-stats
  5. .. image:: https://coveralls.io/repos/github/fphammerle/freesurfer-stats/badge.svg?branch=master
  6. :target: https://coveralls.io/github/fphammerle/freesurfer-stats?branch=master
  7. .. image:: https://img.shields.io/pypi/v/freesurfer-stats.svg
  8. :target: https://pypi.org/project/freesurfer-stats/#history
  9. .. image:: https://img.shields.io/pypi/pyversions/freesurfer-stats.svg
  10. :target: https://pypi.org/project/freesurfer-stats/
  11. Python Library to Read FreeSurfer's Cortical Parcellation Anatomical Statistics
  12. Freesurfer https://surfer.nmr.mgh.harvard.edu/
  13. Install
  14. -------
  15. .. code:: sh
  16. pip3 install --user freesurfer-stats
  17. Releases follow the `semantic versioning <https://semver.org/>` scheme.
  18. Usage
  19. -----
  20. .. code:: python
  21. >>> from freesurfer_stats import CorticalParcellationStats
  22. >>> stats = CorticalParcellationStats.read('tests/subjects/fabian/stats/lh.aparc.DKTatlas.stats')
  23. >>> stats.headers['CreationTime'].isoformat()
  24. '2019-05-09T21:05:54+00:00'
  25. >>> stats.headers['cvs_version']
  26. 'Id: mris_anatomical_stats.c,v 1.79 2016/03/14 15:15:34 greve Exp'
  27. >>> stats.headers['cmdline'][:64]
  28. 'mris_anatomical_stats -th3 -mgz -cortex ../label/lh.cortex.label'
  29. >>> stats.hemisphere
  30. 'left'
  31. >>> stats.whole_brain_measurements['estimated_total_intracranial_volume_mm^3']
  32. 0 1.670487e+06
  33. Name: estimated_total_intracranial_volume_mm^3, dtype: float64
  34. >>> stats.whole_brain_measurements['white_surface_total_area_mm^2']
  35. 0 98553
  36. Name: white_surface_total_area_mm^2, dtype: int64
  37. >>> stats.structural_measurements[['structure_name', 'surface_area_mm^2',
  38. ... 'gray_matter_volume_mm^3']].head()
  39. structure_name surface_area_mm^2 gray_matter_volume_mm^3
  40. 0 caudalanteriorcingulate 1472 4258
  41. 1 caudalmiddlefrontal 3039 8239
  42. 2 cuneus 2597 6722
  43. 3 entorhinal 499 2379
  44. 4 fusiform 3079 9064
  45. Load Multiple Stats Files
  46. ~~~~~~~~~~~~~~~~~~~~~~~~~
  47. .. code:: python
  48. >>> import glob, pandas
  49. >>> from freesurfer_stats import CorticalParcellationStats
  50. >>> def load_whole_brain_measurements(stats_path) -> pandas.DataFrame:
  51. ... stats = CorticalParcellationStats.read(stats_path)
  52. ... stats.whole_brain_measurements['subject'] = stats.headers['subjectname']
  53. ... stats.whole_brain_measurements['source_basename'] = os.path.basename(stats_path)
  54. ... stats.whole_brain_measurements['hemisphere'] = stats.hemisphere
  55. ... return stats.whole_brain_measurements
  56. ...
  57. >>> whole_brain_measurements = pandas.concat(
  58. ... map(load_whole_brain_measurements, glob.glob('tests/subjects/fabian/stats/*h.aparc*.stats')),
  59. ... sort=False)
  60. >>> whole_brain_measurements.reset_index(drop=True, inplace=True)
  61. >>> whole_brain_measurements[['subject', 'source_basename', 'hemisphere',
  62. ... 'white_surface_total_area_mm^2', 'pial_surface_total_area_mm^2']]
  63. subject source_basename hemisphere white_surface_total_area_mm^2 pial_surface_total_area_mm^2
  64. 0 fabian lh.aparc.DKTatlas.stats left 98553.0 NaN
  65. 1 fabian rh.aparc.stats right 99468.9 NaN
  66. 2 fabian rh.aparc.a2009s.stats right 99494.9 NaN
  67. 3 fabian rh.aparc.DKTatlas.stats right 99494.9 NaN
  68. 4 fabian lh.aparc.stats left 98536.5 NaN
  69. 5 fabian lh.aparc.pial.stats left NaN 118601.0
  70. 6 fabian rh.aparc.pial.stats right NaN 121260.0
  71. 7 fabian lh.aparc.a2009s.stats left 98553.0 NaN
  72. >>>