[Neuroimaging] [PySurfer] Brain's save_image method produces images with only background color

John Pellman pellman.john at gmail.com
Tue Sep 27 12:40:27 EDT 2016


Hi all,

Thanks for all of your help.  Just as an update, our postdoc was able to
get PySurfer to get save_image to work properly by invoking Brain with
"offscreen=True".  For anyone who needs to plumb deeper into this, we were
encountering the issue on both an Ubuntu 14.04 laptop and a laptop running
OS X, so I'm not sure that it was the version of mesa on the client that
was problematic.

On Sat, Sep 17, 2016 at 5:36 AM, Gael Varoquaux <
gael.varoquaux at normalesup.org> wrote:

> What if you change local computer. I don't remember if it's the server's
> mesa that is used or the client's mesa that is used. If it's the client's
> mesa, than the problem is related to your computer.
>
> Gaël
>
> On Fri, Sep 16, 2016 at 03:55:08PM -0400, John Pellman wrote:
> > Running the basic visualization code for Pysurfer followed by
> Brain.save_image
> > () gave the following results with when run with xvfbwrapper:
>
> > On the server under x2go/nx : An all-black image.
> > On the server under a regular ssh session : An all-black image.
> > On my local computer: An all-black image.
>
> > So it doesn't look like that's going to work. :/
>
> > wxPython is also installed- is it possible that that is affecting the
> image
> > rendering too?
>
> > On Fri, Sep 16, 2016 at 2:36 PM, Roan LaPlante <
> rlaplant at nmr.mgh.harvard.edu>
> > wrote:
>
>
> >     If that's the problem, xvfb should still be a viable workaround in
> the nx
> >     context, right?
>
>
> >     On Sep 16, 2016 12:30 PM, "Gael Varoquaux" <
> gael.varoquaux at normalesup.org>
> >     wrote:
>
> >         Nx has always been a problem with Mayavi (or actually VTK, which
> is the
> >         underlying technology). Basically, it interfers with the openGL
> >         contexts,
> >         and in some cases the buffer cannot be captured well. Hence the
> black
> >         image.
>
> >         IMHO, the bug is in NX or the mesa driver, or both.
>
> >         Gaël
>
> >         On Fri, Sep 16, 2016 at 12:00:15PM -0400, John Pellman wrote:
> >         > Pysurfer isn't running headless- it's using x2go, which is
> based upon
> >         the nx
> >         > protocol, a technology that improves the ability of X11 to
> function
> >         over a
> >         > network connection. Therefore, I don't think that Xvfb is
> related.
> >         xvfbwrapper
> >         > might be usable as a workaround, however.
>
> >         > As I mentioned in my last post, I traced the offending method
> back to
> >         mayavi.
> >         > I've opened an issue related to this here.
>
> >         > Kirstie- if you'd be willing to refer your sysadmin to this
> thread I
> >         think that
> >         > would be great, as I would be interested in hearing what
> theories or
> >         potential
> >         > fixes he/she might have for this issue as well.
>
> >         > --John
>
> >         > On Fri, Sep 16, 2016 at 5:43 AM, JB Poline <jbpoline at gmail.com
> >
> >         wrote:
>
> >         >     That's a cool idea and package - thanks for pointing to
> this !
>
> >         >     On 16 September 2016 at 02:40, Ariel Rokem <
> arokem at gmail.com>
> >         wrote:
>
>
> >         >         On Thu, Sep 15, 2016 at 1:33 PM, Kirstie Whitaker <
> >         kw401 at cam.ac.uk>
> >         >         wrote:
>
> >         >             Hi John,
>
> >         >             I'm travelling at the moment but I've had problems
> with
> >         pysurfer
> >         >             showing beautiful brains on the screen but only
> saving a
> >         black box
> >         >             to file. It happened right after our systems admin
> >         updated a few
> >         >             things but I haven't been able to get a clear list
> from
> >         him of what
> >         >             changed except: everything should work.
>
> >         >             My point with this email is please do share back
> what you
> >         >             learn.....even if it ends up being not a pysurfer
> >         problem. At the
> >         >             moment my workaround is to move everything I do to
> a
> >         different
> >         >             cluster that works!! Non efficient to say the
> least!
>
> >         >             Thank you
> >         >             Kirstie
>
> >         >             Sent from my iPhone, please excuse any typos or
> excessive
> >         brevity
>
> >         >             On 15 Sep 2016, at 12:44, John Pellman <
> >         pellman.john at gmail.com>
> >         >             wrote:
>
>
> >         >                 I've had at this a little bit more and my
> current
> >         suspicion is
> >         >                 that this behavior is the result of an
> interaction
> >         between our
> >         >                 remote desktop service (x2go) and Mayavi.
>
> >         >                 I created a an identical Miniconda environment
> for
> >         Pysurfer on
> >         >                 both our server and my laptop and ran the
> following
> >         code to
> >         >                 test this theory:
>
>
> >         >                     # The Basic Visualization demo from the
> Pysurfer
> >         gallery.
> >         >                     from surfer import Brain
>
> >         >                     print(__doc__)
>
> >         >                     """
> >         >                     Define the three important variables.
> >         >                     Note that these are the first three
> positional
> >         arguments
> >         >                     in tksurfer (and pysurfer for that matter).
> >         >                     """
> >         >                     subject_id = 'fsaverage'
> >         >                     hemi = 'lh'
> >         >                     surface = 'inflated'
>
> >         >                     """
> >         >                     Call the Brain object constructor with
> these
> >         >                     parameters to initialize the visualization
> >         session.
> >         >                     """
> >         >                     brain = Brain(subject_id, hemi, surface)
>
> >         >                     # Save an image out to /tmp
> >         >                     print 'Saving out an image to /tmp using
> >         Brain.save_image.'
> >         >                     brain.save_image('/tmp/brain.png')
>
> >         >                     # Looking at just the screenshot method of
> >         pysurfer's Brain
> >         >                     object.
> >         >                     # This is called by save_image and is fed
> into
> >         >                     scipy.misc.imsave.
> >         >                     # If the boolean expression evaluated here
> is
> >         true, then
> >         >                     only a black
> >         >                     # background is being fed into scipy's
> >         misc.imsave method
> >         >                     for evaluation.
> >         >                     x = brain.screenshot()
> >         >                     print 'Test pysurfer\'s Brain.screenshot.'
> >         >                     if sum(x.flatten()==0)!=len(x.flatten()):
> >         >                         print 'Pass'
> >         >                     else:
> >         >                         print 'Fail'
>
> >         >                     # Looking at the Mayavi mlab.screenshot
> method.
> >         >                     # This is called by screenshot_single,
> which is
> >         called by
> >         >                     Brain's screenshot.
> >         >                     # If the boolean expression evaluated here
> is
> >         true, then
> >         >                     only a black
> >         >                     # background is being fed into
> Brain.screenshot()
> >         >                     from mayavi import mlab
> >         >                     x = mlab.screenshot(brain.brain_
> matrix[0,0]._f,
> >         'rgb',
> >         >                     False)
> >         >                     print 'Test mayavi\'s mlab.screenshot'
> >         >                     if sum(x.flatten()==0)!=len(x.flatten()):
> >         >                         print 'Pass'
> >         >                     else:
> >         >                         print 'Fail'
>
>
> >         >                 On the server through an x2go session both
> >         Brain.screenshot and
> >         >                 mlab.screenshot failed to produce a non-blank
> image,
> >         while on
> >         >                 my laptop's local environment both of these
> methods
> >         did produce
> >         >                 the desired output (i.e., there were some
> nonzero
> >         outputs).
>
> >         >                 Since this doesn't seem to be an error with
> pysurfer
> >         in
> >         >                 particular, I'm going to proceed to see if
> anyone
> >         using Mayavi
> >         >                 with x2go or nx has encountered similar issues
> by
> >         querying
> >         >                 their forums / issue pages.  I just wanted to
> leave
> >         this here
> >         >                 if someone else encounters the same issue in
> the
> >         future.
>
>
> >         >         A shot in the dark: Could it be something to do with
> running
> >         headless?
> >         >         Maybe running this under XVFB (e.g. through
> xvfbwrapper)
> >         would help?
>
> >         >         Ariel
> >         >
>
> >         >                 --John
>
> >         >                 On Tue, Sep 13, 2016 at 1:24 PM, John Pellman <
> >         >                 pellman.john at gmail.com> wrote:
>
> >         >                     It looks like it might be related to the
> >         following issue
> >         >                     described at StackOverflow:
>
> >         >                     http://stackoverflow.com/
> questions/16543634/
> >         >                     mayavi-mlab-savefig-gives-an-empty-image
>
> >         >                     On Mon, Sep 12, 2016 at 2:00 PM, John
> Pellman <
> >         >                     pellman.john at gmail.com> wrote:
>
> >         >                         Hi all,
>
> >         >                         I'm encountering a peculiar Pysurfer
> error on
> >         our
> >         >                         server and I was wondering if anyone
> has
> >         encountered
> >         >                         anything similar or might have some
> insight
> >         into how I
> >         >                         can tackle it.  Basically, when our
> >         researchers try to
> >         >                         save a png image using
> Brain.save_image() or
> >         >                         Brain.save_imageset() the images
> produced
> >         only contain
> >         >                         the background color (as you may have
> >         inferred from the
> >         >                         subject line).  I've traced this back
> to
> >         Scipy method
> >         >                         (scipy.misc.imsave), but it looks like
> this
> >         would only
> >         >                         output an empty png if the image
> passed in
> >         were
> >         >                         completely zeroed out.  Our setup uses
> the
> >         following
> >         >                         versions of pysurfer/its dependencies:
>
> >         >                         Numpy: 1.10.0.dev0+1fe98ff
> >         >                         Scipy: 0.17.0.dev0+f2f6e48
> >         >                         Ipython: 3.1.0
> >         >                         nibabel: 2.0.0
> >         >                         Mayavi: 4.4.2
> >         >                         matplotlib: 1.4.3
> >         >                         PIL: 1.1.7
> >         >                         Pysurfer: 0.5
>
> >         >                         This setup is running within a
> Miniconda
> >         environment
> >         >                         using Python 2.7.11.  I'm uncertain if
> this
> >         is related,
> >         >                         but running the example code here
> produces
> >         the
> >         >                         following warning:
>
> >         >                         (ipython:20765): Gdk-WARNING **:
> /build/
> >         buildd/
> >         >                         gtk+2.0-2.24.27/gdk/x11/
> gdkdrawable-x11.c:952
> >         drawable
> >         >                         is not a pixmap or window
>
> >         >                         Any insight would be greatly
> appreciated.
>
> >         >                         Best,
> >         >                         John Pellman
>
>
>
>
>
> >         >                 _____________________________
> __________________
> >         >                 Neuroimaging mailing list
> >         >                 Neuroimaging at python.org
> >         >                 https://mail.python.org/
> mailman/listinfo/neuroimaging
>
>
> >         >             _______________________________________________
> >         >             Neuroimaging mailing list
> >         >             Neuroimaging at python.org
> >         >             https://mail.python.org/
> mailman/listinfo/neuroimaging
>
>
>
>
> >         >         _______________________________________________
> >         >         Neuroimaging mailing list
> >         >         Neuroimaging at python.org
> >         >         https://mail.python.org/mailman/listinfo/neuroimaging
>
>
>
>
> >         >     _______________________________________________
> >         >     Neuroimaging mailing list
> >         >     Neuroimaging at python.org
> >         >     https://mail.python.org/mailman/listinfo/neuroimaging
>
>
>
>
> >         > _______________________________________________
> >         > Neuroimaging mailing list
> >         > Neuroimaging at python.org
> >         > https://mail.python.org/mailman/listinfo/neuroimaging
> --
>     Gael Varoquaux
>     Researcher, INRIA Parietal
>     NeuroSpin/CEA Saclay , Bat 145, 91191 Gif-sur-Yvette France
>     Phone:  ++ 33-1-69-08-79-68
>     http://gael-varoquaux.info            http://twitter.com/GaelVaroquaux
> _______________________________________________
> Neuroimaging mailing list
> Neuroimaging at python.org
> https://mail.python.org/mailman/listinfo/neuroimaging
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/neuroimaging/attachments/20160927/6f595527/attachment.html>


More information about the Neuroimaging mailing list