Reading freesurfer stats files correctly#1152
Conversation
there was a problem with reading the stats files
|
A couple thoughts:
|
|
The code has been revised regard to your comments |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1152 +/- ##
==========================================
- Coverage 95.36% 95.33% -0.03%
==========================================
Files 207 207
Lines 29680 29694 +14
Branches 4992 4996 +4
==========================================
+ Hits 28305 28310 +5
- Misses 935 944 +9
Partials 440 440 ☔ View full report in Codecov by Sentry. |
effigies
left a comment
There was a problem hiding this comment.
Thanks for this. I've made a couple comments.
A larger question is whether this is intended to be for any stats files in FreeSurfer, or just the ones generated by mris_anatomical_stats? We might want to do some detecting of the kind of stats in order to correctly build a dtype. I imagine a column header -> dtype lookup table would not be too difficult to construct.
What do you think?
|
|
||
| Examples | ||
| -------- | ||
| >>> stats_a2009, column_names = read_stats_file(r'lh.aparc.a2009s.stats') |
There was a problem hiding this comment.
If we're going to have example code, it needs to run. We could drop an example file in nibabel/tests/data/ and access it with
from nibabel.testing import test_data
stats_a2009 = read_stats_file(test_data(fname='lh.aparc.a2009s.stats'))Co-authored-by: Chris Markiewicz <effigies@gmail.com>
Co-authored-by: Chris Markiewicz <effigies@gmail.com>
| stats_left, columns_left = read_stats_file(file_path.replace('rh', 'lh')) | ||
| stats_right, columns_right = read_stats_file(file_path.replace('lh', 'rh')) | ||
| stats_both_hemispheres = np.concatenate((stats_left, stats_right[:, 1:]), axis=1) | ||
| column_names = [col_name + '_left' for col_name in columns_left] + [col_name + '_right' for col_name in | ||
| columns_right[1:]] |
There was a problem hiding this comment.
You're no longer returning column names. I think you can use numpy.lib.recfunctions.join_by to do what you want.
I would also use the following pattern for doctests:
.. testsetup::
>>> import os
>>> from nibabel.testing import get_test_data
>>> cwd = os.getcwd()
>>> os.chdir(get_test_data())
>>> stats_a2009 = read_stats_file_both_hemispheres(r'lh.aparc.a2009s.stats')
.. testcleanup::
>>> os.chdir(cwd)|
@simkarwin Sorry about the long radio silence. Any interest in finishing this up? |
No description provided.