annotate linear_fascile_evaluation.py @ 13:a77fd7928341 draft default tip

Uploaded
author greg
date Thu, 30 Nov 2017 11:34:13 -0500
parents 2de70534993d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
1 #!/usr/bin/env python
cbfa8c336751 Uploaded
greg
parents:
diff changeset
2 import argparse
10
2de70534993d Uploaded
greg
parents: 7
diff changeset
3 import os
3
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
4 import shutil
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
5
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
6 import dipy.core.optimize as opt
cbfa8c336751 Uploaded
greg
parents:
diff changeset
7 import dipy.tracking.life as life
3
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
8 from dipy.data import fetch_stanford_t1, read_stanford_labels, read_stanford_t1
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
9 from dipy.viz import fvtk
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
10 from dipy.viz.colormap import line_colors
3
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
11
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
12 import matplotlib
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
13 import matplotlib.pyplot as plt
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
14
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
15 from mpl_toolkits.axes_grid1 import AxesGrid
3
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
16
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
17 import nibabel as nib
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
18
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
19 import numpy as np
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
20
cbfa8c336751 Uploaded
greg
parents:
diff changeset
21 parser = argparse.ArgumentParser()
10
2de70534993d Uploaded
greg
parents: 7
diff changeset
22 parser.add_argument('--input_nifti1', dest='input_nifti1', help='Input nifti1 dataset')
2de70534993d Uploaded
greg
parents: 7
diff changeset
23 parser.add_argument('--input_nifti1_files_path', dest='input_nifti1_files_path', help='Input nifti1 extra files path')
2de70534993d Uploaded
greg
parents: 7
diff changeset
24 parser.add_argument('--input_nifti2', dest='input_nifti2', help='Input nifti2 dataset')
2de70534993d Uploaded
greg
parents: 7
diff changeset
25 parser.add_argument('--input_nifti2_files_path', dest='input_nifti2_files_path', help='Input nifti2 extra files path')
2de70534993d Uploaded
greg
parents: 7
diff changeset
26 parser.add_argument('--input_trackvis', dest='input_trackvis', help='Track Visualization Header dataset')
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
27 parser.add_argument('--output_life_candidates', dest='output_life_candidates', help='Output life candidates')
cbfa8c336751 Uploaded
greg
parents:
diff changeset
28
cbfa8c336751 Uploaded
greg
parents:
diff changeset
29 args = parser.parse_args()
cbfa8c336751 Uploaded
greg
parents:
diff changeset
30
10
2de70534993d Uploaded
greg
parents: 7
diff changeset
31 # Get input data.
2de70534993d Uploaded
greg
parents: 7
diff changeset
32 # TODO: do not hard-code 'stanford_hardi'
2de70534993d Uploaded
greg
parents: 7
diff changeset
33 input_dir = 'stanford_hardi'
2de70534993d Uploaded
greg
parents: 7
diff changeset
34 os.mkdir(input_dir)
2de70534993d Uploaded
greg
parents: 7
diff changeset
35 # Copy the dRMI dataset (stanford_t1) files.
2de70534993d Uploaded
greg
parents: 7
diff changeset
36 for f in os.listdir(args.input_nifti1_files_path):
2de70534993d Uploaded
greg
parents: 7
diff changeset
37 shutil.copy(os.path.join(args.input_nifti1_files_path, f), input_dir)
2de70534993d Uploaded
greg
parents: 7
diff changeset
38 # Copy the dRMI dataset and label map (stanford_hardi) files.
2de70534993d Uploaded
greg
parents: 7
diff changeset
39 for f in os.listdir(args.input_nifti2_files_path):
2de70534993d Uploaded
greg
parents: 7
diff changeset
40 shutil.copy(os.path.join(args.input_nifti2_files_path, f), input_dir)
2de70534993d Uploaded
greg
parents: 7
diff changeset
41
1
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
42 # We'll need to know where the corpus callosum is from these variables.
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
43 hardi_img, gtab, labels_img = read_stanford_labels()
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
44 labels = labels_img.get_data()
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
45 cc_slice = labels == 2
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
46 t1 = read_stanford_t1()
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
47 t1_data = t1.get_data()
84a2e30b5404 Uploaded
greg
parents: 0
diff changeset
48 data = hardi_img.get_data()
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
49
cbfa8c336751 Uploaded
greg
parents:
diff changeset
50 # Read the candidates from file in voxel space:
10
2de70534993d Uploaded
greg
parents: 7
diff changeset
51 candidate_sl = [s[0] for s in nib.trackvis.read(args.input_trackvis, points_space='voxel')[0]]
0
cbfa8c336751 Uploaded
greg
parents:
diff changeset
52 # Visualize the initial candidate group of streamlines
cbfa8c336751 Uploaded
greg
parents:
diff changeset
53 # in 3D, relative to the anatomical structure of this brain.
cbfa8c336751 Uploaded
greg
parents:
diff changeset
54 candidate_streamlines_actor = fvtk.streamtube(candidate_sl, line_colors(candidate_sl))
cbfa8c336751 Uploaded
greg
parents:
diff changeset
55 cc_ROI_actor = fvtk.contour(cc_slice, levels=[1], colors=[(1., 1., 0.)], opacities=[1.])
cbfa8c336751 Uploaded
greg
parents:
diff changeset
56 vol_actor = fvtk.slicer(t1_data)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
57 vol_actor.display(40, None, None)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
58 vol_actor2 = vol_actor.copy()
cbfa8c336751 Uploaded
greg
parents:
diff changeset
59 vol_actor2.display(None, None, 35)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
60 # Add display objects to canvas.
cbfa8c336751 Uploaded
greg
parents:
diff changeset
61 ren = fvtk.ren()
cbfa8c336751 Uploaded
greg
parents:
diff changeset
62 fvtk.add(ren, candidate_streamlines_actor)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
63 fvtk.add(ren, cc_ROI_actor)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
64 fvtk.add(ren, vol_actor)
cbfa8c336751 Uploaded
greg
parents:
diff changeset
65 fvtk.add(ren, vol_actor2)
3
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
66 fvtk.record(ren, n_frames=1, out_path="life_candidates.png", size=(800, 800))
0ddfcb3b5ce6 Uploaded
greg
parents: 1
diff changeset
67 shutil.move("life_candidates.png", args.output_life_candidates)