Hi Chris,

Thanks for that tip.  I'll give it a try.  They are big images (2048 x
2048) so it seems like your suggestion should work.

Jon

On Tue, Oct 14, 2014 at 12:18 PM, Chris Beaumont <cbeaum...@cfa.harvard.edu>
wrote:

> I've found that, for big images, the *first* draw is very slow, due to the
> intensity scaling of the image, which happens at full resolution. Panning
> and zooming afterwards is fast because the intensity scaling is cached, but
> changing the data array or updating the norm kwarg is slow again. I made
> ModestImage (https://github.com/ChrisBeaumont/mpl-modest-image) to deal
> with this -- it dynamically downsamples images to screen resolution. This
> makes the first draw after updating the data or norm much faster, while
> slowing down subsequent redraws. Perhaps this could help you out?
>
> cheers,
> chris
>
> On Tue, Oct 14, 2014 at 12:08 PM, Benjamin Root <ben.r...@ou.edu> wrote:
>
>> Only if there are multiple figures (plt.draw() operates on the current
>> active figure, while fig.draw() explicitly operates upon that figure).
>> Another possibility is that the bottleneck truly is the IO. Depending on
>> exactly how fits work, it might be lazily loading data for you, so the test
>> without the display of the images might not actually be loading any data
>> into memory.
>>
>> Ben Root
>>
>> On Tue, Oct 14, 2014 at 11:22 AM, Slavin, Jonathan <
>> jsla...@cfa.harvard.edu> wrote:
>>
>>> Hmm.  I just saw that you suggest fig.draw().  Is there a difference
>>> with plt.draw()?
>>>
>>> Jon
>>>
>>> On Tue, Oct 14, 2014 at 11:20 AM, Slavin, Jonathan <
>>> jsla...@cfa.harvard.edu> wrote:
>>>
>>>> Hi Ben,
>>>>
>>>> Sorry, in my little example, I left out a few things.  I do update
>>>> first after the first call.  And I do call draw() after other calls.  So
>>>> here is a more accurate representation of what I do:
>>>>
>>>> first = True
>>>> fig = plt.figure()
>>>> for file in files:
>>>>     hdu = fits.open(file)
>>>>     image = hdu[0].data
>>>>     hdu.close()
>>>>     if first:
>>>>         ax = fig,add_subplot(1,1,1)
>>>>         im = ax.imshow(image)
>>>>         plt.show()
>>>>         first = False
>>>>     else:
>>>>         im.set_data(image)
>>>>         plt.draw()
>>>>     ans = raw_input('continue?')
>>>>     if ans == 'n':
>>>>         break
>>>>
>>>> Jon
>>>>
>>>>
>>>> On Tue, Oct 14, 2014 at 10:42 AM, Benjamin Root <ben.r...@ou.edu>
>>>> wrote:
>>>>
>>>>> Also, you aren't updating "first" after the first call, so it is
>>>>> constantly making new axes and recalling imshow().
>>>>>
>>>>> Ben Root
>>>>>
>>>>> On Tue, Oct 14, 2014 at 10:41 AM, Benjamin Root <ben.r...@ou.edu>
>>>>> wrote:
>>>>>
>>>>>> What is happening is that you are not telling the image to redraw, so
>>>>>> you are only seeing it refresh for other reasons. Try adding a fig.draw()
>>>>>> call prior to the raw_input() call.
>>>>>>
>>>>>> Cheers!
>>>>>> Ben Root
>>>>>>
>>>>>> On Tue, Oct 14, 2014 at 10:03 AM, Slavin, Jonathan <
>>>>>> jsla...@cfa.harvard.edu> wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> In my work lately I have often wanted to browse through a series of
>>>>>>> images.  This means displaying the image(s), looking at it/them and then
>>>>>>> continuing.  I have coded this in a few different ways, but it is 
>>>>>>> generally
>>>>>>> pretty slow -- which is to say that the image display takes more than a
>>>>>>> couple seconds (~4) after I tell it to continue to the next image.  I
>>>>>>> tested the loop without image display and it was a factor of ~80 times
>>>>>>> faster than it was with image display, so it's doesn't have anything to 
>>>>>>> do
>>>>>>> with reading the images from disk.  My latest approach is basically:
>>>>>>> first = True
>>>>>>> fig = plt.figure()
>>>>>>> for file in imagefiles:
>>>>>>>     # read in image data (fits files)
>>>>>>>     if first:
>>>>>>>         ax = fig.add_suplot(1,1,1)
>>>>>>>         im = ax.imshow(image)
>>>>>>>     else:
>>>>>>>         im.set_data(image)
>>>>>>>     ans = raw_input('continue?')
>>>>>>>     if ans == 'n':
>>>>>>>         break
>>>>>>>
>>>>>>> Is there a more efficient way to do this?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Jon
>>>>>>>
>>>>>>> --
>>>>>>> ________________________________________________________
>>>>>>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>>>>>>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>>>>>>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>>>>>>> fax: (617) 496-7577            USA
>>>>>>> ________________________________________________________
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Comprehensive Server Monitoring with Site24x7.
>>>>>>> Monitor 10 servers for $9/Month.
>>>>>>> Get alerted through email, SMS, voice calls or mobile push
>>>>>>> notifications.
>>>>>>> Take corrective actions from your mobile device.
>>>>>>> http://p.sf.net/sfu/Zoho
>>>>>>> _______________________________________________
>>>>>>> Matplotlib-users mailing list
>>>>>>> Matplotlib-users@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> ________________________________________________________
>>>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>>>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>>>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>>>> fax: (617) 496-7577            USA
>>>> ________________________________________________________
>>>>
>>>>
>>>
>>>
>>> --
>>> ________________________________________________________
>>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>>> fax: (617) 496-7577            USA
>>> ________________________________________________________
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Comprehensive Server Monitoring with Site24x7.
>> Monitor 10 servers for $9/Month.
>> Get alerted through email, SMS, voice calls or mobile push notifications.
>> Take corrective actions from your mobile device.
>> http://p.sf.net/sfu/Zoho
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>
>
> --
> *************************************
> Chris Beaumont
> Senior Software Engineer
> Harvard Center for Astrophysics
> 60 Garden Street, MS 42
> Cambridge, MA 02138
> chrisbeaumont.org
> *************************************
>



-- 
________________________________________________________
Jonathan D. Slavin                 Harvard-Smithsonian CfA
jsla...@cfa.harvard.edu       60 Garden Street, MS 83
phone: (617) 496-7981       Cambridge, MA 02138-1516
fax: (617) 496-7577            USA
________________________________________________________
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to