|
|
(8 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | =Python Notebooks=
| + | #REDIRECT [[SNT:_Scripting#Python_Notebooks]] |
− | Direct access to the SNT API from the [https://www.python.org/ Python] programming language is made possible through the [https://pypi.org/project/pyimagej/ pyimagej] module. This enables full integration between SNT and any library in the Python ecosystem.
| |
− | ==Installing pyimagej==
| |
− | Follow the instructions given [https://github.com/imagej/pyimagej#installation here]
| |
− | ==Getting Started==
| |
− | To initialize Fiji from Python:
| |
− | <source lang="python">
| |
− | import imagej
| |
− | ij = imagej.init('sc.fiji:fiji')
| |
− | </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:
| |
− | | |
− | <source lang="python">
| |
− | from jnius import autoclass
| |
− | MouseLightLoader = autoclass('tracing.io.MouseLightLoader')
| |
− | TreeStatistics = autoclass('tracing.analysis.TreeStatistics')
| |
− | </source>
| |
− | 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).
| |
− | <source lang="python">
| |
− | loader = MouseLightLoader("AA0100") # one of the largest cells in the database
| |
− | if not loader.isDatabaseAvailable():
| |
− | ui.showDialog("Could not connect to ML database", "Error")
| |
− | return
| |
− | if not loader.idExists():
| |
− | ui.showDialog("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())
| |
− | </source>
| |