Hi Kaori,

Sorry - I made a mistake. The load function is only intended for use in the python shell, not from a script. To load an image in a script, you can do something like this:


On 31 July 2017 at 19:50, Kaori Ito <[log in to unmask]> wrote:
Hi Paul,

Thanks for your response and for creating such a useful tool! 

When I change the index to 0, it is still the same result (see below). 

Regarding the SliceCanvas object, can you please expand on that a little more? Is it an object that should be defined in fsleyes' python shell? When I type it into the python shell directly (after loading an image), I get an error saying it's not defined: 'NameError: name 'SliceCanvas' is not defined'

makeImage.py script: 

>> load('/.../subj01/subj01-T1.nii.gz')
>> print (overlayList)
>> overlay = overlayList[0]


fsleyes --runscript /...scripts/makeImage.py 

WARNING        runscript.pyc  104: __doAction      - Script (/.../scripts/makeImage.py) could not be executed: list index out of range

Traceback (most recent call last):

  File "fsleyes/actions/runscript.pyc", line 98, in __doAction

  File "fsleyes/actions/runscript.pyc", line 166, in runScript

  File "/.../scripts/makeImage.py", line 7, in <module>

  File "fsleyes/overlay.pyc", line 230, in __getitem__

  File "fsleyes_props/properties_value.pyc", line 1112, in __getitem__

IndexError: list index out of range


On Mon, Jul 31, 2017 at 2:00 AM, paul mccarthy <[log in to unmask]> wrote:
Hi Kaori,

In your code, you are referring to overlaylist[1] - as python indices start from 0, does it work if you change this to overlayList[0] ?

There is no direct command to save a screenshot from the python shell, although it is a good idea, so I will look at adding it in.

In the meantime, if you can get a reference to the SliceCanvas object(s), you can call its getBitmap method to get an in-memory bitmap that you can then save out to file. However, if you want to save an image of multiple canvases (e.g. the ortho view), you would need to generate the bitmap for each canvas, and manually arrange them.



On 29 July 2017 at 03:35, Kaori Ito <[log in to unmask]> wrote:
My apologies! Looks like the first part of my message didn't get posted. Here it is:

Hi all,

I would ideally like to use fsleyes to render the same type of images for a large number of subjects. I am able to recursively call fsleyes -render , but I would prefer to run a python script in the python shell within the program, rather than call the program again and again. I am using the standalone fsleyes version on a mac.

First, is there a command I can call on the python shell to render images? (equivalent of fsleyes -render)

Additionally, when I load an image and attempt to access overlayList within my script, I get the error: "list index out of range" - as if it hasn't been set (see below for full output). But, when I load the image from the script and then open up the python shell from fsleyes and type in overlayList, my image is loaded and overlayList is accessible. Can someone explain why this might be happening?

Thank you in advance- any pointers would be helpful!

Kaori Ito, MA, OTR/L, PhD Student
Chan Division of Occupational Science & Occupational Therapy
University of Southern California