- Notifications
You must be signed in to change notification settings - Fork269
Reading freesurfer stats files correctly#1152
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
dfed1e3e0ea23d84d6e048880a1a97107b7c3c3e0402334f4File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| """Read / write FreeSurfer geometry, morphometry, label, stats, annotation formats""" | ||
| from __future__importannotations | ||
effigies marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
| importgetpass | ||
| importtime | ||
| @@ -617,3 +618,50 @@ | ||
| val=volume_info[key] | ||
| strings.append(f'{key:6s} ={val[0]:.10g}{val[1]:.10g}{val[2]:.10g}\n'.encode()) | ||
| returnb''.join(strings) | ||
| defread_stats_file(file_path): | ||
| """Extracts stats from stats files except '*curv.stats' files | ||
| Parameters | ||
| ---------- | ||
| file_path: str, required | ||
| 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 commentThe 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 fromnibabel.testingimporttest_datastats_a2009=read_stats_file(test_data(fname='lh.aparc.a2009s.stats')) | ||
| """ | ||
| withopen(file_path,'r')asf: | ||
| forlineinf: | ||
| ifline.startswith('# ColHeaders '): | ||
| columns=line.split()[2:] | ||
| break | ||
| returnnp.genfromtxt(f,dtype=None,names=columns,encoding='utf-8') | ||
| defread_stats_file_both_hemispheres(file_path:str): | ||
| """Extracts stats data of both hemispheres and merges them | ||
| Parameters | ||
| ---------- | ||
| file_path: str, required | ||
| Path of the stats file belong to left (lh) or right(rh) hemisphere | ||
| Returns | ||
| ------- | ||
| stats_both_hemispheres: ndarray | ||
| Stats data of both hemisphers | ||
| column_naems: ndarray | ||
| Name of columns | ||
| Examples | ||
| -------- | ||
| >>> stats_a2009, column_names = read_stats_file_both_hemispheres(r'lh.aparc.a2009s.stats') | ||
| """ | ||
| 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'forcol_nameincolumns_left]+ [col_name+'_right'forcol_namein | ||
| columns_right[1:]] | ||
Comment on lines +662 to +666 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. You're no longer returning column names. I think you can usenumpy.lib.recfunctions.join_by to do what you want. I would also use the following pattern for doctests: ..testsetup:: >>>import os >>>from nibabel.testingimport 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) | ||
| returnstats_both_hemispheres,column_names | ||
Uh oh!
There was an error while loading.Please reload this page.