1212 List of supported nifti file extensions, in lower case.
1313EXT_XLS : list
1414 List of supported XLS-like file extensions, in lower case.
15- LGR
16- Logger
15+ EXT_ALL : list
16+ All supported file extensions, in lower case.
17+ EXT_DICT : dictionary
18+ Dictionary associating values to extension lists
19+ LOADMAT_DICT : dictionary
20+ Dictionary assocting the same values in EXT_DICT to loading functions.
1721"""
1822
1923import logging
2529from nigsp .utils import change_var_type
2630
2731EXT_1D = [".txt" , ".csv" , ".tsv" , ".1d" , ".par" , ".tsv.gz" , ".csv.gz" ]
28- EXT_XLS = [".xls" ]
2932EXT_MAT = [".mat" ]
3033EXT_NIFTI = [".nii" , ".nii.gz" ]
34+ EXT_XLS = [".xls" ]
3135EXT_ALL = EXT_1D + EXT_XLS + EXT_MAT + EXT_NIFTI
3236
3337EXT_DICT = {"1D" : EXT_1D , "xls" : EXT_XLS , "mat" : EXT_MAT , "nifti" : EXT_NIFTI }
@@ -84,7 +88,7 @@ def check_ext(all_ext, fname, scan=False, remove=False):
8488 if has_ext :
8589 obj_return += [fname [: - len (ext )], ext ] # case insensitive solution
8690 else :
87- obj_return += [fname , "" ]
91+ obj_return += [fname , None ]
8892 else :
8993 obj_return += [fname ]
9094
@@ -404,12 +408,9 @@ def export_nifti(data, img, fname):
404408 "Please see install instructions."
405409 )
406410
407- for e in EXT_NIFTI :
408- has_ext , fname , ext = check_ext (e , fname , remove = True )
409- if has_ext :
410- break
411+ has_ext , fname , ext = check_ext (EXT_NIFTI , fname , remove = True )
411412
412- if ext == "" :
413+ if ext is None :
413414 ext = ".nii.gz"
414415
415416 LGR .info (f"Exporting nifti data into { fname } { ext } ." )
@@ -437,6 +438,21 @@ def export_txt(data, fname, ext=None):
437438 0
438439 On a successful run
439440 """
441+ has_ext , fname , ext_check = check_ext (EXT_ALL , fname , remove = True )
442+
443+ if has_ext :
444+ if ext is not None :
445+ LGR .warning (
446+ f"Specified filename { fname } { ext_check } has an extension, but the "
447+ f"extension { ext } was specified. Forcing specified extension."
448+ )
449+ else :
450+ ext = ext_check
451+ else :
452+ if ext is None :
453+ LGR .warning ("Extension not specified. Forcing export in TSV.GZ format." )
454+ ext = ".tsv.gz"
455+
440456 if ext .lower () in [".csv" , ".csv.gz" , "" , None ]:
441457 delimiter = ","
442458 elif ext .lower () in [".tsv" , ".tsv.gz" ]:
@@ -494,22 +510,23 @@ def export_mtx(data, fname, ext=None):
494510 0
495511 On a successful run
496512 """
497- if ext is None :
498- # Check if extension was provided in fname.
499- for e in EXT_ALL :
500- has_ext , fname , ext = check_ext (e , fname , remove = True )
501- if has_ext :
502- break
503- elif ext .lower () not in EXT_ALL :
504- # Check if extension is supported.
505- ext = None
513+ has_ext , fname , ext_check = check_ext (EXT_ALL , fname , remove = True )
514+
515+ if has_ext :
516+ if ext is None :
517+ ext = ext_check
518+ else :
519+ LGR .warning (
520+ f"Specified filename { fname } { ext_check } has an extension, but the "
521+ f"extension { ext } was specified. Forcing specified extension."
522+ )
506523
507524 if ext in [None , "" ]:
508525 LGR .warning (
509526 "Extension not specified, or specified extension not "
510- "supported. Forcing export in CSV format."
527+ "supported. Forcing export in TSV.GZ format."
511528 )
512- ext = ".csv "
529+ ext = ".tsv.gz "
513530 elif ext .lower () in EXT_NIFTI :
514531 LGR .warning ("Found nifti extension, exporting data in .1D instead" )
515532 ext = ".1D"
@@ -520,7 +537,7 @@ def export_mtx(data, fname, ext=None):
520537 import scipy
521538 except ImportError :
522539 raise ImportError (
523- "To export .mat files, scipy is required. " " Please install it."
540+ "To export .mat files, scipy is required. Please install it."
524541 )
525542 scipy .io .savemat (f"{ fname } { ext } " , {"data" : data })
526543 elif ext .lower () in EXT_XLS :
@@ -529,13 +546,18 @@ def export_mtx(data, fname, ext=None):
529546 export_txt (data , fname , ext )
530547 else :
531548 raise BrokenPipeError (
532- f"This should not have happened: { ext } was the " " selected extension."
549+ f"This should not have happened: { ext } was the selected extension."
533550 )
534551
535552 return 0
536553
537554
538- LOADMAT_DICT = {"1D" : load_txt , "xls" : load_xls , "mat" : load_mat }
555+ LOADMAT_DICT = {
556+ "1D" : load_txt ,
557+ "xls" : load_xls ,
558+ "mat" : load_mat ,
559+ "nifti" : load_nifti_get_mask ,
560+ }
539561
540562
541563"""
0 commit comments