andreped commited on
Commit
eb714e7
·
1 Parent(s): d24d994

Added logging widget to demo

Browse files
Files changed (2) hide show
  1. demo/src/gui.py +27 -18
  2. demo/src/logger.py +26 -0
demo/src/gui.py CHANGED
@@ -1,9 +1,17 @@
 
 
 
1
  import gradio as gr
2
 
3
  from .compute import run_model
 
4
  from .utils import load_ct_to_numpy
5
 
6
 
 
 
 
 
7
  class WebUI:
8
  def __init__(
9
  self,
@@ -27,6 +35,7 @@ class WebUI:
27
  "Brain": "B",
28
  "Liver": "L"
29
  }
 
30
 
31
  self.fixed_image_path = None
32
  self.moving_image_path = None
@@ -42,12 +51,12 @@ class WebUI:
42
  label="Which 2D slice to show",
43
  )
44
 
45
- self.run_btn = gr.Button("Run analysis").style(
46
  full_width=False, size="lg"
47
  )
48
 
49
  def set_class_name(self, value):
50
- print("Changed task to:", value)
51
  self.class_name = value
52
 
53
  def upload_file(self, files):
@@ -85,7 +94,7 @@ class WebUI:
85
  self.moving_images = load_ct_to_numpy(self.moving_image_path)
86
  self.pred_images = load_ct_to_numpy(output_path + "pred_image.nii.gz")
87
 
88
- return None
89
 
90
  def get_fixed_image(self, k):
91
  k = int(k) - 1
@@ -121,7 +130,13 @@ class WebUI:
121
  margin: auto;
122
  }
123
  #upload {
124
- height: 80px;
 
 
 
 
 
 
125
  }
126
  """
127
  with gr.Blocks(css=css) as demo:
@@ -149,6 +164,9 @@ class WebUI:
149
  info="Which task to perform image-to-registration on",
150
  multiselect=False,
151
  size="sm",
 
 
 
152
  )
153
  model_selector.input(
154
  fn=lambda x: self.set_class_name(x),
@@ -158,19 +176,8 @@ class WebUI:
158
 
159
  self.run_btn.render()
160
 
161
- """
162
- with gr.Row():
163
- gr.Examples(
164
- examples=[
165
- os.path.join(self.cwd, "ixi_image.nii.gz"),
166
- os.path.join(self.cwd, "ixi_image2.nii.gz"),
167
- ],
168
- inputs=file_output,
169
- outputs=file_output,
170
- fn=self.upload_file,
171
- cache_examples=True,
172
- )
173
- """
174
 
175
  with gr.Row():
176
  with gr.Box():
@@ -201,6 +208,8 @@ class WebUI:
201
 
202
  pred_images = []
203
  for i in range(self.nb_slider_items):
 
 
204
  visibility = True if i == 1 else False
205
  t = gr.Image(
206
  visible=visibility, elem_id="model-2d", label="predicted fixed image", show_label=True,
@@ -213,7 +222,7 @@ class WebUI:
213
  self.run_btn.click(
214
  fn=self.process,
215
  inputs=None,
216
- outputs=None,
217
  )
218
 
219
  self.slider.input(
 
1
+ import logging
2
+ import sys
3
+
4
  import gradio as gr
5
 
6
  from .compute import run_model
7
+ from .logger import setup_logger, read_logs
8
  from .utils import load_ct_to_numpy
9
 
10
 
11
+ # setup logging
12
+ LOGGER = setup_logger()
13
+
14
+
15
  class WebUI:
16
  def __init__(
17
  self,
 
35
  "Brain": "B",
36
  "Liver": "L"
37
  }
38
+ self.class_name = "Brain"
39
 
40
  self.fixed_image_path = None
41
  self.moving_image_path = None
 
51
  label="Which 2D slice to show",
52
  )
53
 
54
+ self.run_btn = gr.Button("Run analysis", show_progress="full", elem_id="button").style(
55
  full_width=False, size="lg"
56
  )
57
 
58
  def set_class_name(self, value):
59
+ LOGGER.info(f"Changed task to: {value}")
60
  self.class_name = value
61
 
62
  def upload_file(self, files):
 
94
  self.moving_images = load_ct_to_numpy(self.moving_image_path)
95
  self.pred_images = load_ct_to_numpy(output_path + "pred_image.nii.gz")
96
 
97
+ return self.pred_images[0]
98
 
99
  def get_fixed_image(self, k):
100
  k = int(k) - 1
 
130
  margin: auto;
131
  }
132
  #upload {
133
+ height: 120px;
134
+ }
135
+ #button {
136
+ height: 120px;
137
+ }
138
+ #dropdown {
139
+ height: 120px;
140
  }
141
  """
142
  with gr.Blocks(css=css) as demo:
 
164
  info="Which task to perform image-to-registration on",
165
  multiselect=False,
166
  size="sm",
167
+ default="Brain",
168
+ elem_id="dropdown",
169
+
170
  )
171
  model_selector.input(
172
  fn=lambda x: self.set_class_name(x),
 
176
 
177
  self.run_btn.render()
178
 
179
+ logs = gr.Textbox(label="Logs", info="Verbose from inference will be displayed below.", max_lines=8, autoscroll=True)
180
+ demo.load(read_logs, None, logs, every=1)
 
 
 
 
 
 
 
 
 
 
 
181
 
182
  with gr.Row():
183
  with gr.Box():
 
208
 
209
  pred_images = []
210
  for i in range(self.nb_slider_items):
211
+ if i == 0:
212
+ first_pred_component = t
213
  visibility = True if i == 1 else False
214
  t = gr.Image(
215
  visible=visibility, elem_id="model-2d", label="predicted fixed image", show_label=True,
 
222
  self.run_btn.click(
223
  fn=self.process,
224
  inputs=None,
225
+ outputs=first_pred_component,
226
  )
227
 
228
  self.slider.input(
demo/src/logger.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import sys
3
+
4
+
5
+ def setup_logger():
6
+ # clear log
7
+ file_to_delete = open("log.log",'w')
8
+ file_to_delete.close()
9
+
10
+ file_handler = logging.FileHandler(filename='log.log')
11
+ stdout_handler = logging.StreamHandler(stream=sys.stdout)
12
+ handlers = [file_handler, stdout_handler]
13
+
14
+ logging.basicConfig(
15
+ level=logging.INFO,
16
+ format='[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',
17
+ handlers=handlers,
18
+ )
19
+
20
+ return logging.getLogger(__name__)
21
+
22
+
23
+ def read_logs():
24
+ sys.stdout.flush()
25
+ with open("log.log", "r") as f:
26
+ return f.read()