vincentgao95 commited on
Commit
7e8b954
·
verified ·
1 Parent(s): c59e55b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -16
app.py CHANGED
@@ -10,21 +10,24 @@ plt.switch_backend('Agg')
10
 
11
  def load_nrrd(file_obj):
12
  data, _ = nrrd.read(file_obj)
13
- num_slices = data.shape[2]
14
- return data, num_slices
15
 
16
- def visualize_slice(file_obj, slice_index):
17
- data, num_slices = load_nrrd(file_obj)
18
-
19
- # Ensure the slice index is within the range of available slices
20
- slice_index = min(max(0, slice_index), num_slices - 1)
 
 
 
 
 
21
 
22
- slice_image = data[:, :, slice_index]
 
23
 
24
- # Rotate the image 90 degrees clockwise
25
  slice_image = np.rot90(slice_image, k=-1)
26
-
27
- # Flip the image from left to right along the vertical axis
28
  slice_image = np.fliplr(slice_image)
29
 
30
  # Plot the slice
@@ -41,8 +44,14 @@ def visualize_slice(file_obj, slice_index):
41
 
42
  return pil_img
43
 
44
- def update_slider(file_obj):
45
- _, num_slices = load_nrrd(file_obj)
 
 
 
 
 
 
46
  return gr.update(maximum=num_slices-1, value=0)
47
 
48
  with gr.Blocks() as app:
@@ -50,11 +59,14 @@ with gr.Blocks() as app:
50
  gr.Markdown("Upload an NRRD file and use the slider to select and visualize slices.")
51
 
52
  file_input = gr.File(label="Upload NRRD File")
 
53
  slider = gr.Slider(minimum=0, maximum=1, step=1, value=0, label="Slice Selector")
54
  image_output = gr.Image(type="pil", label="Selected Slice")
55
 
56
- file_input.change(fn=update_slider, inputs=file_input, outputs=slider)
57
- file_input.change(fn=visualize_slice, inputs=[file_input, slider], outputs=image_output)
58
- slider.change(fn=visualize_slice, inputs=[file_input, slider], outputs=image_output)
 
 
59
 
60
  app.launch()
 
10
 
11
  def load_nrrd(file_obj):
12
  data, _ = nrrd.read(file_obj)
13
+ return data
 
14
 
15
+ def get_slice(data, slice_index, view):
16
+ if view == "Axial":
17
+ return data[:, :, slice_index]
18
+ elif view == "Coronal":
19
+ return data[:, slice_index, :]
20
+ elif view == "Sagittal":
21
+ return data[slice_index, :, :]
22
+
23
+ def visualize_slice(file_obj, slice_index, view):
24
+ data = load_nrrd(file_obj)
25
 
26
+ # Get the appropriate slice based on the selected view
27
+ slice_image = get_slice(data, slice_index, view)
28
 
29
+ # Rotate the image 90 degrees clockwise and flip it from left to right
30
  slice_image = np.rot90(slice_image, k=-1)
 
 
31
  slice_image = np.fliplr(slice_image)
32
 
33
  # Plot the slice
 
44
 
45
  return pil_img
46
 
47
+ def update_slider(file_obj, view):
48
+ data = load_nrrd(file_obj)
49
+ if view == "Axial":
50
+ num_slices = data.shape[2]
51
+ elif view == "Coronal":
52
+ num_slices = data.shape[1]
53
+ elif view == "Sagittal":
54
+ num_slices = data.shape[0]
55
  return gr.update(maximum=num_slices-1, value=0)
56
 
57
  with gr.Blocks() as app:
 
59
  gr.Markdown("Upload an NRRD file and use the slider to select and visualize slices.")
60
 
61
  file_input = gr.File(label="Upload NRRD File")
62
+ view_selector = gr.Dropdown(choices=["Axial", "Coronal", "Sagittal"], value="Axial", label="View Selector")
63
  slider = gr.Slider(minimum=0, maximum=1, step=1, value=0, label="Slice Selector")
64
  image_output = gr.Image(type="pil", label="Selected Slice")
65
 
66
+ file_input.change(fn=update_slider, inputs=[file_input, view_selector], outputs=slider)
67
+ view_selector.change(fn=update_slider, inputs=[file_input, view_selector], outputs=slider)
68
+ file_input.change(fn=visualize_slice, inputs=[file_input, slider, view_selector], outputs=image_output)
69
+ slider.change(fn=visualize_slice, inputs=[file_input, slider, view_selector], outputs=image_output)
70
+ view_selector.change(fn=visualize_slice, inputs=[file_input, slider, view_selector], outputs=image_output)
71
 
72
  app.launch()