Guest User

Untitled

a guest
Feb 25th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. import os
  2. import argparse
  3.  
  4. import nibabel as nib
  5. from nibabel.streamlines import Field
  6. from nibabel.orientations import aff2axcodes
  7.  
  8.  
  9. def build_argparser():
  10. DESCRIPTION = "Convert tractograms (TCK -> TRK)."
  11. p = argparse.ArgumentParser(description=DESCRIPTION)
  12. p.add_argument('anatomy', help='reference anatomy (.nii|.nii.gz.')
  13. p.add_argument('tractograms', metavar='tractogram', nargs="+", help='list of tractograms (.tck).')
  14. p.add_argument('-f', '--force', action="store_true", help='overwrite existing output files.')
  15. return p
  16.  
  17.  
  18. def main():
  19. parser = build_argparser()
  20. args = parser.parse_args()
  21.  
  22. try:
  23. nii = nib.load(args.anatomy)
  24. except:
  25. parser.error("Expecting anatomy image as first agument.")
  26.  
  27. for tractogram in args.tractograms:
  28. if nib.streamlines.detect_format(tractogram) is not nib.streamlines.TckFile:
  29. print("Skipping non TCK file: '{}'".format(tractogram))
  30. continue
  31.  
  32. output_filename = tractogram[:-4] + '.trk'
  33. if os.path.isfile(output_filename) and not args.force:
  34. print("Skipping existing file: '{}'. Use -f to overwrite.".format(output_filename))
  35. continue
  36.  
  37. header = {}
  38. header[Field.VOXEL_TO_RASMM] = nii.affine.copy()
  39. header[Field.VOXEL_SIZES] = nii.header.get_zooms()[:3]
  40. header[Field.DIMENSIONS] = nii.shape[:3]
  41. header[Field.VOXEL_ORDER] = "".join(aff2axcodes(nii.affine))
  42.  
  43. tck = nib.streamlines.load(tractogram)
  44. nib.streamlines.save(tck.tractogram, output_filename, header=header)
  45.  
  46. if __name__ == '__main__':
  47. main()
Add Comment
Please, Sign In to add comment