Re: [Matplotlib-users] @image_comparison decorator and unittests
Paul Hobson expressed interest in making it easier to use the image comparison tests out side of the mpl test suite Tom On Thu, Jul 30, 2015, 9:28 AM Fabien fabien.mauss...@gmail.com wrote: Hi all, is it possible to use the @image_comparison decorator for tests generated within a unittest.TestCase class? With my attempts so far the decorator was indeed instanicated at run time but the test was not called, i.e. the test would allways pass... Running the test with decorator from outside the class works fine. Any idea? Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] @image_comparison decorator and unittests
Thomas Robitailles pytest image comparison plugin might also be of interest https://github.com/astrofrog/pytest-mpl Jens tor. 30. jul. 2015 kl. 14.43 skrev Thomas Caswell tcasw...@gmail.com: Paul Hobson expressed interest in making it easier to use the image comparison tests out side of the mpl test suite Tom On Thu, Jul 30, 2015, 9:28 AM Fabien fabien.mauss...@gmail.com wrote: Hi all, is it possible to use the @image_comparison decorator for tests generated within a unittest.TestCase class? With my attempts so far the decorator was indeed instanicated at run time but the test was not called, i.e. the test would allways pass... Running the test with decorator from outside the class works fine. Any idea? Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] @image_comparison decorator and unittests
Hi all, is it possible to use the @image_comparison decorator for tests generated within a unittest.TestCase class? With my attempts so far the decorator was indeed instanicated at run time but the test was not called, i.e. the test would allways pass... Running the test with decorator from outside the class works fine. Any idea? Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Tex error in plot label
Have u tried ? plt.ylabel(r'$\alpha$') -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Tex-error-in-plot-label-tp45964p45979.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] @image_comparison decorator and unittests
Fabien, The @image_comparison operator is still somehwat of a black box for me. But I can confirm your observation that it only works on top-level test functions, not within a class. It's on my long, and slowly shifting backlog of things to try to improve. -paul On Thu, Jul 30, 2015 at 6:47 AM, Jens Nielsen jenshniel...@gmail.com wrote: Thomas Robitailles pytest image comparison plugin might also be of interest https://github.com/astrofrog/pytest-mpl Jens tor. 30. jul. 2015 kl. 14.43 skrev Thomas Caswell tcasw...@gmail.com: Paul Hobson expressed interest in making it easier to use the image comparison tests out side of the mpl test suite Tom On Thu, Jul 30, 2015, 9:28 AM Fabien fabien.mauss...@gmail.com wrote: Hi all, is it possible to use the @image_comparison decorator for tests generated within a unittest.TestCase class? With my attempts so far the decorator was indeed instanicated at run time but the test was not called, i.e. the test would allways pass... Running the test with decorator from outside the class works fine. Any idea? Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] @image_comparison decorator and unittests
Thank you all for your replies. It's not an urgent problem: 1. Jens gave us a link to an existing third party lib, althought it's not clear to me how it will work without pytest (i.e. with standard unittest). 2. My workaround is simply to use top level test functions as you suggest, and the rest works just fine. It's already awesome enough to be able to test my plots in such an easy way!!! Thanks a lot, Fabien On 07/30/2015 04:29 PM, Paul Hobson wrote: Fabien, The @image_comparison operator is still somehwat of a black box for me. But I can confirm your observation that it only works on top-level test functions, not within a class. It's on my long, and slowly shifting backlog of things to try to improve. -paul On Thu, Jul 30, 2015 at 6:47 AM, Jens Nielsen jenshniel...@gmail.com mailto:jenshniel...@gmail.com wrote: Thomas Robitailles pytest image comparison plugin might also be of interest https://github.com/astrofrog/pytest-mpl Jens tor. 30. jul. 2015 kl. 14.43 skrev Thomas Caswell tcasw...@gmail.com mailto:tcasw...@gmail.com: Paul Hobson expressed interest in making it easier to use the image comparison tests out side of the mpl test suite Tom On Thu, Jul 30, 2015, 9:28 AM Fabien fabien.mauss...@gmail.com mailto:fabien.mauss...@gmail.com wrote: Hi all, is it possible to use the @image_comparison decorator for tests generated within a unittest.TestCase class? With my attempts so far the decorator was indeed instanicated at run time but the test was not called, i.e. the test would allways pass... Running the test with decorator from outside the class works fine. Any idea? Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net mailto:Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net mailto:Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Misleading BoundaryNorm error
On 07/29/2015 10:34 PM, Paul Hobson wrote: See the following example: import matplotlib as mpl c = mpl.cm.get_cmap() bnorm = mpl.colors.BoundaryNorm([0,1,2], c.N) nnorm = mpl.colors.Normalize(0, 2) # This works: In [8]: c(nnorm(1.1)) Out[8]: (0.64199873497786197, 1.0, 0.32574320050600891, 1.0) # This doesn't: In [9]: c(bnorm(1.1)) (...) TypeError: 'numpy.int16' object does not support item assignment # But this works: In [10]: c(bnorm([1.1])) Out[10]: array([[ 0.5, 0. , 0. , 1. ]]) From the doc I would expect BoundaryNorm and Normalize to work the same way. I find the error sent by BoundaryNorm quite misleading. Should I fill a bug report for this? Fabien, What happens if your force the boundaries to floats? By that I mean: bnorm = mpl.colors.BoundaryNorm([0.0, 1.0, 2.0], c.N) -Paul Thanks Paul, it doesn't change anything. The problem is related to the variable iret which is of shape (): the assignment fails at L1281 in colors.py. Here is the code: def __call__(self, x, clip=None): if clip is None: clip = self.clip x = ma.asarray(x) # --- doesnt guarantee 1D mask = ma.getmaskarray(x) xx = x.filled(self.vmax + 1) if clip: np.clip(xx, self.vmin, self.vmax) iret = np.zeros(x.shape, dtype=np.int16) # --- x.shape = () for i, b in enumerate(self.boundaries): iret[xx = b] = i if self._interp: scalefac = float(self.Ncmap - 1) / (self.N - 2) iret = (iret * scalefac).astype(np.int16) iret[xx self.vmin] = -1 # --- error iret[xx = self.vmax] = self.Ncmap ret = ma.array(iret, mask=mask) if ret.shape == () and not mask: ret = int(ret) return ret It should be easy to fix by changing iret = np.zeros(x.shape, dtype=np.int16) to: iret = np.atleast1d(np.zeros(x.shape, dtype=np.int16)) But this would lead to an output which is never a scalar even if a scalar is given as input. Is that a problem? Cheers, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Misleading BoundaryNorm error
Forcing the scalar to be a 1-element array would still leave the API inconsistent with what you show for Normalize. One solution is to flag a scalar at the start, and then de-reference at the end. Would you like to submit a PR to take care of this? -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Misleading BoundaryNorm error
On 07/30/2015 10:07 AM, Eric Firing wrote: Forcing the scalar to be a 1-element array would still leave the API inconsistent with what you show for Normalize. One solution is to flag a scalar at the start, and then de-reference at the end. Would you like to submit a PR to take care of this? Hi, my very first PR here: https://github.com/matplotlib/matplotlib/pull/4824 Thanks, Fabien -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users