Skip to content

Commit

Permalink
v0.48
Browse files Browse the repository at this point in the history
- changed morpho.in_volume to use ray casting
- added plot3d to cluster.clust_results
- fixed bugs in rmaid.nblast_allbyall and rmaid.neuron2r
- changed pymaid.get_volume to return a dict {verts:[],faces:[]}
  • Loading branch information
schlegelp committed Aug 1, 2017
1 parent af8ce56 commit ba4b266
Show file tree
Hide file tree
Showing 54 changed files with 334 additions and 189 deletions.
Binary file added .DS_Store
Binary file not shown.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.1.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.11.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.111.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.12.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.13.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.131.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.132.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.133.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.2.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.21.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.22.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.23.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.3.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.31.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.4.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.41.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.42.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.43.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.44.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.45.tar.gz
100644 → 100755
Empty file.
Empty file modified dist/pymaid-0.46.tar.gz
100755 → 100644
Empty file.
Empty file modified dist/pymaid-0.47.tar.gz
100755 → 100644
Empty file.
Empty file modified dist/pymaid-0.471.tar.gz
100644 → 100755
Empty file.
Binary file added dist/pymaid-0.48.tar.gz
Binary file not shown.
Empty file modified docs/Makefile
100644 → 100755
Empty file.
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@
# built documents.
#
# The short X.Y version.
version = '0.47'
version = '0.48'
# The full version, including alpha/beta/rc tags.
release = '0.47'
release = '0.48'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
Empty file modified docs/make.bat
100644 → 100755
Empty file.
Empty file modified docs/requirements.txt
100644 → 100755
Empty file.
Empty file modified docs/source/b3d.rst
100755 → 100644
Empty file.
Empty file modified docs/source/blender.rst
100755 → 100644
Empty file.
Empty file modified docs/source/cluster.rst
100644 → 100755
Empty file.
Empty file modified docs/source/core.rst
100644 → 100755
Empty file.
Empty file modified docs/source/igraph.rst
100644 → 100755
Empty file.
Empty file modified docs/source/intro.rst
100644 → 100755
Empty file.
Empty file modified docs/source/morpho.rst
100644 → 100755
Empty file.
Empty file modified docs/source/plot.rst
100644 → 100755
Empty file.
Empty file modified docs/source/pymaid.rst
100644 → 100755
Empty file.
Empty file modified docs/source/rmaid.rst
100644 → 100755
Empty file.
Empty file modified docs/source/user_stats.rst
100644 → 100755
Empty file.
Empty file modified examples/example_retrieving_connectors.ipynb
100644 → 100755
Empty file.
Empty file modified examples/nblasting.ipynb
100644 → 100755
Empty file.
Empty file modified examples/plot_neurons.ipynb
100644 → 100755
Empty file.
Empty file modified examples/using_R_functions.ipynb
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion pymaid/__init__.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.471"
__version__ = "0.48"
186 changes: 119 additions & 67 deletions pymaid/cluster.py

Large diffs are not rendered by default.

65 changes: 37 additions & 28 deletions pymaid/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

from pymaid import igraph_catmaid, morpho, pymaid, plot


class CatmaidNeuron:
"""
Catmaid neuron object holding neuron data: nodes, connectors, name, etc.
Expand Down Expand Up @@ -239,8 +240,9 @@ def __getattr__(self, key):
return self.tags
elif key == 'n_open_ends':
if 'nodes' in self.__dict__:
closed = self.tags.get('ends',[]) + self.tags.get('uncertain end',[]) + self.tags.get('uncertain continuation',[]) + self.tags.get('not a branch',[]) + self.tags.get('soma',[])
return len([n for n in self.nodes[self.nodes.type == 'end'].treenode_id.tolist() if n not in closed ])
closed = self.tags.get('ends', []) + self.tags.get('uncertain end', []) + self.tags.get(
'uncertain continuation', []) + self.tags.get('not a branch', []) + self.tags.get('soma', [])
return len([n for n in self.nodes[self.nodes.type == 'end'].treenode_id.tolist() if n not in closed])
else:
return 'NA'
elif key == 'n_branch_nodes':
Expand Down Expand Up @@ -472,8 +474,8 @@ def reroot(self, new_root):
Either treenode ID or node tag
"""
morpho.reroot_neuron(self, new_root, inplace=True)
#Clear temporary attributes

# Clear temporary attributes
self._clear_temp_attr()

def prune_distal_to(self, node):
Expand All @@ -484,10 +486,10 @@ def prune_distal_to(self, node):
node : {treenode_id, node tag}
Provide either a treenode ID or a (unique) tag
"""
dist, prox = morpho.cut_neuron( self, node )
self.__init__(prox, self._remote_instance, self._meta_data )
dist, prox = morpho.cut_neuron(self, node)
self.__init__(prox, self._remote_instance, self._meta_data)

#Clear temporary attributes
# Clear temporary attributes
self._clear_temp_attr()

def prune_proximal_to(self, node):
Expand All @@ -498,13 +500,13 @@ def prune_proximal_to(self, node):
node : {treenode_id, node tag}
Provide either a treenode ID or a (unique) tag
"""
dist, prox = morpho.cut_neuron( self, node )
self.__init__(dist, self._remote_instance, self._meta_data )
dist, prox = morpho.cut_neuron(self, node)
self.__init__(dist, self._remote_instance, self._meta_data)

#Clear temporary attributes
# Clear temporary attributes
self._clear_temp_attr()

def prune_by_strahler(self, to_prune=range(1,2) ):
def prune_by_strahler(self, to_prune=range(1, 2)):
""" Prune neuron based on strahler order. Will reroot neuron to
soma if possible.
Expand All @@ -521,9 +523,10 @@ def prune_by_strahler(self, to_prune=range(1,2) ):
3. ``to_prune = range(1,4)`` removes indices 1, 2 and 3
4. ``to_prune = -1`` removes everything but the highest index
"""
morpho.prune_by_strahler( self, to_prune=to_prune, inplace=True, reroot_soma=True )
morpho.prune_by_strahler(
self, to_prune=to_prune, inplace=True, reroot_soma=True)

#Clear temporary attributes
# Clear temporary attributes
self._clear_temp_attr()

def reload(self, remote_instance=None):
Expand All @@ -541,9 +544,9 @@ def reload(self, remote_instance=None):

n = pymaid.get_3D_skeleton(
self.skeleton_id, remote_instance=remote_instance)
self.__init__(n, self._remote_instance, self._meta_data)
self.__init__(n, self._remote_instance, self._meta_data)

#Clear temporary attributes
# Clear temporary attributes
self._clear_temp_attr()

def set_remote_instance(self, remote_instance=None, server_url=None, http_user=None, http_pw=None, auth_token=None):
Expand Down Expand Up @@ -613,9 +616,10 @@ def summary(self):
annotations = True

return pd.Series([type(self), neuron_name, self.skeleton_id, self.n_nodes, self.n_connectors, self.n_branch_nodes, self.n_end_nodes, self.n_open_ends, self.cable_length, review_status, soma_temp, annotations, igraph, tags, self._remote_instance != None],
index=['type', 'neuron_name', 'skeleton_id', 'n_nodes', 'n_connectors', 'n_branch_nodes', 'n_end_nodes',
'n_open_ends', 'cable_length', 'review_status', 'soma', 'annotations', 'igraph', 'tags', 'remote_instance']
)
index=['type', 'neuron_name', 'skeleton_id', 'n_nodes', 'n_connectors', 'n_branch_nodes', 'n_end_nodes',
'n_open_ends', 'cable_length', 'review_status', 'soma', 'annotations', 'igraph', 'tags', 'remote_instance']
)


class CatmaidNeuronList:
""" Catmaid neuron list. It is designed to work in many ways much like a
Expand Down Expand Up @@ -760,7 +764,8 @@ def summary(self, n=None):
Returns
-------
pandas DataFrame
pandas DataFrame
"""
d = []
for n in self.neurons[:None]:
Expand Down Expand Up @@ -885,7 +890,8 @@ def __contains__(self, x):
def __getitem__(self, key):
if isinstance(key, str):
if key.startswith('annotation:'):
skids = pymaid.eval_skids(key, remote_instance = self._remote_instance)
skids = pymaid.eval_skids(
key, remote_instance=self._remote_instance)
subset = self[skids]
else:
subset = [
Expand Down Expand Up @@ -927,14 +933,15 @@ def downsample(self, factor=5, inplace=True):
----------
factor : int, optional
Factor by which to downsample the neurons. Default = 5
"""
if not inplace:
nl_copy = self.copy()
nl_copy.downsample(factor=factor)
return nl_copy

_set_loggers('ERROR')
for n in tqdm(self.neurons, desc='Downsampling'):
for n in tqdm(self.neurons, desc='Downsampling'):
n.downsample(factor=factor)
_set_loggers('INFO')

Expand Down Expand Up @@ -963,17 +970,17 @@ def prune_proximal_to(self, tag):
node : node tag
A (unique) tag at which to cut the neurons
"""
"""

_set_loggers('ERROR')
for n in tqdm(self.neurons, desc='Pruning'):
try:
n.prune_proximal_to(tag)
n.prune_proximal_to(tag)
except:
pass
_set_loggers('INFO')

def prune_by_strahler(self, to_prune=range(1,2) ):
def prune_by_strahler(self, to_prune=range(1, 2)):
""" Prune neurons based on strahler order. Will reroot neurons to
soma if possible.
Expand All @@ -989,12 +996,12 @@ def prune_by_strahler(self, to_prune=range(1,2) ):
2. ``to_prune = [1,2]`` removes indices 1 and 2
3. ``to_prune = range(1,4)`` removes indices 1, 2 and 3
4. ``to_prune = -1`` removes everything but the highest index
"""

_set_loggers('ERROR')
for n in tqdm(self.neurons, desc='Pruning'):
n.prune_by_strahler( to_prune=to_prune )
n.prune_by_strahler(to_prune=to_prune)
_set_loggers('INFO')

def get_review(self, skip_existing=False):
Expand Down Expand Up @@ -1168,12 +1175,14 @@ def head(self, n=5):
"""Return summary for top N neurons"""
return str(self.summary(n=n))


def _set_loggers(level='ERROR'):
"""Helper function to set levels for all associated module loggers """
morpho.module_logger.setLevel(level)
"""Helper function to set levels for all associated module loggers """
morpho.module_logger.setLevel(level)
igraph_catmaid.module_logger.setLevel(level)
plot.module_logger.setLevel(level)


class _IXIndexer():
""" Location based indexer added to CatmaidNeuronList objects to allow
indexing similar to pandas DataFrames using df.ix[0]. This is really
Expand Down
Loading

0 comments on commit ba4b266

Please sign in to comment.