earrieta commited on
Commit
15b5ec4
·
1 Parent(s): 231b572

Integrated GUI

Browse files
Files changed (3) hide show
  1. .gitignore +3 -0
  2. demo_agent.py +144 -24
  3. testing_structure.xml +267 -0
.gitignore CHANGED
@@ -1 +1,4 @@
1
  /Non_Bids_Dataset
 
 
 
 
1
  /Non_Bids_Dataset
2
+ .env
3
+ __pycache__/
4
+ .venv/
demo_agent.py CHANGED
@@ -221,45 +221,133 @@ def call_bidsifier_step(
221
  def confirm_commands(
222
  last_state: Optional[Dict[str, Any]],
223
  progress_value: int,
224
- ) -> Tuple[str, int]:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  """
226
- Confirm and execute the commands proposed in the last LLM response.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
  Parameters
229
  ----------
230
  last_state : dict or None
231
- State returned by `call_bidsifier_step`, containing `output_root` and
232
- list of `commands`. If None, nothing can be executed.
233
  progress_value : int
234
- Current progress through steps.
235
 
236
  Returns
237
  -------
238
- status_message : str
239
- Combined stdout/stderr/exit codes of executed commands.
240
  new_progress : int
241
- Updated progress value.
 
 
242
  """
243
  if not last_state:
244
- return "⚠️ No previous BIDSifier step to confirm.", progress_value
245
 
246
  output_root = last_state.get("output_root", "").strip()
247
  commands: List[str] = last_state.get("commands", [])
 
248
 
249
  if not output_root:
250
- return "⚠️ Output root is empty; cannot execute commands.", progress_value
251
-
252
  if not commands:
253
- return "⚠️ No commands detected in the last BIDSifier output.", progress_value
254
 
255
  root = Path(output_root)
256
  root.mkdir(parents=True, exist_ok=True)
257
 
258
  all_details: List[str] = []
259
-
260
  for raw_cmd in commands:
261
- # Support multi-line shell with backslash continuations *within* a line,
262
- # but commands already come one-per-line from `parse_commands_from_markdown`.
263
  for cmd in split_shell_commands(raw_cmd):
264
  proc = subprocess.run(
265
  cmd,
@@ -277,16 +365,20 @@ def confirm_commands(
277
 
278
  status = "### Command execution log\n\n" + "\n\n".join(all_details)
279
 
280
- # Heuristic: if we executed commands for this step, bump progress to max
281
- # of current and the step index.
282
- step_label = last_state.get("step_label")
283
  try:
284
  idx = STEP_LABELS.index(step_label)
285
- new_progress = max(progress_value, idx + 1)
286
  except (ValueError, TypeError):
 
 
 
 
 
 
 
 
287
  new_progress = progress_value
288
 
289
- return status, new_progress
290
 
291
 
292
  def run_bids_validation(output_root: str) -> Tuple[str, str]:
@@ -386,9 +478,15 @@ with gr.Blocks(
386
  )
387
 
388
  with gr.Row():
 
 
 
 
 
 
389
  dataset_xml_input = gr.Textbox(
390
- label="Dataset XML",
391
- placeholder="Paste dataset_structure.xml content here (optional)",
392
  lines=8,
393
  )
394
  readme_input = gr.Textbox(
@@ -460,7 +558,8 @@ with gr.Blocks(
460
  interactive=True,
461
  )
462
 
463
- confirm_button = gr.Button("Confirm / Run commands", variant="primary")
 
464
  bids_validator_button = gr.Button("Run BIDS Validator", variant="primary")
465
 
466
  status_msg = gr.Markdown(label="Status / execution log")
@@ -486,10 +585,31 @@ with gr.Blocks(
486
  outputs=[llm_output_box, commands_box, last_state, progress_bar],
487
  )
488
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
  confirm_button.click(
490
  fn=confirm_commands,
491
  inputs=[last_state, progress_bar],
492
- outputs=[status_msg, progress_bar],
 
 
 
 
 
 
493
  )
494
 
495
  bids_validator_button.click(
 
221
  def confirm_commands(
222
  last_state: Optional[Dict[str, Any]],
223
  progress_value: int,
224
+ ) -> Tuple[str, str, Dict[str, Any], int, str, str]:
225
+ """Advance to the next BIDSifier step and call the agent for it.
226
+
227
+ Parameters
228
+ ----------
229
+ last_state : dict or None
230
+ State from the previous `call_bidsifier_step`.
231
+ progress_value : int
232
+ Current progress value.
233
+
234
+ Returns
235
+ -------
236
+ llm_output : str
237
+ Raw output from the agent for the next step.
238
+ commands_str : str
239
+ Parsed commands from that output.
240
+ new_state : dict
241
+ Updated state reflecting the new step.
242
+ new_progress : int
243
+ Updated progress value (1-based index of new step).
244
+ new_step_label : str
245
+ UI label of the advanced step (or unchanged if already at last step).
246
+ status_msg : str
247
+ Short status / info message.
248
  """
249
+ if not last_state:
250
+ return (
251
+ "⚠️ No previous BIDSifier step to advance from.",
252
+ "",
253
+ {},
254
+ progress_value,
255
+ STEP_LABELS[0],
256
+ "No state available to confirm.",
257
+ )
258
+
259
+ current_label = last_state.get("step_label")
260
+ try:
261
+ idx = STEP_LABELS.index(current_label)
262
+ except (ValueError, TypeError):
263
+ idx = 0
264
+
265
+ # If already at last step, do not advance further.
266
+ if idx >= len(STEP_LABELS) - 1:
267
+ return (
268
+ "⚠️ Already at final step; cannot advance.",
269
+ "",
270
+ last_state,
271
+ progress_value,
272
+ current_label,
273
+ "Final step reached.",
274
+ )
275
+
276
+ next_label = STEP_LABELS[idx + 1]
277
+ next_id = BIDSIFIER_STEPS[next_label]
278
+
279
+ # Rebuild context from last_state.
280
+ context = build_context(
281
+ last_state.get("dataset_xml", "") or "",
282
+ last_state.get("readme_text", "") or "",
283
+ last_state.get("publication_text", "") or "",
284
+ last_state.get("output_root", "") or "",
285
+ )
286
+
287
+ agent = BIDSifierAgent(
288
+ provider=last_state.get("provider", "openai"),
289
+ model=last_state.get("model", "gpt-4o-mini"),
290
+ )
291
+
292
+ llm_output = agent.run_step(next_id, context)
293
+ commands = parse_commands_from_markdown(llm_output)
294
+ commands_str = "\n".join(commands) if commands else ""
295
+
296
+ new_state = dict(last_state)
297
+ new_state.update(
298
+ {
299
+ "step_label": next_label,
300
+ "step_id": next_id,
301
+ "llm_output": llm_output,
302
+ "commands": commands,
303
+ }
304
+ )
305
+
306
+ new_progress = max(progress_value, idx + 2) # idx is 0-based; progress is 1-based
307
+ status_msg = f"Advanced to step '{next_label}'. Parsed {len(commands)} command(s)."
308
+
309
+ return llm_output, commands_str, new_state, new_progress, next_label, status_msg
310
+
311
+
312
+ def run_commands(
313
+ last_state: Optional[Dict[str, Any]],
314
+ progress_value: int,
315
+ ) -> Tuple[str, int, str]:
316
+ """Execute parsed shell commands for the current step, then advance step pointer.
317
 
318
  Parameters
319
  ----------
320
  last_state : dict or None
321
+ State containing commands to execute.
 
322
  progress_value : int
323
+ Current progress value.
324
 
325
  Returns
326
  -------
327
+ execution_log : str
328
+ Markdown log of command execution results.
329
  new_progress : int
330
+ Updated progress value after execution.
331
+ new_step_label : str
332
+ Updated dropdown label pointing to next step (or unchanged if final).
333
  """
334
  if not last_state:
335
+ return "⚠️ No previous BIDSifier step to run.", progress_value, STEP_LABELS[0]
336
 
337
  output_root = last_state.get("output_root", "").strip()
338
  commands: List[str] = last_state.get("commands", [])
339
+ step_label = last_state.get("step_label")
340
 
341
  if not output_root:
342
+ return "⚠️ Output root is empty; cannot execute commands.", progress_value, step_label or STEP_LABELS[0]
 
343
  if not commands:
344
+ return "⚠️ No commands detected to execute.", progress_value, step_label or STEP_LABELS[0]
345
 
346
  root = Path(output_root)
347
  root.mkdir(parents=True, exist_ok=True)
348
 
349
  all_details: List[str] = []
 
350
  for raw_cmd in commands:
 
 
351
  for cmd in split_shell_commands(raw_cmd):
352
  proc = subprocess.run(
353
  cmd,
 
365
 
366
  status = "### Command execution log\n\n" + "\n\n".join(all_details)
367
 
 
 
 
368
  try:
369
  idx = STEP_LABELS.index(step_label)
 
370
  except (ValueError, TypeError):
371
+ idx = 0
372
+
373
+ # Advance pointer (without auto-calling agent) if not at final step.
374
+ if idx < len(STEP_LABELS) - 1:
375
+ new_step_label = STEP_LABELS[idx + 1]
376
+ new_progress = max(progress_value, idx + 2)
377
+ else:
378
+ new_step_label = STEP_LABELS[idx]
379
  new_progress = progress_value
380
 
381
+ return status, new_progress, new_step_label
382
 
383
 
384
  def run_bids_validation(output_root: str) -> Tuple[str, str]:
 
478
  )
479
 
480
  with gr.Row():
481
+ # File uploader + editable textbox for dataset XML content.
482
+ dataset_xml_file = gr.File(
483
+ label="Upload dataset_structure.xml (optional)",
484
+ file_types=[".xml", ".txt"],
485
+ type="filepath",
486
+ )
487
  dataset_xml_input = gr.Textbox(
488
+ label="Dataset XML (editable)",
489
+ placeholder="Paste or upload dataset_structure.xml content here",
490
  lines=8,
491
  )
492
  readme_input = gr.Textbox(
 
558
  interactive=True,
559
  )
560
 
561
+ confirm_button = gr.Button("Confirm (advance & call next step)", variant="primary")
562
+ run_commands_button = gr.Button("Run Commands", variant="secondary")
563
  bids_validator_button = gr.Button("Run BIDS Validator", variant="primary")
564
 
565
  status_msg = gr.Markdown(label="Status / execution log")
 
585
  outputs=[llm_output_box, commands_box, last_state, progress_bar],
586
  )
587
 
588
+ # Callback to load uploaded file content into the textbox.
589
+ def _load_dataset_xml(file_path: Optional[str]) -> str:
590
+ if not file_path:
591
+ return ""
592
+ try:
593
+ return Path(file_path).read_text(encoding="utf-8", errors="ignore")
594
+ except Exception as e:
595
+ return f"⚠️ Failed to read file: {e}"
596
+
597
+ dataset_xml_file.change(
598
+ fn=_load_dataset_xml,
599
+ inputs=[dataset_xml_file],
600
+ outputs=[dataset_xml_input],
601
+ )
602
+
603
  confirm_button.click(
604
  fn=confirm_commands,
605
  inputs=[last_state, progress_bar],
606
+ outputs=[llm_output_box, commands_box, last_state, progress_bar, step_dropdown, status_msg],
607
+ )
608
+
609
+ run_commands_button.click(
610
+ fn=run_commands,
611
+ inputs=[last_state, progress_bar],
612
+ outputs=[status_msg, progress_bar, step_dropdown],
613
  )
614
 
615
  bids_validator_button.click(
testing_structure.xml ADDED
@@ -0,0 +1,267 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <dataset>
3
+ <file name="LICENSE.txt" />
4
+ <folder name="BONBID2023_Train">
5
+ <folder name="1ADC_ss">
6
+ <file name="MGHNICU_010-VISIT_01-ADC_ss.mha" />
7
+ <file name="MGHNICU_014-VISIT_01-ADC_ss.mha" />
8
+ <file name="MGHNICU_015-VISIT_01-ADC_ss.mha" />
9
+ <file name="MGHNICU_028-VISIT_01-ADC_ss.mha" />
10
+ <file name="MGHNICU_062-VISIT_01-ADC_ss.mha" />
11
+ <file name="MGHNICU_064-VISIT_01-ADC_ss.mha" />
12
+ <file name="MGHNICU_069-VISIT_01-ADC_ss.mha" />
13
+ <file name="MGHNICU_070-VISIT_01-ADC_ss.mha" />
14
+ <file name="MGHNICU_071-VISIT_01-ADC_ss.mha" />
15
+ <file name="MGHNICU_072-VISIT_01-ADC_ss.mha" />
16
+ <file name="MGHNICU_074-VISIT_01-ADC_ss.mha" />
17
+ <file name="MGHNICU_077-VISIT_01-ADC_ss.mha" />
18
+ <file name="MGHNICU_101-VISIT_01-ADC_ss.mha" />
19
+ <file name="MGHNICU_105-VISIT_01-ADC_ss.mha" />
20
+ <file name="MGHNICU_109-VISIT_01-ADC_ss.mha" />
21
+ <file name="MGHNICU_125-VISIT_01-ADC_ss.mha" />
22
+ <file name="MGHNICU_144-VISIT_01-ADC_ss.mha" />
23
+ <file name="MGHNICU_153-VISIT_01-ADC_ss.mha" />
24
+ <file name="MGHNICU_173-VISIT_01-ADC_ss.mha" />
25
+ <file name="MGHNICU_174-VISIT_01-ADC_ss.mha" />
26
+ <file name="MGHNICU_178-VISIT_01-ADC_ss.mha" />
27
+ <file name="MGHNICU_197-VISIT_01-ADC_ss.mha" />
28
+ <file name="MGHNICU_209-VISIT_01-ADC_ss.mha" />
29
+ <file name="MGHNICU_214-VISIT_01-ADC_ss.mha" />
30
+ <file name="MGHNICU_215-VISIT_01-ADC_ss.mha" />
31
+ <file name="MGHNICU_231-VISIT_01-ADC_ss.mha" />
32
+ <file name="MGHNICU_234-VISIT_01-ADC_ss.mha" />
33
+ <file name="MGHNICU_262-VISIT_01-ADC_ss.mha" />
34
+ <file name="MGHNICU_263-VISIT_01-ADC_ss.mha" />
35
+ <file name="MGHNICU_264-VISIT_01-ADC_ss.mha" />
36
+ <file name="MGHNICU_272-VISIT_01-ADC_ss.mha" />
37
+ <file name="MGHNICU_275-VISIT_01-ADC_ss.mha" />
38
+ <file name="MGHNICU_286-VISIT_01-ADC_ss.mha" />
39
+ <file name="MGHNICU_290-VISIT_01-ADC_ss.mha" />
40
+ <file name="MGHNICU_299-VISIT_01-ADC_ss.mha" />
41
+ <file name="MGHNICU_303-VISIT_01-ADC_ss.mha" />
42
+ <file name="MGHNICU_305-VISIT_01-ADC_ss.mha" />
43
+ <file name="MGHNICU_306-VISIT_01-ADC_ss.mha" />
44
+ <file name="MGHNICU_309-VISIT_01-ADC_ss.mha" />
45
+ <file name="MGHNICU_310-VISIT_01-ADC_ss.mha" />
46
+ <file name="MGHNICU_312-VISIT_01-ADC_ss.mha" />
47
+ <file name="MGHNICU_323-VISIT_01-ADC_ss.mha" />
48
+ <file name="MGHNICU_329-VISIT_01-ADC_ss.mha" />
49
+ <file name="MGHNICU_331-VISIT_01-ADC_ss.mha" />
50
+ <file name="MGHNICU_336-VISIT_01-ADC_ss.mha" />
51
+ <file name="MGHNICU_338-VISIT_01-ADC_ss.mha" />
52
+ <file name="MGHNICU_346-VISIT_01-ADC_ss.mha" />
53
+ <file name="MGHNICU_348-VISIT_01-ADC_ss.mha" />
54
+ <file name="MGHNICU_350-VISIT_01-ADC_ss.mha" />
55
+ <file name="MGHNICU_355-VISIT_01-ADC_ss.mha" />
56
+ <file name="MGHNICU_358-VISIT_01-ADC_ss.mha" />
57
+ <file name="MGHNICU_359-VISIT_01-ADC_ss.mha" />
58
+ <file name="MGHNICU_362-VISIT_01-ADC_ss.mha" />
59
+ <file name="MGHNICU_370-VISIT_01-ADC_ss.mha" />
60
+ <file name="MGHNICU_373-VISIT_01-ADC_ss.mha" />
61
+ <file name="MGHNICU_376-VISIT_01-ADC_ss.mha" />
62
+ <file name="MGHNICU_377-VISIT_01-ADC_ss.mha" />
63
+ <file name="MGHNICU_378-VISIT_01-ADC_ss.mha" />
64
+ <file name="MGHNICU_379-VISIT_01-ADC_ss.mha" />
65
+ <file name="MGHNICU_393-VISIT_01-ADC_ss.mha" />
66
+ <file name="MGHNICU_403-VISIT_01-ADC_ss.mha" />
67
+ <file name="MGHNICU_405-VISIT_01-ADC_ss.mha" />
68
+ <file name="MGHNICU_415-VISIT_01-ADC_ss.mha" />
69
+ <file name="MGHNICU_432-VISIT_01-ADC_ss.mha" />
70
+ <file name="MGHNICU_433-VISIT_01-ADC_ss.mha" />
71
+ <file name="MGHNICU_435-VISIT_01-ADC_ss.mha" />
72
+ <file name="MGHNICU_437-VISIT_01-ADC_ss.mha" />
73
+ <file name="MGHNICU_438-VISIT_01-ADC_ss.mha" />
74
+ <file name="MGHNICU_439-VISIT_01-ADC_ss.mha" />
75
+ <file name="MGHNICU_440-VISIT_01-ADC_ss.mha" />
76
+ <file name="MGHNICU_441-VISIT_01-ADC_ss.mha" />
77
+ <file name="MGHNICU_442-VISIT_01-ADC_ss.mha" />
78
+ <file name="MGHNICU_444-VISIT_01-ADC_ss.mha" />
79
+ <file name="MGHNICU_445-VISIT_01-ADC_ss.mha" />
80
+ <file name="MGHNICU_446-VISIT_01-ADC_ss.mha" />
81
+ <file name="MGHNICU_447-VISIT_01-ADC_ss.mha" />
82
+ <file name="MGHNICU_448-VISIT_01-ADC_ss.mha" />
83
+ <file name="MGHNICU_449-VISIT_01-ADC_ss.mha" />
84
+ <file name="MGHNICU_452-VISIT_01-ADC_ss.mha" />
85
+ <file name="MGHNICU_453-VISIT_01-ADC_ss.mha" />
86
+ <file name="MGHNICU_454-VISIT_01-ADC_ss.mha" />
87
+ <file name="MGHNICU_455-VISIT_01-ADC_ss.mha" />
88
+ <file name="MGHNICU_456-VISIT_01-ADC_ss.mha" />
89
+ <file name="MGHNICU_457-VISIT_01-ADC_ss.mha" />
90
+ <file name="MGHNICU_458-VISIT_01-ADC_ss.mha" />
91
+ </folder>
92
+ <folder name="2Z_ADC">
93
+ <file name="Zmap_MGHNICU_010-VISIT_01-ADC_smooth2mm_clipped10.mha" />
94
+ <file name="Zmap_MGHNICU_014-VISIT_01-ADC_smooth2mm_clipped10.mha" />
95
+ <file name="Zmap_MGHNICU_015-VISIT_01-ADC_smooth2mm_clipped10.mha" />
96
+ <file name="Zmap_MGHNICU_028-VISIT_01-ADC_smooth2mm_clipped10.mha" />
97
+ <file name="Zmap_MGHNICU_062-VISIT_01-ADC_smooth2mm_clipped10.mha" />
98
+ <file name="Zmap_MGHNICU_064-VISIT_01-ADC_smooth2mm_clipped10.mha" />
99
+ <file name="Zmap_MGHNICU_069-VISIT_01-ADC_smooth2mm_clipped10.mha" />
100
+ <file name="Zmap_MGHNICU_070-VISIT_01-ADC_smooth2mm_clipped10.mha" />
101
+ <file name="Zmap_MGHNICU_071-VISIT_01-ADC_smooth2mm_clipped10.mha" />
102
+ <file name="Zmap_MGHNICU_072-VISIT_01-ADC_smooth2mm_clipped10.mha" />
103
+ <file name="Zmap_MGHNICU_074-VISIT_01-ADC_smooth2mm_clipped10.mha" />
104
+ <file name="Zmap_MGHNICU_077-VISIT_01-ADC_smooth2mm_clipped10.mha" />
105
+ <file name="Zmap_MGHNICU_101-VISIT_01-ADC_smooth2mm_clipped10.mha" />
106
+ <file name="Zmap_MGHNICU_105-VISIT_01-ADC_smooth2mm_clipped10.mha" />
107
+ <file name="Zmap_MGHNICU_109-VISIT_01-ADC_smooth2mm_clipped10.mha" />
108
+ <file name="Zmap_MGHNICU_125-VISIT_01-ADC_smooth2mm_clipped10.mha" />
109
+ <file name="Zmap_MGHNICU_144-VISIT_01-ADC_smooth2mm_clipped10.mha" />
110
+ <file name="Zmap_MGHNICU_153-VISIT_01-ADC_smooth2mm_clipped10.mha" />
111
+ <file name="Zmap_MGHNICU_173-VISIT_01-ADC_smooth2mm_clipped10.mha" />
112
+ <file name="Zmap_MGHNICU_174-VISIT_01-ADC_smooth2mm_clipped10.mha" />
113
+ <file name="Zmap_MGHNICU_178-VISIT_01-ADC_smooth2mm_clipped10.mha" />
114
+ <file name="Zmap_MGHNICU_197-VISIT_01-ADC_smooth2mm_clipped10.mha" />
115
+ <file name="Zmap_MGHNICU_209-VISIT_01-ADC_smooth2mm_clipped10.mha" />
116
+ <file name="Zmap_MGHNICU_214-VISIT_01-ADC_smooth2mm_clipped10.mha" />
117
+ <file name="Zmap_MGHNICU_215-VISIT_01-ADC_smooth2mm_clipped10.mha" />
118
+ <file name="Zmap_MGHNICU_231-VISIT_01-ADC_smooth2mm_clipped10.mha" />
119
+ <file name="Zmap_MGHNICU_234-VISIT_01-ADC_smooth2mm_clipped10.mha" />
120
+ <file name="Zmap_MGHNICU_262-VISIT_01-ADC_smooth2mm_clipped10.mha" />
121
+ <file name="Zmap_MGHNICU_263-VISIT_01-ADC_smooth2mm_clipped10.mha" />
122
+ <file name="Zmap_MGHNICU_264-VISIT_01-ADC_smooth2mm_clipped10.mha" />
123
+ <file name="Zmap_MGHNICU_272-VISIT_01-ADC_smooth2mm_clipped10.mha" />
124
+ <file name="Zmap_MGHNICU_275-VISIT_01-ADC_smooth2mm_clipped10.mha" />
125
+ <file name="Zmap_MGHNICU_286-VISIT_01-ADC_smooth2mm_clipped10.mha" />
126
+ <file name="Zmap_MGHNICU_290-VISIT_01-ADC_smooth2mm_clipped10.mha" />
127
+ <file name="Zmap_MGHNICU_299-VISIT_01-ADC_smooth2mm_clipped10.mha" />
128
+ <file name="Zmap_MGHNICU_303-VISIT_01-ADC_smooth2mm_clipped10.mha" />
129
+ <file name="Zmap_MGHNICU_305-VISIT_01-ADC_smooth2mm_clipped10.mha" />
130
+ <file name="Zmap_MGHNICU_306-VISIT_01-ADC_smooth2mm_clipped10.mha" />
131
+ <file name="Zmap_MGHNICU_309-VISIT_01-ADC_smooth2mm_clipped10.mha" />
132
+ <file name="Zmap_MGHNICU_310-VISIT_01-ADC_smooth2mm_clipped10.mha" />
133
+ <file name="Zmap_MGHNICU_312-VISIT_01-ADC_smooth2mm_clipped10.mha" />
134
+ <file name="Zmap_MGHNICU_323-VISIT_01-ADC_smooth2mm_clipped10.mha" />
135
+ <file name="Zmap_MGHNICU_329-VISIT_01-ADC_smooth2mm_clipped10.mha" />
136
+ <file name="Zmap_MGHNICU_331-VISIT_01-ADC_smooth2mm_clipped10.mha" />
137
+ <file name="Zmap_MGHNICU_336-VISIT_01-ADC_smooth2mm_clipped10.mha" />
138
+ <file name="Zmap_MGHNICU_338-VISIT_01-ADC_smooth2mm_clipped10.mha" />
139
+ <file name="Zmap_MGHNICU_346-VISIT_01-ADC_smooth2mm_clipped10.mha" />
140
+ <file name="Zmap_MGHNICU_348-VISIT_01-ADC_smooth2mm_clipped10.mha" />
141
+ <file name="Zmap_MGHNICU_350-VISIT_01-ADC_smooth2mm_clipped10.mha" />
142
+ <file name="Zmap_MGHNICU_355-VISIT_01-ADC_smooth2mm_clipped10.mha" />
143
+ <file name="Zmap_MGHNICU_358-VISIT_01-ADC_smooth2mm_clipped10.mha" />
144
+ <file name="Zmap_MGHNICU_359-VISIT_01-ADC_smooth2mm_clipped10.mha" />
145
+ <file name="Zmap_MGHNICU_362-VISIT_01-ADC_smooth2mm_clipped10.mha" />
146
+ <file name="Zmap_MGHNICU_370-VISIT_01-ADC_smooth2mm_clipped10.mha" />
147
+ <file name="Zmap_MGHNICU_373-VISIT_01-ADC_smooth2mm_clipped10.mha" />
148
+ <file name="Zmap_MGHNICU_376-VISIT_01-ADC_smooth2mm_clipped10.mha" />
149
+ <file name="Zmap_MGHNICU_377-VISIT_01-ADC_smooth2mm_clipped10.mha" />
150
+ <file name="Zmap_MGHNICU_378-VISIT_01-ADC_smooth2mm_clipped10.mha" />
151
+ <file name="Zmap_MGHNICU_379-VISIT_01-ADC_smooth2mm_clipped10.mha" />
152
+ <file name="Zmap_MGHNICU_393-VISIT_01-ADC_smooth2mm_clipped10.mha" />
153
+ <file name="Zmap_MGHNICU_403-VISIT_01-ADC_smooth2mm_clipped10.mha" />
154
+ <file name="Zmap_MGHNICU_405-VISIT_01-ADC_smooth2mm_clipped10.mha" />
155
+ <file name="Zmap_MGHNICU_415-VISIT_01-ADC_smooth2mm_clipped10.mha" />
156
+ <file name="Zmap_MGHNICU_432-VISIT_01-ADC_smooth2mm_clipped10.mha" />
157
+ <file name="Zmap_MGHNICU_433-VISIT_01-ADC_smooth2mm_clipped10.mha" />
158
+ <file name="Zmap_MGHNICU_435-VISIT_01-ADC_smooth2mm_clipped10.mha" />
159
+ <file name="Zmap_MGHNICU_437-VISIT_01-ADC_smooth2mm_clipped10.mha" />
160
+ <file name="Zmap_MGHNICU_438-VISIT_01-ADC_smooth2mm_clipped10.mha" />
161
+ <file name="Zmap_MGHNICU_439-VISIT_01-ADC_smooth2mm_clipped10.mha" />
162
+ <file name="Zmap_MGHNICU_440-VISIT_01-ADC_smooth2mm_clipped10.mha" />
163
+ <file name="Zmap_MGHNICU_441-VISIT_01-ADC_smooth2mm_clipped10.mha" />
164
+ <file name="Zmap_MGHNICU_442-VISIT_01-ADC_smooth2mm_clipped10.mha" />
165
+ <file name="Zmap_MGHNICU_444-VISIT_01-ADC_smooth2mm_clipped10.mha" />
166
+ <file name="Zmap_MGHNICU_445-VISIT_01-ADC_smooth2mm_clipped10.mha" />
167
+ <file name="Zmap_MGHNICU_446-VISIT_01-ADC_smooth2mm_clipped10.mha" />
168
+ <file name="Zmap_MGHNICU_447-VISIT_01-ADC_smooth2mm_clipped10.mha" />
169
+ <file name="Zmap_MGHNICU_448-VISIT_01-ADC_smooth2mm_clipped10.mha" />
170
+ <file name="Zmap_MGHNICU_449-VISIT_01-ADC_smooth2mm_clipped10.mha" />
171
+ <file name="Zmap_MGHNICU_452-VISIT_01-ADC_smooth2mm_clipped10.mha" />
172
+ <file name="Zmap_MGHNICU_453-VISIT_01-ADC_smooth2mm_clipped10.mha" />
173
+ <file name="Zmap_MGHNICU_454-VISIT_01-ADC_smooth2mm_clipped10.mha" />
174
+ <file name="Zmap_MGHNICU_455-VISIT_01-ADC_smooth2mm_clipped10.mha" />
175
+ <file name="Zmap_MGHNICU_456-VISIT_01-ADC_smooth2mm_clipped10.mha" />
176
+ <file name="Zmap_MGHNICU_457-VISIT_01-ADC_smooth2mm_clipped10.mha" />
177
+ <file name="Zmap_MGHNICU_458-VISIT_01-ADC_smooth2mm_clipped10.mha" />
178
+ </folder>
179
+ <folder name="3LABEL">
180
+ <file name="MGHNICU_010-VISIT_01_lesion.mha" />
181
+ <file name="MGHNICU_014-VISIT_01_lesion.mha" />
182
+ <file name="MGHNICU_015-VISIT_01_lesion.mha" />
183
+ <file name="MGHNICU_028-VISIT_01_lesion.mha" />
184
+ <file name="MGHNICU_062-VISIT_01_lesion.mha" />
185
+ <file name="MGHNICU_064-VISIT_01_lesion.mha" />
186
+ <file name="MGHNICU_069-VISIT_01_lesion.mha" />
187
+ <file name="MGHNICU_070-VISIT_01_lesion.mha" />
188
+ <file name="MGHNICU_071-VISIT_01_lesion.mha" />
189
+ <file name="MGHNICU_072-VISIT_01_lesion.mha" />
190
+ <file name="MGHNICU_074-VISIT_01_lesion.mha" />
191
+ <file name="MGHNICU_077-VISIT_01_lesion.mha" />
192
+ <file name="MGHNICU_101-VISIT_01_lesion.mha" />
193
+ <file name="MGHNICU_105-VISIT_01_lesion.mha" />
194
+ <file name="MGHNICU_109-VISIT_01_lesion.mha" />
195
+ <file name="MGHNICU_125-VISIT_01_lesion.mha" />
196
+ <file name="MGHNICU_144-VISIT_01_lesion.mha" />
197
+ <file name="MGHNICU_153-VISIT_01_lesion.mha" />
198
+ <file name="MGHNICU_173-VISIT_01_lesion.mha" />
199
+ <file name="MGHNICU_174-VISIT_01_lesion.mha" />
200
+ <file name="MGHNICU_178-VISIT_01_lesion.mha" />
201
+ <file name="MGHNICU_197-VISIT_01_lesion.mha" />
202
+ <file name="MGHNICU_209-VISIT_01_lesion.mha" />
203
+ <file name="MGHNICU_214-VISIT_01_lesion.mha" />
204
+ <file name="MGHNICU_215-VISIT_01_lesion.mha" />
205
+ <file name="MGHNICU_231-VISIT_01_lesion.mha" />
206
+ <file name="MGHNICU_234-VISIT_01_lesion.mha" />
207
+ <file name="MGHNICU_262-VISIT_01_lesion.mha" />
208
+ <file name="MGHNICU_263-VISIT_01_lesion.mha" />
209
+ <file name="MGHNICU_264-VISIT_01_lesion.mha" />
210
+ <file name="MGHNICU_272-VISIT_01_lesion.mha" />
211
+ <file name="MGHNICU_275-VISIT_01_lesion.mha" />
212
+ <file name="MGHNICU_286-VISIT_01_lesion.mha" />
213
+ <file name="MGHNICU_290-VISIT_01_lesion.mha" />
214
+ <file name="MGHNICU_299-VISIT_01_lesion.mha" />
215
+ <file name="MGHNICU_303-VISIT_01_lesion.mha" />
216
+ <file name="MGHNICU_305-VISIT_01_lesion.mha" />
217
+ <file name="MGHNICU_306-VISIT_01_lesion.mha" />
218
+ <file name="MGHNICU_309-VISIT_01_lesion.mha" />
219
+ <file name="MGHNICU_310-VISIT_01_lesion.mha" />
220
+ <file name="MGHNICU_312-VISIT_01_lesion.mha" />
221
+ <file name="MGHNICU_323-VISIT_01_lesion.mha" />
222
+ <file name="MGHNICU_329-VISIT_01_lesion.mha" />
223
+ <file name="MGHNICU_331-VISIT_01_lesion.mha" />
224
+ <file name="MGHNICU_336-VISIT_01_lesion.mha" />
225
+ <file name="MGHNICU_338-VISIT_01_lesion.mha" />
226
+ <file name="MGHNICU_346-VISIT_01_lesion.mha" />
227
+ <file name="MGHNICU_348-VISIT_01_lesion.mha" />
228
+ <file name="MGHNICU_350-VISIT_01_lesion.mha" />
229
+ <file name="MGHNICU_355-VISIT_01_lesion.mha" />
230
+ <file name="MGHNICU_358-VISIT_01_lesion.mha" />
231
+ <file name="MGHNICU_359-VISIT_01_lesion.mha" />
232
+ <file name="MGHNICU_362-VISIT_01_lesion.mha" />
233
+ <file name="MGHNICU_370-VISIT_01_lesion.mha" />
234
+ <file name="MGHNICU_373-VISIT_01_lesion.mha" />
235
+ <file name="MGHNICU_376-VISIT_01_lesion.mha" />
236
+ <file name="MGHNICU_377-VISIT_01_lesion.mha" />
237
+ <file name="MGHNICU_378-VISIT_01_lesion.mha" />
238
+ <file name="MGHNICU_379-VISIT_01_lesion.mha" />
239
+ <file name="MGHNICU_393-VISIT_01_lesion.mha" />
240
+ <file name="MGHNICU_403-VISIT_01_lesion.mha" />
241
+ <file name="MGHNICU_405-VISIT_01_lesion.mha" />
242
+ <file name="MGHNICU_415-VISIT_01_lesion.mha" />
243
+ <file name="MGHNICU_432-VISIT_01_lesion.mha" />
244
+ <file name="MGHNICU_433-VISIT_01_lesion.mha" />
245
+ <file name="MGHNICU_435-VISIT_01_lesion.mha" />
246
+ <file name="MGHNICU_437-VISIT_01_lesion.mha" />
247
+ <file name="MGHNICU_438-VISIT_01_lesion.mha" />
248
+ <file name="MGHNICU_439-VISIT_01_lesion.mha" />
249
+ <file name="MGHNICU_440-VISIT_01_lesion.mha" />
250
+ <file name="MGHNICU_441-VISIT_01_lesion.mha" />
251
+ <file name="MGHNICU_442-VISIT_01_lesion.mha" />
252
+ <file name="MGHNICU_444-VISIT_01_lesion.mha" />
253
+ <file name="MGHNICU_445-VISIT_01_lesion.mha" />
254
+ <file name="MGHNICU_446-VISIT_01_lesion.mha" />
255
+ <file name="MGHNICU_447-VISIT_01_lesion.mha" />
256
+ <file name="MGHNICU_448-VISIT_01_lesion.mha" />
257
+ <file name="MGHNICU_449-VISIT_01_lesion.mha" />
258
+ <file name="MGHNICU_452-VISIT_01_lesion.mha" />
259
+ <file name="MGHNICU_453-VISIT_01_lesion.mha" />
260
+ <file name="MGHNICU_454-VISIT_01_lesion.mha" />
261
+ <file name="MGHNICU_455-VISIT_01_lesion.mha" />
262
+ <file name="MGHNICU_456-VISIT_01_lesion.mha" />
263
+ <file name="MGHNICU_457-VISIT_01_lesion.mha" />
264
+ <file name="MGHNICU_458-VISIT_01_lesion.mha" />
265
+ </folder>
266
+ </folder>
267
+ </dataset>