Skip to content
Snippets Groups Projects

Data explorer

1 file
+ 61
23
Compare changes
  • Side-by-side
  • Inline
+ 61
23
@@ -69,12 +69,7 @@ class Interface:
@@ -69,12 +69,7 @@ class Interface:
interactive=True,
interactive=True,
)
)
def make_pipeline(self, session):
print(session.operations)
return session
def show_results(self, operations):
def show_results(self, operations):
print(operations)
update_list = []
update_list = []
for operation in self.operations:
for operation in self.operations:
if operation in operations:
if operation in operations:
@@ -145,7 +140,6 @@ class Interface:
@@ -145,7 +140,6 @@ class Interface:
# Visualization and results
# Visualization and results
with gr.Row(elem_classes="mt-64"):
with gr.Row(elem_classes="mt-64"):
# Text box with data summary
# Text box with data summary
with gr.Column(visible=False) as result_data_summary:
with gr.Column(visible=False) as result_data_summary:
data_summary = gr.Text(
data_summary = gr.Text(
@@ -195,8 +189,9 @@ class Interface:
@@ -195,8 +189,9 @@ class Interface:
hist_plot = gr.Plot(label="Volume intensity histogram")
hist_plot = gr.Plot(label="Volume intensity histogram")
### Gradio objects lists
### Gradio objects lists
pipeline = Pipeline()
session = gr.State([])
session = gr.State([])
 
pipeline = Pipeline()
# Results
# Results
results = [
results = [
@@ -239,15 +234,15 @@ class Interface:
@@ -239,15 +234,15 @@ class Interface:
btn_run.click(
btn_run.click(
fn=self.set_spinner, inputs=[], outputs=btn_run).success(
fn=self.set_spinner, inputs=[], outputs=btn_run).success(
fn=self.start_session, inputs=inputs, outputs=session).success(
fn=self.start_session, inputs=inputs, outputs=session).success(
fn=self.make_pipeline, inputs=session, outputs=session).success(
fn=pipeline.run_pipeline, inputs=session, outputs=outputs).success(
fn=pipeline.process_input, inputs=session, outputs=session).success(
# fn=pipeline.process_input, inputs=session, outputs=session).success(
fn=pipeline.show_summary_str, inputs=session, outputs=data_summary).success(
# fn=pipeline.show_summary_str, inputs=session, outputs=data_summary).success(
fn=pipeline.create_zslice_fig, inputs=session, outputs=zslice_plot).success(
# fn=pipeline.create_zslice_fig, inputs=session, outputs=zslice_plot).success(
fn=pipeline.create_yslice_fig, inputs=session, outputs=yslice_plot).success(
# fn=pipeline.create_yslice_fig, inputs=session, outputs=yslice_plot).success(
fn=pipeline.create_xslice_fig, inputs=session, outputs=xslice_plot).success(
# fn=pipeline.create_xslice_fig, inputs=session, outputs=xslice_plot).success(
fn=pipeline.create_projections_figs, inputs=session, outputs=projection_outputs).success(
# fn=pipeline.create_projections_figs, inputs=session, outputs=projection_outputs).success(
fn=pipeline.show_summary_str, inputs=session, outputs=data_summary).success(
# fn=pipeline.show_summary_str, inputs=session, outputs=data_summary).success(
fn=pipeline.plot_vol_histogram, inputs=session, outputs=hist_plot).success(
# fn=pipeline.plot_vol_histogram, inputs=session, outputs=hist_plot).success(
fn=self.show_results, inputs=operations, outputs=results).success(
fn=self.show_results, inputs=operations, outputs=results).success(
fn=self.set_relaunch_button, inputs=[], outputs=btn_run)
fn=self.set_relaunch_button, inputs=[], outputs=btn_run)
@@ -273,6 +268,7 @@ class Interface:
@@ -273,6 +268,7 @@ class Interface:
session = Session()
session = Session()
session.root_path = os.path.expanduser("~")
session.root_path = os.path.expanduser("~")
session.interface = "gradio"
session.interface = "gradio"
 
session.all_operations = Interface().operations
session.operations = args[0]
session.operations = args[0]
session.base_path = args[1]
session.base_path = args[1]
session.explorer = args[2]
session.explorer = args[2]
@@ -436,19 +432,61 @@ class Pipeline:
@@ -436,19 +432,61 @@ class Pipeline:
self.figsize = 8 # Used for matplotlig figure size
self.figsize = 8 # Used for matplotlig figure size
self.display_saturation_percentile = 99
self.display_saturation_percentile = 99
self.verbose = False
self.verbose = False
 
self.session = None
 
 
def run_pipeline(self, session):
 
self.session = session
 
outputs = []
 
print(session.all_operations)
 
for operation in session.all_operations:
 
if operation in session.operations:
 
outputs.append(self.run_operation(operation))
 
 
else:
 
print(f"Skipping {operation}")
 
outputs.append(None)
 
 
return outputs
 
 
def run_operation(self, operation):
 
print(f"Running {operation}")
def process_input(self, session):
if operation == "Data summary":
 
return "Hello from Pipeline!"
 
 
elif operation == "Z Slicer":
 
return None
 
 
elif operation == "Y Slicer":
 
return None
 
 
elif operation == "X Slicer":
 
return None
 
 
elif operation == "Z max projection":
 
return None
 
 
elif operation == "Z min projection":
 
return None
 
 
elif operation == "Intensity histogram":
 
return None
 
 
else:
 
raise ValueError("Unknown operation")
 
 
def process_input(self):
# Get info from Tiff file
# Get info from Tiff file
session.get_data_info()
self.session.get_data_info()
session.create_summary_dict()
self.session.create_summary_dict()
# Memory map data as a virtual stack
# Memory map data as a virtual stack
try:
try:
session.vol = load(
self.session.vol = load(
session.file_path,
self.session.file_path,
virtual_stack=session.virtual_stack,
virtual_stack=self.session.virtual_stack,
dataset_name=session.dataset_name,
dataset_name=self.session.dataset_name,
)
)
except:
except:
return session
return session
Loading