Re: [matplotlib-devel] [Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

2010-06-22 Thread Michael Droettboom
In r8454, I have a applied a fix that allows this C++ exception to 
correctly percolate to the Python side -- the user will still get an 
exception, but it will be a Python exception and the interpreter itself 
does not crash.   (It used to work, but recent changes to CXX caused it 
to break.)  I have attached this patch to the e-mail.


As Eric suggests, fixing the underlying limitation (I even hesitate to 
call it a bug because it is definitely a corner case) requires 
understanding some pretty dark depths of the Agg renderer.


Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:
   

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro
 

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel.  I suspect the
crash is related to this.  Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying agg
routines, but I suspect this is going to be a difficult problem to
solve.  It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash.  The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

   

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen   wrote:
 

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and changes the
axes with plt.axis() before calling plt.show() crashes the python interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

-- System Information:
Debian Release: squeeze/sid
   APT prefers testing
   APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii  libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii  libc6   2.10.2-9 Embedded GNU C Library: Shared lib
ii  libcairo2   1.8.10-4 The Cairo 2D vector graphics libra
ii  libfontconfig1  2.8.0-2.1generic font configuration library
ii  libfreetype62.3.11-1 FreeType 2 font engine, shared lib
ii  libgcc1 1:4.4.4-1GCC support library
ii  libglib2.0-02.24.1-1 The GLib library of C routines
ii  libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii  libpango1.0-0   1.28.0-1 Layout and rendering of internatio
ii  libpng12-0  1.2.43-1 PNG library - runtime
ii  libstdc++6  4.4.4-1  The GNU Standard C++ Library v3
ii  python  2.5.4-9  An interactive high-level object-o
ii  python-cairo1.8.8-1+b1   Python bindings for the Cairo vect
ii  python-dateutil 1.4.1-3  powerful extensions to the standar
ii  python-gobject  2.21.1-1 Python bindings for the GObject li
ii  python-matplotlib-data  0.99.1.2-3   Python based plotting system (data
ii  python-numpy1:1.3.0-3+b1 Numerical Python adds a fast array
ii  python-pyparsing1.5.2-2  Python parsing module
ii  python-support  1.0.8automated rebuilding support for P
ii  python-tz   2010b-1  Python version of the Olson timezo
ii  tcl8.5  8.5.8-2  Tcl (the Tool Command Language) v8
ii  tk8.5   8.5.8-1  Tk toolkit for Tcl and X11, v8.5 -
ii  zlib1g  1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii  python-glade2 2.17.0-2   GTK+ bindings: Glade support
ii  python-tk 2.6.5-1Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii  dvipng1.13-1 convert DVI files to PNG graphics
ii  ipython   0.10-2 enhanced interactive Python shell
ii  librsvg2-common   2.26.3-1   SAX-based renderer library for SVG
ii  python-configobj  4.7.2+ds-1 simple but powerful config fil

Re: [matplotlib-devel] [Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

2010-06-22 Thread Michael Droettboom
Hold off, actually.  This patch seems to have broken some thing 
inadvertently.  Stay tuned...


Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:
In r8454, I have a applied a fix that allows this C++ exception to 
correctly percolate to the Python side -- the user will still get an 
exception, but it will be a Python exception and the interpreter 
itself does not crash.   (It used to work, but recent changes to CXX 
caused it to break.)  I have attached this patch to the e-mail.


As Eric suggests, fixing the underlying limitation (I even hesitate to 
call it a bug because it is definitely a corner case) requires 
understanding some pretty dark depths of the Agg renderer.


Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel.  I suspect the
crash is related to this.  Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying agg
routines, but I suspect this is going to be a difficult problem to
solve.  It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash.  The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html 



Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen   
wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and 
changes the
axes with plt.axis() before calling plt.show() crashes the python 
interpreter:


$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

-- System Information:
Debian Release: squeeze/sid
   APT prefers testing
   APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii  libatk1.0-0 1.30.0-1 The ATK accessibility 
toolkit
ii  libc6   2.10.2-9 Embedded GNU C 
Library: Shared lib
ii  libcairo2   1.8.10-4 The Cairo 2D vector 
graphics libra
ii  libfontconfig1  2.8.0-2.1generic font 
configuration library
ii  libfreetype62.3.11-1 FreeType 2 font 
engine, shared lib

ii  libgcc1 1:4.4.4-1GCC support library
ii  libglib2.0-02.24.1-1 The GLib library of C 
routines
ii  libgtk2.0-0 2.20.1-1 The GTK+ graphical 
user interface
ii  libpango1.0-0   1.28.0-1 Layout and rendering 
of internatio

ii  libpng12-0  1.2.43-1 PNG library - runtime
ii  libstdc++6  4.4.4-1  The GNU Standard C++ 
Library v3
ii  python  2.5.4-9  An interactive 
high-level object-o
ii  python-cairo1.8.8-1+b1   Python bindings for 
the Cairo vect
ii  python-dateutil 1.4.1-3  powerful extensions to 
the standar
ii  python-gobject  2.21.1-1 Python bindings for 
the GObject li
ii  python-matplotlib-data  0.99.1.2-3   Python based plotting 
system (data
ii  python-numpy1:1.3.0-3+b1 Numerical Python adds 
a fast array

ii  python-pyparsing1.5.2-2  Python parsing module
ii  python-support  1.0.8automated rebuilding 
support for P
ii  python-tz   2010b-1  Python version of the 
Olson timezo
ii  tcl8.5  8.5.8-2  Tcl (the Tool Command 
Language) v8
ii  tk8.5   8.5.8-1  Tk toolkit for Tcl and 
X11, v8.5 -
ii  zlib1g  1:1.2.3.4.dfsg-3 compression library - 
runtime


Versions of packages python-matplotlib recommends:
ii  python-glade2 2.17.0-2   GTK+ bindings: Glade 
support
ii  python-tk 2.6.5-1Tkinter - Writing Tk 
applications


Versions of packages python-matplotlib suggests:
ii  dvipng1.13-1 convert DVI files to 
PNG graphics
ii  ipython   0.10-2 enhanced interactive 

Re: [matplotlib-devel] [Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

2010-06-22 Thread Michael Droettboom

Ok.  Attached is a corrected patch.

Mike

On 06/22/2010 12:26 PM, Michael Droettboom wrote:
Hold off, actually.  This patch seems to have broken some thing 
inadvertently.  Stay tuned...


Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:
In r8454, I have a applied a fix that allows this C++ exception to 
correctly percolate to the Python side -- the user will still get an 
exception, but it will be a Python exception and the interpreter 
itself does not crash.   (It used to work, but recent changes to CXX 
caused it to break.)  I have attached this patch to the e-mail.


As Eric suggests, fixing the underlying limitation (I even hesitate 
to call it a bug because it is definitely a corner case) requires 
understanding some pretty dark depths of the Agg renderer.


Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel.  I suspect the
crash is related to this.  Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying agg
routines, but I suspect this is going to be a difficult problem to
solve.  It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash.  The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html 



Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen   
wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and 
changes the
axes with plt.axis() before calling plt.show() crashes the python 
interpreter:


$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

-- System Information:
Debian Release: squeeze/sid
   APT prefers testing
   APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii  libatk1.0-0 1.30.0-1 The ATK accessibility 
toolkit
ii  libc6   2.10.2-9 Embedded GNU C 
Library: Shared lib
ii  libcairo2   1.8.10-4 The Cairo 2D vector 
graphics libra
ii  libfontconfig1  2.8.0-2.1generic font 
configuration library
ii  libfreetype62.3.11-1 FreeType 2 font 
engine, shared lib

ii  libgcc1 1:4.4.4-1GCC support library
ii  libglib2.0-02.24.1-1 The GLib library of C 
routines
ii  libgtk2.0-0 2.20.1-1 The GTK+ graphical 
user interface
ii  libpango1.0-0   1.28.0-1 Layout and rendering 
of internatio

ii  libpng12-0  1.2.43-1 PNG library - runtime
ii  libstdc++6  4.4.4-1  The GNU Standard C++ 
Library v3
ii  python  2.5.4-9  An interactive 
high-level object-o
ii  python-cairo1.8.8-1+b1   Python bindings for 
the Cairo vect
ii  python-dateutil 1.4.1-3  powerful extensions 
to the standar
ii  python-gobject  2.21.1-1 Python bindings for 
the GObject li
ii  python-matplotlib-data  0.99.1.2-3   Python based plotting 
system (data
ii  python-numpy1:1.3.0-3+b1 Numerical Python adds 
a fast array

ii  python-pyparsing1.5.2-2  Python parsing module
ii  python-support  1.0.8automated rebuilding 
support for P
ii  python-tz   2010b-1  Python version of the 
Olson timezo
ii  tcl8.5  8.5.8-2  Tcl (the Tool Command 
Language) v8
ii  tk8.5   8.5.8-1  Tk toolkit for Tcl 
and X11, v8.5 -
ii  zlib1g  1:1.2.3.4.dfsg-3 compression library - 
runtime


Versions of packages python-matplotlib recommends:
ii  python-glade2 2.17.0-2   GTK+ bindings: Glade 
support
ii  python-tk 2.6.5-1Tkinter - Writing Tk 
applications


Versions of packages python-matplotlib suggests:
ii  dvipng1.13-1 convert 

Re: [matplotlib-devel] [Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

2010-06-22 Thread Michael Droettboom
SVN r8456 has a patch for the slowness Eric described when doing extreme 
magnification on an image.


Unfortunately, this fix paves over the exception fixed earlier.  Rather 
than getting an exception when the magnification is too high, it now 
silently just doesn't draw the image.  I'm trying to figure out what the 
threshold is beyond which it fails in order to manually raise an 
exception, but not having much luck.  I suspect it's somehow related to 
floating-point or even Agg's fixed-point rounding error.


Mike

On 06/22/2010 12:31 PM, Michael Droettboom wrote:

Ok.  Attached is a corrected patch.

Mike

On 06/22/2010 12:26 PM, Michael Droettboom wrote:
Hold off, actually.  This patch seems to have broken some thing 
inadvertently.  Stay tuned...


Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:
In r8454, I have a applied a fix that allows this C++ exception to 
correctly percolate to the Python side -- the user will still get an 
exception, but it will be a Python exception and the interpreter 
itself does not crash.   (It used to work, but recent changes to CXX 
caused it to break.)  I have attached this patch to the e-mail.


As Eric suggests, fixing the underlying limitation (I even hesitate 
to call it a bug because it is definitely a corner case) requires 
understanding some pretty dark depths of the Agg renderer.


Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel.  I suspect the
crash is related to this.  Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying 
agg

routines, but I suspect this is going to be a difficult problem to
solve.  It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash.  The slowdown topic 
came up

on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html 



Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen   
wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and 
changes the
axes with plt.axis() before calling plt.show() crashes the python 
interpreter:


$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

-- System Information:
Debian Release: squeeze/sid
   APT prefers testing
   APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii  libatk1.0-0 1.30.0-1 The ATK 
accessibility toolkit
ii  libc6   2.10.2-9 Embedded GNU C 
Library: Shared lib
ii  libcairo2   1.8.10-4 The Cairo 2D vector 
graphics libra
ii  libfontconfig1  2.8.0-2.1generic font 
configuration library
ii  libfreetype62.3.11-1 FreeType 2 font 
engine, shared lib

ii  libgcc1 1:4.4.4-1GCC support library
ii  libglib2.0-02.24.1-1 The GLib library of 
C routines
ii  libgtk2.0-0 2.20.1-1 The GTK+ graphical 
user interface
ii  libpango1.0-0   1.28.0-1 Layout and rendering 
of internatio

ii  libpng12-0  1.2.43-1 PNG library - runtime
ii  libstdc++6  4.4.4-1  The GNU Standard C++ 
Library v3
ii  python  2.5.4-9  An interactive 
high-level object-o
ii  python-cairo1.8.8-1+b1   Python bindings for 
the Cairo vect
ii  python-dateutil 1.4.1-3  powerful extensions 
to the standar
ii  python-gobject  2.21.1-1 Python bindings for 
the GObject li
ii  python-matplotlib-data  0.99.1.2-3   Python based 
plotting system (data
ii  python-numpy1:1.3.0-3+b1 Numerical Python 
adds a fast array

ii  python-pyparsing1.5.2-2  Python parsing module
ii  python-support  1.0.8automated rebuilding 
support for P
ii  python-tz   2010b-1  Python v

Re: [matplotlib-devel] [Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

2010-06-22 Thread Eric Firing
On 06/22/2010 10:11 AM, Michael Droettboom wrote:
> SVN r8456 has a patch for the slowness Eric described when doing extreme
> magnification on an image.

Excellent!

>
> Unfortunately, this fix paves over the exception fixed earlier. Rather
> than getting an exception when the magnification is too high, it now
> silently just doesn't draw the image. I'm trying to figure out what the
> threshold is beyond which it fails in order to manually raise an
> exception, but not having much luck. I suspect it's somehow related to
> floating-point or even Agg's fixed-point rounding error.

"just doesn't draw" sounds like a pretty benign failure mode.  It might 
even be better than raising an exception.  An alternative might be to 
use something like "nonsingular()" to block attempts to make the view 
limits too small--once it is known how to calculate "too small".  Yet 
another alternative, more complicated to implement, would be to clip the 
array and then interpolate to a finer grid at the python level when 
trying to zoom too far into a cell of the original grid.

It would be good if everything could be kept at the python or _image.cpp 
level, so that the Agg code could be left unchanged.  As far as I know, 
your previous patch to raise the exception was the only mpl-specific 
change that has been made to the Agg24 code.

Eric


>
> Mike
>
> On 06/22/2010 12:31 PM, Michael Droettboom wrote:
>> Ok. Attached is a corrected patch.
>>
>> Mike
>>
>> On 06/22/2010 12:26 PM, Michael Droettboom wrote:
>>> Hold off, actually. This patch seems to have broken some thing
>>> inadvertently. Stay tuned...
>>>
>>> Mike
>>>
>>> On 06/22/2010 12:05 PM, Michael Droettboom wrote:
 In r8454, I have a applied a fix that allows this C++ exception to
 correctly percolate to the Python side -- the user will still get an
 exception, but it will be a Python exception and the interpreter
 itself does not crash. (It used to work, but recent changes to CXX
 caused it to break.) I have attached this patch to the e-mail.

 As Eric suggests, fixing the underlying limitation (I even hesitate
 to call it a bug because it is definitely a corner case) requires
 understanding some pretty dark depths of the Agg renderer.

 Mike

 On 06/21/2010 10:57 PM, Eric Firing wrote:
> On 06/21/2010 12:24 PM, Sandro Tosi wrote:
>> forwarded 585442 matplotlib-devel@lists.sourceforge.net
>> thanks
>>
>> Hello Matplotlib developers,
>> here below is a report a user of maplotlib sent to the Debian bug
>> tracker. I've verified and it happend also with 0.99.3:
>>
>> $ python -c "import matplotlib as p ; print p.__version__"
>> 0.99.3
>> $ python mpl_crash.py
>> terminate called after throwing an instance of 'char const*'
>> Aborted
>>
>> Thanks for looking into it,
>> Sandro
> Sandro,
>
> Thanks for reporting it.
>
> With the default interpolation, rendering gets extremely slow as the
> view limits decline to and below a single image pixel. I suspect the
> crash is related to this. Neither the slowdown nor the crash occurs
> with interpolation='nearest', although there is still an anomaly in
> which the image is blank when the viewlim region is too small.
>
> Like Ryan, I am not familiar with the _image.cpp and the underlying
> agg
> routines, but I suspect this is going to be a difficult problem to
> solve. It may be necessary to put in some workaround, trying to trap
> and prevent the extreme slowdown and crash. The slowdown topic came up
> on the list years ago.
>
> http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html
>
>
> Eric
>
>> On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen
>> wrote:
>>> Package: python-matplotlib
>>> Version: 0.99.1.2-3
>>> Severity: important
>>>
>>> Running a program which displays an image with plt.imshow() and
>>> changes the
>>> axes with plt.axis() before calling plt.show() crashes the python
>>> interpreter:
>>>
>>> $ python mpl_crash.py
>>> terminate called after throwing an instance of 'char const*'
>>> Aborted
>>>
>>> This happens at least with Qt4Agg, GTKAgg and TKAgg backends.
>>>
>>> The example program is attached.
>>>
>>> Best,
>>>
>>> Teemu
>>>
>>> -- System Information:
>>> Debian Release: squeeze/sid
>>> APT prefers testing
>>> APT policy: (500, 'testing')
>>> Architecture: amd64 (x86_64)
>>>
>>> Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
>>> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
>>> Shell: /bin/sh linked to /bin/dash
>>>
>>> Versions of packages python-matplotlib depends on:
>>> ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
>>> ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
>>> ii libcairo2 1.8.10-4 The 

[matplotlib-devel] noslice with interpolation 'nearest'

2010-06-22 Thread Eric Firing
JJ,

In AxesImageBase._draw_unsampled_image, there is a call to 
_get_unsampled_image(...noslice=True).  When using imshow(Z, 
interpolation='nearest'), this defeats the slicing that makes such a 
difference when zooming and panning a small chunk of a large image. 
Changing it to False makes imshow work better; I don't understand why 
one would ever want noslice=True.  Am I missing something?  Can we just 
change it to False?  Or remove the noslice option and kwarg entirely?

Eric

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] noslice with interpolation 'nearest'

2010-06-22 Thread Jae-Joon Lee
Eric,

I should have left more comments about my change.
The issue is that the current slicing algorithm sometimes fails with
"_draw_unsampled_image" which support arbitrary affine transformation
of the image. The slicing gets wrong when the image is significantly
skewed or rotated. So, as a temporary measure, I simply wanted to
disable the slicing until we have a correct algorithm in place.

I guess a quick (still temporary) fix is to check if affine transform
is needed, and do the slicing if not.
Something like below. The condition is not exactly correct, but I
think it would work in most of cases.
I actually didn't test the patch. I'll be out of town until the end of
this week.

On a second thought, I think it should not be difficult to workaround
the slicing thing for arbitrary affine transform. I'll think about the
whole issue again when I get back. If you have a better idea, please
go ahead and implement.

Regards,

-JJ

diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py
index 7c1128f..b65f446 100644
--- a/lib/matplotlib/image.py
+++ b/lib/matplotlib/image.py
@@ -248,9 +248,14 @@ class _AxesImageBase(martist.Artist, cm.ScalarMappable):
 """


+if self._image_skew_coordinate:
+no_slice = True
+else:
+no_slice = False
+
 im, xmin, ymin, dxintv, dyintv, sx, sy = \
 self._get_unsampled_image(self._A, self.get_extent(),
-  self.axes.viewLim, noslice=True)
+  self.axes.viewLim, noslice=no_slice)

 if im is None: return # I'm not if this check is required. -JJL



On Tue, Jun 22, 2010 at 8:45 PM, Eric Firing  wrote:
> JJ,
>
> In AxesImageBase._draw_unsampled_image, there is a call to
> _get_unsampled_image(...noslice=True).  When using imshow(Z,
> interpolation='nearest'), this defeats the slicing that makes such a
> difference when zooming and panning a small chunk of a large image. Changing
> it to False makes imshow work better; I don't understand why one would ever
> want noslice=True.  Am I missing something?  Can we just change it to False?
>  Or remove the noslice option and kwarg entirely?
>
> Eric
>

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel