External Scripting

The Python world has numerous great tools for development, such as IPython, PyCharm, and the Python command line interpreter. You can access the Nion Swift API using those tools.

Warning

External scripting is an advanced topic. It is not required to use Python with Nion Swift. See Python Console for an easier alternative.

To use an external tool, you will use the nionlib module, which acts as a communication liaison to Nion Swift.

Installing NionLib

To use nionlib you will need to tell Python where to find the nionlib module. One direct way to do this is to modify sys.path at the beginning of your external script.

If Nion Swift is located at C:\NionSwift, you can put Python code similar to the following at the start of your external file or notebook.

import sys
sys.path.insert(0, 'C:\\NionSwift\nionswift')
import nionlib

There are other more advanced techniques, such as using the pip tool to add nionswift, which is the package in which nionlib is distributed, directly to the Python path.

>>> pip install -e /path/to/NionSwift/nionswift

Using this technique, you do not have to modify sys.path each time.

Using NionLib

Nion Swift must be running before using nionlib so launch it first.

Once Nion Swift is running, run your favorite Python tool and import the nionlib module.

$ python
Python 3.5.1 |Anaconda 2.4.0 (x86_64)| (default, Dec  7 2015, 11:24:55)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0, 'C:\\NionSwift\nionswift')
>>> import nionlib
>>> api = nionlib.get_api('~1.0')
>>> library = api.library
>>> print(library.data_item_count)
16
>>>

You can import the nionlib module into other interpreters such as IPython or PyCharm. You can launch multiple interpreters and import nionlib into each interpreter if you need multiple scripts open simultaneously.

Note

If your Python tool doesn’t find nionlib then sys.path is incorrectly configured.

See Scripting Guide for more examples.

IPython

You can use IPython for Nion Swift scripting.:

$ ipython notebook

In [1]: import sys
        sys.path.insert(0, 'C:\\NionSwift\nionswift')
        import nionlib
        api = nionlib.get_api('~1.0')
        library = api.library
        print(library.data_item_count)

PyCharm

You can use PyCharm for Nion Swift scripting.

To be able to edit and run a script, first create a new folder with your script. Then open that folder as a project.

Next open your script file.

Now configure PyCharm to run your script file using the menu item Run > Edit Configurations... Click the + button and add a new Python script. Configure the correct interpreter (either the system Python or the Python included with the Swift distribution). Make sure that either the nionlib module is available to that interpreter or you edit the sys.path at the start of the script.

Edit your file:

import sys
sys.path.insert(0, 'C:\\NionSwift\nionswift')
import nionlib
api = nionlib.get_api('~1.0')
print(api.library.data_item_count)

Click the Run button and make sure it returns a reasonable value.