class SegmentationPluginPropagate(_SegmentationPlugin): LABEL = 'Propagate region from primary' NAME = 'propagate' COLOR = '#FFFF99' DOC = ":additional_segmentation_plugins" REQUIRES = ['primary_segmentation'] PARAMS = [('presegmentation_median_radius', IntTrait(1, 0, 100, label='Median radius')), ('presegmentation_alpha', FloatTrait(1.0, 0, 4000, label='Otsu factor', digits=2)), ('lambda', FloatTrait(0.05, 0, 4000, label='Lambda', digits=2)), ('delta_width', IntTrait(1, 1, 4, label='Delta width')), ] @stopwatch() def _run(self, meta_image, container): image = meta_image.image img_prefiltered = ccore.disc_median(image, self.params['presegmentation_median_radius']) t = int(ccore.get_otsu_threshold(img_prefiltered) * self.params['presegmentation_alpha']) img_bin = ccore.threshold_image(img_prefiltered, t) img_labels = ccore.segmentation_propagate(img_prefiltered, img_bin, container.img_labels, self.params['lambda'], self.params['delta_width']) return ccore.ImageMaskContainer(image, img_labels, False, True, True)
class SectionEventSelection(SectionCore): SECTION_NAME = SECTION_NAME_EVENT_SELECTION OPTIONS = [ ('event_selection', [('eventchannel', SelectionTrait2(None, [], label='Channel')), ('event_selection', BooleanTrait(True, label='Event Selection')), ('backwardrange', FloatTrait(0, -1, 4000, label='Duration [pre]')), ('forwardrange', FloatTrait(0, -1, 4000, label='Duration [post]')), ('duration_unit', SelectionTrait2(TimeConverter.FRAMES, TimeConverter.units, label='Duration unit')), ('backwardrange_min', BooleanTrait(False, label='Min.')), ('forwardrange_min', BooleanTrait(False, label='Min.')), ('maxindegree', IntTrait(1, 0, 4000, label='Max in-degree')), ('maxoutdegree', IntTrait(2, 0, 4000, label='Max out-degree')), ]), ('supervised_event_selection', [('supervised_event_selection', BooleanTrait(True, label='Supervised', widget_info=BooleanTrait.RADIOBUTTON)), ('labeltransitions', StringTrait('', 200, label='Class transition motif(s)')), ('backwardlabels', StringTrait('', 200, label='Class filter [pre]', mask='(\d+,)*\d+')), ('forwardlabels', StringTrait('', 200, label='Class filter [post]', mask='(\d+,)*\d+')), ('backwardcheck', FloatTrait(2, 0, 4000, label='Filter duration [pre]')), ('forwardcheck', FloatTrait(2, 0, 4000, label='Filter duration [post]')), ]), ('unsupervised_event_selection', [('unsupervised_event_selection', BooleanTrait(False, label='Unsupervised', widget_info=BooleanTrait.RADIOBUTTON)), ('min_event_duration', IntTrait(3, 1, 100, label='Min. event duration')), ('num_clusters', IntTrait(6, 2, 15, label='Number of clusters',)), ('min_cluster_size', IntTrait(2, 1, 10, label='Min. cluster size',)), ]) ]
class SectionErrorcorrection(SectionCore): SECTION_NAME = SECTION_NAME_ERRORCORRECTION OPTIONS = [ ('error_correction', [('primary', BooleanTrait(True, label='primary')), ('secondary', BooleanTrait(False, label='secondary')), ('tertiary', BooleanTrait(False, label='tertiary')), ('merged', BooleanTrait(False, label='merged')), ('constrain_graph', BooleanTrait(True, label='Constrain graph')), ('primary_graph', StringTrait('', 1000, label='Primary file', widget_info=StringTrait.STRING_FILE)), ('secondary_graph', StringTrait('', 1000, label='Secondary file', widget_info=StringTrait.STRING_FILE)), ('tertiary_graph', StringTrait('', 1000, label='Tertiary file', widget_info=StringTrait.STRING_FILE)), ('merged_graph', StringTrait('', 1000, label='Merged ch. file', widget_info=StringTrait.STRING_FILE)), ('groupby_position', BooleanTrait(True, label='Position', widget_info=BooleanTrait.RADIOBUTTON)), ('groupby_sirna', BooleanTrait(False, label='siRNA', widget_info=BooleanTrait.RADIOBUTTON)), ('hmm_smoothing', BooleanTrait(True, label='Smoothing Model', widget_info=BooleanTrait.RADIOBUTTON)), ('hmm_baumwelch', BooleanTrait(False, label='Baum-Welch', widget_info=BooleanTrait.RADIOBUTTON)), ('groupby_genesymbol', BooleanTrait(False, label='Gene Symbol', widget_info=BooleanTrait.RADIOBUTTON)), ('overwrite_time_lapse', BooleanTrait(False, label='Overwrite time-lapse')), ('timelapse', FloatTrait(1, 0, 2000, digits=2, label='Time-lapse [min]')), ('max_time', FloatTrait(-1, -1, 2000, digits=2, label='Max. time in plot [min]')), ('ignore_tracking_branches', BooleanTrait(False, label='Ignore tracking branches')), ('enable_sorting', BooleanTrait(False, label='Sort by phase duration')), ('sorting_sequence', StringTrait('', 1000, label='Label sequence', mask='(\w+,)*\w+')), ('primary_sort', StringTrait('', 100)), ('secondary_sort', StringTrait('', 100)), ('compose_galleries', BooleanTrait(False, label='Compose gallery images')), ('compose_galleries_sample', IntTrait(-1, -1, 10000, label='Max. number of random samples')), ('resampling_factor', FloatTrait(0.4, 0.01, 1.0, label="Resampling factor")), ('size_gallery_image', IntTrait(60, 1, 1000, label='Size of gallery images (px)')) ]) ]
class SectionErrorcorrection(SectionCore): SECTION_NAME = SECTION_NAME_ERRORCORRECTION OPTIONS = [('error_correction', [ ('filename_to_r', StringTrait('', 1000, label='R-project executable', widget_info=StringTrait.STRING_FILE)), ('constrain_graph', BooleanTrait(True, label='Constrain graph')), ('primary_graph', StringTrait('', 1000, label='Primary file', widget_info=StringTrait.STRING_FILE)), ('secondary_graph', StringTrait('', 1000, label='Secondary file', widget_info=StringTrait.STRING_FILE)), ('skip_processed_plates', BooleanTrait(False, label='Skip processed plates')), ('position_labels', BooleanTrait(False, label='Position labels')), ('mappingfile_path', StringTrait('', 1000, label='Path', widget_info=StringTrait.STRING_PATH)), ('groupby_position', BooleanTrait(True, label='Position', widget_info=BooleanTrait.RADIOBUTTON)), ('groupby_oligoid', BooleanTrait(False, label='Oligo ID', widget_info=BooleanTrait.RADIOBUTTON)), ('groupby_genesymbol', BooleanTrait(False, label='Gene symbol', widget_info=BooleanTrait.RADIOBUTTON)), ('overwrite_time_lapse', BooleanTrait(False, label='Overwrite time-lapse')), ('timelapse', FloatTrait(1, 0, 2000, digits=2, label='Time-lapse [min]')), ('max_time', FloatTrait(100, 1, 2000, digits=2, label='Max. time in plot [min]')), ('ignore_tracking_branches', BooleanTrait(False, label='Ignore tracking branches')), ('show_html', BooleanTrait(True, label='Open in browser')), ('enable_sorting', BooleanTrait(False, label='Sort by phase duration')), ('sorting_sequence', StringTrait('', 1000, label='Label sequence', mask='(\w+,)*\w+')), ('primary_sort', StringTrait('', 100)), ('secondary_sort', StringTrait('', 100)), ('compose_galleries', BooleanTrait(False, label='Compose gallery images')), ('compose_galleries_sample', IntTrait(-1, -1, 10000, label='Max. number of random samples')), ])]
class SectionTracking(SectionCore): SECTION_NAME = SECTION_NAME_TRACKING OPTIONS = [ ('tracking', [ ('tracking_regionname', SelectionTrait2(None, [], label='Region name')), ('tracking_maxobjectdistance', IntTrait(0, 0, 4000, label='Max object x-y distance')), ('tracking_maxtrackinggap', IntTrait(0, 0, 4000, label='Max time-point gap')), ('tracking_maxsplitobjects', IntTrait(0, 0, 4000, label='Max split events')), ('tracking_maxindegree', IntTrait(1, 0, 4000, label='Max in-degree')), ('tracking_maxoutdegree', IntTrait(2, 0, 4000, label='Max out-degree')), ('tracking_exporttrackfeatures', BooleanTrait(True, label='Export tracks')), ('tracking_compressiontrackfeatures', SelectionTrait(COMPRESSION_FORMATS[0], COMPRESSION_FORMATS, label='Compression')), ]), ('event_selection', [ ('tracking_labeltransitions', StringTrait('', 200, label='Class transition motif(s)', mask='(\(\d+,\d+\),)*\(\d+,\d+\)')), ('tracking_backwardrange', FloatTrait(0, -1, 4000, label='Duration [pre]')), ('tracking_forwardrange', FloatTrait(0, -1, 4000, label='Duration [post]')), ('tracking_backwardlabels', StringTrait('', 200, label='Class filter [pre]', mask='(\d+,)*\d+')), ('tracking_forwardlabels', StringTrait('', 200, label='Class filter [post]', mask='(\d+,)*\d+')), ('tracking_backwardcheck', FloatTrait(2, 0, 4000, label='Filter duration [pre]')), ('tracking_forwardcheck', FloatTrait(2, 0, 4000, label='Filter duration [post]')), ('tracking_duration_unit', SelectionTrait2(TRACKING_DURATION_UNITS_DEFAULT[0], TRACKING_DURATION_UNITS_DEFAULT, label='Duration unit')), ('tracking_backwardrange_min', BooleanTrait(False, label='Min.')), ('tracking_forwardrange_min', BooleanTrait(False, label='Min.')), ]), ('visualization', [ ('tracking_visualization', BooleanTrait(False, label='Visualization')), ('tracking_visualize_track_length', IntTrait(5, -1, 10000, label='Max. time-points')), ('tracking_centroid_radius', IntTrait(3, -1, 50, label='Centroid radius')), ]), ]
class SectionPostProcessing(SectionCore): SECTION_NAME = SECTION_NAME_POST_PROCESSING OPTIONS = [('post_processing', [ ('ibb_analysis', BooleanTrait(True, label='IBB analysis')), ('mappingfile_path', StringTrait('', 1000, label='Mapping file path', widget_info=StringTrait.STRING_PATH)), ('single_plot', BooleanTrait( True, label='Export single event', )), ('single_plot_max_plots', IntTrait( 1, 1, 2000, label='Max. number', )), ('ibb_ratio_signal_threshold', FloatTrait( 1.2, 0.5, 5, label='IBB minimum ratio signal threshold', )), ('ibb_range_signal_threshold', FloatTrait( 3, 0.5, 5, label='IBB minimum range threshold', )), ('ibb_onset_factor_threshold', FloatTrait( 1.2, 1, 5, label='IBB onset slope threshold', )), ('nebd_onset_factor_threshold', FloatTrait( 1.2, 1, 5, label='NEBD onset slope threshold', )), ('plot_ylim1_low', IntTrait( 0, 0, 2000, label='Y-axis limit (low)', )), ('plot_ylim1_high', IntTrait( 100, 1, 4000, label='Y-axis limit (high)', )), ('single_plot_ylim_low', FloatTrait( 1, 0, 10, label='Y-axis ratio range (low)', )), ('single_plot_ylim_high', IntTrait( 5, 1, 30, label='Y-axis ratio range (high)', )), ('group_by_position', BooleanTrait(True, label='Position', widget_info=BooleanTrait.RADIOBUTTON)), ('group_by_oligoid', BooleanTrait(False, label='Oligo ID', widget_info=BooleanTrait.RADIOBUTTON)), ('group_by_genesymbol', BooleanTrait(False, label='Gene symbol', widget_info=BooleanTrait.RADIOBUTTON)), ('group_by_group', BooleanTrait(False, label='Group', widget_info=BooleanTrait.RADIOBUTTON)), ('color_sort_by_position', BooleanTrait(False, label='Position', widget_info=BooleanTrait.RADIOBUTTON)), ('color_sort_by_oligoid', BooleanTrait(True, label='Oligo ID', widget_info=BooleanTrait.RADIOBUTTON)), ('color_sort_by_genesymbol', BooleanTrait(False, label='Gene symbol', widget_info=BooleanTrait.RADIOBUTTON)), ('color_sort_by_group', BooleanTrait(False, label='Group', widget_info=BooleanTrait.RADIOBUTTON)), ('securin_analysis', BooleanTrait(True, label='Securin analysis')), ])]