fmi-basel / gliberal-scMultipleX

Feature extraction and linking of multiplexing data.
BSD 3-Clause "New" or "Revised" License
8 stars 0 forks source link

Bug in plot_image_grid plotting function #100

Open nrepina opened 10 months ago

nrepina commented 10 months ago

For same input, error does not appear in plot_rgb_grid function. Check plot_image_grid plotting function, error coming from matplotlib. ValueError: minvalue must be less than or equal to maxvalue

Error in callback <function _draw_all_if_interactive at 0x7fd94310e820> (for post_execute):

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/pyplot.py:120, in _draw_all_if_interactive()
    118 def _draw_all_if_interactive():
    119     if matplotlib.is_interactive():
--> 120         draw_all()

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/_pylab_helpers.py:132, in Gcf.draw_all(cls, force)
    130 for manager in cls.get_all_fig_managers():
    131     if force or manager.canvas.figure.stale:
--> 132         manager.canvas.draw_idle()

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/backend_bases.py:2082, in FigureCanvasBase.draw_idle(self, *args, **kwargs)
   2080 if not self._is_idle_drawing:
   2081     with self._idle_draw_cntx():
-> 2082         self.draw(*args, **kwargs)

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/backends/backend_agg.py:400, in FigureCanvasAgg.draw(self)
    396 # Acquire a lock on the shared font cache.
    397 with RendererAgg.lock, \
    398      (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar
    399       else nullcontext()):
--> 400     self.figure.draw(self.renderer)
    401     # A GUI class may be need to update a window using this draw, so
    402     # don't forget to call the superclass.
    403     super().draw()

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/artist.py:95, in _finalize_rasterization.<locals>.draw_wrapper(artist, renderer, *args, **kwargs)
     93 @wraps(draw)
     94 def draw_wrapper(artist, renderer, *args, **kwargs):
---> 95     result = draw(artist, renderer, *args, **kwargs)
     96     if renderer._rasterizing:
     97         renderer.stop_rasterizing()

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/artist.py:72, in allow_rasterization.<locals>.draw_wrapper(artist, renderer)
     69     if artist.get_agg_filter() is not None:
     70         renderer.start_filter()
---> 72     return draw(artist, renderer)
     73 finally:
     74     if artist.get_agg_filter() is not None:

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/figure.py:3175, in Figure.draw(self, renderer)
   3172         # ValueError can occur when resizing a window.
   3174 self.patch.draw(renderer)
-> 3175 mimage._draw_list_compositing_images(
   3176     renderer, self, artists, self.suppressComposite)
   3178 for sfig in self.subfigs:
   3179     sfig.draw(renderer)

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/image.py:131, in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    129 if not_composite or not has_images:
    130     for a in artists:
--> 131         a.draw(renderer)
    132 else:
    133     # Composite any adjacent images together
    134     image_group = []

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/artist.py:72, in allow_rasterization.<locals>.draw_wrapper(artist, renderer)
     69     if artist.get_agg_filter() is not None:
     70         renderer.start_filter()
---> 72     return draw(artist, renderer)
     73 finally:
     74     if artist.get_agg_filter() is not None:

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/axes/_base.py:3064, in _AxesBase.draw(self, renderer)
   3061 if artists_rasterized:
   3062     _draw_rasterized(self.figure, artists_rasterized, renderer)
-> 3064 mimage._draw_list_compositing_images(
   3065     renderer, self, artists, self.figure.suppressComposite)
   3067 renderer.close_group('axes')
   3068 self.stale = False

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/image.py:131, in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    129 if not_composite or not has_images:
    130     for a in artists:
--> 131         a.draw(renderer)
    132 else:
    133     # Composite any adjacent images together
    134     image_group = []

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/artist.py:72, in allow_rasterization.<locals>.draw_wrapper(artist, renderer)
     69     if artist.get_agg_filter() is not None:
     70         renderer.start_filter()
---> 72     return draw(artist, renderer)
     73 finally:
     74     if artist.get_agg_filter() is not None:

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/image.py:641, in _ImageBase.draw(self, renderer, *args, **kwargs)
    639         renderer.draw_image(gc, l, b, im, trans)
    640 else:
--> 641     im, l, b, trans = self.make_image(
    642         renderer, renderer.get_image_magnification())
    643     if im is not None:
    644         renderer.draw_image(gc, l, b, im)

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/image.py:949, in AxesImage.make_image(self, renderer, magnification, unsampled)
    946 transformed_bbox = TransformedBbox(bbox, trans)
    947 clip = ((self.get_clip_box() or self.axes.bbox) if self.get_clip_on()
    948         else self.figure.bbox)
--> 949 return self._make_image(self._A, bbox, transformed_bbox, clip,
    950                         magnification, unsampled=unsampled)

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/image.py:545, in _ImageBase._make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification, unsampled, round_to_pixel_border)
    541     # Block the norm from sending an update signal during the
    542     # temporary vmin/vmax change
    543     with self.norm.callbacks.blocked(), \
    544          cbook._setattr_cm(self.norm, vmin=s_vmin, vmax=s_vmax):
--> 545         output = self.norm(resampled_masked)
    546 else:
    547     if A.ndim == 2:  # _interpolation_stage == 'rgba'

File /tungstenfs/scratch/gliberal/Code/user-code/repinico/Python/venvs/miniconda3/envs/featX3D-dev/lib/python3.9/site-packages/matplotlib/colors.py:1346, in Normalize.__call__(self, value, clip)
   1344     result.fill(0)  # Or should it be all masked?  Or 0.5?
   1345 elif vmin > vmax:
-> 1346     raise ValueError("minvalue must be less than or equal to maxvalue")
   1347 else:
   1348     if clip:

ValueError: minvalue must be less than or equal to maxvalue