To obtain the package, please see https://neuron-morphology.readthedocs.io/en/readthedocs/.
This step-by-step guid will walk you through the whole process of getting the interested features with neuron_morphology.
import sys
sys.path.insert(0, "../")
#import warnings
#warnings.filterwarnings('ignore')
from io import StringIO
import requests
from neuron_morphology.swc_io import morphology_from_swc
from neuron_morphology.feature_extractor.data import Data
from neuron_morphology.feature_extractor.feature_extractor import FeatureExtractor
import neuron_morphology.feature_extractor.feature_writer as fw
from neuron_morphology.features.default_features import default_features
import matplotlib.pyplot as plt
import json
import numpy as np
Here select one SWC file as an example.
def data_from_url(morphology_url):
morphology_swc = StringIO(requests.get(morphology_url).text)
# Feature functions expect a Data object - in this case just a wrapper for a Morphology
# If we were working with additional data (say, layer annotations) we would store these here as well
return Data(morphology_from_swc(morphology_swc))
# fetch a published reconstruction
IVSCC_swc_file = "http://celltypes.brain-map.org/api/v2/well_known_file_download/491120375"
We can load the SWC file into our morphology data object and then calculate features on it.
# fetch a published reconstruction
test_data = data_from_url(IVSCC_swc_file)
# directly load a swc file given its file path
# test_data = Data(morphology_from_swc(IVSCC_swc_file))
nodes = test_data.morphology.nodes()
x = [node['x'] for node in nodes]
y = [node['y'] for node in nodes]
z = [node['z'] for node in nodes]
fig, ax = plt.subplots(1, 2)
ax[0].scatter(x, y, s=0.1)
ax[0].set_title('x-y view')
ax[1].scatter(z, y, s=0.1)
ax[1].set_title('z-y view')
Text(0.5, 1.0, 'z-y view')
In this example, we register all the default features to extract.
fe = FeatureExtractor()
fe.register_features(default_features)
<neuron_morphology.feature_extractor.feature_extractor.FeatureExtractor at 0x1a213839b0>
feature_extraction_run = fe.extract(test_data)
2020-02-25 14:04:19,178 root INFO skipping mark (validation failed): type 2020-02-25 14:04:19,182 root INFO skipping mark (validation failed): type 2020-02-25 14:04:19,184 root INFO skipping mark (validation failed): type /Users/matthew.aitken/allen_dev/neuron_morphology/neuron_morphology/feature_extractor/mark.py:118: UserWarning: This morphology is not uniquely rooted! Found 7 root nodes. Features using the root node of this morphology may not select that node consistently. Some or all of these root nodes may not be soma nodes. f"This morphology is not uniquely rooted! Found {num_roots} " 2020-02-25 14:04:19,197 root INFO selected marks: <bound method FeatureExtractionRun.select_marks of <neuron_morphology.feature_extractor.feature_extraction_run.FeatureExtractionRun object at 0x1a213837f0>> 2020-02-25 14:04:19,197 root INFO skipping feature: apical_dendrite.node.dimension. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,199 root INFO skipping feature: apical_dendrite.tip.dimension. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,200 root INFO skipping feature: apical_dendrite.compartment.dimension. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,201 root INFO skipping feature: apical_dendrite.bifurcation.dimension. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,202 root INFO skipping feature: apical_dendrite.num_nodes. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,202 root INFO skipping feature: apical_dendrite.num_branches. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,203 root INFO skipping feature: apical_dendrite.num_tips. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,204 root INFO skipping feature: apical_dendrite.mean_fragmentation. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,205 root INFO skipping feature: apical_dendrite.max_branch_order. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,206 root INFO skipping feature: apical_dendrite.num_outer_bifurcations. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,207 root INFO skipping feature: apical_dendrite.total_length. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,207 root INFO skipping feature: apical_dendrite.total_surface_area. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,208 root INFO skipping feature: apical_dendrite.total_volume. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,209 root INFO skipping feature: apical_dendrite.mean_diameter. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,210 root INFO skipping feature: apical_dendrite.mean_parent_daughter_ratio. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,211 root INFO skipping feature: apical_dendrite.max_euclidean_distance. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,212 root INFO skipping feature: apical_dendrite.axon.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,213 root INFO skipping feature: apical_dendrite.dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,214 root INFO skipping feature: axon.apical_dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,215 root INFO skipping feature: apical_dendrite.apical_dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,215 root INFO skipping feature: basal_dendrite.apical_dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,216 root INFO skipping feature: dendrite.apical_dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,216 root INFO skipping feature: apical_dendrite.basal_dendrite.overlap. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,218 root INFO skipping feature: apical_dendrite.node.moments. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,219 root INFO skipping feature: apical_dendrite.tip.moments. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,219 root INFO skipping feature: apical_dendrite.compartment.moments. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,220 root INFO skipping feature: apical_dendrite.bifurcation.moments. Found extra marks: ['RequiresApical'] 2020-02-25 14:04:19,221 root INFO skipping feature: basal_dendrite.normalized_depth_histogram. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,222 root INFO skipping feature: all_neurites.normalized_depth_histogram. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,224 root INFO skipping feature: dendrite.normalized_depth_histogram. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,225 root INFO skipping feature: apical_dendrite.normalized_depth_histogram. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,226 root INFO skipping feature: axon.normalized_depth_histogram. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,227 root INFO skipping feature: axon.axon.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,228 root INFO skipping feature: apical_dendrite.axon.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,228 root INFO skipping feature: basal_dendrite.axon.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,230 root INFO skipping feature: dendrite.axon.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,230 root INFO skipping feature: axon.dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,231 root INFO skipping feature: apical_dendrite.dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,232 root INFO skipping feature: basal_dendrite.dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,232 root INFO skipping feature: dendrite.dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,233 root INFO skipping feature: axon.apical_dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,234 root INFO skipping feature: apical_dendrite.apical_dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,235 root INFO skipping feature: basal_dendrite.apical_dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,235 root INFO skipping feature: dendrite.apical_dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,236 root INFO skipping feature: axon.basal_dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,237 root INFO skipping feature: apical_dendrite.basal_dendrite.earth_movers_distance. Found extra marks: ['RequiresApical', 'RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,238 root INFO skipping feature: basal_dendrite.basal_dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,239 root INFO skipping feature: dendrite.basal_dendrite.earth_movers_distance. Found extra marks: ['RequiresReferenceLayerDepths', 'RequiresLayeredPointDepths'] 2020-02-25 14:04:19,244 root INFO selected features: ['basal_dendrite.node.dimension', 'all_neurites.node.dimension', 'dendrite.node.dimension', 'axon.node.dimension', 'basal_dendrite.tip.dimension', 'all_neurites.tip.dimension', 'dendrite.tip.dimension', 'axon.tip.dimension', 'basal_dendrite.compartment.dimension', 'all_neurites.compartment.dimension', 'dendrite.compartment.dimension', 'axon.compartment.dimension', 'basal_dendrite.bifurcation.dimension', 'all_neurites.bifurcation.dimension', 'dendrite.bifurcation.dimension', 'axon.bifurcation.dimension', 'basal_dendrite.num_nodes', 'all_neurites.num_nodes', 'dendrite.num_nodes', 'axon.num_nodes', 'basal_dendrite.num_branches', 'all_neurites.num_branches', 'dendrite.num_branches', 'axon.num_branches', 'basal_dendrite.num_tips', 'all_neurites.num_tips', 'dendrite.num_tips', 'axon.num_tips', 'basal_dendrite.mean_fragmentation', 'all_neurites.mean_fragmentation', 'dendrite.mean_fragmentation', 'axon.mean_fragmentation', 'basal_dendrite.max_branch_order', 'all_neurites.max_branch_order', 'dendrite.max_branch_order', 'axon.max_branch_order', 'basal_dendrite.num_outer_bifurcations', 'all_neurites.num_outer_bifurcations', 'dendrite.num_outer_bifurcations', 'axon.num_outer_bifurcations', 'basal_dendrite.total_length', 'all_neurites.total_length', 'dendrite.total_length', 'axon.total_length', 'basal_dendrite.total_surface_area', 'all_neurites.total_surface_area', 'dendrite.total_surface_area', 'axon.total_surface_area', 'basal_dendrite.total_volume', 'all_neurites.total_volume', 'dendrite.total_volume', 'axon.total_volume', 'basal_dendrite.mean_diameter', 'all_neurites.mean_diameter', 'dendrite.mean_diameter', 'axon.mean_diameter', 'basal_dendrite.mean_parent_daughter_ratio', 'all_neurites.mean_parent_daughter_ratio', 'dendrite.mean_parent_daughter_ratio', 'axon.mean_parent_daughter_ratio', 'basal_dendrite.max_euclidean_distance', 'all_neurites.max_euclidean_distance', 'dendrite.max_euclidean_distance', 'axon.max_euclidean_distance', 'max_path_distance', 'early_branch_path', 'mean_contraction', 'axon.axon.overlap', 'basal_dendrite.axon.overlap', 'dendrite.axon.overlap', 'axon.dendrite.overlap', 'basal_dendrite.dendrite.overlap', 'dendrite.dendrite.overlap', 'axon.basal_dendrite.overlap', 'basal_dendrite.basal_dendrite.overlap', 'dendrite.basal_dendrite.overlap', 'basal_dendrite.node.moments', 'all_neurites.node.moments', 'dendrite.node.moments', 'axon.node.moments', 'basal_dendrite.tip.moments', 'all_neurites.tip.moments', 'dendrite.tip.moments', 'axon.tip.moments', 'basal_dendrite.compartment.moments', 'all_neurites.compartment.moments', 'dendrite.compartment.moments', 'axon.compartment.moments', 'basal_dendrite.bifurcation.moments', 'all_neurites.bifurcation.moments', 'dendrite.bifurcation.moments', 'axon.bifurcation.moments']
results = feature_extraction_run.results
from neuron_morphology.feature_extractor.utilities import unnest
unnest(results)
{'basal_dendrite.node.dimension.width': 384.2443999999999, 'basal_dendrite.node.dimension.height': 209.35199999999998, 'basal_dendrite.node.dimension.depth': 58.8211, 'basal_dendrite.node.dimension.min_xyz': array([ -86.8776, -151.2368, -15.5191]), 'basal_dendrite.node.dimension.max_xyz': array([297.3668, 58.1152, 43.302 ]), 'basal_dendrite.node.dimension.bias_xyz': array([210.4892, 93.1216, 27.7829]), 'all_neurites.node.dimension.width': 598.6509, 'all_neurites.node.dimension.height': 602.6546, 'all_neurites.node.dimension.depth': 71.5631, 'all_neurites.node.dimension.min_xyz': array([-252.2122, -220.8229, -16.1489]), 'all_neurites.node.dimension.max_xyz': array([346.4387, 381.8317, 55.4142]), 'all_neurites.node.dimension.bias_xyz': array([ 94.2265, 161.0088, 39.2653]), 'dendrite.node.dimension.width': 384.2443999999999, 'dendrite.node.dimension.height': 209.35199999999998, 'dendrite.node.dimension.depth': 58.8211, 'dendrite.node.dimension.min_xyz': array([ -86.8776, -151.2368, -15.5191]), 'dendrite.node.dimension.max_xyz': array([297.3668, 58.1152, 43.302 ]), 'dendrite.node.dimension.bias_xyz': array([210.4892, 93.1216, 27.7829]), 'axon.node.dimension.width': 598.6509, 'axon.node.dimension.height': 602.6546, 'axon.node.dimension.depth': 71.5631, 'axon.node.dimension.min_xyz': array([-252.2122, -220.8229, -16.1489]), 'axon.node.dimension.max_xyz': array([346.4387, 381.8317, 55.4142]), 'axon.node.dimension.bias_xyz': array([ 94.2265, 161.0088, 39.2653]), 'basal_dendrite.tip.dimension.width': 384.2443999999999, 'basal_dendrite.tip.dimension.height': 209.35199999999998, 'basal_dendrite.tip.dimension.depth': 58.702, 'basal_dendrite.tip.dimension.min_xyz': array([ -86.8776, -151.2368, -15.4 ]), 'basal_dendrite.tip.dimension.max_xyz': array([297.3668, 58.1152, 43.302 ]), 'basal_dendrite.tip.dimension.bias_xyz': array([210.4892, 93.1216, 27.902 ]), 'all_neurites.tip.dimension.width': 598.6509, 'all_neurites.tip.dimension.height': 602.6546, 'all_neurites.tip.dimension.depth': 71.02420000000001, 'all_neurites.tip.dimension.min_xyz': array([-252.2122, -220.8229, -15.61 ]), 'all_neurites.tip.dimension.max_xyz': array([346.4387, 381.8317, 55.4142]), 'all_neurites.tip.dimension.bias_xyz': array([ 94.2265, 161.0088, 39.8042]), 'dendrite.tip.dimension.width': 384.2443999999999, 'dendrite.tip.dimension.height': 209.35199999999998, 'dendrite.tip.dimension.depth': 58.702, 'dendrite.tip.dimension.min_xyz': array([ -86.8776, -151.2368, -15.4 ]), 'dendrite.tip.dimension.max_xyz': array([297.3668, 58.1152, 43.302 ]), 'dendrite.tip.dimension.bias_xyz': array([210.4892, 93.1216, 27.902 ]), 'axon.tip.dimension.width': 598.6509, 'axon.tip.dimension.height': 602.6546, 'axon.tip.dimension.depth': 71.02420000000001, 'axon.tip.dimension.min_xyz': array([-252.2122, -220.8229, -15.61 ]), 'axon.tip.dimension.max_xyz': array([346.4387, 381.8317, 55.4142]), 'axon.tip.dimension.bias_xyz': array([ 94.2265, 161.0088, 39.8042]), 'basal_dendrite.compartment.dimension.width': 597.75495, 'basal_dendrite.compartment.dimension.height': 601.5844, 'basal_dendrite.compartment.dimension.depth': 70.9803, 'basal_dendrite.compartment.dimension.min_xyz': array([-251.64115, -220.31665, -16.1041 ]), 'basal_dendrite.compartment.dimension.max_xyz': array([346.1138 , 381.26775, 54.8762 ]), 'basal_dendrite.compartment.dimension.bias_xyz': array([ 94.47265, 160.9511 , 38.7721 ]), 'all_neurites.compartment.dimension.width': 597.75495, 'all_neurites.compartment.dimension.height': 601.5844, 'all_neurites.compartment.dimension.depth': 70.9803, 'all_neurites.compartment.dimension.min_xyz': array([-251.64115, -220.31665, -16.1041 ]), 'all_neurites.compartment.dimension.max_xyz': array([346.1138 , 381.26775, 54.8762 ]), 'all_neurites.compartment.dimension.bias_xyz': array([ 94.47265, 160.9511 , 38.7721 ]), 'dendrite.compartment.dimension.width': 597.75495, 'dendrite.compartment.dimension.height': 601.5844, 'dendrite.compartment.dimension.depth': 70.9803, 'dendrite.compartment.dimension.min_xyz': array([-251.64115, -220.31665, -16.1041 ]), 'dendrite.compartment.dimension.max_xyz': array([346.1138 , 381.26775, 54.8762 ]), 'dendrite.compartment.dimension.bias_xyz': array([ 94.47265, 160.9511 , 38.7721 ]), 'axon.compartment.dimension.width': 597.75495, 'axon.compartment.dimension.height': 601.5844, 'axon.compartment.dimension.depth': 70.9803, 'axon.compartment.dimension.min_xyz': array([-251.64115, -220.31665, -16.1041 ]), 'axon.compartment.dimension.max_xyz': array([346.1138 , 381.26775, 54.8762 ]), 'axon.compartment.dimension.bias_xyz': array([ 94.47265, 160.9511 , 38.7721 ]), 'basal_dendrite.bifurcation.dimension.width': 298.87109999999996, 'basal_dendrite.bifurcation.dimension.height': 130.90789999999998, 'basal_dendrite.bifurcation.dimension.depth': 19.8475, 'basal_dendrite.bifurcation.dimension.min_xyz': array([ -34.32 , -115.099 , -13.9513]), 'basal_dendrite.bifurcation.dimension.max_xyz': array([264.5511, 15.8089, 5.8962]), 'basal_dendrite.bifurcation.dimension.bias_xyz': array([230.2311, 99.2901, 8.0551]), 'all_neurites.bifurcation.dimension.width': 468.01079999999996, 'all_neurites.bifurcation.dimension.height': 370.59540000000004, 'all_neurites.bifurcation.dimension.depth': 63.7093, 'all_neurites.bifurcation.dimension.min_xyz': array([-203.4597, -161.5683, -13.9513]), 'all_neurites.bifurcation.dimension.max_xyz': array([264.5511, 209.0271, 49.758 ]), 'all_neurites.bifurcation.dimension.bias_xyz': array([61.0914, 47.4588, 35.8067]), 'dendrite.bifurcation.dimension.width': 298.87109999999996, 'dendrite.bifurcation.dimension.height': 130.90789999999998, 'dendrite.bifurcation.dimension.depth': 19.8475, 'dendrite.bifurcation.dimension.min_xyz': array([ -34.32 , -115.099 , -13.9513]), 'dendrite.bifurcation.dimension.max_xyz': array([264.5511, 15.8089, 5.8962]), 'dendrite.bifurcation.dimension.bias_xyz': array([230.2311, 99.2901, 8.0551]), 'axon.bifurcation.dimension.width': 299.6037, 'axon.bifurcation.dimension.height': 370.59540000000004, 'axon.bifurcation.dimension.depth': 63.5054, 'axon.bifurcation.dimension.min_xyz': array([-203.4597, -161.5683, -13.7474]), 'axon.bifurcation.dimension.max_xyz': array([ 96.144 , 209.0271, 49.758 ]), 'axon.bifurcation.dimension.bias_xyz': array([107.3157, 47.4588, 36.0106]), 'basal_dendrite.num_nodes': 1138, 'all_neurites.num_nodes': 9011, 'dendrite.num_nodes': 1138, 'axon.num_nodes': 7872, 'basal_dendrite.num_branches': 28, 'all_neurites.num_branches': 234, 'dendrite.num_branches': 28, 'axon.num_branches': 205, 'basal_dendrite.num_tips': 16, 'all_neurites.num_tips': 122, 'dendrite.num_tips': 16, 'axon.num_tips': 106, 'basal_dendrite.mean_fragmentation': 45.666666666666664, 'all_neurites.mean_fragmentation': 40.113122171945705, 'dendrite.mean_fragmentation': 45.666666666666664, 'axon.mean_fragmentation': 39.83076923076923, 'basal_dendrite.max_branch_order': 5, 'all_neurites.max_branch_order': 20, 'dendrite.max_branch_order': 5, 'axon.max_branch_order': 18, 'basal_dendrite.num_outer_bifurcations': 2, 'all_neurites.num_outer_bifurcations': 6, 'dendrite.num_outer_bifurcations': 2, 'axon.num_outer_bifurcations': 4, 'basal_dendrite.total_length': 1328.5272307560708, 'all_neurites.total_length': 10597.055000190818, 'dendrite.total_length': 1328.5272307560708, 'axon.total_length': 9267.107931500354, 'basal_dendrite.total_surface_area': 1446.9625685172398, 'all_neurites.total_surface_area': 10180.544127130415, 'dendrite.total_surface_area': 1446.9625685172398, 'axon.total_surface_area': 8076.358511825999, 'basal_dendrite.total_volume': 138.506708926475, 'all_neurites.total_volume': 1661.2646020708073, 'dendrite.total_volume': 138.506708926475, 'axon.total_volume': 573.1543047923315, 'basal_dendrite.mean_diameter': 0.34678910369068544, 'all_neurites.mean_diameter': 0.28735922761069804, 'dendrite.mean_diameter': 0.34678910369068544, 'axon.mean_diameter': 0.27727619410569104, 'basal_dendrite.mean_parent_daughter_ratio': 1.0107658156125583, 'all_neurites.mean_parent_daughter_ratio': 1.019226483271939, 'dendrite.mean_parent_daughter_ratio': 1.0107658156125583, 'axon.mean_parent_daughter_ratio': 1.0048656537174114, 'basal_dendrite.max_euclidean_distance': 316.34712860060864, 'all_neurites.max_euclidean_distance': 406.2726500370164, 'dendrite.max_euclidean_distance': 316.34712860060864, 'axon.max_euclidean_distance': 406.2726500370164, 'max_path_distance': 487.9666166977375, 'early_branch_path': 0.9043141229383738, 'mean_contraction': 0.8914424815936268, 'axon.axon.overlap.above': 0.0, 'axon.axon.overlap.overlap': 1.0, 'axon.axon.overlap.below': 0.0, 'basal_dendrite.axon.overlap.above': 0.3075457317073171, 'basal_dendrite.axon.overlap.overlap': 0.651295731707317, 'basal_dendrite.axon.overlap.below': 0.041158536585365856, 'dendrite.axon.overlap.above': 0.3075457317073171, 'dendrite.axon.overlap.overlap': 0.651295731707317, 'dendrite.axon.overlap.below': 0.041158536585365856, 'axon.dendrite.overlap.above': 0.0, 'axon.dendrite.overlap.overlap': 1.0, 'axon.dendrite.overlap.below': 0.0, 'basal_dendrite.dendrite.overlap.above': 0.0, 'basal_dendrite.dendrite.overlap.overlap': 1.0, 'basal_dendrite.dendrite.overlap.below': 0.0, 'dendrite.dendrite.overlap.above': 0.0, 'dendrite.dendrite.overlap.overlap': 1.0, 'dendrite.dendrite.overlap.below': 0.0, 'axon.basal_dendrite.overlap.above': 0.0, 'axon.basal_dendrite.overlap.overlap': 1.0, 'axon.basal_dendrite.overlap.below': 0.0, 'basal_dendrite.basal_dendrite.overlap.above': 0.0, 'basal_dendrite.basal_dendrite.overlap.overlap': 1.0, 'basal_dendrite.basal_dendrite.overlap.below': 0.0, 'dendrite.basal_dendrite.overlap.above': 0.0, 'dendrite.basal_dendrite.overlap.overlap': 1.0, 'dendrite.basal_dendrite.overlap.below': 0.0, 'basal_dendrite.node.moments.mean': array([371.67827979, 384.15500202, 22.75047504]), 'basal_dendrite.node.moments.std': array([91.46987853, 47.57474511, 9.71403638]), 'basal_dendrite.node.moments.var': array([8366.73867817, 2263.35637217, 94.36250284]), 'basal_dendrite.node.moments.skew': array([1.07528987, 0.33109853, 1.22089127]), 'basal_dendrite.node.moments.kurt': array([ 0.19481417, -0.32343285, 1.66038877]), 'all_neurites.node.moments.mean': array([284.65664186, 447.9004895 , 36.65105336]), 'all_neurites.node.moments.std': array([ 96.04465386, 113.10652749, 16.31120537]), 'all_neurites.node.moments.var': array([ 9224.57553503, 12793.08655982, 266.05542061]), 'all_neurites.node.moments.skew': array([0.83715376, 0.83389332, 0.43031137]), 'all_neurites.node.moments.kurt': array([ 1.25042202, 0.53539343, -0.57693762]), 'dendrite.node.moments.mean': array([371.67827979, 384.15500202, 22.75047504]), 'dendrite.node.moments.std': array([91.46987853, 47.57474511, 9.71403638]), 'dendrite.node.moments.var': array([8366.73867817, 2263.35637217, 94.36250284]), 'dendrite.node.moments.skew': array([1.07528987, 0.33109853, 1.22089127]), 'dendrite.node.moments.kurt': array([ 0.19481417, -0.32343285, 1.66038877]), 'axon.node.moments.mean': array([272.07415252, 457.1164732 , 38.66187515]), 'axon.node.moments.std': array([ 89.98651647, 116.81159299, 16.09131565]), 'axon.node.moments.var': array([ 8097.57314564, 13644.94825713, 258.93043941]), 'axon.node.moments.skew': array([0.86052855, 0.68889462, 0.32708782]), 'axon.node.moments.kurt': array([ 1.590552 , 0.24348046, -0.60056431]), 'basal_dendrite.tip.moments.mean': array([381.1720875 , 377.13418125, 24.058775 ]), 'basal_dendrite.tip.moments.std': array([115.245204 , 60.98361422, 16.59256238]), 'basal_dendrite.tip.moments.var': array([13281.45704604, 3719.00120328, 275.31312621]), 'basal_dendrite.tip.moments.skew': array([0.88257471, 0.52941179, 1.54739432]), 'basal_dendrite.tip.moments.kurt': array([-0.21927634, -0.07628938, 1.63288763]), 'all_neurites.tip.moments.mean': array([271.45980984, 437.31752705, 38.0240541 ]), 'all_neurites.tip.moments.std': array([108.63012271, 119.79287932, 21.84652233]), 'all_neurites.tip.moments.var': array([11800.50355967, 14350.3339353 , 477.27053785]), 'all_neurites.tip.moments.skew': array([0.88649874, 0.79015374, 0.46526034]), 'all_neurites.tip.moments.kurt': array([ 1.2997187 , 0.71310949, -1.10842373]), 'dendrite.tip.moments.mean': array([381.1720875 , 377.13418125, 24.058775 ]), 'dendrite.tip.moments.std': array([115.245204 , 60.98361422, 16.59256238]), 'dendrite.tip.moments.var': array([13281.45704604, 3719.00120328, 275.31312621]), 'dendrite.tip.moments.skew': array([0.88257471, 0.52941179, 1.54739432]), 'dendrite.tip.moments.kurt': array([-0.21927634, -0.07628938, 1.63288763]), 'axon.tip.moments.mean': array([254.89946604, 446.40180566, 40.13202075]), 'axon.tip.moments.std': array([ 97.93003161, 123.97792698, 21.82802052]), 'axon.tip.moments.var': array([ 9590.29109061, 15370.52637944, 476.4624798 ]), 'axon.tip.moments.skew': array([0.82659091, 0.66000773, 0.35067857]), 'axon.tip.moments.kurt': array([ 1.53152661, 0.44356425, -1.1994296 ]), 'basal_dendrite.compartment.moments.mean': array([284.65064104, 447.91468142, 36.62523649]), 'basal_dendrite.compartment.moments.std': array([ 95.83248524, 112.88042383, 16.25442807]), 'basal_dendrite.compartment.moments.var': array([ 9183.86522818, 12741.9900847 , 264.206432 ]), 'basal_dendrite.compartment.moments.skew': array([0.83960938, 0.83584894, 0.42965145]), 'basal_dendrite.compartment.moments.kurt': array([ 1.2587922 , 0.54110569, -0.57454958]), 'all_neurites.compartment.moments.mean': array([284.65064104, 447.91468142, 36.62523649]), 'all_neurites.compartment.moments.std': array([ 95.83248524, 112.88042383, 16.25442807]), 'all_neurites.compartment.moments.var': array([ 9183.86522818, 12741.9900847 , 264.206432 ]), 'all_neurites.compartment.moments.skew': array([0.83960938, 0.83584894, 0.42965145]), 'all_neurites.compartment.moments.kurt': array([ 1.2587922 , 0.54110569, -0.57454958]), 'dendrite.compartment.moments.mean': array([284.65064104, 447.91468142, 36.62523649]), 'dendrite.compartment.moments.std': array([ 95.83248524, 112.88042383, 16.25442807]), 'dendrite.compartment.moments.var': array([ 9183.86522818, 12741.9900847 , 264.206432 ]), 'dendrite.compartment.moments.skew': array([0.83960938, 0.83584894, 0.42965145]), 'dendrite.compartment.moments.kurt': array([ 1.2587922 , 0.54110569, -0.57454958]), 'axon.compartment.moments.mean': array([284.65064104, 447.91468142, 36.62523649]), 'axon.compartment.moments.std': array([ 95.83248524, 112.88042383, 16.25442807]), 'axon.compartment.moments.var': array([ 9183.86522818, 12741.9900847 , 264.206432 ]), 'axon.compartment.moments.skew': array([0.83960938, 0.83584894, 0.42965145]), 'axon.compartment.moments.kurt': array([ 1.2587922 , 0.54110569, -0.57454958]), 'basal_dendrite.bifurcation.moments.mean': array([358.90069231, 398.65600769, 22.6655 ]), 'basal_dendrite.bifurcation.moments.std': array([94.10146561, 41.53441784, 6.62980721]), 'basal_dendrite.bifurcation.moments.var': array([8855.08582927, 1725.10786536, 43.95434364]), 'basal_dendrite.bifurcation.moments.skew': array([ 1.55331765, -0.33621157, -0.29349052]), 'basal_dendrite.bifurcation.moments.kurt': array([ 0.94968664, -0.68116567, -1.25485591]), 'all_neurites.bifurcation.moments.mean': array([268.7349055 , 437.27338624, 34.15637523]), 'all_neurites.bifurcation.moments.std': array([72.26776233, 77.79269387, 13.96437115]), 'all_neurites.bifurcation.moments.var': array([5222.62947211, 6051.70321995, 195.00366151]), 'all_neurites.bifurcation.moments.skew': array([1.10432028, 0.82681317, 0.69244759]), 'all_neurites.bifurcation.moments.kurt': array([3.26581569, 0.69704123, 0.09470238]), 'dendrite.bifurcation.moments.mean': array([358.90069231, 398.65600769, 22.6655 ]), 'dendrite.bifurcation.moments.std': array([94.10146561, 41.53441784, 6.62980721]), 'dendrite.bifurcation.moments.var': array([8855.08582927, 1725.10786536, 43.95434364]), 'dendrite.bifurcation.moments.skew': array([ 1.55331765, -0.33621157, -0.29349052]), 'dendrite.bifurcation.moments.kurt': array([ 0.94968664, -0.68116567, -1.25485591]), 'axon.bifurcation.moments.mean': array([256.52495521, 442.50282292, 35.71243125]), 'axon.bifurcation.moments.std': array([59.62891364, 80.18862077, 13.98645012]), 'axon.bifurcation.moments.var': array([3555.60734242, 6430.21490074, 195.62078685]), 'axon.bifurcation.moments.skew': array([0.20760483, 0.73206218, 0.59747653]), 'axon.bifurcation.moments.kurt': array([-0.19641111, 0.42381651, -0.04420766])}
heavy_path = "test_features.h5"
table_path = "test_features.csv"
features_writer = fw.FeatureWriter(heavy_path, table_path)
features_writer.add_run("test", feature_extraction_run.serialize())
features_writer.write_table()
2020-02-25 14:05:50,208 root WARNING writing additional outputs to csv. See output json for record of selected features and marks