-
Notifications
You must be signed in to change notification settings - Fork 259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reading freesurfer stats files correctly #1152
base: master
Are you sure you want to change the base?
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.