Difference between revisions of "SNT: Python Notebooks"

(Getting Started)
(Getting Started)
Line 4: Line 4:
 
Follow the instructions given [https://github.com/imagej/pyimagej#installation here]
 
Follow the instructions given [https://github.com/imagej/pyimagej#installation here]
 
==Getting Started==
 
==Getting Started==
To initialize Fiji from Python:
+
To initialize Fiji from Python with GUI capabilities:
 
<source lang="python">
 
<source lang="python">
 
import imagej
 
import imagej
ij = imagej.init('sc.fiji:fiji')
+
ij = imagej.init('sc.fiji:fiji', headless=False)
 
</source>
 
</source>
 
Then, use [https://github.com/kivy/pyjnius pyjnius] (bundled with pyimagej) to import the SNT (Java) classes you need. For example, to download a neuron reconstruction from the MouseLight database and calculate summary statistics on it, you would import the [http://javadoc.scijava.org/Fiji/tracing/io/MouseLightLoader MouseLightLoader] and [http://javadoc.scijava.org/Fiji/tracing/analysis/TreeStatistics.html TreeStatistics] classes:
 
Then, use [https://github.com/kivy/pyjnius pyjnius] (bundled with pyimagej) to import the SNT (Java) classes you need. For example, to download a neuron reconstruction from the MouseLight database and calculate summary statistics on it, you would import the [http://javadoc.scijava.org/Fiji/tracing/io/MouseLightLoader MouseLightLoader] and [http://javadoc.scijava.org/Fiji/tracing/analysis/TreeStatistics.html TreeStatistics] classes:

Revision as of 19:47, 11 April 2019

Python Notebooks

Direct access to the SNT API from the Python programming language is made possible through the pyimagej module. This enables full integration between SNT and any library in the Python ecosystem.

Installing pyimagej

Follow the instructions given here

Getting Started

To initialize Fiji from Python with GUI capabilities:

import imagej
ij = imagej.init('sc.fiji:fiji', headless=False)

Then, use pyjnius (bundled with pyimagej) to import the SNT (Java) classes you need. For example, to download a neuron reconstruction from the MouseLight database and calculate summary statistics on it, you would import the MouseLightLoader and TreeStatistics classes:

from jnius import autoclass
MouseLightLoader = autoclass('tracing.io.MouseLightLoader')
TreeStatistics   = autoclass('tracing.analysis.TreeStatistics')

Now you can access all the attributes and methods these classes offer. Let's get a summary of the inter-node distances for a specific mouse cortical motor neuron (UUID = "AA0100" in the MouseLight database).

def run():
    loader = MouseLightLoader("AA0100")
    if not loader.isDatabaseAvailable():
        print("Could not connect to ML database", "Error")
        return
    if not loader.idExists():
        print("Somehow the specified id was not found", "Error")
        return

    a_tree = loader.getTree('axon', None) # compartment, color
    s_stats = TreeStatistics(a_tree)
    metric = TreeStatistics.INTER_NODE_DISTANCE
    summary_stats = s_stats.getSummaryStats(metric)
    s_stats.getHistogram(metric).show()
    print("The average inter-node distance is %d" % summary_stats.getMean())