[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