Mariochem92 / PhasorIdentifier

Analyze fluorescence lifetime imaging FLIM files (.R64, .ref) effortlessly. Masking, cell segmentation, pH correlation, nanoscale effects, and precise quantification. Versatile for various research scenarios.
Other
4 stars 0 forks source link

Allowing Selecting a Region of Interest (ROI) on Phasor, Intensity, and Lifetime Plots within a Notebook running in Google Colab #2

Open Mariochem92 opened 1 year ago

Mariochem92 commented 1 year ago

Issue Description: I have been trying to implement a feature that allows users to draw a region of interest (ROI) freely on plots, including the phasor plot, intensity plot, and lifetime plot. Drawing the idea from [PAM software] (https://pam.readthedocs.io/en/latest/phasor.html#selecting-a-region-of-interest-roi) I'd like to generalise this feature:

Ideally I would just need to be able to export a segment or a mask.

My initial approach using ipywidgets provided some functionality, but I'm looking for alternatives or enhancements to improve the user experience and functionality.

Current Approach:

import ipywidgets as widgets
from IPython.display import display

# List of items
items = df.Sample.to_list()

# Create the multiple selection widget
selection_widget = widgets.SelectMultiple(
    options=items,
    description='Select items:',
    rows=len(items)
)

# Create the button widget
button = widgets.Button(description='Confirm')

# Define a function to handle button click
def on_button_click(button):
    selected_items = selection_widget.value
    print("Selected items:", selected_items)

# Attach the button click event handler
button.on_click(on_button_click)

# Display the widgets
display(selection_widget, button)

Request: I would like to explore alternative strategies or improvements that would provide users with a more intuitive and effective way to select ROIs on these plots within a Jupyter Notebook. I'm open to suggestions, libraries, or tools that can enhance this feature.

Additional context Please feel free to share your ideas, experiences, or any recommended solutions for implementing this feature effectively in a Jupyter Notebook environment.